Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Sitzung (Thema)

PHP-Sitzung (Thema)

PHPz
PHPzOriginal
2020-07-11 17:55:317042Durchsuche

Zu den PHP-Sitzungsthemen gehören PHP-Sitzungskonzepte, grundlegende Funktionsnutzung, PHP-Sitzungsanwendungsfälle, PHP-Sitzungsvideo-Tutorials und verwandte ausgewählte Artikel. Willkommen zum Lernen!

PHP-Sitzung (Thema)

1: Was ist eine PHP-Sitzung?

Offizielle Erklärung: Der Sitzungsmechanismus (Session) wird in PHP verwendet, um relevante Daten zu verwalten, wenn Benutzer kontinuierlich auf Webanwendungen zugreifen. Dies hilft dabei, hochgradig angepasste Programme zu erstellen und die Attraktivität von Websites zu erhöhen.

Um zu verstehen, was eine PHP-Sitzung ist, müssen Sie zunächst den Sitzungsmechanismus verstehen

Sitzungsmechanismus

HTTP basiert auf einem verbindungslosen Netzwerkprotokoll . Ein Besuch ist für den Server völlig neu.

Wenn Sie sich den Besucher merken und den Verbindungsstatus erfassen, können Sie das Benutzererlebnis verbessern und viele personalisierte Funktionen wie Benutzeranmeldung, Warenkorb usw. ausführen.

Tatsächlich ist die Art und Weise, wie sich der Server an den Benutzer erinnert, sehr einfach, genau wie im Leben beantragen wir Mitgliedskarten.

Es gibt zwei Orte, an denen die Mitgliedskarte gespeichert wird, entweder auf Sie oder werden auf dem Computer des Händlers gespeichert

Daher werden Benutzerinformationen im Netzwerk auch an zwei Orten gespeichert: dem Browser (Client) und dem Server

Was im Browser gespeichert wird, wird aufgerufen : Cookie

Das Speichern auf dem Server heißt: Sitzung

Erweitertes Wissen: Der Unterschied zwischen Sitzung und Cookie in PHP

Verwandte Themen: PHP-Cookie(Grafikthema)

Wichtige Punkte der PHP-Sitzung

  • Speichern auf der Serverseite

  • Variable: $_SESSION

  • Variablenfilter: filter_input(INPUT_SESSION, Schlüssel)

  • Einstellen mit dedizierte Funktion: setcookie(name, value, expiration time)

  • muss in zwei Schritten abgeschlossen werden, um wirksam zu werden: Geben Sie zuerst den Befehl an den Browser aus, und dann vervollständigt der Browser das Cookie Schreiben

Zwei: Einführung in die Grundfunktionen der PHP-Sitzung

1.session_create_id

Erstellen Sie eine neue Sitzungs-ID

session_create_id ([ string $prefix ] ) : string

Parameter

  • Präfix: Wenn ein Präfix angegeben ist, wird der neuen Sitzungs-ID ein Präfix vorangestellt. In der Sitzungs-ID sind nicht alle Zeichen zulässig. Erlaubt sind Zeichen im Bereich a-z a-z 0-9, , (Komma) und - (Minuszeichen).

Rückgabewert

Gibt die neue konfliktfreie Sitzungs-ID der aktuellen Sitzung zurück. Wenn es ohne aktive Sitzung verwendet wird, wird die Konfliktprüfung ignoriert.

2.session_destroy

Alle Daten in einer Sitzung zerstören

session_destroy ( void ) : bool

Rückgabewert

Gib TRUE zurück, wenn erfolgreich, oder wenn Returns FALSE bei Fehler.

3.session_id

Aktuelle Sitzungs-ID abrufen/festlegen

session_id ([ string $id ] ) : string

Parameter

  • id: Wenn der Wert des Parameters id angegeben ist, wird der angegebene Wert als Sitzungs-ID verwendet. Die Funktion session_id() muss vor dem Aufruf der Funktion session_start() aufgerufen werden. Verschiedene Sitzungsmanager haben unterschiedliche Einschränkungen hinsichtlich der Zeichen, die in Sitzungs-IDs verwendet werden können. Beispielsweise erlaubt der Dateisitzungsmanager nur die folgenden Zeichen in Sitzungs-IDs: a-z A-Z 0-9 , (Komma) und - (Minuszeichen)

Rückgabewert

Aktuelle Sitzungs-ID zurückgeben. Wenn keine aktuelle Sitzung vorhanden ist, wird eine leere Zeichenfolge ("") zurückgegeben.

4.session_name

Sitzungsnamen lesen/festlegen

session_name ([ string $name ] ) : string

Parameter

  • Name: Sitzung verwenden Name im Cookie oder in der URL, zum Beispiel: PHPSESSID. Als Sitzungsname können nur Buchstaben und Zahlen verwendet werden. Es wird empfohlen, dass er so kurz wie möglich und aussagekräftig ist (für Benutzer, die Cookie-Warnungen aktiviert haben, ist es für sie einfacher zu entscheiden, ob sie dieses Cookie zulassen möchten). ). Wenn der Parameter name angegeben ist, verwendet die aktuelle Sitzung den angegebenen Wert auch als Namen.

