Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Modul zur Überprüfung der Benutzeranmeldung

PHP-Modul zur Überprüfung der Benutzeranmeldung

不言
不言Original
2018-05-15 17:37:2122420Durchsuche

Dieser Artikel stellt das PHP-Benutzer-Login-Überprüfungsmodul vor, das einen bestimmten Referenzwert hat. Jetzt kann ich es mit allen teilen, die es brauchen.

Benutzer-Login erreichen

>>>1 Erstellen Sie ein Anmeldeformular

Der HTML-Code des Anmeldeformulars lautet wie folgt:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>User Login</title>
<style type="text/css">
<!—
.alert {color: red}
.textinput {width:160px}
.btn {width:80px}
table {border: 3px double;background-color:#eeeeee;}
-->
</style>

</head>
<body>
<form name="frmLogin" method="post" action="login.php" onSubmit="return doCheck();"> <table border="0" cellpadding="8" width="350" align="center">
<tr><td colspan="2" align="center" class="alert"></td></tr>
用户名:
<td><input name="username" type="text" id="username" class="textinput" /></td> </tr>
<tr><td>密码:</td>
<td><input name="pwd" type="password" id="password" class="textinput" /></td> </tr>
<tr><td colspan="2" align="center">
<input type="submit" class="btn" value="登录">  
<input type="reset" class="btn" value="重置">
</td>
</tr>
</form>
</body>
</html>

Speichern Sie die Laden Sie den obigen Code als login.php-Datei herunter und führen Sie ihn im Browser aus.

>>>2 Anmeldenamen und Passwort überprüfen

Nachdem der Benutzer die Anmeldeinformationen in das Anmeldeformular eingegeben hat, werden die Daten zurückgesendet Gehen Sie auf diese Seite, um sich anzumelden. Für die Verarbeitung wird PHP verwendet. Fügen Sie als Nächstes den Code hinzu, um zu überprüfen, ob der Benutzername und das Passwort im Header von login.php korrekt sind. login.php-Codeänderungen sind wie folgt:

<br/>
<?php
require_once(&#39;common.php&#39;); // 引入公共文件,其中实现了SQL注入漏洞检查的代码 $username = trim($_POST[&#39;username&#39;]);
// 取得客户端提交的密码并用md5()函数时行加密转换以便后面的验证
$pwd = md5($_POST[&#39;pwd&#39;]);
// 设置一个错误消息变量,以便判断是否有错误发生
// 以及在客户端显示错误消息。 其初值为空
$errmsg = &#39;&#39;;
if (!empty($username)) { // 用户填写了数据才执行数据库操作
//---------------------------------------------------------
// 数据验证, empty()函数判断变量内容是否为空
if (empty($username)) {
$errmsg = &#39;数据输入不完整&#39;;
}
//---------------------------------------------------------
if(empty($errmsg)) { // $errmsg为空说明前面的验证通过
// 调用mysqli的构造函数建立连接,同时选择使用数据库&#39;test&#39;
$db = @new mysqli("127.0.0.1", "developer", "123456", "test");
// 检查数据库连接
if (mysqli_connect_errno()) {
$errmsg = "数据库连接失败!
\n";
}
else {
// 查询数据库,看用户名及密码是否正确
$sql = "SELECT * FROM t_user WHERE f_username=&#39;$username&#39; AND f_password=&#39;$pwd&#39;";
$rs = $db->query($sql);
// $rs->num_rows判断上面的执行结果是否含有记录,有记录说明登录成功 if ($rs && $rs->num_rows > 0) {
// 在实际应用中可以使用前面提到的重定向功能转到主页
$errmsg = "登录成功!";
}
else {
$errmsg = "用户名或密码不正确,登录失败!";
}

// 关闭数据库连接
$db->close();
}
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>User Login</title>
<style type="text/css">
<!--
.alert {color: red}
.textinput {width:160px}
.btn {width:80px}
table {border: 3px double;background-color:#eeeeee;}
-->
</style>

</head>
<body>
<form name="frmLogin" method="post" action="login.php" onSubmit="return doCheck();">
<table border="0" cellpadding="8" width="350" align="center">
<tr><td colspan="2" align="center" class="alert"><?echo $errmsg;?></td></tr>
用户名:
<td><input name="username" type="text" id="username" class="textinput" value="<?echo $username;?>" /></td>
</tr>
<tr><td>密码:</td>
<td><input name="pwd" type="password" id="password" class="textinput" /></td> </tr>
<tr><td colspan="2" align="center">
<input type="submit" class="btn" value="登录">  
<input type="reset" class="btn" value="重置">
</td>
</tr>
</form>
</body>
</html>

Der fett dargestellte Teil ist der neu hinzugefügte Code, und die meisten Aussagen wurden ausführlich kommentiert. Es ist zu beachten, dass der im HTML-Formular hinzugefügte PHP-Code zur Ausgabe von Fehlern oder Eingabeaufforderungen hinzugefügt wird, die während der serverseitigen Verarbeitung auftreten können. Darüber hinaus wird das Wertattribut in der Benutzernameneingabe markiert Feld PHP-Code hinzugefügt, um den zuletzt übermittelten Benutzernamen auszugeben, sodass Benutzer, die sich nicht anmelden können, weil sie das falsche Passwort eingegeben haben, bei einem erneuten Versuch nur ihr Passwort eingeben müssen.
Führen Sie login.php erneut aus und geben Sie Daten in das Formular ein, um zu versuchen, sich anzumelden.

>>>3 Benutzeranmeldeinformationen aktualisieren

In der Benutzerinformationstabelle t_user wird das Feld f_logintimes verwendet, um die Anmeldezeiten des Benutzers aufzuzeichnen, und das Feld f_lasttime Wird zum Aufzeichnen der letzten Anmeldezeit des Benutzers verwendet. Die Anmeldezeit und das Feld f_login werden zum Aufzeichnen der vom Benutzer für die letzte Anmeldung verwendeten IP-Adresse verwendet. Das Aufzeichnen dieser Informationen in der Datenbank dient hauptsächlich dazu, der Verwaltung die Möglichkeit zu geben, Benutzeranmeldezeiten zu zählen geografische Verteilung der Benutzer. Diese Daten müssen jedes Mal aktualisiert werden, wenn sich der Benutzer anmeldet. Fügen Sie als Nächstes den Code hinzu, um diese Daten zu aktualisieren.
Öffnen Sie die Datei login.php und ändern Sie den PHP-Code in der Kopfzeile wie folgt:

<?php
......
if ($rs && $rs->num_rows > 0) {
// 在实际应用中可以使用前面提到的重定向功能转到主页
第4 / 6页
$errmsg = "登录成功!";

// 更新用户登录信息
$ip = $_SERVER[&#39;REMOTE_ADDR&#39;]; // 获取客户端的IP
$sql = "UPDATE t_user SET f_logintimes = f_logintimes + 1,";
$sql .= "f_lasttime=now(), f_loginip=&#39;$ip&#39; ";
$sql .= " WHERE f_username=&#39;$username&#39;";
$db->query($sql);
}
else {
$errmsg = "用户名或密码不正确,登录失败!";
}
......
?>

Der fettgedruckte Teil oben ist der neu hinzugefügte Code. Der Code beginnt zuerst mit automatisch Rufen Sie die IP-Adresse des Clients aus der globalen Variablen $_SERVER ab, erstellen Sie dann eine SQL-Anweisung und führen Sie die Anweisung aus, um die Anmeldeinformationen des Benutzers zu aktualisieren. Es ist erwähnenswert, dass die Zuweisung von f_lasttime in dieser SQL-Anweisung durch den Aufruf der MySQL-internen Funktion now() erreicht wird, die die aktuelle Zeit auf dem Server zurückgibt.

>>>4 Verwenden Sie die Sitzung, um Benutzerinformationen zu speichern

Das HTTP-Protokoll ist zustandslos. Alles, was es tut, ist, einfach eine Anfrage an den Server zu senden und Daten vom Server abzurufen. Es weiß nichts anderes, und selbst wenn dieselbe PHP-Datei zweimal angefordert wird, geht es nicht davon aus, dass zwischen den beiden Anfragen ein Zusammenhang besteht.
Aufgrund der zustandslosen Natur des HTTP-Protokolls ist es unmöglich, Informationen zwischen zwei verschiedenen Anfragen auszutauschen, beispielsweise die Aufzeichnung von Informationen zum „aktuellen Besucher“. Obwohl der Benutzername und das Passwort des Benutzers während des Anmeldevorgangs auf Richtigkeit überprüft wurden, gehen alle von der Anmeldeseite erhaltenen Benutzerinformationen verloren, wenn der Benutzer zu anderen Seiten springt, was der Benutzer nicht möchte. Gleichzeitig ist es unrealistisch, von Benutzern zu verlangen, dass sie beim Betreten jeder Seite ihren Benutzernamen und ihr Passwort zur Überprüfung eingeben, was erfordert, dass Informationen zwischen verschiedenen Seiten ausgetauscht werden können.
Im Allgemeinen können Sie für PHP und andere Web-Programmiersprachen Cookie oder Session verwenden, um dieses Problem zu lösen.
Cookie ist eine kleine Datei, die auf dem Client gespeichert wird. In dieser Datei können einige Informationen gespeichert werden, die zwischen Seiten geteilt werden müssen. Cookies haben jedoch drei Nachteile: Erstens darf die Größe 4 KB nicht überschreiten (verschiedene Browser können unterschiedliche Einschränkungen haben); zweitens können Benutzer Cookies in den Browsereinstellungen deaktivieren. Drittens zeichnen Cookies Daten auf dem Client auf, was weniger sicher ist. Die Sitzung wird im Allgemeinen über Cookies implementiert. Wenn der Benutzer Cookies deaktiviert, ist die Sitzung ebenfalls ungültig. Anders als bei Cookies werden bei Session nur Informationen über Cookies auf dem Client identifiziert, die eigentlichen Informationen werden jedoch auf dem Server gespeichert, was die Sicherheitsleistung erheblich verbessert. Jetzt gibt es eine andere Möglichkeit, Session ohne Cookies zu verwenden, nämlich die URL-Rewriting-Technologie. Diese Methode verwendet die Sitzungskennung als Parameter der URL für die Interaktion mit dem Dienst. Der Vorteil besteht darin, dass sie nicht durch die Deaktivierung von Cookies durch den Client eingeschränkt wird. Der Nachteil besteht jedoch darin, dass die Verwendung umständlicher ist.
Die Verwendung von Session in PHP ist sehr einfach. PHP stellt eine automatische globale Variable $_SESSION für die Verarbeitung von Session bereit. Es ist jedoch zu beachten, dass Sie die Funktion session_start() aufrufen müssen, um die Sitzung zu starten, bevor Sie die Sitzung verwenden, wenn in der PHP-Konfigurationsdatei keine Einstellung zum automatischen Starten der Sitzung vorhanden ist.
Öffnen Sie login.php erneut und fügen Sie den folgenden Code in Fettschrift hinzu, um Benutzerinformationen zu protokollieren.

<?php

......
if ($rs && $rs->num_rows > 0) {
// 使用session保存当前用户
session_start();
$_SESSION[&#39;uid&#39;] = $username;

// 在实际应用中可以使用前面提到的重定向功能转到主页
$errmsg = "登录成功!";

// 更新用户登录信息
$ip = $_SERVER[&#39;REMOTE_ADDR&#39;]; // 获取客户端的IP
$sql = "UPDATE t_user SET f_logintimes = f_logintimes + 1,";
$sql .= "f_lasttime=now(), f_loginip=&#39;$ip&#39; ";
$sql .= " WHERE f_username=&#39;$username&#39;";
$db->query($sql);
}
......
?>

Sitzung nicht missbrauchen. Die wichtigste Rolle der Sitzung besteht darin, den Zustand zwischen den Seiten aufrechtzuerhalten. Nachdem viele Anfänger die Session-Technologie beherrschen, ist es für sie einfach, Session als magische Waffe zum Speichern von Daten zu verwenden und viele Daten in Session zu platzieren. Da diese Daten erst nach Ablauf der Sitzung freigegeben werden, wird der Server stark belastet.

Bestimmen Sie, ob sich der Benutzer angemeldet hat

Da im vorherigen Abschnitt die Arbeit zum Speichern des Benutzernamens in der Sitzung abgeschlossen wurde, ist es sehr einfach festzustellen, ob sich der Benutzer angemeldet hat im. Der Code lautet wie folgt:

<?php
session_start();
if (empty($_SESSION[&#39;uid&#39;])) {
echo "您还没有登录,不能访问当前页面!";
exit;
}
?>

通过判断自动全局变$_SESSION中的uid是否为空,就可以判断用户是否已经登录。如果用户没有登录,就提示其无法访问当前页面,并终止程序的运行(或者使用一条重定向语句将页面导向登录页)。

相关推荐:

php用户注册时密码使用crypt加密示例

Das obige ist der detaillierte Inhalt vonPHP-Modul zur Überprüfung der Benutzeranmeldung. 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