Problem bei Bildupload ->Reihenfolge der Funktionen

  • 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:

    Der Aufruf erfolgt hier:

    Code
    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


  • zeig mal die pictures.php her...

    Kann mir nicht vorstellen, das das include schon vor ende der funktion aufgerufen wird!

    und was meinst mit "Offline tritt dieses Problem übrigens nicht auf"?
    Wenn wer was offline ist?

  • Hallo Sebian,

    danke für deine Antwort.
    Die pictures.php

    Code
    echo'
    
    
    Folgendes Bild wurde Hochgeladen und gespeichert:</p>
    	 [img]'.$path_thumb.''.$id.'_thumb.jpg[/img]';
    echo'
    	 <form action="index.php?action=pictures&amp;id='.$id.'&amp;do=create" method="post">
    	     	<input type="submit" name="res" value="Als reserviert markieren" />
    	 </form>';

    Also nur 2 simple Echos, seh da nichts, was ein Problem sein könnte.

    Zitat


    und was meinst mit "Offline tritt dieses Problem übrigens nicht auf"?
    Wenn wer was offline ist?

    Wenn ich das Script offline aufrufe, funktioniert alles, wie es soll, es wird also das gerade hochgeladene Bild angezeigt (bzw. das Thumbnail davon, das in "validate_file()" erstellt wird).

    Das Problem tritt erst nach dem hochladen auf (ohost.de).
    Wenn es hilft, kann ich einen Testzugang erstellen, dann kannst du es ausprobieren. Alles in allem handelt es sich um ein Administrationspanel für eine Aupair-Datenbank.

    Gruß,
    Jojo


  • Ich tippe mal dass entweder Ohost eine Funktion blockiert/kastriert hat (sind ja bekannt dafuer...) oder dass dein Script nciht mit deren Server(Einstellungen) kompatibel ist ;)

    was ist mit "error_reporting(E_ALL)"?
    Kann dir ggf Webspace mit individuellen PHP.ini-Einstellungen geben um es zu testen

  • error_reporting ist natürlich an (weiß nicht, obs bei ohost aktiviert ist, lokal bekomme ich keine Fehler/warnings).

    Ich habe nun versucht, als Quelle fürs Bild $_FILES['tmp_name'] zu verwenden, was auch nicht zum Erfolg führt. Ich schließe daraus, dass die Funktion validate_file ordnungsgemäß ausgeführt wurde und $_FILES['tmp_name'] durch move_uploaded_file nicht mehr existiert (wies ja auch sein soll).
    Somit tippe ich inzwischen auch darauf, dass da irgendwo was in der php.ini bei ohost nicht mit meinem Script kompatibel ist. Wär mir aber schon wichtig, das rauszufinden, da das Ganze ja irgendwann auch an den Kunden geht, und ich mit dem Webspace und dessen Einstellungen an sich nichts zu tun haben werde und von daher diese Info zumindest mitgeben müsste.

    Hier ist ein testaccount:
    url: http://jojo87.jo.ohost.de/aupair/admin/index.php
    user: admin
    pw: test

    Unter Funktionen mal versuchen, das Bild eines Aupairs zu verändern, bei der Bestätigung werdet ihr sehen, dass nicht euer gerade hochgeladnens Bild erscheint, sondern das Alte. Erst nach neuladen der Seite erscheint euer neues (Bilder dürfen nicht >2mb sein).

    d4f:
    wäre es zuviel verlangt, wenn ich dich bitte, mal die php.ini von ohost und meiner lokalen zu Vergleichen (würds dir dann per pm schicken) ?
    Ich muss gestehen, dass ich nur mit einem Bruchteil der Einstellungen wirklich was anfangen kann :oops:
    Wär mir eine Riesenhilfe.

    Danke euch beiden für die bisherige Hilfe,
    Jojo


  • Zitat

    Erst nach neuladen der Seite erscheint euer neues


    Ich nehme stark an dass das KEIN Problemm mit dem Script sondern schlicht und ergreifend caching ist :D

    Zitat

    mal die php.ini von ohost und meiner lokalen zu Vergleichen


    Schick die phpinfo() von beiden und ich mach mein bestes, auch wenn ich nicht glaube dass es an der Einstellung liegt (siehe 1. Quote)

  • Zitat von jojo87


    Ich habe auch bereits versucht, den Browser am cachen zu hindern, aber das war auch nicht die Lösung.

    Nein, das war es auch nicht, es sei denn,

    Code
    <meta http-equiv="cache-control" content="no-cache">

    ist dafür nicht der richtige Weg.
    Die infos sind in deinem Postfach, danke schonmal.