Wenn Benutzer Websites entwerfen und verwalten, müssen sie häufig den Zugriff auf bestimmte wichtige Dateien oder Informationen beschränken. Normalerweise können wir den Benutzerauthentifizierungsmechanismus verwenden, der auf dem im Webserver integrierten HTTP-Protokoll basiert. Wenn ein Besucher eine geschützte Seite durchsucht, öffnet der Client-Browser ein Dialogfenster, in dem der Benutzer aufgefordert wird, einen Benutzernamen und ein Kennwort einzugeben, um die Identität des Benutzers zu überprüfen und festzustellen, ob der Benutzer das Recht hat, auf die Seite zuzugreifen. Zur Veranschaulichung des Umsetzungsprinzips werden zwei Methoden herangezogen.
1. Verwenden Sie HTTP-Header, um Header zu implementieren
. Der Header ist eine Zeichenfolge, die vom Server gesendet wird, bevor HTML-Informationen über das HTTP-Protokoll an den Browser übertragen werden. HTTP verwendet ein Challenge/Response-Modell zur Authentifizierung von Benutzern, die versuchen, passwortgeschützte Bereiche zu betreten. Wenn ein Benutzer zum ersten Mal eine Anfrage an den WEB-Server stellt, um auf einen geschützten Bereich zuzugreifen, wird der Challenge-Prozess gestartet und der Server gibt einen speziellen 401-Header zurück, der angibt, dass die Identität des Benutzers nicht überprüft wurde. Nachdem die obige Antwort erkannt wurde, öffnet der Client-Browser automatisch ein Dialogfeld, in dem der Benutzer aufgefordert wird, einen Benutzernamen und ein Kennwort einzugeben. Nachdem der Benutzer die Eingabe abgeschlossen und auf OK geklickt hat, werden seine Identifikationsinformationen zur Überprüfung an den Server gesendet. Wenn der vom Benutzer eingegebene Benutzername und das Passwort gültig sind, ermöglicht der WEB-Server dem Benutzer den Zutritt zum geschützten Bereich und behält die Gültigkeit seiner Identität während des gesamten Zugriffsprozesses bei. Wenn hingegen der vom Benutzer eingegebene Benutzername oder das eingegebene Passwort nicht überprüft werden kann, öffnet der Client-Browser ständig ein Eingabefenster, in dem der Benutzer aufgefordert wird, erneut zu versuchen, die richtigen Informationen einzugeben. Der gesamte Vorgang wird fortgesetzt, bis der Benutzer den richtigen Informationsspeicherort eingibt. Sie können auch die maximale Anzahl von Versuchen festlegen, die der Benutzer durchführen darf. Bei Überschreitung wird die Zugriffsanfrage des Benutzers automatisch abgelehnt.
Verwenden Sie im PHP-Skript die Funktion header(), um den HTTP-Header direkt an den Browser des Clients zu senden, sodass das Fenster zur Eingabe von Benutzername und Passwort automatisch auf dem Client angezeigt wird, um unsere Identitätsauthentifizierungsfunktion zu implementieren. In PHP werden die vom Client-Benutzer eingegebenen Informationen nach der Übertragung an den Server automatisch in den drei globalen Variablen $PHP_AUTH_USER, $PHP_AUTH_PW und $PHP_AUTH_TYPE gespeichert. Mithilfe dieser drei Variablen können wir die Identität des Benutzers anhand der in der Datendatei oder Datenbank gespeicherten Benutzerkontoinformationen überprüfen.
Benutzer müssen jedoch daran erinnert werden, dass $PHP_AUTH_USER und $PHP_AUTH_PW nur in PHP verwendet werden können, das als Modul installiert ist. und die drei Variablen $PHP_AUTH_TYPE. Wenn der Benutzer PHP im CGI-Modus verwendet, kann die Verifizierungsfunktion nicht implementiert werden. Die Modulinstallationsmethode von PHP ist am Ende dieses Abschnitts angehängt.
Im Folgenden verwenden wir die MySQL-Datenbank, um die Identität des Benutzers zu speichern. Wir müssen den Benutzernamen und das Passwort jedes Kontos aus der Datenbank extrahieren, um sie mit den Variablen $PHP_AUTH_USER und $PHP_AUTH_PW zu vergleichen und die Authentizität des Benutzers zu bestimmen.
Erstellen Sie zunächst eine Datenbank in MySql, um Benutzerinformationen zu speichern.
Der Datenbankname lautet XinXiKu und die Tabellendefinition lautet wie folgt:
create table user(
ID INT(4) NOT NULL AUTO_INCREMENT,
Name VARCHAR(8) NICHT NULL,
Passwort CHAR(8) NICHT NULL,
PRIMÄRSCHLÜSSEL(ID)
)
Beschreibung:
1. ID ist eine Seriennummer, die nicht Null ist und automatisch erhöht wird.
2. Name ist der Benutzername und darf nicht leer sein
.
Das Folgende ist die Benutzerbestätigungsdatei für die Anmeldung.
//Bestimmen Sie, ob der Benutzername festgelegt ist
if(!isset($PHP_AUTH_USER)) {
header("WWW-Authenticate:Basic realm="Authentifizierungsfunktion"");
header("HTTP/1.0 401 Nicht autorisiert");
echo „Authentifizierung fehlgeschlagen, Sie haben keine Berechtigung zum Teilen von Netzwerkressourcen!“;
Ausfahrt();
}
/*Mit Datenbank verbinden*/
$db=mysql_connect("localhost","root","");
//Datenbank auswählen
mysql_select_db("XinXiKu",$db);
//Überprüfen Sie, ob der Benutzer existiert
$result=mysql_query("SELECT * FROM user where name='$PHP_AUTH_USER' and password='$PHP_AUTH_PW'",$db);
if ($myrow = mysql_fetch_row($result)) {
// Das Folgende sind verwandte Vorgänge nach erfolgreicher Authentifizierung
...
} anders {
//Die Authentifizierung ist fehlgeschlagen. Bitten Sie den Benutzer um eine erneute Eingabe
header("WWW-Authenticate:Basic realm="Authentifizierungsfunktion"");
header("HTTP/1.0 401 Nicht autorisiert");
echo „Authentifizierung fehlgeschlagen, Sie haben keine Berechtigung zum Teilen von Netzwerkressourcen!“;
Ausfahrt();
}
?>
Programmbeschreibung:
Prüfen Sie im Programm zunächst, ob die Variable $PHP_AUTH_USER gesetzt wurde. Wenn es nicht festgelegt ist, bedeutet dies, dass eine Authentifizierung erforderlich ist. Das Skript sendet einen HTTP-401-Fehlernummern-Header, um dem Browser des Clients mitzuteilen, dass eine Authentifizierung erforderlich ist, und fordert den Benutzer auf, den Benutzernamen einzugeben Überprüfen Sie nach Abschluss der Eingabe der Datenbank, ob der Benutzername und das Kennwort korrekt sind. Wenn die Eingabe nicht korrekt ist, müssen Sie den Benutzernamen und das Kennwort weiterhin eingeben.
Funktionsbeschreibung:
1. isset(): wird verwendet, um festzustellen, ob einer Variablen ein Wert zugewiesen wurde. Abhängig davon, ob der Variablenwert vorhanden ist, wird „true“ oder „false“ zurückgegeben.
2. header(): wird zum Senden bestimmter HTTP-Header verwendet. Beachten Sie, dass Sie bei Verwendung der Funktion header() darauf achten müssen, diese vor jedem HTML- oder PHP-Code aufzurufen, der die eigentliche Ausgabe erzeugt.
3. mysql_connect(): Öffnen Sie die MySQL-Serververbindung.
4. mysql_db_query(): Senden Sie die Abfragezeichenfolge (Abfrage) an die MySQL-Datenbank.
5. mysql_fetch_row(): Gibt jedes Feld einer einzelnen Spalte zurück.
2. Verwenden Sie die Sitzung, um die Serverüberprüfung zu implementieren.
Für Seiten, die eine Authentifizierung erfordern, ist es am besten, die Apache-Serverüberprüfung zu verwenden. Allerdings ist die Schnittstelle zur Apache-Serverüberprüfung nicht benutzerfreundlich genug. Darüber hinaus können PHP im CGI-Modus und PHP unter IIS nicht über den Apache-Server überprüft werden. Auf diese Weise können wir die Sitzung verwenden, um die Identität des Benutzers zwischen verschiedenen Seiten zu speichern und eine Identitätsprüfung durchzuführen.
Im Backend verwenden wir auch die oben genannte MySQL-Datenbank, um Benutzerinformationen zu speichern.
Wir schreiben zunächst eine Benutzeranmeldeschnittstelle. Der Dateiname lautet login.php und der Code lautet:
____________________________________________________________
<form action="login1.php">
Benutzername:<input type="text" name="name"><br>
Passwort :<input type="text" name="pass"><br>
<input type="submit" value="Login">
</form>
____________________________________________________________
login1.php verarbeitet das übermittelte Formular, der Code lautet wie folgt:
$ db=mysql_connect („localhost“, „root“, „“);
mysql_select_db("XinXiKu",$db);
$result=mysql_query("SELECT * FROM user where name='$name' and password='$pass'",$db);
if ($myrow = mysql_fetch_row($result)) {
//Benutzer registrieren
session_start();
session_register("user");
$user=$myrow["user"];
// Identitätsüberprüfung erfolgreich, entsprechende Vorgänge ausführen
...
} anders {
echo „Authentifizierung fehlgeschlagen, Sie haben keine Berechtigung zum Teilen von Netzwerkressourcen!“;
}
?>
Hierbei ist zu beachten, dass Benutzer in nachfolgenden Vorgängen **http://domainname/next.php?user=username** verwenden können, um die Authentifizierung zu umgehen. Daher sollten nachfolgende Vorgänge zunächst prüfen, ob die Variable registriert ist: Wenn sie registriert ist, führen Sie den entsprechenden Vorgang aus, andernfalls wird dies als illegale Anmeldung betrachtet. Der entsprechende Code lautet wie folgt:
session_start();
if (!session_is_registered("user")){
echo „Authentifizierung fehlgeschlagen, illegale Anmeldung!“;
} anders {
//Erfolgreiche Anmeldung, um entsprechende Vorgänge auszuführen
...
}
?>
Anhang: So installieren Sie PHP im Modulmodus
1. Laden Sie zunächst die Datei herunter: mod_php4-4.0.1-pl2. [Wenn es sich bei Ihnen nicht um PHP4 handelt, aktualisieren Sie so schnell wie möglich!]
Nach dem Entpacken sind drei Dateien vorhanden: mod_php4.dll, mod_php4.conf, readme.txt
2. Kopieren Sie die zugehörigen Dateien
in das Modulverzeichnis des Apache-Installationsverzeichnis.
Kopieren Sie mod_php4.conf in das conf-Verzeichnis des Apache-Installationsverzeichnisses.
3.
Öffnen Sie die Datei conf/srm.conf und fügen Sie den Satz
Include conf/mod_php4.conf
hinzuEntfernen Sie dazu bitte alle Einstellungsanweisungen zum CGI-Modus in Ihrer httpd.conf, also den Teil, der dem folgenden ähnelt
: /php4/
AddType application/x-httpd-php4 .php
AddType application/x-httpd-php4 .php3
AddType application/x-httpd-php4 .php4
Aktion application/x-httpd-php4 /php4/php.exe
Wenn Sie möchten, dass PHP mehr Suffixe unterstützt, ist das kein Problem. Die angegebene Konfigurationsdatei mod_php4.conf unterstützt bereits drei Suffixe: php, php3 und php4. Wenn Sie weitere Suffixe unterstützen möchten, können Sie diese Datei sehr einfach ändern.
4.
Verwenden Sie zum Testen <? phpinfo(); Sie werden sehen, dass der Wert der Server-API Apache und nicht CGI ist, und es gibt auch Informationen zu HTTP-Header-Informationen.