Andreas: Problem mit Sessions + IE 6.0 Cookie Frage

Hallo!
Erstmal super das das beste Forum der Welt wieder zurück ist - und (noch) so schnell:-)
Also folgendes Problem, ich versuche für einen Online-Shop ein wenig nachzuvollziehen, wie sich Banner lohnen, das mache ich einfach über verschiedene Einstiegsseiten, in denen ich jeweils eine Session starte und darin einen best. Wert für den jeweiligen Banner speichere. Außerdem wird jedesmal eine txt geöffnet in der nur eine Zahl steht, und die um eins erhöht und wieder geschlossen, ein counter halt.
Im Bestellscript am Ende, starte ich die Session erneut, und je nach gespeichertem Wert für die Bannerseite wird eine anderer Counter(wie oben) erhöht.
Nur leider funktioniert das nicht so, wie ich mir das vorstelle, leider kann ich zur Zeit nur mit IE 6.0 testen, hab aber alle Cockies angestellt, da ich nicht an meinen eigenen PC komme.
Das komische an der Sache: irgendwie funktionieren Sessions wenn ich das script ganz einfach halte, so wie:
<?PHP
session_start();
$Bannerseite = "Seite1";
session_register("Bannerseite");
?>

Dann kann ich das mit

<?PHP
session_start();
echo "$Bannerseite";
?>

schön auslesen.

Wenn ich das jetzt etwas komplizierter mache, so wie

<?PHP

@session_start();

if($Bannerseite == "Seite1")
    {
     $file = "../daten/rcsm00011_best.txt";

$data = fopen($file, "r");
 $count = fread($data, filesize($file));
 fclose($data);

$count = ++$count;

$data = fopen($file, "w+");
 fwrite($data, $count);
 fclose($data);
    }
  elseif($Bannerseite == "Seite2")
    {

$file = "../daten/rcsm00012_best.txt";

$data = fopen($file, "r");
 $count = fread($data, filesize($file));
 fclose($data);

$count = ++$count;

$data = fopen($file, "w+");
 fwrite($data, $count);
 fclose($data);
    }

?>

ging das Anfangs auch, nur hinterher nicht  mehr, keine Ahnung warum?! Kann das an verschiedenen Browserfenstern liegen? Am Anfang ging das so gut, nur hinterher gar nicht mehr, halt mit IE 6.0!

Ist etwas wirr wahrscheinlich, aber ich kann das zum verrecken nicht nachvollziehen, anfangs gings gut, hinterher ging nichts mehr, wenn ich ganz einfach nur Variable $Bannerseite anzeigen wollte - war leer!?!
Kann das was ausmachen, wenn mehrere Seiten zwischen dem schreiben des Cookies und dann dem erneuten starten der Session liegen?

Prolematisch wurde es wie gesagt erst, als ich das alles in das bestell-Script einfügen wollte, das sah dann verkürzt so aus:

<?
$subject = ...
$message = ...

mail("akorthaus@web.de","$subject","$message","From: Bestellungen\nReply-To: akorthaus@web.de");

$dateiname="../daten/bestellungen.txt";
  $datei=fopen($dateiname,"a");

if ( isset($HTTP_POST_VARS))
    {

reset($HTTP_POST_VARS); //Zeiger auf das erste Element im Formular setzen
      foreach ($HTTP_POST_VARS as $key=>$Feld)
   {

fwrite($datei,"$Feld;"); //Daten in Datei schreiben
  /*Wenn Sie key und Inhalt eines Feldes in die Datei
    eintragen wollen, dann schreiben Sie:
    fwrite($datei,"$key:$Feld;")*/
      }
   fwrite($datei,"\n"); //Zeilenende nach einem Datensatz einfügen

}

fclose($datei);

/* jetzt muss noch das Array $HTTP_POST_VARS geloescht werden */
    unset($HTTP_POST_VARS);

$file = "../daten/rgnr.txt";
  /neue Rechnungsnummer generieren aus extra txt
$data = fopen($file, "r");
$count = fread($data, filesize($file));
fclose($data);

