Heim  >  Artikel  >  Backend-Entwicklung  >  So erstellen Sie eine Sitzung in PHP

So erstellen Sie eine Sitzung in PHP

墨辰丷
墨辰丷Original
2018-06-07 11:22:266121Durchsuche

Dieser Artikel stellt hauptsächlich vor, wie man eine Sitzung in PHP erstellt. Ich hoffe, dass er für alle hilfreich ist.

Empfehlungen zu verwandten Themen: PHP-Sitzung (einschließlich Bilder, Videos, praktische Fälle)

Starten Sie die Sitzungssitzung und erstellen Sie eine $admin-Variable:

// 启动 session session_start(); 
// 声明一个名为 admin 的变量,并赋空值。 
$_session["admin"] = null; 
?>  

Wenn Sie Session verwenden oder die PHP-Datei die Session-Variable aufrufen möchte, müssen Sie sie vor dem Aufruf der Session mit der Funktion session_start() starten. Sie müssen nichts weiter einstellen, PHP erstellt die Sitzungsdatei automatisch.

Nachdem wir dieses Programm ausgeführt haben, können wir zum temporären Systemordner gehen, um die Sitzungsdatei zu finden. Der allgemeine Dateiname hat die Form: sess_4c83638b3b0dbf65583181c2f89168ec, gefolgt von einer 32-Bit-codierten Zufallszeichenfolge. Öffnen Sie es mit einem Editor und sehen Sie sich den Inhalt an:

admin|N;

Allgemeine Inhaltsstruktur:

Variablenname | > Und trennen Sie jede Variable durch ein Semikolon. Einige können weggelassen werden, z. B. Länge und Typ.

Sehen wir uns den Verifizierungsvorgang an. Gehen wir davon aus, dass die Datenbank den Benutzernamen und das MD5-verschlüsselte Passwort speichert:

// 表单提交后...   
$posts = $_POST; 
// 清除一些空白符号 
foreach ($posts as $key => $value) 
{ 
$posts[$key] = trim($value); 
} 
$password = md5($posts["password"]); 
$username = $posts["username"]; 
$query = "SELECT `username` FROM `user` WHERE `password` = '$password'"; 
// 取得查询结果 
$userInfo = $DB->getRow($query); 
if (!emptyempty($userInfo)) 
{ 
if ($userInfo["username"] == $username) 
{ 
// 当验证通过后,启动 session 
session_start(); 
// 注册登陆成功的 admin 变量,并赋值 true 
$_SESSION["admin"] = true; 
} 
else 
{ 
die("用户名密码错误"); 
} 
} 
else 
{ 
die("用户名密码错误"); 
}

Wir starten die Sitzung auf der Seite, die eine Benutzerverifizierung erfordert, um festzustellen, ob dies der Fall ist Einloggen:

// 防止全局变量造成安全隐患 
$admin = false; 
// 启动会话,这步必不可少 
session_start(); 
// 判断是否登陆 
if (isset($_SESSION["admin"]) && $_SESSION["admin"] == true) 
{ 
echo "您已经成功登陆"; 
} 
else 
{ 
// 验证失败,将 $_session["admin"] 置为 false 
$_SESSION["admin"] = false; 
die("您无权访问"); 
} 
?>

Ist das nicht ganz einfach? Stellen Sie sich $_session einfach als ein auf der Serverseite gespeichertes Array vor. Jede Variable, die wir registrieren, ist der Schlüssel des Arrays, was sich nicht von der Verwendung eines Arrays unterscheidet .

Was tun, wenn Sie sich vom System abmelden möchten? Zerstören Sie einfach die Sitzung.

<?php 
session_start(); 
// 这种方法是将原来注册的某个变量销毁 
unset($_SESSION["admin"]); 
// 这种方法是销毁整个 session 文件 
session_destroy(); 
?>

Kann Session den Lebenszyklus wie Cookie festlegen? Wird Cookie vollständig aufgegeben? Ich würde sagen, dass es am bequemsten ist, Session in Kombination mit Cookie zu verwenden.

Wie bestimmt die Sitzung den Client-Benutzer? Wie lautet die Sitzungs-ID? Der Dateiname der Sitzungsdatei wird zufällig generiert Seien Sie einzigartig, Geschlecht und Zufälligkeit, um die Sicherheit der Sitzung zu gewährleisten. Wenn der Sitzungslebenszyklus nicht festgelegt ist, wird die Sitzungs-ID im Speicher gespeichert. Nach dem Schließen des Browsers wird die ID automatisch abgemeldet. Nach erneuter Anforderung der Seite wird eine neue Sitzungs-ID registriert.

Wenn der Client Cookies nicht deaktiviert, übernimmt das Cookie beim Starten der Sitzung die Aufgabe, die Sitzungs-ID und die Sitzungsdauer zu speichern. Lassen Sie uns die Lebensdauer der Sitzung manuell festlegen:

session_start(); 
// 保存一天 
$lifeTime = 24 * 3600; 
setcookie(session_name(), session_id(), time() + $lifeTime, "/"); 
?>  

Tatsächlich bietet Session auch eine Funktion session_set_cookie_params(); Diese Funktion muss aufgerufen werden, bevor die Funktion session_start() aufgerufen wird:

// 保存一天 
<?php 
$lifeTime = 24 * 3600; 
session_set_cookie_params($lifeTime); 
session_start(); 
$_session["admin"] = true; 
?>  

Wenn der Client IE 6.0 verwendet, wird die Funktion session_set_cookie_params(); beim Setzen von Cookies einige Probleme haben, daher rufen wir die Funktion setcookie immer noch manuell auf, um Cookies zu erstellen.

Was passiert, wenn der Client Cookies deaktiviert? Der gesamte Lebenszyklus ist der Browserprozess. Solange Sie den Browser schließen und die Seite erneut anfordern, müssen Sie die Sitzung erneut registrieren. Wie übergebe ich die Sitzungs-ID? Übergeben Sie sie über die URL oder über ein verstecktes Formular. Die URL hat die Form: http://www.openphp.cn/index.php ?PHPSESSID=bba5b2a240a77e5b44cfa01d49cf9669, wobei der Parameter PHPSESSID in der URL die Sitzungs-ID ist. Wir können $_GET verwenden, um den Wert abzurufen und so die Sitzungs-ID zwischen Seiten zu übertragen.

// 保存一天 
<?php 
$lifeTime = 24 * 3600; 
// 取得当前 session 名,默认为 PHPSESSID 
$sessionName = session_name(); 
// 取得 session ID $sessionID = $_GET[$sessionName]; 
// 使用 session_id() 设置获得的 session ID 
session_id($sessionID); 
session_set_cookie_params($lifeTime); 
session_start(); 
$_session["admin"] = true; 
?>

Wenn bei virtuellen Hosts die Sitzungen aller Benutzer im temporären Systemordner gespeichert werden, führt dies zu Wartungsschwierigkeiten und verringert die Sicherheit. Wir können den Speicherpfad der Sitzungsdatei manuell festlegen, den session_save_path() bereitstellt eine solche Funktion. Wir können das Sitzungsspeicherverzeichnis auf einen Ordner verweisen, auf den nicht über das Web zugegriffen werden kann. Natürlich muss der Ordner über Lese-/Schreibattribute verfügen.

<?php 
// 设置一个存放目录 
$savePath = "./session_save_dir/"; 
// 保存一天 
$lifeTime = 24 * 3600; 
session_save_path($savePath); session_set_cookie_params($lifeTime); 
session_start(); 
$_session["admin"] = true; 
?>  

Wie die Funktion session_set_cookie_params(); muss auch die Funktion session_save_path() aufgerufen werden, bevor die Funktion session_start() aufgerufen wird. Wir können auch Arrays und Objekte in einer Sitzung speichern. Es gibt keinen Unterschied zwischen der Bedienung eines Arrays und der Bedienung einer allgemeinen Variablen. Beim Speichern eines Objekts serialisiert PHP das Objekt automatisch (auch Serialisierung genannt) und speichert es dann in der Sitzung. Das folgende Beispiel verdeutlicht diesen Punkt:

<?php 
class person 
{ 
var $age; 
function output() 
{ 
echo $this->age; 
} 
function setAge($age) { 
$this->age = $age; 
} 
} 
?> 
setage.PHP 
<?php 
session_start(); 
require_once "person.PHP"; 
$person = new person(); 
$person->setAge(21); 
$_session[&#39;person&#39;] = $person; 
echo "check here to output age"; 
?> 
output.PHP 
<?php 
// 设置回调函数,确保重新构建对象。 
ini_set(&#39;unserialize_callback_func&#39;, &#39;mycallback&#39;); 
function mycallback($classname) { 
$classname . ".PHP"; 
} 
session_start(); 
$person = $_session["person"]; 
// 输出 21 
$person->output(); 
?>

Zusammenfassung

: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Lernen aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP-Methode zum Ermitteln der Remote-Bildgröße und -größe

PHP-Doppelschichtschleife Implementierung Multiplikationstabelle

php ruft die Express Bird-Schnittstelle auf

Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Sitzung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn