Verzögerunge bei Weiterleitung

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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)
    Last edited by ricober; 15-12-2010, 08: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

    Comment


    • #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.
      Last edited by combie; 15-12-2010, 11:16.
      Wir werden alle sterben

      Comment


      • #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?

        Comment


        • #5
          Originally posted by ricober View Post
          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.

          Comment

          Working...
          X