Kennwortschutz mit PHP, MySQL und Lernabschnitt-Variablen

| by Dan McConkey | February 11, 2005
Eine der großen Versprechungen, die wirklich zutreffend kamen, als unsere Internet-ermöglichte Welt das einundzwanzigste Jahrhundert erreichte, ist leistungsfähige Kunde-zugeschäft Interaktion. Jeden Tag, finde ich eine neue Weise, Botengänge des Lebens durchzulaufen, ohne auf Einfluß auf einen Bankerzähler, einen Apotheker oder einen Versicherungsagenten überhaupt zu warten. Ich tue es ganz online.

Internet kapieren Verbraucher kommen, solche Netzermächtigung zu erwarten. Und während diese Informationen Verhandlungen normalerweise irgendeine Art der privaten reisenden Daten der äther erfordern, trägst du, als das webmaster, die Belastung des Führens dieser Daten weg von denen, die kein Recht zu ihr haben.

Da Retina ablichtet und Gehirnwelle Unterzeichnungen ruhige Eigenschaften James der Bondleichter schläge sind, werden wir mit normalen alten langweiligen Kennwörtern gehaftet.

Ist dieses wirklich sicher?

Lassen Sie uns dieses schwer zugängliche erste erhalten. Die einzigen sichern wirklich Computer ist einer, der getrennt wird. Art wie „des einzigen sicheren Autos ist die, die sitzt in deiner Garage.“ Das Leben ist eine Gefahr/Belohnung Angelegenheit und, sie, diese gegenüberstellen (vermutlich) ist nicht lassen Sie uns Fort Knox, wir sichern.

Die Sicherheitsmaßnahmen, die hier verzeichnet werden, sind für Gartenvielzahl Daten verwendbar. Ich habe diese Entwürfe verwendet, um Hinterweb site Leitung Seiten für on-line-Einkaufenkarren zu schreiben. Ich habe sie benutzt, um „Partner“ Seiten zu schreiben, in denen Einzelhändler ADS und Verkäufe Daten von den Grossisten downloaden können. Ich würde sie nicht verwenden, um Kreditkarte Zahlen, Sozialversicherung Zahlen oder Kernprodukteinführung Codes zu sichern.

So sind was PHP, MySQL und Lernabschnittvariablen?

PHP ist eine verwendete Programmiersprache (in diesem Fall) um HTML zu schreiben. MySQL ist eine Datenbank. Lernabschnittvariable werden durch Netzbediener verwendet, um Informationen von einer Seite auf einem Gebiet zu anderen aufzuspüren. Dieser Artikel ist nicht a wie-zu für jeder Technologie. Wenn du nicht mit ihnen sehr wohl fûhlst, könntest du gerade kopieren und die Codeproben in diesem Artikel zu kleben und sich zu errichten schützte ein grundlegendes Kennwort Web site. Du könntest die Anmerkungen der Klippe für Stolz auch gerade lesen und benachteiligen und erhalten Wechselstrom + in der Literaturkategorie. Deine Wahl.

Lassen Sie uns begonnen mit Lernabschnitten erhalten

Es wird häufig gesagt, daß das Netz „stateless“ ist und bedeutet, daß jede Webseite völlig das Unabhängige ist, keine andere Seite benötigt zu bestehen, und keine Informationen von der vorigen Seite nimmt. Dieses ist für das anonyme Surfen von einem Aufstellungsort zum folgenden groß, aber es stinkt für Kennwortschutz. Verbraucher wünschen Kennwort geschützte Informationen, aber sie möchten nicht ihr Kennwort auf jeder Seite eintragen. So wenden wir an unser web server zur Unterhaltschiene eines Benutzers, während er auf unserem Aufstellungsort ist.

Ex. 1.

<? php

session_start ();

?>

<! DOCTYPE HTML ÖFFENTLICHKEIT „- //W3C//DTD XHTML 1.0 Strict//EN“ 'http:// www.w3.org/TR/xhtml1/DTD xhtml1-strict.dtd'>

<html xmlns= " http://www.w3.org/1999/xhtml "" xml: lang= " en " lang= " en " >

<head><title>Dan McConkeys freies Netz-Marketing Guide</title></head>

<body>

<p>Dan McConkeys freies Netz-Marketing Guide</p>

</body>

</html>

Ende Ex. 1

