Hallo Leute,
habe ein seltsames Problem.
Es geht um eine Funktion, welche ein Profilbild ändern soll.
man wählt in einem Formular die Person aus, welche geändert wird und ein Bild dazu.
Dann wir eine Funktion aufgerufen, welche das Bild checkt und einen Thumbnail anlegt sowie eine Sicherungskopie des Bildes.
Hier der Code der Funktion:
function validate_file($id) {
global $path_pic,$path_thumb,$bak_dir;
if (isset($_FILES['pic'])) {
if (strpos($_FILES['pic']['type'], "image/") !== FALSE && is_numeric($id)) {
move_uploaded_file($_FILES['pic']['tmp_name'], "".$bak_dir."".$id.".jpg");
copy("".$bak_dir."".$id.".jpg", "".$path_pic."".$id.".jpg");
$th_width = "150";
$th_height = "200";
$img = imagecreatefromjpeg("".$bak_dir."".$id.".jpg");
list($img_width,$img_height) = getimagesize("".$bak_dir."".$id.".jpg");
$th = imagecreatetruecolor($th_width, $th_height);
imagecopyresampled($th,$img,0,0,0,0,$th_width,$th_height,$img_width,$img_height);
if (imagejpeg($th,"".$path_thumb."".$id."_thumb.jpg")) {
return true;
}
else {
return false;
}
}
else {
echo"Falsche id oder falsches Dateiformat";
return false;
}
}
else {
echo"Keine oder falsche Daten übergeben!";
return false;
}
}
Alles anzeigen
Der Aufruf erfolgt hier:
if (isset($_POST['id'])) {
if(validate_file($_POST['id'])) {
$id = htmlentities($_POST['id']);
include"./inc/pictures.php";
}
}
else {
echo"keine Daten übergeben";
}
Die Datei pictures.php, welche dann includiert wird, enthält dann das Thumbnail des hochgeladenen Bildes zur Kontrolle.
Und jetzt kommts: Dort wird doch tatsächlich noch das alte Bild angezeigt, obwohl das ja wohl nicht mehr existieren kann, da doch überschrieben. Selbst explizites Löschen mittels unlink des alten Bildes nützt da nichts. Es scheint ganz so, als ob der Parser bereits weiter macht, auch wenn eine Funktion noch gar nicht zuende ausgeführt wurde. Ich habe auch bereits versucht, den Browser am cachen zu hindern, aber das war auch nicht die Lösung. Offline tritt dieses Problem übrigens nicht auf.
Ich bin echt mit meinem Latein am Ende.
Danke für eure Hilfe,
Jojo