IE-Problem mit Sessions

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

  • IE-Problem mit Sessions

    Hallo,

    ich versuche vergeblich, folgenden PHP-Code zum Laufen zu bringen.

    (Vorab möchte ich mitteilen, dass ich ein PHP-Anfänger bin und auch schon X Forenbeiträge zu dem Thema gelesen habe, welche mich alle nicht weiter brachten)

    Seite 1
    PHP-Code:
    <?php
    session_start
    ();
    error_reporting(E_ALL);
    ?>
    <html>
    <head>
    <title>Seite1</title>
    </head>
    <BODY>
    <?php
    echo 'Willkommen auf Seite 1';
    $_SESSION['Index'] = '12345ABC';
    echo 
    '<br><a href="2.php?' SID '">Seite mit Parameterübergabe</a>';
    echo 
    '<br><a href="2.php">Seite ohne Parameterübergabe</a><br>';
    ?>
    </BODY>
    </HTML>
    Seite2:

    PHP-Code:
    <?php
    session_start
    ();
    error_reporting(E_ALL);
    ?>
    <html>
    <head>
    <title>Seite2</title>
    </head>

    <BODY>
    <?php
    echo 'Willkommen auf Seite 2<br>';
    echo 
    $_SESSION['Index']."<br>";
    echo 
    '<br><a href="1.php">Zum Anfang</a>';
    ?>
    </BODY>
    </HTML>
    Der Inhalt von Index kommt im Netzt mit dem IE nicht an. Wenn ich es lokal teste, funktioniert es im IE und mit Firefox. Im Netzt funktioniert es nur mit FireFox.
    Sicher fehlt mir nur eine klitzekleine Anweisung.
    Ich vermute, Script 1 will im IE einen Cookie und erwartet in Script 2 einen Cookie.
    Ich hoffe, es kann mir jemand helfen.
    Danke, LotharK

  • #2
    SESSION Seite mit Parameterübergabe - PHP Forum: phpforum.de
    Wir werden alle sterben

    Kommentar


    • #3
      :-(

      Das finde ich gar nicht lustig...

      Kommentar


      • #4
        Ich auch nicht!
        Denn auch hier sind Crosspostings unerwünscht.
        Wir werden alle sterben

        Kommentar


        • #5
          Doppelposting

          Was soll ich tun, wenn mir in einem Forum nicht geholfen wird. Komisch nur, dass alle bis jetzt im PHP-Forum Oberlehrer sein wollen, aber keiner kann helfen.
          Es wäre doch fairer zu sagen, gehe in ein anderes Forum, wir wissen es nicht. Nein, dafür spielt sich jeder als oberschlauer auf. Wem nützt das?

          Kommentar


          • #6
            dass alle bis jetzt im PHP-Forum Oberlehrer sein wollen
            Hmmm...
            Lehrer evtl. schon. Aber warum Oberlehrer?
            Möchtest du denn lernen, oder eher nicht?

            Falls du PHP nicht lernen möchtest kann ein jeder Lehrer natürlich nur versagen, egal ob Ober oder Unter.

            Vergleich:
            Möchte man nur einen Schrank, dann geht man einfach zum Schreiner und liefert Euronen ab.
            Möchte man aber lernen wie man einen Schrank baut, macht man eine Ausbildung zum Schreiner und kann dabei sogar noch Euronen abstauben. Wenn man es klug macht, dann auf Dauer sogar reichlich davon.
            Zuletzt geändert von combie; 12.11.2012, 11:11.
            Wir werden alle sterben

            Kommentar


            • #7
              Wie alt bist Du? Ehrlich jetzt mal.

              Kommentar


              • #8
                alter hat damit nix zu tun ..

                geh bitte logisch an dein Problem heran .

                wenn du einen Fehler bekommst, steht als nächstes Debugging auf dem Plan - also lass dir den "Kram" ausgeben

                was kommt denn in deinem Browser heraus, wenn du Script 1 mal wie folgt überarbeitest

                PHP-Code:
                <?php
                session_start
                ();
                error_reporting(E_ALL);
                ?>
                <html>
                <head>
                <title>Seite1</title>
                </head>
                <BODY>
                <?php
                echo 'Willkommen auf Seite 1';
                $_SESSION['Index'] = '12345ABC';
                echo 
                '<pre>';
                var_dump($_SESSION);
                echo 
                '</pre>';
                echo 
                '<br><a href="2.php?' SID '">Seite mit Parameterübergabe</a>';
                echo 
                '<br><a href="2.php">Seite ohne Parameterübergabe</a><br>';
                ?>
                </BODY>
                </HTML>
                und .... mal Klartext - sind beide PHP-Scripte auf dem gleichen Server ? / gleiche (Sub)Domain bzw vhost ?

                Ich hoffe du weißt, dass im Falle der SID als URL-Parameter du diese im 2ten Script VOR session_start() übernehmen musst, sonst generiert PHP mit Pech wieder eine zufällige Session-ID
                Zuletzt geändert von eagle275; 12.11.2012, 15:20.
                [font=Verdana]
                Wer LESEN kann, ist klar im Vorteil!
                [/font]

                Kommentar


                • #9
                  Hallo eagle275,

                  danke für Deine Hilfe. Wenn ich das Script, so wie von Dir erweitert, laufen lasse, erscheint folgende Ausgabe:

                  PHP-Code:
                  array(1) {   ["Index"]=>   string(8"12345ABC" 
                  Ich denke, das ist auch logisch, da ja Firefox überall und der IE lokal die Session ordentlich wiedergeben.

                  Ich hoffe du weißt, dass im Falle der SID als URL-Parameter du diese im 2ten Script VOR session_start() übernehmen musst, sonst generiert PHP mit Pech wieder eine zufällige Session-ID
                  Nein, das wußte ich nicht. Ich dachte SESSION_Start muß als erstes stehen. (Wurde hier immer wieder so dargestellt)

                  Auch habe ich schon versucht, Cookies zuzulassen und auch zu verhindern.
                  Natürlich dann mal über Cookie und mal über SID.

                  PHP-Code:
                  ini_set('session.use_cookies',1);
                  ini_set('session.use_only_cookies',1);
                  ini_set('session.use_trans_sid',0);
                  session_start(); 
                  Das mit dem - vor session_Start verstehe ich, weiß aber nicht, ob ich das richtig umsetze. In meinem Script gibt es ja nur 2 wichtige PHP-Befehle.

                  Muss das so aussehen?

                  PHP-Code:
                  <?php
                  echo $_SESSION['Index'];
                  session_start();
                  error_reporting(E_ALL);
                  ?>
                  <html>
                  <head>
                  <title>Seite2</title>
                  </head>

                  <BODY>
                  <?php
                  echo 'Willkommen auf Seite 2<br>';

                  echo 
                  '<br><a href="1.php">Zum Anfang</a>';
                  ?>
                  </BODY>
                  </HTML>
                  Wenn ich vor session_start die Sessionparameter schon habe, wieso baruche ich dann noch session_start? (In meinem konkreten Fall?)

                  Wenn ich es so mache, wird das

                  PHP-Code:
                  echo $_SESSION['Index']; 
                  ignoriert. Schreibe ich es wieder unten hin, kommt: Undefined index.

                  Ich habe nun schon so ziemlich alles ausprobiert, was hier in den Grundlagen unter Session zu finden ist.
                  Also, ich weiß wirklich nicht mehr was ich noch machen kann.


                  MfG Lothar

                  Kommentar


                  • #10
                    Ich hoffe du weißt, dass im Falle der SID als URL-Parameter du diese im 2ten Script VOR session_start() übernehmen musst,
                    Unsinn!
                    Blanker Unsinn.

                    sonst generiert PHP mit Pech wieder eine zufällige Session-ID
                    Ja und?
                    Macht die Sessionverwaltung doch sowieso, wenn sie keine Session ID findet.
                    Muss einen also nicht wundern.


                    Ich habe nun schon so ziemlich alles ausprobiert, was hier in den Grundlagen unter Session zu finden ist.
                    Ausprobieren hilft nicht viel...
                    Ist ähnlich sinnvoll wie im Nebel stochern.
                    Befasse dich bitte mit den Grundlagen.
                    Lese die Http Spezifikation.
                    Begreife wie die Sessionverwaltung funktioniert.
                    Wie willst du einen Fehler finden, wenn du die dahinter stehende Technik ausblendest?

                    Wie alt bist Du? Ehrlich jetzt mal.
                    Zumindest so alt, dass ich die Zeit hatte, das PHP Handbuch und die HTTP Spezifikation zu lesen und zu verstehen.
                    In dem Punkt scheinst du noch viel jünger zu sein.


                    Also, ich weiß wirklich nicht mehr was ich noch machen kann.
                    Lass dir die gesendeten HTTP Header anzeigen.
                    Aufpassen: HTTP Header! Nicht HTML Head.
                    Liefert der Server das Cookie an den Browser?
                    Liefert der Browser das Cookie an den Server?
                    Wechselt die Session Id dabei?



                    Nachtrag:
                    PHP-Code:
                    <?php
                    session_start
                    ();
                    error_reporting(E_ALL);
                    ?>

                    Es hat so auszusehen:
                    PHP-Code:
                    error_reporting( -);
                    ini_set('display_errors'TRUE);

                    // und dann erst:
                    session_start(); 
                    Zuletzt geändert von combie; 13.11.2012, 07:34.
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      combie - ich will mich nicht mit dir streiten .. aber wenn er die Session ID nur per Get-Parameter weitergibt , dann muss er die vorher setzen

                      PHP-Code:
                      <?php
                      session_id
                      ($_GET['sessionid']); // oder welchen Parameter du auch immer verwendest
                      session_start();
                      - und das ist aus dem php manual

                      allerdings hast du recht, dass er VOR session_start() mal error-reporting starten sollte und auch erzwingen muss, dass die Fehler wirklich angezeigt werden, um herauszufinden, ob der Fehler DORT schon liegt - vielleicht weil eine BOM im php-script schon den http-body einleitet
                      [font=Verdana]
                      Wer LESEN kann, ist klar im Vorteil!
                      [/font]

                      Kommentar


                      • #12
                        Zitat von eagle275 Beitrag anzeigen
                        combie - ich will mich nicht mit dir streiten .. aber wenn er die Session ID nur per Get-Parameter weitergibt , dann muss er die vorher setzen

                        PHP-Code:
                        <?php
                        session_id
                        ($_GET['sessionid']); // oder welchen Parameter du auch immer verwendest
                        session_start();
                        - und das ist aus dem php manual
                        Das ist Quatsch. Erstens ist das nicht aus dem Manual, sondern aus einem Kommentar dazu, und zweitens solltest du nicht nur die Hälfte lesen, weil der eigentliche Zweck dieses Codes was anderes ist.

                        PHP kümmert sich selber um die Session-Verwaltung inkl. Weitergabe der Session-ID. Du als Programmierer musst da gar nix machen! session_start() alleine reicht vollkommen.

                        Kommentar


                        • #13
                          bleibt das Problem, warum es bei ihm nicht will -

                          ich bin ja der Meinung, wenn es an BOM oder so liegt, müsste der Code in JEDEM Browser sauer aufstoßen
                          [font=Verdana]
                          Wer LESEN kann, ist klar im Vorteil!
                          [/font]

                          Kommentar


                          • #14
                            Bei den Fehlern, die da rein gebaut waren, kann es auch zu Anfang nicht mit jedem Browser funktioniert haben. Und wenn, dann war das funktionierende zufällig aus den Cache.

                            Erst wenn man die Header gesehen hat, kann man sagen woran es liegt.


                            Meine Vermutung:
                            Trotz offensichtlicher laxer Sicherheitseinstellungen akzeptiert der IE die Cookies nicht.

                            Vermutliche Ursache: Der Server sendet keine P3P Header

                            Denn:
                            Hängt der Browser, der IE, in einem Windows Firmennetzwerk mit PDC, übernimmt er die von PDC vorgegebenen Sicherheitseinstellungen. Und die können eben den Empfang von (gültigen) P3P Headern vorschreiben.
                            Wir werden alle sterben

                            Kommentar


                            • #15
                              E_all

                              Hm,

                              hier stand:

                              PHP: error_reporting - Manual

                              On a shared debugging and production server it is convenient to use
                              <?php error_reporting(E_ALL); ?>
                              for debugging.

                              This will not help in case of parsing errors, so make sure you enable at least E_PARSE in your php.ini. Parse errors should not exist in production scripts.

                              Still, sometimes your script will not get executed even though no parse error is displayed (just a blank page/ no output at all). As far as I know this only happens when you redeclare a user function or class.

                              eg.
                              <?php
                              error_reporting(E_ALL);

                              function a(){}
                              function a(){}
                              ?>

                              Kommentar

                              Lädt...
                              X