session_start () ist eine PHP Funktion, die schaut, um zu sehen, wenn ein Lernabschnitt bereits dann begonnen worden ist, tut eine von zwei Sachen:

1. Wenn ein Lernabschnitt begonnen worden ist, tut er nichts.

2. Wenn ein Lernabschnitt nicht begonnen worden ist, fängt er ein an.

Es ist wichtig, zu merken, daß session_start () vor jedem möglichem anderen PHP auf der Seite auftreten muß, wenn du sie arbeiten wünschst. Jede Kennwort-geschützte Seite mit ihr anfangen. Gültigkeitserklärung

Lassen Sie uns grundlegende Gültigkeitserklärung jetzt denken. Welche Art von Sachen müssen wir vollenden?

* Zuerst müssen wir überprüfen, um zu sehen, wenn der Benutzer bereits angemeldet hat, also bitten wir nicht um ein Kennwort auf jeder Seite. Wenn unser Benutzer bereits angemeldet hat, führen wir ihn durch zum sicheren Inhalt.

* Wenn der Benutzer nicht bereits angemeldet hat, benötigen wir ihn, so zu tun. So müssen wir eine LOGON-Form schreiben.

* Wir benötigen nahe bei vergleichen LOGON-Formresultate mit einer bekannten Liste von usernames und von Kennwörtern. Wenn der Benutzer heraus überprüft, führen wir ihn entlang zum sicheren Inhalt.

* Wenn der Benutzer nicht heraus überprüft, verweisen wir ihn zurück zu dem LOGON-Schirm.

* Zuletzt müssen wir den Benutzer zur Verfügung stellen die Fähigkeit, heraus zu loggen.

Lassen Sie uns mit einem grundlegenden Rahmen so beginnen, den wir später ausfüllen.

Ex. 2

<? php

// Anfangslernabschnitt, wenn Sie nicht bereits begonnen werden

session_start ();

// überprüfung, zum zu sehen, wenn Benutzer gerade heraus loggte

wenn ($log_out)

{

}

Funktion write_log_in ($text)

{

} // Ende write_log_in Funktion

Funktion überprüfen ()

{

// überprüfung, zum zu sehen, wenn sie bereits angemeldet werden

//, wenn ja, Rückhol, richten aus

// wenn Nr., überprüfung, zum zu sehen, wenn Besucher gerade versucht hat anzumelden

// wenn ja, überprüfen Kennwort

//, wenn es funktionierte, Rückkehr zutreffend

//, wenn es nicht, sie zurück zu LOGON senden

//, wenn der Benutzer nicht gerechter LOGON, (s) benötigt er

} überprüfen // Ende Funktion

?>

<! DOCTYPE HTML ÖFFENTLICHKEIT „- //W3C//DTD XHTML 1.0 Strict//EN“ 'http:// www.w3.org/TR/xhtml1/DTD xhtml1-strict.dtd'>

<html xmlns= " http://www.w3.org/1999/xhtml "" xml: lang= " en " lang= " en " >

<head><title>Dan McConkeys freies Netz-Marketing Guide</title></head>

<body>

<p>Dan McConkeys freies Netz-Marketing Guide</p>

<? php

// überprüfung auf gültigen Benutzer

wenn (überprüfen ())

{

// fangen sicheren Inhalt an

„<p>Clatu, verata, nicto</p>“ widerhallen;

// Ende sicherer Inhalt

} // Ende, wenn (überprüfen ())

?>

</body>

</html>

Beenden Ex. 2

Als I, das gesagt wird, ist dieses ein Rahmen gerecht. Ich mag alle meine Projekte beginnen auf diese Weise. Es erlaubt mir, zu erhalten eine großartige Ansicht von, was ich tue, bevor ich unten ausführlich beschmutzt erhalte.

Im Allgemeinen bis jetzt ist aller, den wir getan haben, Platz irgendein geheimer Inhalt innerhalb wenn Aussage. Wenn der Benutzer gültig ist, zeigen wir den Inhalt, wenn nicht, wir nicht. Schreiben einer LOGON-Form

Die erste Sache, die wir Fleisch heraus sollten, ist unsere LOGON-Funktion. Dieses ist eine grundlegende Form, ohne Glocken und Whistles, also sollte es recht direkt sein.

Ex 3

Funktion write_log_in ($text)

