Problem mit Session_id()

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

  • Problem mit Session_id()

    Hi,

    ich brauche Hilfe !

    Problem:
    PHP-Code:
    session_id() 
    offenbar nicht vorhanden

    also:

    ich frage auf meiner seite1 die session id des users mit
    PHP-Code:
    session_id() 
    ab. speiche diese dann in einer mysql-db-spalte.

    danach kann er sich frei auf der page bewegen. der inhalt wird immer includiert.

    die session id bleibt die gleiche. immer wenn ich sie abfrage stimmt sie noch überein.

    das problem ist nun, wenn ich ein formular (für ein gästebuch) includiere und die eingegebenen daten nun an ein script versende, das die daten wiederum in eine gästebuch-db schreibt, kann ich innerhalb dieses scriptes
    PHP-Code:
    session_id() 
    offenbar nicht verwenden. es wird statt der bekannten id ein leerer string zurückgeliefert.


    meine fragen:

    1. ist das normal?
    2. wie kann ich das umgehen? ich möchte möglichst weder das script zum eintragen nicht in die gleiche seite die das formular enthält schreiben und auch möglichst nicht
    PHP-Code:
    $_SESSION['bananenkuchen'
    verwenden. (würde das überhaupt helfen? )

    es bedankt sich schonmal

    der tudor

  • #2
    net vergessen session_start() auf jeder seite, dann ist die frage wie du die sessions übergibts automtisch oder nur per session cookie? dann muss die php.ini richtig konfiguriert siehe url_rewriter.tags. im zweifelsfall nachhelfen und ein hidden input feld machen was die sesssion id übergibt. hoffe das hilft für den anfang - weil deine postings sind überaus mager and script

    Kommentar


    • #3
      uhm.. mir dämmert grad was:

      ich übergebe die session_id überhaupt nicht. ^^
      die session_id war nur auf allen "seiten" verfügbar, weil ich ja im prinzip die ganze zeit nur die index.php aufrufe....

      daran könnt es liegen, was?

      argh. ich bin offenbar noch vernubter als ich dachte. hab versucht es zu fixen und session_id via hidden input weiter zugeben:

      auf meiner g-bucheintragsseite steht dann im form:

      [COLOR=red]<input name="session_id" type="hidden" value="<?php session_id();?>">[/COLOR]

      soweit richtig?

      das script an sich macht dann folgendes:

      PHP-Code:
      if($_POST)
      {
       
      $session_id $HTTP_POST_VARS["session_id"];
       
      $abfrage="SELECT login 
          FROM intern WHERE session LIKE '
      $session_id'
          LIMIT 1"

      ich kann garantieren, dass die session id, die zumindest vor dem abschicken des formulars per echo ausgegeben wird die gleiche ist, die in der datenbank intern unter session eingetragen ist...
      trotzdem krieg ich genau nix zurück

      man ich fühl mich voll schlecht weil ich das forum-niveau so runterziehe
      trotzdem: hilfe bitte

      Kommentar


      • #4
        die session_id war nur auf allen "seiten" verfügbar, weil ich ja im prinzip die ganze zeit nur die index.php aufrufe....

        daran könnt es liegen, was?
        Öhm, nö!

        Wenn du die Seite mehrfach aufrufst, checkt das der Server erstmal gar nicht. Somit bleibt auch die ID unter keinen Umständen "auf der Seite" gespeichert.

        Auch was du weiterhin schreibst, kann SO nicht stimmen. Ohne Testausgaben wirst du das aber nicht feststellen können.

        Kommentar


        • #5
          mir is schon klar, dass die session_id() nirgends gespeichert wird, wenn ich die seite neu aufrufe..

          darum bestimme ich sie ja und schreibe sie in das hidden field. (s.o.)
          gebe danach die form-daten (inkl. der session id) mit post weiter und hol sie mir im script.

          aber da muss ich noch irgendeinen bockmist drin haben...

          Kommentar


          • #6
            Ich habe nicht den ganzen Thread gelesen.

            Du must die SessionID nicht "persönlich" übergeben, das macht PHP automatisch für dich. Also kein hidden field oder anderer Zauber.

            Einem Besucher wird beim Aufruf Ihrer Website eine eindeutige ID, die sogenannte Session-ID, zugeordnet. Diese wird entweder benutzerseitig in einem Cookie abgelegt oder in der URL übermittelt.

            Die Unterstützung von Sessions erlaubt Ihnen, eine beliebige Anzahl von Variablen zu registrieren und diese über Anfragen hinweg zu erhalten. Wenn ein Besucher Ihre Website aufruft, überprüft PHP automatisch (falls session.auto_start auf 1 gesetzt ist) oder auf Anfrage (explizit durch session_start() oder implizit durch session_register()), ob mit der Anfrage schon eine bestimmte Session-ID gesendet wurde. Wenn dies der Fall ist, wird die zuvor gespeicherte Umgebung wiederhergestellt.

            Kommentar


            • #7
              glaube ich konnte noch nicht ganz deutlich machen wo mein problem ist.
              ich versuchs mal anders zu sagen:

              der "weg" sieht wiefolgt aus:

              ---> seite 1 mit form, session id wird abgefrag und in db gespeichert
              ---> form-daten an ein script, daten werden ausgewertet
              ---> via (header) zu einer anderen seite

              meine fragen sind jetzt:

              wie übergebe ich die session_id(), die ich auf seite 1 bestimme am besten an das script, das ich über das form-submit aufrufe?

              das problem is ja: wenn ich auf der script seite session_id() schreibe, ohne vorher sesssion_start() zu machen kommt nix. mach ich session_start krieg ich ne andere session id...

              also sprich: wie gebe ich die session_id() über ein form weiter?
              falls mit hidden field: das hab ich probiert (s.o.): bin wohl zu blöd dafür

              danke nochmals..

              Kommentar


              • #8
                Immer noch

                PHP-Code:
                <?php
                session_start
                ();
                echo 
                session_id();
                ?>
                <a href="naechste_seite.php">Seite 2</a>
                Auf der 2ten Seite funktioniert ein echo session_id(); nach dem starten der Session auch noch..
                gruss Chris

                [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                Kommentar


                • #9
                  eben bei mir nicht !!
                  ich möchte die session id in dem SCRIPT haben, nicht auf der seite2, die nach der ausführung des scipts aufgerufen wird.

                  mach ich im script: session_id() kommt ein leerer string zurück.
                  mach ich n session start in das script krieg ich ne andere session_id... is ja logisch !

                  frage also: Wie gebe ich die session auch an ein script weiter WENN ICH ÜBER EIN FORM aufrufe, nicht über einen LINK??

                  ich habs mit hidden_field versucht (bitte s.o.) aber da hab ich noch irgendwo einen fehler, scheinbar.

                  Kommentar


                  • #10
                    @ moderator meinen letzten post bitte löschen..
                    dem war wohl doch nicht so.

                    mach ich ein start in das script und frage dann die session id geht's...

                    bin davon ausgegangen, dass eine neue session gestartet wird, sobald ich session start schreibe. dem is aber nicht so.. oder?

                    naja. mein prob is gefixt, wenn einer mir noch sagen will warum ich in jede datei, in der ich session id abfragen will session start schreiben will ok,
                    ansonsten.. auch gut

                    und nochmal DANKE für die nette hilfe

                    Kommentar


                    • #11
                      Hi Leutz, Hi Tudor,

                      mir kommt Dein Problem sehr bekannt vor, ich hab gerade das gleiche

                      Ich habe das gleiche Problem, mit der Variablen Übergabe in Sessions mittels Session ID.

                      Ich habe schon sämtliche Beispiele aus den verschiedensten Grundlagen PHP Foren usw. Seiten durchprobiert und komme zu keiner adequaten Lösung. Sessions verweigern einfach Ihren Dienst und machen was sie wollen.

                      Ähnlich wie bei Dir Tudor, will ich auf Folgeseiten via Session ID in den Scripten die Session Daten weiterverarbeiten (Wie Username, Kundennummer, usw.) , weils mir die "elegantesteste" Lösung erschien.

                      Auf meinem Server hab ich php 4.4.1 am laufen.

                      Zuerst hab ichs mit der alten Methode


                      <?php //S_Test1.php


                      session_start();
                      $string = "Test";
                      $integer = 1;
                      $array = array("Wert1", "Wert2");
                      session_register("string", "integer", "array");
                      .
                      .
                      <a href="S_Test2.php">Weiter zu Index2</a>
                      .
                      ..


                      <?php // S_Test2.php

                      //session_start();
                      ?>
                      <html>
                      <head>
                      <title>Beginn</title>
                      </head>
                      <body>
                      <pre>
                      <?php
                      print "String: ". $_SESSION['string']."<br />";
                      print "Integer: ". $_SESSION['integer']."<br />";
                      print "Array:<br />";
                      print_r($_SESSION['array']);

                      // In der Session gespeicherten Wert verändern
                      $_SESSION['integer']++;

                      ?>
                      </pre>
                      <a href="S_Test2.php">Erneut aufrufen</a>
                      </body>
                      </html>

                      Ergebnis dieser Aktion war,:

                      Notice: Undefined variable: _SESSION in d:\webprojekt\s_test2.php on line 11
                      usw.

                      Zudem legt der Server bei mir bei JEDEM session_start(); ein neue Session ID mit dazugehöriger Datei auf dem Server an . (Aufruf der Seite via gleichem Browser und gleicher rechner IP) .

                      In der einen Sessiondatei stehen die Variablen drinn, in der zweiten Datei (von der Folgeseite erzeugt mit session_start() [warum auch immer er das macht ] ) steht nüscht.

                      Session_autostart = 0 (also deaktiviert).

                      Auch die neue Variante (seit 4.x) mit Superglobal $_SESSION ['Test'] = $Irendwas; versagt ihren Dienst.

                      Ich vermute, das irgendeine Einstellung in der php.ini daran schuld ist, und nicht das Skript.

                      Meine php.ini ist grundsätzlich die default Ini mit der einzigen änderung des session_save_path(LWK:\temp);

                      Ich kann es mir anders nicht mehr erklären warum die Sessions sich weigern Ihren Dienst zu tun. Er legt brav die Session ID's an, aktiviert die Sessions, nur die Variablen werden nicht übergeben.

                      Ich hatte erst vermutet, das es an dem Frame konstrukt der HP liegt (die ich mit dynamischen Inhalten füllen soll ). Aber selbst einfachste Beispielprogramme funzen nicht. Ich gehe also eher davon davon aus, dass es ein Konfi Problem beim Server ist.

                      Evtl. ist es bei Dir auch eher etwas in der Richtung Tudor,. Ich habe mir jetzt 3 Nächte mit den Sessions um die Ohren gehauen, und bin zum Ergebnis gekommen, das es nur noch an der php.ini liegen kann. Ich weis mir sonst keinen Rat mehr.

                      Liebe Grüsse

                      DerSchamane
                      Zuletzt geändert von DerSchamane1967; 07.12.2005, 04:47.
                      ______________________________
                      Computer sind nur so schlau wie der Mensch der sie füttert!

                      Ciao ich geh dann mal wieder mit meiner Keule in den Wald Mammuts Jagen ..

                      Kommentar


                      • #12
                        Original geschrieben von DerSchamane1967
                        Ich habe das gleiche Problem, mit der Variablen Übergabe in Sessions mittels Session ID.
                        Das Problem reduziert sich meist auf die Übergabe der Session-ID.
                        Notice: Undefined variable: _SESSION in d:\webprojekt\s_test2.php on line 11
                        Das kann eigentlich nur am fehlenden session_start() liegen. Im Quellcode oben ist es auskommentiert - das ist schlecht, denn eine Session fällt nicht vom Himmel! Ich glaube es liegt am mißverständlichen Namen der Funktion. Das 'start' heißt nicht, dass PHP eine neue Session startet.
                        session_start() heißt:
                        - wenn eine Session-ID übermittelt wurde, dann
                        - diese Session wieder aufnehmen, Werte in $_SESSION speichern,
                        - sonst
                        - neue Session mit neuer Session-ID generieren, $_SESSION ist leer.
                        Zudem legt der Server bei mir bei JEDEM session_start(); ein neue Session ID mit dazugehöriger Datei auf dem Server an . (Aufruf der Seite via gleichem Browser und gleicher rechner IP) .
                        Lass dir $_GET und $_COOKIE ausgeben - wenn die Session-ID nirgends dabei ist, dann wurde sie nicht übermittelt und PHP muß einen neue Session starten.

                        In der PHP-Ini steht vor allem auch, wie versucht wird, die SID zu übergeben. Da das bei dir (euch?) nicht geschieht, würde ich da mal ansetzen. Aber ganz allgemein empfielt sich wie immer ein Blick ins Manual (http://php.net/session und http://ffm.junetz.de/members/reeg/DSP/node30.html).

                        Kommentar

                        Lädt...
                        X