Registrace: Praktický příklad

Zde si ukážeme, jak jednoduše registraci aplikovat na existující web. Pokud web teprve tvoříte, ke stažení bude kompletní příklad. A to i s příkladem, jak includovat do index.php jiný soubor a jeho volání přes URL. Např. index.php?page=neco. Hodně lidí se mě na to ptá, takže dávejte pozor. Kdo nečetl předchozí články, měl by si to přečíst.

Základem celého webu je většinou jeden soubor, který „celý web drží pohromadě“. Z 99,9% je to index.php. V tomto souboru je většinou hlavička, menu, patička a střed stránky. Pro přehlednost indexu se tam tyto soubory includují.
To znamená, že kousek kódu je sice uložen v jiném souboru, ale php ho vnímá jaky by byl přímo v tom souboru. Díky tomu kód bude přehlednější, jednodušší aktualizace atd.

Jeden takový index.php vám ukážu – okomentované je to přímo v kódu.
Pokud chcete do středu includovat soubor neco.php, odkažte na něj odkazem index.php?page=ne­co. !!!

index.php

<?php
session_start(); // startujeme session. Všimněte si, že tento kód je úplně nahoře před jakýmkolik výstupem.
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Language" content="cs" />
  <link rel='stylesheet' type='text/css' href='styl.css' />
  <title>peCan.cz - Web Registration Tutorial</title>
</head>
<body>
<div id="okraj">
    <div id="vrch">
      <a href='http://pecan.cz/index.php?id=35&n=Registrace-Zpracovani-dat-z-formulare'>peCan.cz - Web Registration Tutorial</a>
    </div>
    <div id="horni_menu">
      <?php
      /*
      * Vypiseme zda je uzivatel prihlasen, pokud ano tak jeho jmeno...
      * V přihlašovacím skriptu jsme nastavili $_SESSION['prihlasen']=1, pokud se $_SESSION['prihlasen'] opravdu rovná jedničce, uživatel je přihlášen.
      */
        if(isset($_SESSION['prihlasen']) and $_SESSION['prihlasen']==1){
          echo "<strong>Přihlášený uživatel</strong>: ".$_SESSION['login'] . " | <a href='logout.php?logout=yes'> Odhlásit se</a>";
        }else{
          echo "Nejsi přihlášen | <a href='index.php?page=registrace'> Registrace</a> | <a href='index.php?page=login'> Login</a>";
        }
      ?>
    </div>
        <div id="menu">
          <?php
            require "menu.php"; // načteme menu.php
          ?>
        </div>
        <div id="obsah">
          <?php
          /*
          * Tento kousek vzdy includuje do "stredu" stranky volany soubor pres URL
          * Priklad volani: index.php?page=registrace
          * do stredu se nacte soubor registrace.php
          */
            if (IsSet($_GET['page'])){        // pokud byl odeslan ?page= ...
              $soubor=$_GET['page'];
              $soubor2= dirname($_SERVER['SCRIPT_FILENAME'])."/".$soubor.".php";
              if(file_exists($soubor2)){      //pokud soubor existuje, nacteme ho do stredu
                include $soubor2;
              }else{                //pokud soubor neexistuje, zavolame error404.php
                include "inc/error404.php";
              }
            }else{                  // Pokud nebyl paramentr page volany, nacteme uvod.php
              include "uvod.php";
            }
          /*
          * Tento kousek kódu nám v případě nějakého erroru vypíše Alert.
          * Jednotlivé hlášky jsou v souboru inc/error_msg.php
          * Je tam pole hlášek, vždy voláme číslo hlášky v poli
          * Příklad: index.php?page=uvod&Alert=0
          */
          if(isset($_GET['Alert'])){
            require "inc/error_msg.php"; // V tomto souboru jsou ty hlasky
            $JsAlert=$_GET['Alert'];
            echo '<script language="javascript" type="text/javascript">alert("'.$Rvi[$JsAlert].'");</script>';
          }
          ?>
        </div>
</div>
</body>
</html>

Chránění souboru – Vstup jen registrovaným
Dejme tomu, že v souboru protected.php bude něco, co chceme ukázat jen přihlášeným uživatelům. Protože máme po přihlášení tyto informace uložené v sessions, tak to není problém. Pomocí jednoduché kontroly se přesvědčíme, zda je uživatel přihlášen.

protected.php

<?php
/*
* Pokud uživatel není přihlášený, místo obsahu se mu ukáže tato hláška.
* Tento kód vložte tam, kde chcete aby se dostali jen přihlášení
*/
if(!isset($_SESSION['prihlasen']) and @$_SESSION['prihlasen']!=1){
  echo "<h1>Tato stránka je jen pro registrované</h1>";
  exit;
}
?>

<h1>Tajný obsah</h1>
<p>
  Něco šíleně tajného;)
</p>

Pro odlášení použijeme soubor logout.php, který zničí sessions. Jako odkaz pro odhlášení použijte logout.php?lo­gout=yes

logout.php

<?php
ob_start();
// odhlaseni autora
if(IsSet($_GET['logout']) and $_GET['logout']=="yes") {
  Session_Start();      // Pokud chceme pracovat se session, musíme je "nastartovat". I pokud je chceme zničit.
  Session_Destroy(); // Zničíme sessions
}
header ("location: index.php?Alert=7"); // přesměrujeme na index
ob_end_flush();
?>

Tak to by bylo asi tak všechno. Samozřejmě ještě by slo udělat editování údajů zadaných při registraci, ale to už by na mě bylo dneska moc:-D.

Download: Registrace v PHP

Ukázka: Registrace v PHP – ukázka

! Musíte si vytvořit tabulku a změnit soubor inc/db.php ! Viz přechozí díly.

Navazující články


<Starší | tento článek | Novější>

Napsáno: 15. 8. 2006, 13:02 | Přečteno: 67349x | Kategorie: PHP School | Napsal: peCan.cz |
Na pustém ostrově ztroskotají tři blondýnky. Jedna z nich chytne po půl roce rybu a zrovna zlatou. Zlatá rybka prosí, aby ji blondýnky pustili a že jim za to splní tři přání. Blondýnky souhlasí, rybku pustí a první blondýnka povídá: Já bych chtěla být chytřejší! Jen co dopověděla větu, tak se z ní stala brunetka, skočila do vody a odplavala. Druhá si přeje: Já bych chtěla být ještě chytřejší! Jen co dopověděla druhá blondýnka větu, tak se z ní stala tmavovláska, posta- vila si vor a odplula. Třetí blondýnka si zase přeje: Já bych chtěla být nejchy- třejší! A opravdu, z blondýnky se rázem stal chlap, který si uboze oddychl a odešel přes most.
Petr Graubner | ICQ- 264912843, Jabber - pecan27@njs.netlab.cz | RSS | Šlape na miniRS | Styl CoolStyle | Zpracováno za: 0.129s | Počet SQL dotazů ve fóru: 1 | Admin