{

Echo „

<p>$text</p>

<form method='post action= '' >

< p > s-bit für Benutzer: <input type='text name='user_name/></p>

<p>Password: <input type='password name='password/></p>

<p><input type='submit value='Logon'></p>

</form>

";

} // Ende write_log_in Funktion

Ende Ex. 3

Keine Probleme, Recht? Dieses ganzes IS-IS PHP, das eine grundlegende HTML LOGON-Form schreibt. Zwei Sachen sind wert zu merken:

1. Das Methode Attribut zum <form> Umbau ist „Pfosten“. Wir könnten verwendet haben „erhalten“, aber das würde unseren Benutzernamen und -kennwort dem URL als varibles hinzufügen. IE our_url? user_name=bob&password=truck64. Dieses zeigt das Kennwort--im normalen Text-- Recht dort im URL. Warum ganzes mal auf Sicherheit verbringen dieses, wenn du gerecht Kennwörter der Völker für Anzeige heraus setzen werden?

„Pfosten“ ist viel sicherer und zwingt den Bediener, um Formdaten, eher, die zu verfolgen das URL. Immer wenn du Informationen aus dem URL heraus führen kannst, bist du ein Schritt näeher an einer sicheren Webseite.

2. Zunächst möchtest du das Tätigkeit Attribut betrachten zum <form> Umbau. Das Freilassen er erklärt dem Bediener, daß du planst, diese Formresultate mit dieser gleichen Seite zu verarbeiten.

Überprüfung der LOGON-Werte

Lassen Sie uns jetzt Fleisch heraus unser Rahmen, der wenig mehr ist.

Ex. 4

<? php

// Anfangslernabschnitt, wenn Sie nicht bereits begonnen werden

session_start ();

// überprüfung, zum zu sehen, wenn Benutzer gerade heraus loggte

wenn ($log_out)

{

}

Funktion write_log_in ($text)

{

} // Ende write_log_in Funktion

Funktion überprüfen ()

{

// überprüfung, zum zu sehen, wenn sie bereits angemeldet werden

//, wenn ja, Rückhol, richten aus

// überprüfung, zum zu sehen, wenn Besucher gerade versucht hat anzumelden

$user_name = $_POST [„user_name“];

$password = $_POST [„Kennwort“];

wenn ($user_name && $password)

{

// überprüfen Kennwort und LOGON zur Datenbank

$db = mysql_pconnect („localhost“, „$user_name“, „$password“);

wenn ($db)

{

// Register-Lernabschnittvariable und nehmen die überprüfenfunktion heraus

$valid_user = $user_name;

$_SESSION [„valid_user“] = $valid_user;

Rückhol ausrichten;

}

sonst

{

// schlechter Benutzer und Kennwort

$text = „Benutzer-Name und Kennwort paßte nicht“ zusammen;

write_log_in ($text);

}

}

sonst

{

//, wenn der Benutzer nicht gerechter LOGON, (s) benötigt er

}

} überprüfen // Ende Funktion

?>

<! DOCTYPE HTML ÖFFENTLICHKEIT „- //W3C//DTD XHTML 1.0 Strict//EN“ 'http:// www.w3.org/TR/xhtml1/DTD xhtml1-strict.dtd'>

<html xmlns= " http://www.w3.org/1999/xhtml "" xml: lang= " en " lang= " en " >

<head><title>Dan McConkeys freies Netz-Marketing Guide</title></head>

<body>

<p>Dan McConkeys freies Netz-Marketing Guide</p>

<? php

// überprüfung auf gültigen Benutzer

wenn (überprüfen ())

{

// fangen sicheren Inhalt an

„<p>Clatu, verata, nicto</p>“ widerhallen;

// Ende sicherer Inhalt

} // Ende, wenn (überprüfen ())

?>

</body>

</html>

Beenden Ex. 4

Zuerst überprüfen wir, ob der Benutzer gerade versucht hat anzumelden.

$_POST ist eine PHP superglobal Reihe, die die Daten verfolgt, die zu einer Seite über einen <form method='post'> Umbau geschickt werden. In der LOGON-Funktion nannten wir unser Eingänge user_name und Kennwort, also können wir den Benutzer zugänglich machen, der durch das Benennen von $_POST eingegeben wird [„user_name“] und von $_POST [„Kennwort“].

Wir laufen zunächst wenn ($user_name && $password) Aussage, um zu sehen wenn $_POST [„user_name“] und $_POST [„Kennwort“] Einflußwerte. Wenn sie, versuchte der Benutzer gerade anzumelden.

