Verzögerunge bei Weiterleitung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verzögerunge bei Weiterleitung

    AUSGANGSLAGE:

    Auf einer Domain befindet sich eine .htaccess Datei welche eine Variable X einliest.

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z0-9-_]+)$ index.php?x=$1 [L,QSA]

    In der index.php Datei wird die Variable ausgelesen und in einer Session und einem Cookie gespeichert. Anschliessend wird per header('Location: /'); alles hinter dem / entfernt.

    Das dient dazu, dass ein Affiliate auf domain.de/affiliatecode einen link setzen kann, nacher aber nur die Domain (domain.de) angezeigt wird.

    So sieht der oberste Teil der index.php aus:
    PHP-Code:
    session_start();
    if(isset(
    $_COOKIE['x'])) $_SESSION['x'] = $_COOKIE['x'];
    if(isset(
    $_GET['x'])){
    $_SESSION['x'] = $_GET['x'];
    setcookie("x",$_GET['x'], time()+7775000,'/');
    header('Location: /');

    DAS PROBLEM:

    Wenn ich nun im Firefox (Mac) auf domain.de/affiliatecode gehe, lädt die Seite sehr lange bis sie angezeigt wird. Ich vermute, die Weiterleitung verursacht irgend einen Fehler. Sie wird erst nach ca. 15 Sekunden geladen (aus domain.de/affiliatecode wird domain.de/).

    Weiss jemand wiso es zu dieser Verzögerung kommt?

    (beim Internet Explorer und Firefox (PC) funktioniert es ohne Verzögerung)
    Zuletzt geändert von ricober; 15.12.2010, 09:13.

  • #2
    Lösung

    Ich habe die Lösung, nach langem suchen, nun selbst gefunden.

    Ich habe einfach nach der Weiterleitung "header('Location: /');" ein "exit;" platziert. Jetzt funktioniert alles wunderbar.

    Wiso das nötig ist, erfahrt ihr in dem folgendem Artikel:
    Header Location und Sessions-Variablen ein PHP-Problem

    Kommentar


    • #3
      "header('Location: /');"
      Diese Weiterleitung entspricht nicht den Vorgaben der HTTP Spezifikation.
      Es ist also eine Gnade der genutzten Software, dass das überhaupt funktioniert.

      Wiso das nötig ist, erfahrt ihr in dem folgendem Artikel:
      Bei dem Autor funktioniert das SessionLocking nicht.
      Das ist ein Server Konfigurationsproblem oder es wird ein schlampig geschriebener SessionHandler eingesetzt.
      Dem Autor stehen also noch weitere "Race Condition" Probleme ins Haus, nur er weiß es noch nicht.
      Zuletzt geändert von combie; 15.12.2010, 12:16.
      Wir werden alle sterben

      Kommentar


      • #4
        "header('Location: /');"
        Diese Weiterleitung entspricht nicht den Vorgaben der HTTP Spezifikation.
        Es ist also eine Gnade der genutzten Software, dass das überhaupt funktioniert.
        Was wäre korrekt?

        Kommentar


        • #5
          Zitat von ricober Beitrag anzeigen
          Was wäre korrekt?
          RTFM wäre korrekt - im PHP-Manual zu header steht ein Hinweis diesbezüglich.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar

          Lädt...
          X