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

    Beiträge:
    6
    Zustimmungen:
    0
    MacUser seit:
    29.05.2006
    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. koli.bri

    koli.bri Gast

    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

    Beiträge:
    81
    Zustimmungen:
    4
    MacUser seit:
    01.03.2006
    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

    Beiträge:
    624
    Zustimmungen:
    23
    MacUser seit:
    19.12.2005
    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

    Beiträge:
    6
    Zustimmungen:
    0
    MacUser seit:
    29.05.2006
    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

    Beiträge:
    624
    Zustimmungen:
    23
    MacUser seit:
    19.12.2005
    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

    Beiträge:
    81
    Zustimmungen:
    4
    MacUser seit:
    01.03.2006
    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

    Beiträge:
    6
    Zustimmungen:
    0
    MacUser seit:
    29.05.2006
    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

    Beiträge:
    15.044
    Zustimmungen:
    1.317
    MacUser seit:
    13.09.2004
    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

    Beiträge:
    624
    Zustimmungen:
    23
    MacUser seit:
    19.12.2005
    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...
Ähnliche Themen - session_start() Browser frieren
  1. Saugkraft
    Antworten:
    13
    Aufrufe:
    3.543
    newkid
    20.02.2010
  2. little_pixel
    Antworten:
    3
    Aufrufe:
    530
    Rupp
    05.10.2009
  3. Hausbesetzer
    Antworten:
    0
    Aufrufe:
    321
    Hausbesetzer
    15.05.2009
  4. raid89
    Antworten:
    27
    Aufrufe:
    1.427
    raid89
    26.02.2009
  5. Der_Jan
    Antworten:
    3
    Aufrufe:
    532
    michanismus
    26.05.2005