V tomto seriále si vytvoříme scripty pro registraci a přihlášení uživatelů pomocí databáze MySQL, knihu návštěv a anketu. V prvním díle si vytvoříme registraci uživatelů.
Locahost web server
Pokud si vytvořené scripty budete chtít vyzkoušet na vlasním počítači, budete potřebovat localhost server. Dobré zkušenosti mám s freewarovým produktem Complex Web Server, který obsahuje hlavně Apache web server, MySQL databázi a PHP5 parser. Nainstalujte si jej na svůj počítač, spusťte Apache a databázi a otevřete internetový prohlížeč. Do adresního řádku zadejte localhost nebo 127.0.0.1 – otevře se Vám výpis souborů uložených na lokálním web serveru. Tyto soubory jsou uložené ve složce http_docs v adresáři nainstalovaného web serveru.
Poznámka: Localhost server může být přístupný pod Vaší IP adresou z jiných počítačů v internetu, pokud jste to při instalaci povolili.
Registrační formulář
Nejdříve bude nutné si vytvořit registrační forumlář, ve kterém uživatel vyplní přihlašovací jméno (login), heslo a třeba svůj e-mail. Jednoduchou úpravou si pak sami jistě dokážete přidat další položky. Pro samotný jednoduchý formulář nepotřebujete nic jiného, než obyčejné HTML, případně CSS pro vylepšéní vzhledu. Formulář si uložím jako formular.php
<!DOCTYPE HTML PUBLIC „-W3CDTD HTML 4.01 TransitionalEN“>
<html>
<head>
<meta http-equiv=„Content-Type“ content=„text/html; charset=UTF-8“>
<title>Můj web – Registrace</title>
</head>
<body>
<?php
if(isset($_GET[„ok“])) { echo „Operace proběhla úspěšně“; }
if(isset($_GET[„err“])) { echo „Někde se stala chyba“; }
?>
<form action=„registrace.php“ method=„post“>
<table>
<tr>
<td>Login:</td><td><input type=„text“ name=„login“></td>
</tr>
<tr>
<td>Heslo:</td><td><input type=„password“ name=„pass1“></td>
</tr>
<tr>
<td>Heslo znova:</td><td><input type=„password“ name=„pass2“></td>
</tr>
<tr>
<td>E-mail:</td><td><input type=„text“ name=„mail“></td>
</tr>
<tr>
<td colspan=„2“><input type=„submit“ value=„Registrovat“></td>
</tr>
</table>
</form>
</body>
</html>
Data z inputů se odešlou metodou POST registračnímu scriptu registrace.php, ve kterém budeme data zpracovávat. Data se uloží do proměnných s názvy podle atributů name u inputů.
Vytvoření databáze
Nyní bude potřeba vytvořit databázi, do které si budeme ukládat
uživatelská jména, hesla a e-maily. Pro správu databáze doporučuji
aplikaci <a href=„http:www.tutorialy.com/…cne-programy“>phpMyAdmin,
který máte pravděpodobně zde, pokud jste si
nainstalovali Complex Web Server.
Vytvořte si novou databázi – ja si ji pojmenuju tutorialy a v ní novou
tabulku uzivatele. To lze udělat dvěma způsoby:
1.) Použitím SQL dotazu:
CREATE TABLEuzivatele(
idTINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
loginVARCHAR( 40 ) NOT NULL ,
passVARCHAR( 40 ) NOT NULL ,
) ENGINE = innodb;
2.) Vyplněním formuláře – to je pro začátečníky nejlepší způsob. Aplikace phpMyAdmin vytvoří SQL dotaz sama. Po vytvoření databáze se Vám v phpMyAdmin otevřela stránka s polem „Vytvořit novou tabulku v databázi tutorialy“. Do ní napište název tabulky (uzivatele) a počet sloupců – my budeme potřebovat 4. Na následující stránce:
- První sloupec id typ TINYINT Extra – auto_increment, primární (přepínač se symbolem klíče).
- Druhý sloupec login typ VARCHAR délka 40
- Třetí sloupec pass typ VARCHAR délka 40
- Čtvrtý sloupec mail typ VARCHAR délka 50
Registrační script
Databázi a registrační formulář máme připravený, takže přistoupíme k programování registračního scriptu. Nejprve vytvoříme spojení s databází, potom ověříme, jestli se shodují oba zadané hesla, jedno z nich zašifrujeme a všechna tato data uložíme do databáze. Nejprve si ale vytvoříme script nastaveni.php, do kterého uložíme přihlašovací údaje k databázi, protože je budeme často používat.
nastaveni.php
<?php
$DB_HOST = „localhost“; databazovy server
$DB_USER = „root“; prihlasovaci jmeno k databazi
$DB_PASS = ""; heslo k databazi
$DB_NAME = „tutorialy“; nazev pouzivane databaze
?>
registrace.php
<?php
require_once „nastaveni.php“;
if(!(MySQL_Connect(„$DB_HOST“,„$DB_USER“,„$DB_PASS“))) {
die(„Nepodařilo se připojit k databázi“);
}
if(!(MySQL_Select_DB($DB_NAME))) {
die(„Databáze nebyla nalezena“);
}
// overeni, jestli uzivatel zadal vsechny udaje
if(isset($_POST[„login“]) && isset($_POST[„pass1“])
&& isset($_POST[„mail“]))
{
$login = $_POST[„login“];
$mail = $_POST[„mail“];
overeni shody obou hesel a zasifrovani
if(($_POST[„pass1“] == $_POST[„pass2“]) && $_POST[„pass2“] != "") {
$pass = sha1($_POST[„pass1“]);
} else {
header(„Location:formular.php?err“);
}
overeni, jestli uzivatel nebo mail uz v databazi neni
$zaznamy = MySQL_Num_Rows(MySQL_Query(„SELECT id FROMuzivatele
WHERE login = ‚$login‘ OR mail = ‚$mail‘“));
if($zaznamy > „0“) {
header(„Location:formular.php?err“);
die();
}
//ulozeni uzivatele do databaze
MySQL_Query(„INSERT INTOuzivatele(login,pass,mail)
VALUES (‚$login‘,‚$pass‘,‚$mail‘)“);
header(„Location:formular.php?ok“);
} else {
header(„Location:formular.php?err“);
}
?>
To je z dnešního dílu vše, přihlášení uživatelů a návštěvní knihu si ukážeme v příštím díle.
Hlavní menu
Kategorie
Přihlásit
Anketa
Podporujeme
Přispějte na provoz
takže něco jako
$mail = htmlspecialchars($_POST["mail"]);
a taky není v některých přídapech na škodu odstranit mezery ze začátku a konce řetezce přes trim();
takže jako výsledek bych viděl
$mail = htmlspecialchars(trim($_POST["mail"]));