Rückgabewert

Gibt den aktuellen Sitzungsnamen zurück. Wenn der Namensparameter angegeben ist, aktualisiert diese Funktion den Sitzungsnamen und gibt den ursprünglichen Sitzungsnamen zurück.

5.session_start

Eine neue Sitzung starten oder eine bestehende Sitzung wiederverwenden

session_start ([ array $options = array() ] ) : bool

Parameter

  • Optionen: Dieser Parameter ist ein assoziatives Array, dessen Elemente, sofern angegeben, zum Überschreiben der Konfigurationselemente in der Sitzungskonfigurationsanweisung verwendet werden. Die Schlüssel in diesem Array müssen nicht das Sitzungspräfix enthalten.

Rückgabewert

Gibt TRUE zurück, wenn die Sitzung erfolgreich gestartet wurde, andernfalls wird FALSE zurückgegeben

6.session_status

Gibt den aktuellen Sitzungsstatus zurück

session_status ( void ) : int

Rückgabewert

PHP_SESSION_DISABLED Die Sitzung ist deaktiviert.

PHP_SESSION_NONE Sitzung ist aktiviert, aber es existiert keine aktuelle Sitzung.

PHP_SESSION_ACTIVE Die Sitzung ist aktiviert und die aktuelle Sitzung existiert.

7.session_unset

Alle Sitzungsvariablen freigeben

session_unset ( void ) : void

3: Anwendungsfall

1. Grundlegende Sitzungsvorgänge

Allgemeine Grundvorgänge der PHP-Sitzung

2. Lösung zum Deaktivieren von Cookies im Browser

cookie和session的区别在于cookie是保存在客户端的,而session是存储在服务端中。它们都有生存时间的设置,session比cookie更安全。

当服务端与客户端通信后会生成会话后,会建立一个和浏览器的唯一会话PHPSESSID。这个id会在服务端保存,也会用cookie形式保存在客户端中。

 禁用cookie后session不能把唯一id通过cookie方式在客户端中进行存储,这时候php会在浏览器地址栏中以url明文get的方式来传递phpsessionid,来进行客户端和服务端的唯一识别通信。

这样一来程序的安全性大大降低了。所有在php.ini默认是关闭通过地址栏传递phpsessionid的,如果没开启就不能使用session,所以需要php.ini配置支持才行。

session.use_only_cookies = 1; // 开启仅使用cookies存放会话id           
session.use_trans_sid = 1;     // 允许Sessionid通过URL明文传输,默认为0关闭

或者使用代码来实现

/**
 * 兼容 php7.1 以下版本
 */
if (!function_exists('session_create_id')) {
    function session_create_id()
    {
        return uniqid();
    }
}

//获取SESSION_ID
$session_id = isset($_GET['SESSION_ID']) ? $_GET['SESSION_ID'] : session_create_id();

//设置 SESSION_ID
session_id($session_id);

//开启session
session_start();

$_SESSION['user'] = 'user01';

//echo $_SESSION['user'];

echo $session_id;

3、浏览计数器

利用 session 机制可以实现 记录用户的访问页面的次数,代码如下:

<?php
//开启session
session_start();

