session_start(): Browser frieren ein!

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von williamwallace, 14.06.2006.

  1. williamwallace

    williamwallace Thread Starter MacUser Mitglied

    MacUser seit:
    29.05.2006
    Beiträge:
    6
    Zustimmungen:
    0
    Hi,

    seit einigen Tagen läuft ein PHP-Script auf unserem Server nicht mehr,
    allerdings komischerweise nur in Mac OS X-Browsern:

    Ich rufe von einem Kontaktformular per header ("Location...") eine send.php auf, nachdem ich per session_start() eine Session angelegt habe.
    Wenn in der send.php nun erneut ein session_start() aufgerufen wird, um die Session wieder aufzugreifen, frieren Mac IE, Safari & Firefox ein und nach 5 Minuten kommt ein Error 500?! Unter Windows läuft alles korrekt.


    PHP:
    Hier Auszüge aus den Dateien:

    Formular.php:

    PHP-Code:
    <?php 
    session_start
    (); 
    $_SESSION['session_email'] = $email
    $_SESSION['session_name'] = $name

    [...] 

    header("Location: http://www.domain.de/sites/send.php"); 
    ?>




    Send.php:

    PHP-Code:
    <?php 
    session_start
    (); 

    [...] 

    mail ("Adresse","Anfrage",$var$header); 
    ?>

    Ich wäre sehr froh, wenn mir einer von Euch helfen kann.

    Viele Grüße
    Frank
     
  2. Jetzt mal ganz blöd gefragt, wird vor dem session_start() etwas an den Browser zurückgegeben, also eine Ausgabe gemacht? Ein simples Leerzeichen vor dem ersten <?php reicht da schon...

    Anonsten fällt mir Spontan nichts ein (auch wenn das normalerweise eine PHP-Meldung geben müsste)

    gruß
    Lukas
     
  3. b.legt210

    b.legt210 MacUser Mitglied

    MacUser seit:
    01.03.2006
    Beiträge:
    81
    Zustimmungen:
    4
    Fehler 500 kenne ich sonst eigentlich nur im Zusammenhang von "missratenen" .htaccess-Einstellungen.
    Ich würde nach dem "header(location..)" auch mal ein exit; einfügen. So stellst du sicher, dass danach nichts mehr ausgeführt wird.
    Bei einer Weiterleitung zu einem anderen Server (andere Domain) würde es mich doch schwer wundern, wenn Session-Variablen dort zur Verfügung stehen würden. Diese werden ja schließlich auf dem Server gespeichert und stehen damit nicht auf anderen Servern zur Verfügung. Wäre also die Frage:
    Was willst du eigentlich machen??

    Stephan
     
  4. Galanos

    Galanos MacUser Mitglied

    MacUser seit:
    19.12.2005
    Beiträge:
    624
    Zustimmungen:
    23
    Sehr merkwuerdig, dass das Problem Client-seitig entstehen soll.
    Wenn du sagst, dass die Browser "einfrieren", meinst du dann, dass das Programm nicht mehr reagiert oder dass sie ewig keine Rueckmeldung vom Server bekommen?
    Wird irgendwo in den Scripts auf Client-spezifische Daten (HTTP_USER_AGENT etc.) zugegriffen?
    Ansonsten ist es mir unerklaerlich …

    Willkommen im Forum :)

    @b.legt210: Ich glaube, er bleibt auf seinem Server, schreibt die URL nur absolut. Oder?
     
  5. williamwallace

    williamwallace Thread Starter MacUser Mitglied

    MacUser seit:
    29.05.2006
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo Stefan,

    Die Weiterleitung zielt auf eine Datei der selben Domain...
    Es geht lediglich um ein Kontaktformular, das auf Vollständigkeit überprüft wird und falls alles in Ordnung ist, eine send.php aufgerufen wird, in der die Mail generiert wird.

    Alles Wichtige wird zur Übergabe in session-Variablen gespeichert.

    Abstrahiert würde aber allein das zweite session_start() zum Fehler führen. Wie gesagt, bis unter Max OS X läuft das Script fehlerfrei.

    Viele Grüße
    Frank
     
  6. Galanos

    Galanos MacUser Mitglied

    MacUser seit:
    19.12.2005
    Beiträge:
    624
    Zustimmungen:
    23
    Dann muss ich die bloede Frage stellen: Warum eine Session und eine zweite Datei (send.php)? Die Mail-Funktion kannst du doch in das Daten-Ueberpruefungsscript reinpacken und ausfuehren, wenn die Ueberpruefung erfolgreich verlaufen ist, oder?
     
  7. b.legt210

    b.legt210 MacUser Mitglied

    MacUser seit:
    01.03.2006
    Beiträge:
    81
    Zustimmungen:
    4
    Hi Frank,

    wozu "springst" du denn dann auf eine neue Seite? oder aber: wozu das header("location..")?
    Nach Überprüfen der Daten kannst du doch direkt die "Versende-Funktion" aufrufen.

    Stephan
     
  8. williamwallace

    williamwallace Thread Starter MacUser Mitglied

    MacUser seit:
    29.05.2006
    Beiträge:
    6
    Zustimmungen:
    0
    Das ist korrekt, hab dies gesplittet zur Übersichtlichkeit des Quellcodes.
    Müsste aber doch auch für einen Mac ein Leichtes sein, eine Session nach Seitenwechsel wiederaufnehmen zu können.

    Ich kann jetzt theroetisch, wie du schon sagst, das Problem durch Umstrukturierung umgehen, das würde mir allerdings keinen Seelenfrieden bringen... :)
     
  9. wegus

    wegus MacUser Mitglied

    MacUser seit:
    13.09.2004
    Beiträge:
    14.713
    Zustimmungen:
    1.348
    Das geht so nicht! Wenn doch müßte es Zufall sein!!!

    header("Location") bricht zu undefinierter Zeit das parsen einer Seite ab um den REDIRECT auszuführen, weitere HTTP-Header werden nicht zuverlässig abgearbeitet, wie man hier wohl sieht! HTTP-Redirect & Session führt immer zu trouble!
     
  10. Galanos

    Galanos MacUser Mitglied

    MacUser seit:
    19.12.2005
    Beiträge:
    624
    Zustimmungen:
    23
    Wenn es dir nur um Uebersichtlichkeit des Quellcodes geht, schreibe doch die Mail-Funktion in eine gesonderte Datei und include() sie in das Formular.
     
Die Seite wird geladen...

Diese Seite empfehlen