Prakticky s MySQL - 8. díl

Po dokončení registrace uživatelů dnes k naší diskusi přidáme i přihlašovací systém. Jak na to si ukážeme v dnešním díle.

Dokončení registrace uživatelů

Po odeslání dat z našeho formuláře pro registraci uživatelů bychom měli data zapsat do databáze a seznámit s výsledkem celé operace uživatele – podívejme se tedy na rovnou na samotný skript:

zaregistrovat.php

<?
mysql_connect("localhost","root","heslo");
$db=MySQL_Select_DB("test");
/* připojení k databázi*/

@$query=MySQL_Query("Insert into Uzivatele values(null,`$Jmeno`, `$Login`, `$Heslo`, `$Email`, 0)");
/* vložení dat do tabulky*/

if(!query):
/* pokud se operace nepodaří, vypíše se tento kód*/
?>
<html>
<head>
<title>Registrace nebyla úspěšná!!</title>
</head>
<style>
body{font-family:arial ce;font-size:12;background-color:maroon;border-color:maroon}
b{font-size:12;font-weight:bolder}
table{border-width:1;border-color:maroon;background-color:white;color:maroon}
input{font-family:arial ce;font-size:12;color:maroon;border-color:maroon;background:url("pozadi.gif")
}
td{border-width:0}
.submit{font-family:arial ce;font-size:12;color:maroon;font-weight:bolder;border-width:1;border-color:maroon}
.big{font-size:14;color:white}
</style>
<body>
Je nám líto, ale vaše registrace se nepovedla. Můžete to zkusit <a href="registrace.htm">ZNOVU</a>.
</body>
</html>

<?
else:
/* pokud se operace podaří, vytiskne se toto*/
?>

<html>
<head>
<title>Registrace byla úspěšná!!</title>
</head>
<style>
body{font-family:arial ce;font-size:12;background-color:maroon;border-color:maroon}
b{font-size:12;font-weight:bolder}
table{border-width:1;border-color:maroon;background-color:white;color:maroon}
input{font-family:arial ce;font-size:12;color:maroon;border-color:maroon;background:url("pozadi.gif")
}
td{border-width:0}
.submit{font-family:arial ce;font-size:12;color:maroon;font-weight:bolder;border-width:1;border-color:maroon}
.big{font-size:14;color:white}
</style>
<body>
<table width=400 align=center>
<tr><td colspan=2 align=center><h3>Vaše registrační údaje</h3></td></tr>
<tr><td align=left><b>Jméno a příjmení:<td align=left><?echo $Jmeno;?></td></tr>
<tr><td align=left><b>Přezdívka:<td align=left><?echo $Login;?></td></tr>
<tr><td align=left><b>Heslo:<td align=left><?echo $Heslo;?></td></tr>
<tr><td align=left><b>Email:<td align=left><?echo $Email;?></td></tr>
<tr><td colspan=2 align=left><br></td></tr>
</body>
</html>

<?
endif;
?>

Výpis úspěšné registrace pak tedy bude vypadat takto:

Klepněte pro větší obrázek

V naší tabulce pak bude záznam uložen přesně takto:

Klepněte pro větší obrázek

Kaskádové styly

Možná jste si všimli, že zbytečně vypisujeme v našich předchozích dokumentech ty stejné kaskádové styly. Právě proto je výhodné je i kvůli úpravám ukládat do samostatných CSS souborů a ty poté vkládat do HTML kódu jak odkaz a ně. Takový CSS dokument může vypadat takto:

Klepněte pro větší obrázek

Vidíme, že se v praxi pouze neuvádí HTML tagy, ale jinak je kód stejný. Při vkládání do dokumentů pak užijeme tento kód:

<LINK href="main.css" rel=StyleSheet type=text/css>

Logování

Pokud bude chtít uživatel vstoupit do diskuse, bude muset být jeho přístup nějakým způsobem akreditován. Nejprve si tedy opět nachystáme logovací HTML dokument:

login.htm

<html>
<head>
<title>Vstup do diskuse</title>
<LINK href="main.css" rel=StyleSheet type=text/css>
</head>
<body>
<table width=200 align=center>
<tr><td colspan=2 align=center><h4>Vstup do diskuse</h4></td></tr>
<tr><td align=left><b>Login:<td align=left><form action="log.php" method="POST"><input name="Login"></td></tr>
<tr><td align=left><b>Heslo:<td align=left><input name="Heslo" type="password"></td></tr>
<tr><td colspan=2 align=center><input type="submit" class=submit value="Vstoupit"></form></td></tr>
</body>
</html>

Klepněte pro větší obrázek

log.php

Při kontrole údajů z databáze musíme po jejím dokončení zakódovat heslo pomocí algoritmu MD5 a login zase rozkódovatelnou funkcí base64.

<?
mysql_connect("localhost","root","heslo");
$db=MySQL_Select_DB("test");
/*připojení k databázi*/

@$query=MySQL_Query("Select * from Uzivatele where Prezdivka=`$Login`");
/*vybrání uživatele*/

if($query):
/*pokud je dotaz nenulový*/

$fetch=MySQL_Fetch_Array($query);
$password=$fetch["Heslo"];
$status=$fetch["Status"];
/*vybereme z tabulky údaje pomocí pole*/


if(($password==$Heslo)and($password!="")):
/*pokud se hesla shodují a nejsou nulová*/

$pass=MD5($password);
$log=base64_encode($Login);
/*provede se zakódování údajů*/

$path = SubStr($SCRIPT_NAME, 0, StrRPos($SCRIPT_NAME, "/")).
"/diskuse.php?Login=$log&Heslo=$pass&Status=$status";
Header("Location: http://$SERVER_NAME:$SERVER_PORT$path");
/*skript se přesměruje na vlastní diskusi*/

else:
$path = SubStr($SCRIPT_NAME, 0, StrRPos($SCRIPT_NAME, "/")).
"/login.htm";
Header("Location: http://$SERVER_NAME:$SERVER_PORT$path");
/*skript se přesměruje na logovací formulář*/

endif;

else:
$path = SubStr($SCRIPT_NAME, 0, StrRPos($SCRIPT_NAME, "/")).
"/login.htm";
Header("Location: http://$SERVER_NAME:$SERVER_PORT$path");
endif;

?>

Klepněte pro větší obrázek

Zpracování příchozích dat

Pokud poté přijdou data skriptu diskuse.php, musí je také ověřit a to následujícím způsobem:

<?
mysql_connect("localhost","root","heslo");
$db=MySQL_Select_DB("test");

$Login=base64_decode($Login);

@$query=MySQL_Query("Select * from Uzivatele where Prezdivka=`$Login`");

if($query):

$fetch=MySQL_Fetch_Array($query);
$password=$fetch["Heslo"];
$status=$fetch["Status"];
$pass=MD5($password);

if(($pass==$Heslo)and($password!="")):

Nejprve jsme tedy získali použitelnou podobu Loginu pro SQL dotaz a potom jsme srovnali nerozkódovatelná hesla a ověřili si, že heslo není nulové, poté již může následovat nastavení práv uživatelů v rámci skriptu podle proměnné status a uživatel nyní nemusí při příspěvcích vyplňovat svoje údaje:), což si ukážeme příště.

Za týden …

… se podíváme na zmiňované úpravy našeho hlavního skriptu a možnosti uživatelů.

Diskuze (2) Další článek: Nejmenší mobilní tiskárna k počítači

Témata článku: Software, Programování, MD5, Úspěšný test, Status, Mys, Echo, Díl, MySQL, Pass, Password, Login, Head, Root


Určitě si přečtěte

Platby kartou se můžou rozšířit úplně všude. Jako terminál poslouží mobil
Lukáš Václavík
BankaPlacení mobilemNFC
Nešťastný vývojář ukazuje, proč není dobré být závislý na Googlu
Lukáš Václavík
InternetGoogle
Nejlepší notebooky do 10 000 korun: Co má ještě smysl kupovat. A co ne?

Nejlepší notebooky do 10 000 korun: Co má ještě smysl kupovat. A co ne?

** Notebooky s cenou do deseti tisíc korun jsou plné kompromisů ** Existuje několik modelů dobře použitelných pro nenáročné použití ** Vhodnou alternativou jsou tablety nebo repasované počítače

David Polesný | 94

David Polesný
Jak vybrat notebookNotebooky
Vybíráme nejlepší monitory: Od úplně levných až po displeje na rozmazlování očí

Vybíráme nejlepší monitory: Od úplně levných až po displeje na rozmazlování očí

** Vybrali jsme nejlepší monitory na práci i pořádné hraní ** Nejlevnější monitor s kvalitním panelem nestojí ani tři tisíce ** Rozlišení 4K a větší obrazovka už není nedostupný luxus

David Polesný | 31

David Polesný
Monitory

Aktuální číslo časopisu Computer

Megatest herních monitorů

Jak zabezpečit mobil v rukou dítěte

Radíme s nákupem grafické karty