Feladat: webes tartalmaink,
adatbázisban tárolt adataink védelme érdekében, írjunk jelszavas beléptető
rendszert leendő webes alkalmazásunkhoz. A belépésre jogosultak adatait
tároljuk adatbázisban. Legyen a kérdéses adattábla neve users. Az adattábla mezői: id, UName, NName és Passw, mely rendre a rekordazonosító, a
felhasználói név, a bejelentkezési név (nicknév) és
végül a jelszó. Ezt az adattáblát csak a rendszer készítője tudja kezelni,
adatait csak ő láthatja. Ezért az elkészült rendszer felhasználói számára a
belépési adatokat a rendszer készítői szolgáltatja, tőle kell kérni.
Első lépésként
hozzunk létre egy php oldalt, mely segítségével a rendszer készítője kezelni
tudja a rendszer használóit. Ezen a lapon rögzíteni és módosítani lehet a
felhasználók adatait és törölni a felhasználót, amennyiben szükséges. Ennek a
rendszernek a kezelői felülete így néz ki új felhasználó felvétele esetén.
Ha
meglévő felhasználó adatait szeretnénk módosítani, vagy a felhasználót törölni
szeretnénk, akkor ez a felület így néz ki:
Ezeken a
felületeken minden mezőt ki kell tölteni. A megismételt jelszónak természetesen
meg kell egyezni az elsőként beírt jelszóval, valamint nem lehet két
felhasználónak ugyanaz a login neve. Ezen hibák elkövetése esetén a rendszer
nem veszi fel az új felhasználót, illetve nem módosítja adatait. Törlés esetén
a jelszavak kitöltése nem szükséges.
A
felhasználók regisztrációját végző oldal teljes listája (a config.php file az eddigi
leírásokban is szereplő konfigurációs állomány):
<?php
session_start();
include "config.php";
?>
<html>
<head>
<title>Felhasználók regisztrálása</title>
</head>
<body bgcolor="#eeeeee">
<?php
if ( isset($newuser) ){
if ( ($newuname !== "") && ($newnname !== "") && ($passw1 !== "") && ($passw1=$passw2) ){
$eredm = mysql_query("SELECT *
FROM users WHERE NName='$newnname'");
$sorsz = mysql_num_rows($eredm);
$sorsz = $sorsz+0;
if ( $sorsz == 0 ){
$pw = md5($_POST['passw1']);
mysql_query("INSERT INTO users (UName,NName,Passw)
VALUES ('$newuname','$newnname','$pw)') ");
}
}
}
if ( isset($modosit) ){
if ( ($newuname !== "") && ($newnname !== "") && ($passw1 !== "") && ($passw1=$passw2) ){
$id = $_SESSION['userid'];
$un = addslashes($_POST['newuname']);
$nn = addslashes($_POST['newnname']);
$pw = md5($_POST['upassw1']);
mysql_query("UPDATE users SET UName='$un',NName='$nn',Passw='$pw' WHERE id='$id' ");
}
}
if ( isset($torol) ){
$id = $_SESSION['userid'];
mysql_query("DELETE FROM users WHERE id='$id'");
}
if ( isset($_POST['userid']) ){
$userid = $_POST['userid'];
}
$eredm = mysql_query("SELECT *
FROM users");
$sorsz = mysql_num_rows($eredm);
print "<b><h3>Felhasználók ($sorsz):</b></h3>";
print "<table border=1 bordercolor=\"#ffffff\" cellpadding=\"10\"
cellspacing=\"0\" bgcolor=\"#eeeeee\">\n";
print "<tr>";
print "<td valign=\"top\">";
print "<form action=\"\" method=\"POST\">\n";
print "<select name=\"userid\"
size=\"19\" onclick=\"this.form.submit()\"
/>\n";
print "<option selected value=\"valassz\" />Válassz/Új\n";
while ($sora = mysql_fetch_object($eredm)){
print "<option value=\"$sora->id\"";
if ( (isset($userid) && $userid == $sora->id) ){
print " selected";
}
print "> $sora->UName\n";
}
print "</select>\n";
print "</form>";
print "</td>";
print "<td align=\"right\" valign=\"top\">";
if ( isset($_POST['userid']) ){
$id = $_POST['userid'];
$_SESSION['userid'] = $id;
print "<form action=\"\"
method=\"POST\">\n";
if ( $_POST['userid'] == "valassz" ){
print "<h3>Új
felhasználó felvétele:</h3>\n";
}
if ( $_POST['userid'] !== "valassz" ){
print "<h3>A felhasználó
adatainak módosítása:</h3>\n";
$eredm = mysql_query("SELECT *
FROM users WHERE id=$id");
$sora = mysql_fetch_object($eredm);
$un = $sora->UName;
$nn = $sora->NName;
}
print "<b>Neve:</b> <input type=\"text\" name=\"newuname\" size=\"30\" value=\"$un\"><br /><br />\n";
print "<b>Login neve:</b> <input
type=\"text\" name=\"newnname\"
size=\"30\" value=\"$nn\"><br /><br />\n";
print "<b>Jelszava:</b> <input type=\"password\"
name=\"passw1\" size=\"32\"><br
/><br />\n";
print "<b>Jelszó újra:</b>
<input type=\"password\" name=\"passw2\"
size=\"32\" ><br /><br />\n";
if ( ($_POST['userid'] == "valassz") ){
print "<input type=\"submit\" name=\"newuser\" value=\"Új felhasználó\">\n";
}
if ( ($_POST['userid'] !== "valassz") ){
print "<input
type=\"submit\" name=\"modosit\"
value=\"Adatmódosítás\"><br /><br />\n";
print "<input type=\"submit\" name=\"torol\" value=\"A felhasználó
törlése\">\n";
}
print "</form>";
}
print "</td>";
print "</tr>";
print "</table>";
?>
</body>
</html>
A következő lépésben a rendszer
indítófájlját írjuk meg. Ennek neve index.php, és igen rövid lesz, rendszerindító
parancsokból és a login.php
betöltéséből áll:
<?php
session_start();
ob_start();
include "login.php";
ob_end_flush();
?>
Az indító file
betöltése feltételezi a login.php
állomány létezését. Ebben az első php szakasz felel a bejelentkezés
ellenőrzésért.
<?php
session_start();
include "config.php";
if ( !$_SESSION['nlogin'] ){
if ( isset($_POST['login']) ){
$nname = addslashes($_POST['nname']);
$passw = md5($_POST['passw']);
$eredm = mysql_query("SELECT *
FROM users WHERE ((NName='".$nname."') && (Passw='".$passw."'))");
if ( mysql_num_rows($eredm) !== 0 ){
$_SESSION['nlogin'] = true;
header("location: login.php");
}
}
?>
<html>
<head>
<title>Beléptető rendszer</title>
</head>
<body bgcolor="#eeeeee">
<font face="Verdana">
<form method="POST">
<table border="1" bordercolor="#ffffff" cellpadding="10" cellspacing="0" bgcolor="#eeeeee">
<tr><td align="right">A felhasználó login neve: <input type="text" name="nname" size="22" /></td></tr>
<tr><td align="right">Jelszava: <input type="password" name="passw" size="24" /></td></tr>
<tr><td align="center"><input type="submit" name="login" value="Belépés" /></td></tr>
</table>
</font>
</form>
</html>
<?php
}
else{
print "<html>\n";
print "<head>\n";
print "<title>Védett
tartalom</title>\n";
print "</head>\n";
print "<body>\n";
print "<font
face=\"Verdana\">";
print "Ez itt a védett tartalom!<br /><br />\n";
print "Menü:<br /><br />\n";
print "<a href=\"alap.php\">A-Lap</a><br
/><br />\n";
print "<a href=\"blap.php\">B-Lap</a><br
/><br />\n";
print "<a href=\"logout.php\">Kilépés</a>\n";
print "</font>";
print "</body>\n";
print "</html>\n";
}
?>
Ha még nem
lépett be a felhasználó, akkor egy beviteli felületet látunk, mely a
bejelentkezési név és a jelszó beírására vár.
Ha érvényes az
adatbevitel, akkor a második php szakaszban leírt egyszerű html
oldal jelenik meg, Ez itt a védett tartalom! felirattal
és egy egyszerű menüvel. Továbbléphetünk az A vagy B
lapra, vagy Kiléphetünk a rendszerből.
Ha nem léptünk
ki a rendszerből, akkor az itt leírt lapok böngészhetők a menü nélkül is,
címbeírással. Ebben a demonstrációs rendszerben az A
és B lap gyakorlatilag ugyanaz, lényegi különbség nincs közöttük. Mindkettő
először a php szakaszban ellenőrzi, hogy sikeresen bejelentkeztünk-e, ha igen
beenged a védett területre, ha nem, akkor arra kér bennünket, hogy
jelentkezzünk be.
<html>
<head>
<title>Beléptető rendszer - A-Lap</title>
</head>
<body>
<font face="Verdana">
<?php
session_start();
include "config.php";
if (!$_SESSION['nlogin']){
print "<a href=\"index.php\">Be kellene jelentkezni!</a>\n";
}
else{
print "A beléptető
rendszer által védett tartalom: A-Lap.<br /><br />\n";
print "<a href=\"index.php\">Vissza</a>\n";
}
?>
</font>
</body>
</html>
Az A-Lap tartalma:
A B-Lap tartalma szinte ugyanaz:
Ha
munkánkat befejeztük, akkor célszerű a rendszert a Menü Kilépés menüpontjával
elhagyni. A Kilépés a logout.php
állomány segítségével történik, melynek futtatásával újra a bejelentkezési
felülethez jutunk. Az oldal listája:
<?php
session_start();
include "config.php";
unset($_SESSION['nlogin']);
session_destroy();
header("location:
index.php");
?>
Ha
nem vagyunk bejelentkezve a rendszerbe, akkor az A és
B lap nem böngészhető. Betöltéskor egy linkkel jelenik meg, melynek felirata: Be
kellene jelentkezni! A link címe pedig index.php.
http://htmliskola.uw.hu/tan10.html
http://htmliskola.uw.hu/tan10.html
Nincsenek megjegyzések:
Megjegyzés küldése