Nová verze tohoto webu se nachází na www.tutorialy.com

homeforumTutorialy.com
 
Reklama
Praktické programování v PHP, část první
Praktické programování v PHP, část první
Praktické programování v PHP, část první
První díl seriálu o programování praktických funkcí v PHP, jako registrace, přihlášení, anketa nebo návštěvní kniha.
Autor: Marek | Kategorie: Tvorba webu > PHP | Zhlédnuto: 8095x |
Hodnocení: 1.8 | Komentáře (21) | Obtížnost: Pokročilý | Vloženo: 13.2.2007

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 "-//W3C//DTD HTML 4.01 Transitional//EN">
<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 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 TABLE `uzivatele` (
`id` TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`login` VARCHAR( 40 ) NOT NULL ,
`pass` VARCHAR( 40 ) NOT NULL ,
`mail` VARCHAR( 50 ) 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 FROM `uzivatele`
WHERE login = '$login' OR mail = '$mail'"));
  if($zaznamy > "0") {
    header("Location:formular.php?err");
    die();
  }
  //ulozeni uzivatele do databaze
  MySQL_Query("INSERT INTO `uzivatele` (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.


Hodnocení tutoriálu: 1.8 (hodnotilo 71 uživatelů)

Ohodnoťte tutoriál (jako ve škole):

Tutorialy.com © 2006 Marek Čapla & Filda | výměna odkazů | mapa webu | RSS zdroj | PageRank: 4 | ISSN 0322-9289

Online flash hry