Unser folgender Abschnitt des Codes ist das Teil, das wirklich überprüfungen, ob der Benutzername und -kennwort korrekt sind. Hier benutzen wir Anwendertabelle MySQLs (Teil der mysql Datenbank) um unsere Benutzer zu verfolgen. Dieses ist möglicherweise der beste Weg, da MySQL bereits bis zu den Steuerzugangsberechtigungen eingestellt wird. Jedoch kann dieses Probleme darstellen, wenn du den Datenbankanschluß geöffnet halten möchtest über Seiten. Auch einige bewirtenfirmen geben dir Bewilligung Zugang (dich lassen bilden neue Benutzer), zur mysql Datenbank nicht.

In jenen Fällen kannst du viel die gleiche Sache vollenden, indem Sie deine eigene Anwendertabelle in deiner Datenbank gründen. Du würdest dann eine SQL Frage schreiben müssen, die Benutzernamen und -kennwörter vergleicht. Das würde etwas ähnliches schauen:

Ex. 5

$select = „auserwähltes user_name von den Benutzern

wo user_name='$ user_name

und password=PASSWORD („$password“)“;

$query = mysql_query ($select);

wenn (mysql_num_rows ($query) == 1)

{

// validierter Benutzer und Kennwort

...

Ende Ex 5

Erhalten zurück zu unserer Gültigkeitserklärung mit MySQLs, das in den Eigenschaften errichtet wird, wissen wir, daß der Benutzername und -kennwort heraus überprüften, weil der Anschlußversuch zutreffendes zurückbrachte.

Registrieren einer Lernabschnittvariable

Nun da wir unsere Benutzername und -kennwortüberprüfung heraus kennen, müssen wir diese Informationen speichern und unserem Benutzer erlauben unseren, geschützten Bereich zu surfen fortzufahren, ohne jede Seite anzumelden. Betrachtend rückseitig Beispiel vier, beachten wir andere von superglobal Variablen PHPS: $_SESSION.

$_SESSION ist eine Reihe, die alle unsere Lernabschnittvariablen hält. Indem wir die valid_user Lernabschnittvariable einstellen, können wir einen Anruf zu ession_is_registered später bilden („valid_user“) um zu sehen wenn unser Benutzer bereits erfolgreich angemeldet hat.

Heraus loggen

Die letzte Sache, die wir um uns sorgen müssen, erlaubt unseren Benutzern, aus unserem System heraus zu loggen. In diesem Fall haben wir ein einfaches Verbindung Innere unser geschützter Bereich benutzt.

Ex 6

<? php

// Anfangslernabschnitt, wenn Sie nicht bereits begonnen werden

session_start ();

// überprüfung, zum zu sehen, wenn Benutzer gerade heraus loggte

wenn ($log_out)

{

session_unregister („valid_user“);

session_destroy ();

session_start ();

}

Funktion write_log_in ($text)

{

} // Ende write_log_in Funktion

Funktion überprüfen ()

{

} überprüfen // Ende Funktion

?>

<! DOCTYPE HTML ÖFFENTLICHKEIT „- //W3C//DTD XHTML 1.0 Strict//EN“ 'http:// www.w3.org/TR/xhtml1/DTD xhtml1-strict.dtd'>

<html xmlns= " http://www.w3.org/1999/xhtml "" xml: lang= " en " lang= " en " >

<head><title>Dan McConkeys freies Netz-Marketing Guide</title></head>

<body>

<p>Dan McConkeys freies Netz-Marketing Guide</p>

<? php

// überprüfung auf gültigen Benutzer

wenn (überprüfen ())

{

„<p><a href='? log_out=1'> Maschinenbordbuch out</a></p>“ widerhallen;

// fangen sicheren Inhalt an

„<p>Clatu, verata, nicto</p>“ widerhallen;

...

Ex 6 beenden

Zuerst schauend im HTML Körper, sehen wir eine einfache HTML Verbindung, die eine Variable dem URL hinzufügt. In diesem Fall ist der variable Name log_out und sein Wert ist 1. Wir verwenden 1 als Wert, weil zu speichern ist einfach, in einem URL, aber wirklich jeder möglicher Wert grösser, als null arbeitet.

Sobald wir einen Log-outantrag zur Seite führen, müssen wir sie verarbeiten. Das ist, was, wenn der Teil ($log_out) für ist.

, wenn Aussage überprüft, ob ein Log-outantrag geführt wurde. Sobald er sieht, daß man war, zerstört es unregisters die valid_user Lernabschnittvariable, dann es den Lernabschnitt völlig.

Ironisch beginnt es eine neue Lernabschnittrechtunterstützung. Das ist, falls der Benutzer entscheidet, später anzumelden (ohne die Browser Window zu schließen), oder anmelden als anderer Benutzer. Der abschließende Code

Ihn allen setzend, zusammen erhalten wir dieses:

Ex. 7

<? php

// Anfangslernabschnitt, wenn Sie nicht bereits begonnen werden

session_start ();

// überprüfung, zum zu sehen, wenn Benutzer gerade heraus loggte

wenn ($log_out)

{

session_unregister („valid_user“);

session_destroy ();

session_start ();

}

Funktion write_log_in ($text)

{

Echo „

<p>$text</p>

<form method='post action= '' >

< p > s-bit für Benutzer: <input type='text name='user_name/></p>

<p>Password: <input type='password name='password/></p>

<p><input type='submit value='Logon'></p>

</form>

";

} // Ende write_log_in Funktion

Funktion überprüfen ()

{

// überprüfung, zum zu sehen, wenn sie bereits angemeldet werden

wenn (session_is_registered („valid_user“)), Rückkehr zutreffend;

// überprüfung, zum zu sehen, wenn Besucher gerade versucht hat anzumelden

$user_name = $_POST [„user_name“];

$password = $_POST [„Kennwort“];

wenn ($user_name && $password)

{

// überprüfen Kennwort und LOGON zur Datenbank

$db = mysql_pconnect („localhost“, „$user_name“, „$password“);

wenn ($db)

{

// Register-Lernabschnittvariable und nehmen die überprüfenfunktion heraus

$valid_user = $user_name;

$_SESSION [„valid_user“] = $valid_user;

Rückhol ausrichten;

}

sonst

{

// schlechter Benutzer und Kennwort

$text = „Benutzer-Name und Kennwort paßte nicht“ zusammen;

write_log_in ($text);

}

}

sonst

{

// Benutzer muß anmelden

$text = „dieses ist ein sicherer Bediener. Bitte LOGON. “;

write_log_in ($text);

}

} überprüfen // Ende Funktion

?>

<! DOCTYPE HTML ÖFFENTLICHKEIT „- //W3C//DTD XHTML 1.0 Strict//EN“ 'http:// www.w3.org/TR/xhtml1/DTD xhtml1-strict.dtd'>

<html xmlns= " http://www.w3.org/1999/xhtml "" xml: lang= " en " lang= " en " >

<head><title>Dan McConkeys freies Netz-Marketing Guide</title></head>

<body>

<p>Dan McConkeys freies Netz-Marketing Guide</p>

<? php

// überprüfung auf gültigen Benutzer

wenn (überprüfen ())

{

„<p><a href='? log_out=1'> Maschinenbordbuch out</a></p>“ widerhallen;

// fangen sicheren Inhalt an

„<p>Clatu, verata, nicto</p>“ widerhallen;

// Ende sicherer Inhalt

} // Ende, wenn (überprüfen ())

?>

</body>

</html>

Beenden Ex. 7

Der ist ein hübscher kräftiger Codeblock, zum sich am Kopf jeder Webseite zu setzen. Gewöhnlich würde ich mein überprüfe () und write_log_in () Funktionen in eine seperate Akte und beziehe sie mit einer Funktion einschliessen () setzen. Das stellt das zusätzliche benifit der Aktualisierung deiner gesamten Web site vom Redigieren nur von einer Akte zur Verfügung.

Hoffen daß Hilfen.

(c) Dan 2005 Urheberrecht sichern McConkey

Article Source: http://www.articleset.com



About the Author

Dan McConkey is a freelance web marketing professional, working in and around Charlotte, NC. In the web, Dan has found an amazing potential for lead generation for businesses. Using traditional advertising theories, appropriate technologies, and a little common sense, your electronic marketing campaigns can easily be your most effective.

Dan maintains Dan McConkey's Free Web Marketing Guide at http://www.dmcconkey.com

dmcconkey@yahoo.com » Read more articles by Dan McConkey
You are welcome to publish or reprint this article free of charge, provided: