Ich frage mich, wie das Array $_SESSION funktioniert. Wenn viele Benutzer meine Website verwenden, muss ich dann für jeden Benutzer ein Subarray festlegen? Zum Beispiel habe ich gerade jetzt
$_SESSION['userid'] = $userid;
$_SESSION['sessionid'] = $sessionid;
$_SESSION['ipaddress'] = $ipaddress;
aber um mit mehr Benutzern fertig zu werden, muss ich ein mehrdimensionales Array erstellen?
$_SESSION[$userid]['sessionid'] = $sessionid;
$_SESSION[$userid]['ipaddress'] = $ipaddress;
Wird die $_SESSION global pro Client oder nur insgesamt gehandhabt? Wird $_SESSION haben[‘userid’] Beim Login festlegen, den vorherigen Benutzer rausschmeißen und den zuletzt angemeldeten Benutzer einsetzen?
Nein. Es gibt einen separaten $_SESSION
für jeden Benutzer erstellt. Dies wird alles vom Server erledigt, Sie müssen sich darum nicht kümmern. Behandeln Sie beim Schreiben Ihres Codes die $_SESSION
als ob es nur einen Benutzer auf der Seite gäbe.
Bearbeiten: Eigentlich, wenn man darüber nachdenkt, ist es eine sehr gute Frage zu stellen. Es ist gut, diese Art von Fragen zu stellen, es bedeutet, dass Sie ernsthaft darüber nachdenken, wie Ihr Code funktioniert funktioniert wirklich. Fragen Sie diese Dinge weiter und testen Sie weiter. Ich habe das Gefühl, dass Sie eines Tages welche schreiben werden toll Code.
In diesem Sinne, hier sind einige Informationen von der Apache Seite? ˅:
Was ist eine Sitzung?
Der Kern der Sitzungsschnittstelle ist eine Tabelle mit Schlüssel- und Wertepaaren, die über Browseranforderungen zugänglich gemacht werden. Diese Paare können je nach Bedarf der Anwendung, die die Sitzung verwendet, auf eine beliebige gültige Zeichenfolge gesetzt werden.
Sitzungen auf dem Server halten
Apache kann so konfiguriert werden, dass Sitzungen pro Benutzer nachverfolgt werden, die auf einem bestimmten Server oder einer Gruppe von Servern gespeichert sind. Diese Funktionalität ähnelt den Sitzungen, die in typischen Anwendungsservern verfügbar sind.
Falls konfiguriert, werden Sitzungen mithilfe einer Sitzungs-ID nachverfolgt, die in einem Cookie gespeichert oder aus den in die URL-Abfragezeichenfolge eingebetteten Parametern extrahiert wird, wie sie in einer typischen GET-Anforderung zu finden sind.
Und von der PHP-Dokumente auf Sitzungen:
Die Sitzungsunterstützung in PHP besteht aus einer Möglichkeit, bestimmte Daten über nachfolgende Zugriffe hinweg beizubehalten. Dadurch können Sie individuellere Anwendungen erstellen und die Attraktivität Ihrer Website steigern.
Einem Besucher, der auf Ihre Website zugreift, wird eine eindeutige ID zugewiesen, die sogenannte Session-ID. Diese wird entweder nutzerseitig in einem Cookie gespeichert oder in der URL propagiert.
Die Sitzungsunterstützung ermöglicht es Ihnen, Daten zwischen Anfragen im superglobalen Array $_SESSION zu speichern. Wenn ein Besucher auf Ihre Website zugreift, prüft PHP automatisch (wenn session.auto_start auf 1 gesetzt ist) oder auf Ihre Anfrage (explizit durch session_start() oder implizit durch session_register()), ob eine bestimmte Sitzungs-ID mit der Anfrage gesendet wurde. Wenn dies der Fall ist, wird die zuvor gespeicherte Umgebung neu erstellt.
Nun, nachdem ich viel gesucht und an Sessions gearbeitet hatte, fand ich meinen eigenen Weg. Ich hoffe, es funktioniert gut für alle hier
Dies ist die Abfrage für die Anmeldeseite für meine Benutzer: Hier speichere ich E-Mails als Sitzung aus dem Eingabefeld, nachdem ich Daten aus MySQL abgeglichen habe
<?php
include_once("dbcon.php");
$que=mysqli_query($con,"select * from agents where companyemail="$email" AND
pass="$password" AND post != 'Owner'");
$record = mysqli_fetch_assoc($que);
$_SESSION[$email]=$email;
header("Location:/dashboard/woresk/Dashboard_For_Agents/light/index.php?
&loginid=$agentid");
?>
und dann gibt es im Dashboard für Benutzer eine Abmeldeoption, bei der ich diese Methode verwendet habe
<?php
session_start();
include_once("dbcon.php");
$sid=$_GET['loginid'];
$que=mysqli_query($con,"select * from agents where id='$sid'");
$recorde = mysqli_fetch_assoc($que);
$email=$recorde['companyemail'];
unset($_SESSION[$email]);
header('location:/dashboard/woresk/index.php');
?>
und um zu vermeiden, dass Benutzer das Dashboard betreten, wenn sie nicht angemeldet sind oder ihre Sitzung nicht festgelegt ist, funktioniert der folgende Code hervorragend für mich
<?php
session_start();
include_once("dbcon.php");
$sid=$_GET['loginid'];
$que=mysqli_query($con,"select * from agents where id='$sid'");
$recorde = mysqli_fetch_assoc($que);
$email=$recorde['companyemail'];
if(isset($_SESSION[$email]) && isset($_SESSION['alllogout'])){
}
else if(!isset($_SESSION[$email])){
echo
"<script>
window.location.href="https://stackoverflow.com/dashboard/woresk/index.php"
</script>";
}
else if (!isset($_SESSION['alllogout'])){
echo
"<script>
window.location.href="https://stackoverflow.com/dashboard/woresk/index.php"
</script>";
}
?>
ich hoffe das funktioniert auch bei anderen. Wenn Sie Fragen haben, lassen Sie es mich bitte wissen
Soweit ich weiß, ist die Sitzung clientseitig, dh im Browser gespeichert. nicht serverseitig. In diesem Fall sollte es kein Problem sein, viele Benutzer gleichzeitig zu haben, da Sitzungen für jeden einzelnen Benutzer erstellt werden.
– s3polz
13. August 2012 um 9:26 Uhr
@s3polz da liegst du falsch.
$_SESSION
wird serverseitig gespeichert.– Loler
13. August 2012 um 9:26 Uhr
@s3polz Sie sind durch die Sitzungskennung verwirrt, die im Browser-Cookie gespeichert ist, um die aktuelle Sitzung zu identifizieren, könnte auch von der URL übertragen werden.
– Aurimas Ličkus
13. August 2012 um 9:38 Uhr
ups sorry für meine falschen infos. aber die Sitzung wird trotzdem für jeden Benutzer separat erstellt, oder?
– s3polz
13. August 2012 um 9:49 Uhr