Kezdőoldal » Számítástechnika » Weblapkészítés » Miért nem változik meg a kép...

Miért nem változik meg a kép a kíirásban a kép amikor sikeres a feltöltés és még a címen az a kép érhető el?

Figyelt kérdés
kommentben a kód:

2013. okt. 16. 15:20
 1/8 A kérdező kommentje:

<?php

if(isset($_POST['submit'])) {

$target = "tmp/profilpicture/".$user['Username'].".";

$file_name = $_FILES['file']['name'];

$tmp_dir = $_FILES['file']['tmp_name'];


if(!preg_match('/(gif|jpe?g|png)$/i', $file_name))

{

echo "Rossz fajltipus!";

}

else

{

move_uploaded_file($tmp_dir, $target . "user.jpg");

$feltoltve = true;

}

}

?>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<form enctype="multipart/form-data" action="" method="post" />

<input type="hidden" name="MAX_FILE_SIZE" value="8000000" />

<label for="file"> Válassz egy képet!</label><input id="file" type="file" name="file" />

<input type="submit" name="submit" value="Feltöltés!" />Max. 800KByte<br />

<?php

if($feltoltve) {

$utvonal = $target . $file_name;

echo "Profilképedet megváltozott, sikeresen feltöltve!";

}

?>

<?

$conn = mysql_connect("host", "juzer", "pass");

mysql_query("UPDATE `datebase`.`Users_login` SET `profil.img` = 'tmp/profilpicture/".$user['Username'].".user.jpg' WHERE `Users_login`.`Id` =".$user['Id']."");

?>


Ez a teljes kód, az útolsó pedig mindig, hozzáadja az adott sorba az adott kép elérhetőségét.

Amikor feltölt egy képet a felhasználó akkor nem változik meg az adatlapján mindig az elözőt adja ki. Viszont ha letöltöm az FTP szerverröl akkor már az újat tölti le. Ez, hogy van?

Mi lehet a probléma?

Vagy más megoldás kellene?

elöre is köszi!

2013. okt. 16. 15:24
 2/8 anonim ***** válasza:

Ez egy olyan dolog,hogy a böngésződ ha azonos néven kapja meg a képfájlt,akkor nem fogja újra letölteni. Tehát a megoldás az,ha a kép neve mindig változik,amikor feltöltöd. Erre számos megoldás létezik.

Én úgy oldottam meg,hogy tárolom a kép verziószámát és lekérdezésnél kepnev.jpg?v=verziószám -al hivatkozok a képre.

2013. okt. 16. 16:05
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
Természetesen lehet úgy is csinálnod,hogy eleve a fájnlevet osztod fel fix hosszakra,amiből egy adott rész a verziószámot egy másik pedig a konkrét fájlt és mikor tárolod,akkor megnézed,hogy hányadik verzió volt és megváltoztatod stb..
2013. okt. 16. 16:07
Hasznos számodra ez a válasz?
 4/8 Drone007 ***** válasza:
Egyszerűbb, ha a már a fájl nevét is egy időkódos hash-sel egészíted ki, vagy az lesz a kép neve. Technikailag teljesen mindegy mi a fájl neve, a lényeg, hogy az adatbázisban tárolva legyen. Ilyenkor a régi képet ne felejtsd törölni az új kép tárolása után!
2013. okt. 16. 18:57
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:

jó, jó...

és ez a verziószám hozzáadása, hogyan?

2013. okt. 16. 18:58
 6/8 anonim ***** válasza:

Amit Drone007 az is jó, de amúgy

'UPDATE images SET mező1=érték1,mező2=érték2,valtozat=valtozat+1 WHERE ID='.$kep_id

2013. okt. 17. 08:08
Hasznos számodra ez a válasz?
 7/8 A kérdező kommentje:

így a változat dologgal sem működik a dolog :(

és ez a hash-es módszer, hogyan is működik igazából?

2013. okt. 17. 18:30
 8/8 Drone007 ***** válasza:

Egyrészt: képet biztonsági okokból MINDIG úgy kell tárhelyen elhelyezni, hogy feltöltéskor átfuttatunk rajta egy átméretezést. Ennek olyan praktikus okai is vannak, hogy a feltöltött kép ne zabálja le a tárterület nagy részét, másrészt felesleges 10Mp-es képeket tárolni webes megjelenítésre, egy 800x800-as is bőven elég, plusz esetleg egy extra thumbnail, hogy kis méretben ne kelljen a nagyot betölteni.

Szóval, a feltöltéskor kiterjesztéstől függően átnyomod egy egy átméretezésen (ld: ImageCopyResampled() függvény), amit egy előre legyártott forrásképbe töltesz (ld: ImageCreateFromGif/Jpeg/Png() függvények). A forrásfájl (kép) nevét pedig egy időbélyeg alapján készíted el.

Pl: $destinationImage = "/uploads/".md5(time()).".".$fileExtension;

A $destionationImage változót pedig szépen eltárolod az adattáblában.

Esetleg cifrázhatod azzal, hogy két képet készítesz a feltöltéskor. Egy bélyegképet (pl 150pixel méretben), és egy nagyot (pl 800pixel méretben), és a két fájlt más-más mappákban helyezed el, ugyanazon a néven.

Pl.: $bigImage = "/uploads/".md5(time()).".".$fileExtension;

$thumbImage = "/uploads/thumb/".md5(time()).".".$fileExtension;


Erre elég sok variáció létezik, de a lényeg, hogy az újonnan feltöltött képnek minden feltöltéskor új nevet is generálj, így a böngésző mindenképpen újra fogja tölteni.

Az adattábla módosítása előtt a régi bejegyzést ki kell olvasni, és a régi képe(ke)t törölni kell!


Sok sikert!

2013. okt. 17. 20:29
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!