Session Problem

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

  • Session Problem

    Hallo, ich habe für eine Seite ein Script entworfen das User abfragt ob sie 18 sind oder nicht und dies mithilfe von einer Session gemacht, leider wird die Session immer zweimal abgefragt eh sie funktioniert...

    Index Seite
    PHP-Code:
    <?
    if(isset($_GET["m"]))
    {
    if(!isset($_SESSION["a"]))
    {
    include("alter/abfrage.htm");
    }
    else
    {
    if($_SESSION["a"] == 18)
    {
    include("alter/alter18.htm");
    chdir("database");
    include("shownews.php");
    }
    elseif($_SESSION["a"] == "unter18")
    {
    include("alter/unter18.htm");
    }
    }
    }
    else 
    {
    chdir("database");
    include("shownews.php");
    }
    ?>
    Die Seite in der die Session eingefügt wird:
    PHP-Code:
    <?php
    session_start
    ();
    session_register("a");
    $_SESSION["a"] = $_GET["a"];
    header("Location: http://www.game-radio.net/artikel.php?right=".$_GET["right"]."&news_id=".$_GET["news_id"]."&m=1");
    ?>
    Hoffe ihr könnt mir helfen.

  • #2
    verstehe nicht ganz. oben ist die index? ohne session_start? woher soll php wissen das er eine starten muß?

    und das zweite ist ein eingebundenes script, wenn ja wo wird es denn eingebunden?

    die zeile session_register ist hier überflüssig.
    ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
    und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

    Kommentar


    • #3
      ok sorry ich war nicht ausführlich genug. Es handelt sich um die Site game-radio.net, dort ist @session_start() ganz oben eingebunden.
      In der Mitte kommt dann die Abfrage ob die Session vorhanden ist, falls nicht wird die abfrage.htm eingebungen, dort wird ein Link zu edit.php gesetzt, die edit.php definiert dann die Session und sollte eigentlich wieder zum Artikel wechseln und ihn anzeigen, mit einem kleinen Hinweis oben, leider kommt die Abfrage zweimal, bevor das Ganze funktioniert....

      Kommentar


      • #4
        warum ein @ vor dem sessionstart() ?

        mache das mal weg.

        was passiert dann?

        kommt evtl. ne fehlermeldung alá header already sent ?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Nein es ändert sich nichts, keine Fehlermeldung das ganze klappt nach wie vor erst nach dem zweiten Klick

          Kommentar


          • #6
            ok. das ist ja schon mal was. denn das @ sollte man nur verwenden, wenn man eigene fehlerbehandlungen machen möchte. bei session_start() sollte aber nie ein fehler kommen, wenn alles richtig ist. ergo lasse das @ lieber weg, damit du auch einen fehler sehen kann.

            so. jetzt noch einmal zu deinem problem. ich habe mit den code noch einmal angesehen......

            wenn $_SESSION["a"] nicht isset() ist, machst du einen include von alter/abfrage.htm. ich nehme mal an, dass du dort dann $_SESSION["a"] einen wert zuweisst. oder? ( aber warum .htm als endung? )

            liege ich mit meine letzten annahme richtig?

            grundsätzlich kannst du auf registrierte session-vars erst auf der nächsten seite oder einem neuladen der selbigen darauf zugreifen. daher empfehle ich einen header('Location: index.php'); nach dem reggen zu machen.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Original geschrieben von Abraxax
              wenn $_SESSION["a"] nicht isset() ist, machst du einen include von alter/abfrage.htm. ich nehme mal an, dass du dort dann $_SESSION["a"] einen wert zuweisst. oder? ( aber warum .htm als endung? )
              Die Site führt immer zwei GET Werte mit sich die den Content anzeigen, bei der abfrage.htm werden zwei links angezeigt die zur edit.php, an diesen link werden diese GET Werte angehängt, habe allerdings das htm jetzt in php umgeändert, was auch nichts verbessert hat. In der edit.php wird dann der Session["a"] ein Wert zugewiesen.

              grundsätzlich kannst du auf registrierte session-vars erst auf der nächsten seite oder einem neuladen der selbigen darauf zugreifen. daher empfehle ich einen header('Location: index.php'); nach dem reggen zu machen. [/B]
              Genau da liegt das Problem, das Ganze soll so funktionieren das der Besucher bestätigt das er 18 ist und dann die Seite angezeigt bekommt die er sehen wollte...

              EIne Frage: Gibts es eine maximale Anzahl von GET Werten die ich an eine URL hänge?

              Mir ist gerade etwas aufgefallen was mich sehr verwundert:
              Beim ersten Mal sieht der Link so aus:
              http://www-user.tu-chemnitz.de/...php?...a=18&PHPSESSID=7ba8da89dfce46680c41eaffcdcc09a2
              Beim zweiten Mal ändert sich aber die PHP Session ID, danach funktioniert dann die Weiterleitung....
              http://www-user.tu-chemnitz.de/....php?...a=18&PHPSESSID=e10751863ba70b3b9fd2176377c328e8

              Wie soll ich das jetzt deuten?


              Gibt es vielleicht eine einfachere Lösung das zu realisieren?

              Kommentar


              • #8
                Abraxax hat recht
                wenn du schreibst
                ...abfrage.htm eingebungen, dort wird ein Link zu edit.php gesetzt
                wie setzt du denn den link auf edit.php? das wird die session ja verloren!
                dort kann sie ja nicht angegeben werden.

                vorschlag: (weiß ja nicht genau wie die dateien aussehen ... kann ja auch ein form sein...)
                abfrage.htm heißt ab jetzt abfrage.php und der link darin
                PHP-Code:
                ..edit.php?<?=session_name()?>=<?=session_id()?>
                ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
                und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

                Kommentar


                • #9
                  die session.id sollte sich eigentlich nicht ändern, solange du auf dem gleichen server bist.

                  aber dein session-problem könnte man so lösen....

                  PHP-Code:
                  <?
                      if(isset($_GET["m"]))
                      {
                          if(!isset($_SESSION["a"]))
                          {
                              include("alter/abfrage.htm");
                          }
                          else
                          {
                              if($_SESSION["a"] == 18)
                              {
                                  // eine weiterleitung, wenn die 18 eben definiert ist....
                                  header('Location: alter/alter18.htm');
                                  // die korrekte url müsstest du reinschrieben.
                              }
                              elseif($_SESSION["a"] == "unter18")
                              {
                                  // oder eine weiterleitung, wenn die 18 eben NICHT definiert ist....
                                  header('Location: alter/unter18.htm');
                              }
                          }

                      }
                      else 
                      {
                          chdir("database");
                          include("shownews.php");
                      }
                      
                  ?>
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Original geschrieben von muecke0815
                    Abraxax hat recht
                    wenn du schreibst

                    wie setzt du denn den link auf edit.php? das wird die session ja verloren!
                    dort kann sie ja nicht angegeben werden.
                    [/PHP]
                    So sieht die Abfrage.php aus:
                    PHP-Code:
                    <?php
                    $url1 
                    "alter/edit.php?right=".$_GET["right"]."&news_id=".$_GET["news_id"]."&m=1&a=18";
                    $url2 "alter/edit.php?right=".$_GET["right"]."&news_id=".$_GET["news_id"]."&m=1&a=unter18";
                    ?> 
                    <div align="center">
                      <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Der Artikel,
                        den du lesen willst, besch&auml;ftigt sich mit einem Spiel bzw. einer Thematik,
                        die nicht f&uuml;r unter 18j&auml;hrige zugelassen ist. Wir bitten daher um
                        eine Altersbest&auml;tigung. Die Angabe ist bindend und muss wahrheitsgem&auml;&szlig;
                        beantwortet werden. </font></p>
                      <p align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="<?php echo $url1 ?>">Ja,
                        ich bin genau 18 oder &auml;lter</a></font></p>
                      <p align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="<?php echo $url2 ?>">Nein,
                        ich bin unter 18 und m&ouml;chte diese Seiten nicht sehen</a></font></p>
                    </div>
                    Du meinst also bei diesem Vorgang geht dann die PHP Session ID verloren? Ich dachte immer die Session bleibt solange erhalten wie man auf der entsprechenden Seite ist... Würde das Problem gelöst werden wenn ich die PHP Session id manuell anhänge?

                    Danke für eure Hilfe, bin leider in Sachen PHP noch der totale nixkönner, obwohl ich versuche mir die meisten Sachen selbst herzuleiten und zusammenzubasteln...

                    Kommentar


                    • #11
                      warum definierst du die links erst und schreibst sie dann rein?

                      du kannst das auch direkt machen...


                      hast du schon meinen code getestet?
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Original geschrieben von Abraxax
                        warum definierst du die links erst und schreibst sie dann rein?

                        du kannst das auch direkt machen...


                        hast du schon meinen code getestet?
                        ne das mit den links reinschreiben is mir zu unübersichtlich

                        hm dein code würde mein gesamtes konzept übern haufen werfen, weil diese abfrage wird direkt ins design eingebunden, werds aber trotzdem mal probeweise testen

                        Kommentar


                        • #13
                          werds aber trotzdem mal probeweise testen
                          genau darauf wollte ich hinaus. denn damit solltest du keine problem haben.

                          du brauchst ja quasi nur ne zwischenseite für die unterscheidung. und in deinen 18er dateien solltest auch auch immer zu beginn prüfen, oder 18 auch in der session steht. denn wenn nicht, solltest du auch deine startseite linken.
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            das ist wohl richtig das die session erhalten bleibt. aber ... nur solange php in der lage ist sie auch abzulagern! und damit er sie hinterher auch finden kann greift er ja auch meist auf die cookies zurück ... nur ... so könntest du sie verlieren wenn cookies nicht erlaubt sind.

                            ok gebe zu es kommt nicht oft vor. aber ich glaub hier im forum hab ich auch schon das ein oder andere wegen einer verlorenen session gesehen ...

                            wollte nur vorbeugend wirken.
                            ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
                            und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

                            Kommentar


                            • #15
                              @muecke: Dieses Cookie Problem ist mir bekannt, ich baue eigentlich immer ein Hinweis ein, das man Cookies aktivieren soll.

                              @abraxax:
                              Die Lösung mit dem header "scheint" (der Langezeittest wirds zeigen) zu funktionieren.

                              Vielen Dank euch beiden.

                              Kommentar

                              Lädt...
                              X