Wie werden Sitzungsvariablen seitenübergreifend gespeichert und verwendet?

Lesezeit: 5 Minuten

Wie werden Sitzungsvariablen seitenubergreifend gespeichert und verwendet
ab11

Wenn auf eine Seite zugegriffen wird, möchte ich eine Sitzung starten und eine Sitzungsvariable speichern:

<?php
  session_start(); 
  $_SESSION['myvar']='myvalue';
?>

Dann möchte ich von einer anderen Seite aus überprüfen, ob diese Sitzungsvariable gespeichert wurde:

<?php
    session_start();
    echo("1");
    if(isset($_SESSION['myvar']))
    {
        echo("2");
       if($_SESSION['myvar'] == 'myvalue')
       {
           echo("3");
           exit;
       }
    }
    ?>

Dieser Code funktioniert bei mir nicht.

  • Wie wird die Session-ID übertragen? Haben Sie überprüft, ob die Session-ID auf beiden Seiten gleich ist?

    – Gumbo

    30. März 2011 um 16:48 Uhr

  • @ab11: In diesem Fall der Strom Sitzungskonfiguration zum session.use_cookies, session.use_cookies_onlyund session.use_trans_sid wäre hilfreich (vgl ini_get). Und die aktuelle Session-ID kann mit abgerufen werden session_id

    – Gumbo

    30. März 2011 um 16:59 Uhr

  • @ab11: Und was ist mit der Sitzungs-ID? Sind sie auf beiden Seiten identisch?

    – Gumbo

    30. März 2011 um 17:04 Uhr

  • @ ab11: Dann ist das auch meine letzte Vermutung session.save_handler oder session.save_path ist nicht richtig eingestellt.

    – Gumbo

    30. März 2011 um 17:11 Uhr

  • @ab11: Letzte Frage: Stimmt /var/php_sessions vorhanden und ist es von PHP lesbar/schreibbar? Sie können dies leicht überprüfen, indem Sie zu diesem Verzeichnis navigieren und nach einer Datei mit dem Namen suchen sess_e92d1212a93e216e96523ff1e903ed41.

    – Gumbo

    30. März 2011 um 17:16 Uhr


1646922246 249 Wie werden Sitzungsvariablen seitenubergreifend gespeichert und verwendet
Mohammed Kermani

Sitzungen Schritt für Schritt

  1. Session vor allem definieren, davor sollte keine Ausgabe sein, KEINE LEISTUNG

    <?php
    session_start();
    ?>
    
  2. Legen Sie Ihre Sitzung auf einer Seite fest und Sie haben dann Zugriff auf diese Seite. Dies ist zum Beispiel Seite 1.php

    <?php
       //This is page 1 and then we will use session that defined from this page:
        session_start();
        $_SESSION['email']='email@example.com';
    ?>
    
  3. Verwenden und Einsteigen in die Sitzung 2.php

     <?php
    
    //In this page I am going to use session:
    
      session_start();
      if($_SESSION['email']){
      echo 'Your Email Is Here!  :) ';
      }
     ?>
    

HINWEIS: Kommentare haben keine Ausgabe.

1646922246 292 Wie werden Sitzungsvariablen seitenubergreifend gespeichert und verwendet
gaurav

Alles, was Sie tun möchten, ist zu schreiben — session_start(); —– auf beiden Seiten..

<!-- first page -->
<?php
  session_start(); 
  $_SESSION['myvar'] = 'hello';
?>

<!-- second page -->
<?php
    session_start();
    echo $_SESSION['myvar']; // it will print hello 

?>

  • Rufen Sie zuerst die erste Seite auf und rufen Sie dann die zweite Seite auf. Danke

    – gaurav

    11. September 2012 um 11:25 Uhr

  • Die ursprüngliche Frage hat diesen Funktionsaufruf bereits auf beiden Seiten, und andere Antworten zeigten, dass es sich um ein Dateisystemproblem handelte, nicht um ein Codeproblem.

    – Mitternachtsblitz

    21. September 2012 um 5:06 Uhr