//判断是否设置浏览数
if (isset($_SESSION[&#39;view_num&#39;])) {
    //如果设置 浏览数加 1
    $_SESSION[&#39;view_num&#39;] = $_SESSION[&#39;view_num&#39;] + 1;
} else {
    //如果未设置 设置浏览数为 1
    $_SESSION[&#39;view_num&#39;] = 1;
}

die(&#39;当前浏览数为:&#39; . $_SESSION[&#39;view_num&#39;]);
?>

4、使用 session 实现登录功能

对于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名和密码(可能是 md5 加密后字符串),并在每次请求页面的时候进行验证。

如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能 只做一次验证。为什么呢?

因为客户端 Cookie 中的信息是有可能被修改的。假如你存储 $admin 变量来表示用户是否登陆,$admin 为 true 的时候表示登陆,为 false 的时候表示未登录,在第一次通过验证后将 $admin 等于 true 存储在 Cookie,下次就不用验证了,这样对么?错了,假如有人伪造一个值为 true 的 $admin 变量那不是就立即取的了管理权限么?非常的不安全。

而 Session 就不同了,Session 是存储在服务器端的,远程用户没办法修改 Session 文件的内容,因此我们可以单纯存储一个 $admin 变量来判断是否登陆,首次验证通过后设置 $admin 值为 true,以后判断该值是否为 true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。

而且可以减少每次为了验证 Cookie 而传递密码的不安全性了(Session 验证只需要传递一次,假如你没有使用 SSL 安全协议的话)。即使密码进行了 md5 加密,也是很容易被截获的。

当然使用 Session 还有很多优点,比如控制容易,可以按照用户自定义存储等(存储于数据库)。

下面是一个简单的用户登录示例:

<?php
session_start();

//判断是否登录
if (isset($_SESSION[&#39;login_user&#39;])) {
    die(&#39;已登录!当前登录用户为:&#39; . $_SESSION[&#39;login_user&#39;]);
}

//判断是否为POST请求
if ($_SERVER[&#39;REQUEST_METHOD&#39;] === &#39;POST&#39;) {

    //检查是否输入用户名
    if (!isset($_POST[&#39;username&#39;]) || empty($_POST[&#39;username&#39;])) {
        die(&#39;请输入用户名!&#39;);
    }

    //检查是否输入密码
    if (!isset($_POST[&#39;password&#39;]) || empty($_POST[&#39;password&#39;])) {
        die(&#39;请输入密码!&#39;);
    }

    //模拟数据
    $data = [&#39;username&#39; => &#39;user01&#39;, &#39;password&#39; => md5(&#39;123456&#39;)];

    //检查用户名是否正确
    if ($_POST[&#39;username&#39;] === $data[&#39;username&#39;]) {
        //检查密码是否正确
        if (md5($_POST[&#39;password&#39;]) === $data[&#39;password&#39;]) {
            //保存登录状态
            $_SESSION[&#39;login_user&#39;] = $_POST[&#39;username&#39;];
            die(&#39;恭喜你登录成功!&#39;);
        }
    }

    //用户名或密码不正确
    die(&#39;用户名或密码不正确!&#39;);
}
?>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="=device-width, initial-scale=1.0">
    <title>用户登录</title>
</head>
<body>
<form action="./session02.php" method="post">
    <input type="text" name="username" placeholder="请输入用户名!">
    <input type="password" name="password" placeholder="请输入密码!">
    <button type="submit">登录</button>
</form>
</body>
</html>

四:PHP Session 视频教程

PHP-Sitzung (Thema)

1.PHP中session如何存储及删除变量的

2.PHP如何用session来判断用户是否登录

3.PHP如何用session来记录用户登陆信息

4.php视频教程之PHP会话管理

5.PHP视频教程之会话控制session的工作机制

6.PHP高级视频教程之和session存储相关的一些面试题

7.ThinkPHP5基础讲解视频教程之Session的使用

8.ThinkPHP5基础讲解视频教程之Session的使用

9.PHP经典实战视频教程之SESSION示例(购物车)

10.会话管理视频教程

11.Blog项目实战之session原理

五:PHP Session 精选技术文章

1.PHP7中创建session和销毁session的方法

2.利用php设置一个严格控制过期时间的session

3.Drei Möglichkeiten zum Löschen der Sitzung in PHP

4.Detaillierte Erläuterung der Schritte zum Synchronisieren der Web-Cluster-Sitzung in PHP

5.Detaillierte Erläuterung von Beispielen für die Beurteilung von Benutzerbetriebsberechtigungen durch Sitzung

6.Redis-Methode zum Speichern von PHP-Sitzungen

7.Laravel verwendet Redis-Sharing-Session (detaillierte Code-Erklärung)

8.ThinkPHP6.0: Änderungen in Sitzungs- und Cookie-Mechanismen

9. Das Implementierungsprinzip der Sitzungs-ID in der PHP-Analyse

10.PHP implementiert die Mitglieder-Login-Registrierungsseite mit HTML plus Sitzung und Cookie

11. PHP stellt Sitzungsinhalt über session_id wieder her

12.Ausführliche Einführung in die Hauptsitzungskonfiguration in PHP.ini

13.Der Fall des WeChat-Applets des Erhaltens von session_key und openid (Bild)

14.Sitzungsfreigabe: Wie PHP- und Redis-Cluster die Sitzungsfreigabe realisieren

15.Einführung in die Methode von Redis, die die Sitzungsfreigabe realisiert

16.tp5 realisiert die Anmeldung, speichert die Sitzung und springt dann entsprechend den unterschiedlichen Rollenberechtigungen zur Seite

17. Verstehen Sie den Betriebsmechanismus der PHP-Sitzung

18.Lösung für die allgemeine Situation, in der PHP keine SESSION-Informationen erhalten kann

19.Detaillierte Erklärung der Schritte für PHP+Session, um wiederholte Formularübermittlungen zu verhindern

20 .PHPs Methode, um zu verhindern, dass die Sitzung abläuft

21.PHPs Methode von Verbesserung der SESSION-Antwortgeschwindigkeit

22.MemCache-Caching und Session (Wissenszusammenfassung)

23.Vergleich mehrerer Möglichkeiten für das Front-End Sitzungsinformationen erhalten

24.Laravels Methode zur Verarbeitung der Sitzung (Sitzung) Detaillierte Erklärung

Das obige ist der detaillierte Inhalt vonPHP-Sitzung (Thema). 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