$count = ++$count;

$data = fopen($file, "w+");
fwrite($data, $count);
fclose($data);

/<b>AB HIER DER NEUE TEIL MIT DER SESSION!</b>
@session_start();

if($Bannerseite == "Seite1")
    {
     $file = "../daten/rcsm00011_best.txt";

$data = fopen($file, "r");
 $count = fread($data, filesize($file));
 fclose($data);

$count = ++$count;

$data = fopen($file, "w+");
 fwrite($data, $count);
 fclose($data);
    }
  elseif($Bannerseite == "Seite2")
    {

$file = "../daten/rcsm00012_best.txt";

$data = fopen($file, "r");
 $count = fread($data, filesize($file));
 fclose($data);

$count = ++$count;

$data = fopen($file, "w+");
 fwrite($data, $count);
 fclose($data);
    }

?>

Wie gesagt, als ich das so einmal ausgeführt hatte, lief das restl Script OK, nur wurde nichts in die txt eingetragen, später habe ich einfach echo $Bannerseite  an Stelle der kpl. if-Anweisung geschrieben, aber da wirde einfach nichts angezeigt, und danach funktionierten die restlichen Vorversionen auch nicht mehr - woran könnte sowas liegen?

Hoffe Ihr könnt mir weiterhelfen!

Gruß
Andreas

  1. H!
    ist leider doch recht lang geworden das Posting gerade, hab noch ein wenig getestet, das mit den Sessions klappt jetzt grundsätzlich einwandfrei, hab jetzt folgendes probiert:

    <?PHP

    @session_start();

    if($Bannerseite == "Seite1")
        {
         echo "1";
        }
      elseif($Bannerseite == "Seite2")
        {

    echo "2";
        }

    ?>

    Das geht immer und überall, je nachdem wie ich die Variable mit register ändere steht hier jetzt immer das richtige, hatte gestern wohl vergessen immer zu aktualisieren.
    Problem jetzt nur noch, das läuft NICHT in dem kpl. Bestellscript, auch so einfach nicht, hab gerade fast das kpl. Script gepostet, dann nur die If-Anweisung durch die obige(alleine funktionierende) ersetzt und auch mal nach ganz vorne kopiert, aber nichts hilft, keine Zahl wird angezeigt.
    Was könnte das verhindern, evtl das $HTTP_POST_VARS?
    Mail ja eigentlich nicht, oder?
    Irgendwie komme ich nicht weiter, über einen Tip würde ich mich sehr freuen!
    Gruß
    Andreas

  2. Hi,
    leider fehlt mir die Zeit, mich in deinen Code einzulesen. Allerdings wuerde ich mal folgendes probieren:

    Starte mit dem code der funktioniert (deiner if/else Bedingung). Diesen Code setzt du an den Anfang deines Scriptes.

    Dann füge stueckchenweise den nicht funktionierenden code hintendran und lasse dir Stueck für Stueck (wenn es sein muß auch Zeile für Zeile) über ein echo deine Sessionvariable ausgeben.

    Wenn der Code in der if/else Bedingung funzt, was der Fall sein sollte, da korrekt, dann wird ja zwangsläufig irgendwann deine Sessionvariable nicht mehr da sein.

    Wenn du jetzt abschnittsweise so vorgehst, solltest du die Stelle an der es hakt eigentlich relativ schnell eingrenzen können. Die Ausgabe von Variablen ist imho ein aeußerst adaequates Mittel zum Debuggen.

    Gruß Ralf

    1. Hallo!
      Erstmal danke für die Antwort!

      Das Problem war - konntet Ihr nicht wissen - die Domain wird umgeleitet auf ein Unterverzeichnis einer anderen Domain - im Cgi-Script des Formulars war nun leider der kpl. Pfad, das heißt die andere Domain mit entsprechendem, Unterverzeichnis, ich hatte das nur zufällig probiert, als ich direkt den Verweis auf die richtige domain eingegeben hatte - ging es!

      Gruß

      Andreas