Aus den Kommentaren zu dieser Frage geht hervor, dass es an einer Anpassung mangelt session.save_path verursacht dieses Fehlverhalten des Session-Handlers von PHP. Geben Sie einfach ein Verzeichnis (außerhalb Ihres Dokumentenstammverzeichnisses) an, das existiert und sowohl von PHP gelesen als auch beschrieben werden kann, um dieses Problem zu beheben.

  • Es tut mir leid, um weitere Erläuterungen zu bitten, aber was meinen Sie mit “außerhalb Ihres Dokumentstammverzeichnisses”?

    – ab11

    30. März 2011 um 17:38 Uhr

  • @ab11: Da Sitzungen häufig vertrauliche Daten enthalten, möchten Sie nicht, dass die Sitzungsdateien über das Internet zugänglich sind. Und das wäre der Fall, wenn Sie sie in einem Verzeichnis innerhalb der Datei speichern Dokument-Root-Verzeichnis.

    – Gumbo

    30. März 2011 um 17:42 Uhr

  • Also habe ich mit Remote View in dreaweaver über “public_html” zum Stammverzeichnis meiner Website navigiert und die Verzeichnisse “var/php_sessions” hinzugefügt. Und dann habe ich hinzugefügt: session_save_path (‘/var/php_sessions’);, füge den Anfang beider Seiten hinzu. Dies hatte keine Auswirkung.

    – ab11

    30. März 2011 um 17:59 Uhr


  • @ab11: Der Pfad in session.save_path ein absoluter Dateisystempfad ist, wird nicht relativ zum Stammverzeichnis des Dokuments interpretiert (in dem Sie absolut sollte die Sitzungsdateien nicht speichern!).

    – Gumbo

    30. März 2011 um 18:01 Uhr

  • @ab11: Nein. Da „…/public_html“ Ihr Dokument-Root-Verzeichnis ist, sollten Sie die Session-Dateien nicht irgendwo in diesem Verzeichnis speichern (z. B. nicht „…/public_html/var/php_sessions“). Außerdem der Weg hinein session.save_path wird als absoluter Dateisystempfad interpretiert und nicht relativ zum Dokumentstammverzeichnis. Damit /var/php_sessions würde als „/var/php_sessions“ interpretiert und nicht als „…/public_html/var/php_sessions“.

    – Gumbo

    30. März 2011 um 18:09 Uhr

Für den Fall, dass die zweite Seite keinen gemeinsamen Zugriff auf das Sitzungscookie hat, müssen Sie den Pfad des Sitzungscookies mit festlegen session_set_cookie_params:

<?php
session_set_cookie_params( $lifetime, '/shared/path/to/files/' );
session_start();
$_SESSION['myvar']='myvalue';

Und

<?php
session_set_cookie_params( $lifetime, '/shared/path/to/files/' );
session_start();
echo("1");
if(isset($_SESSION['myvar']))
{
    echo("2");
   if($_SESSION['myvar'] == 'myvalue')
   {
       echo("3");
       exit;
   }
}

Versuche dies

Erste Seite

<?php
   session_start();
   $_SESSION['myvar']='myvalue';
?>

Zweite Seite

 <?php
   session_start();
   echo $_SESSION['myvar'];
 ?>

Jedes Mal, wenn Sie eine Sitzung starten (gilt für PHP-Version 5.2.54), session_start() erstellt eine neue Sitzungs-ID.

Hier ist die Lösung, die für mich funktioniert hat.

Datei1.php

session_id('mySessionID'); //SET id first before calling  session start
session_start();

$name = "Nitin Hurkadli";
$_SESSION['username'] = $name;

Datei2.php

session_id('mySessionID'); 
session_start();

$name = $_SESSION['username'];
echo "Hello  " . $name;

1646922246 431 Wie werden Sitzungsvariablen seitenubergreifend gespeichert und verwendet
Benutzer3796796

Starten einer Sitzung:

Fügen Sie den folgenden Code oben in der Datei ein.

<?php session_start();?>

Speichern einer Session-Variablen:

<?php $_SESSION['id']=10; ?>

So prüfen Sie, ob Daten in der Sitzungsvariablen gespeichert sind:

<?php if(isset($_SESSION['id']) && !empty(isset($_SESSION['id'])))
echo “Session id “.$_SESSION['id'].” exist”;
else
echo “Session not set “;?>

?> Details hier http://skillrow.com/sessions-in-php-4/

  • Haben Sie sich die eigentliche (3 Jahre alte) Frage angesehen? Was Sie vorschlagen, ist genau das, was OP getan hat.

    – Robby Cornelissen

    2. Juli 2014 um 8:39 Uhr

988200cookie-checkWie werden Sitzungsvariablen seitenübergreifend gespeichert und verwendet?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy