Regitrace uživatelů - čast. 3 ( captcha, editace osobních údajů, osobní stránka uživatele, soukromé zprávy )

 2012-09-18 00:00:00
 Dmitry Burobin

Toto je pokračování sérií článků o registraci uživatelů. Doplníme registraci o: captchu ( ochrana proti botům ), editací osobních údajů, osobní stránky uživatelů a možnost posílat soukromé zprávy.

Captcha

Začneme tím, že přidáme captchu do registračního formuláře, aby se boty nemohli registrovat automatický. Stáhněte archiv kcaptcha a rozbalte ho do stejné složky. Otevřte soubor registration.php a doplňte před tlačítko Ok:

    <div><label for="heslo">Heslo:</label></div>
    <
div><input type="password" name="heslo"></div>
<!--  Do 
pole se jménem heslo name="heslo" nový uživatel zadá svoje heslo  -->


<!-----------------
NOVÉ------------------------->


    <
div><label for="keystring">Opište čisla a písmena z obrázku:</label></div>
                            
    <
div><img src="kcaptcha/img.php" id="image"></div>        
                                               
    <
div><a href="#captcha" onClick="document.getElementById('image').src='kcaptcha/img.php?rand='+Math.round(1000 * Math.random());">Refresh</a></div>                          
                           
    <
div><input type="text" name="keystring"></div>
<!--  Do 
textového pole se jménem keystring name="keystring" uživatel opiše čisla a písmena z obrazku  -->

<!-----------------
KONEC NOVÉHO------------------------->


    <
div><input type="submit" name="go" value="Ok"></div>
<!--  
tlačítko type="submit" odesíla data do souboru pridavani.php  -->
a do souboru pridavani.php dopišeme kontrolu, zda člověk opsal všechno z obrázku správně:
<?php
session_start(); /**********NEZAPOMENOUT*****************/
header('Content-type: text/html;charset=UTF-8');

// Vložime potřebné funkce
require_once 'function.inc.php';

    
if(isset(
$_POST['go'])){    //jestli tlačítko bylo zmačknuté tak jdi dál, jinak budete přesměrování na stránku pro registraci nového uživatele


/***************NOVÉ*********************/

// vytvořime proměnnou, do které uložime hodnotu z captchi ( to co vidíme na obrázku )  
$keystring $_REQUEST['keystring'];


    if(
$keystring != $_SESSION['captcha_keystring'] OR empty($keystring)) 
    {        
        unset(
$_SESSION['captcha_keystring']);
        exit(
"Špatně jste opsali písmena a čísla z obrazku!");                     
    }
// V sessions se nám vytvoří proměnná captcha_keystring, které se přiřadí určita hodnota ( to co vidíme na obrázku )  
// ověříme, zda je stejná jako v proměnné $keystring a jestli není prázdna.

/***************KONEC NOVÉHO*********************/


    
if(isset($_POST['name']))
    {
?>
nezapomeňte dopsat na úplný začátek session_start();.

Tabulka message

Dále, abysme mohli posílat soukromé zprávy musíme vytvořit tabulku v DB, kde budou uložený, nazveme jí message. Bude mít 5 polí id - identifikátor zprávy, odesilatel - odesílatel zprávy, prijemce - příjemce zprávy, date - datum a zpráva - samotný text zprávy.

CREATE TABLE `message` (
`id` INT( 5 ) NOT NULL AUTO_INCREMENT,
`odesilatel` VARCHAR( 255 ) NOT NULL,
`prijemce` VARCHAR( 255 ) NOT NULL,
`date` DATETIME,
`zprava` TEXT,
PRIMARY KEY ( `id` )
)ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci

uzivatel.php

Teď vytvořme stránku uzivatel.php, na které budeme zobrazovat osobní údaje uživatele a kde uživatel bude moci tyto údaje změnit. A zobrazíme soukromé zprávy uživatele. Funguje to tak, že uložíme identifikátor uživatele pomocí GET do proměnné a ověříme, zda se jedná o majitele nebo o návštěvnika stránky. Pokud jeto návštěvník, pak zobrazíme formulář na odeslání zprávy.

<?php
// Celý postup funguje na sessions. Právě v session se ukládají data uživatele, zatímco se nacházi na stránkach. Je důležite spustit sessions na začátku stránky! 
session_start();
header('Content-type: text/html;charset=UTF-8');

// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )    
require_once 'db.php';

// Pokud není parametr id v URL prázdný, uložime do proměnné $id hodnotu $_GET['id'] ( čemu se rovná id v URL ) 
if(isset($_GET['id']) AND $_GET['id']!='')
{
    
$id stripslashes(htmlspecialchars(trim($_GET['id'])));
// Napišeme jednoduchý regulární výraz ověřující, zda id je číslo
    
if(!preg_match("|^[d]+$|"$id))
    {
        exit(
"Id musí být číselná hodnota.");
    } else {
// Ověřme, zda existujou proměnné $_SESSION['login'] a $_SESSION['heslo'].
        
if(!empty($_SESSION['login']) AND !empty($_SESSION['heslo']))
        {
// Dál ověřime, zda jsou tyto údaje platné
            
$login $_SESSION['login'];
            
$heslo $_SESSION['heslo'];
            
            
$over mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."' AND `pass`='".$heslo."'");
            
// Pokud najdeme identifikator s tímto loginem a heslem uložime ho do pole $res_over
            
if(mysql_num_rows($over)!=0)
            {
                
$res_over mysql_fetch_assoc($over);
                
// Ověřime, zda se jedna o registrovaného uživatele
                
                
$query mysql_query("SELECT * FROM `users` WHERE `id`='".$id."'");
                if(
mysql_num_rows($query)!=0)
                {
// Pokus je uživatel přihlášený uložime data o něm do pole $result

                    
$result mysql_fetch_assoc($query);                    
                } else {
                    exit(
"Uživatel neexistuje.");
                }
                
            } else {
// Jinak zobrazime chybu
                
exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
            }
        } else {
            exit(
"Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");    
        } 
        
    }


} else { exit(
"Špatný parametr v URL."); }

echo 
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
    <title>'
.$result['login'].'</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" >
</head>
<body>

<h1>Ahoj '
.$result['login'].'</h1>';

// Navigace, jsou v ní prvky, které ještě přidáme
echo '<div><a href="uzivatel.php?id='.$res_over['id'].'">Můj profil</a> 
| <a href="index.php">Hlavní stránka</a> 
| <a href="all_users.php">Seznam uživatelů</a> 
| <a href="index.php?action=odhlasit_se">Odhlásit se</a></div>'
;         

// Pokud stránka patří uživateli nabízíme mu změnit údaje a zobrazime jeho soukromé zprávy
if($result['login'] == $login)
{
    echo 
'<br>
    <form action="update_user.php" method="POST">
            <div><label for="login">Váše přihlášovací jméno: <strong>'
.$result['login'].'</strong> - změnit jméno:</label></div>
            <div><input name="login" type="text">
            <input type="submit" name="submit" value="změnit"></div>
            </form>
            <br>
    <form action="update_user.php" method="POST">
            <div><label for="heslo">Změnit heslo:</label></div>
            <div><input name="heslo" type="password">
            <input type="submit" name="submit" value="změnit"></div>
            </form>
            <br>
    <form action="update_user.php" method="POST" enctype="multipart/form-data">
            <div><label for="avatar">Váš avatar:</label></div>
            <div><img alt="avatar" src=avatar/'
.$result['avatar'].'><br>
            Obrázek musi být ve formatu jpg, gif nebo png. Změnit avatar:</div>
            <div><input type="FILE" name="avatar">
            <input type="submit" name="submit" value="změnit"></div>
            </form>
            <br>
    <p>Soukromé zprávy:</p>
    '
;
// Vybírame soukromé zprávy uživatele a třídime je podle identifikatoru sestupně
    
$q_message mysql_query("SELECT * FROM `message` WHERE `prijemce`='".$login."' ORDER BY `id` DESC");

// Pokud je počet zpráv větší než nula tzn. aspoň 1
    
if(mysql_num_rows($q_message)!=0)
    {
            
// Zobrazime všechny zprávy v cyklusu    
        
while($r_message mysql_fetch_assoc($q_message))
        {
            
$odesilatel $r_message['odesilatel'];
            
// Vybereme z DB avatar odesílatele zprávy
            
$q_avatar mysql_query("SELECT `id`,`avatar` FROM `users` WHERE `login`='".$odesilatel."'");
            
$r_avatar mysql_fetch_assoc($q_avatar);
            if(!empty(
$r_avatar['avatar']))
            {
// Pokud je, tak ho uložime do proměnné 
                
$avatar $r_avatar['avatar'];
            } else {
// Jinak mu přiřadíme hodnotu no_avatar.jpg
                
$avatar "no_avatar.jpg"
            }
            
// Zobrazime samotnou zprávu
            
echo '
            <table style="border:2px solid #ddd;">
                <tr>
                    <td style="border-right:2px solid #ddd; padding:5px;">
                        <a href="uzivatel.php?id='
.$r_avatar['id'].'"><img src="avatar/'.$r_avatar['avatar'].'" width="90" height="90" alt="avatar"></a>
                    </td>
                    <td>
                        <div>Odesílatel: <a href="uzivatel.php?id='
.$r_avatar['id'].'">'.$odesilatel.'</a></div>
                        <div>Datum: '
.$r_message['date'].'</div>
                        <div>Zpráva: <br> '
.$r_message['zprava'].' </div>
                        <div style=" border-top:1px dashed #ccc; text-align:right;"><a href="del_post.php?id='
.$r_message['id'].'">odstranit</a></div>
                    </td>
                </tr>
            </table>
            '
;        
        }
    } else {
        
// Počet zpráv je 0
        
echo "Zprávy nejsou.";
    }
} else {
// Pokud jsme na cizí, pak zobrazíme jenom data o tom kdo to je a formulář na odesílaní zpráv.
echo '
<div><img src="avatar/'
.$result['avatar'].'" alt="avatar"></div>
<form action="new_zprava.php" method="POST">
<div>Odeslat zprávu uživateli '
.$result['login'].'</div>
<div><textarea cols="50" rows="5" name="zprava"></textarea></div>
<input type="hidden" name="prijemce" value="'
.$result['login'].'">
<input type="hidden" name="id" value="'
.$result['id'].'">
<div><input type="submit" name="submit" value="Odeslat"></div>
</form>
'
;
}
echo 
'</body>
</html>'
;
?>

update_user.php

V případě, že uživatel chce změnít osobní údaje ( login, heslo, avatar ), zadá novou hodnotu na stránce uzivatel.php a ta pak pošle data na zpracování do souboru update_user.php, kterou teď vytvoříme:

<?php
// Celý postup funguje na sessions. Právě v session se ukládají data uživatele, zatímco se nacházi na stránkach. Je důležite spustit sessions na začátku stránky! 
session_start();
header('Content-type: text/html;charset=UTF-8');

// Vložime potřebné funkce
require_once 'function.inc.php';

// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )    
require_once 'db.php';

// Ověřme, zda existujou proměnné $_SESSION['login'] a $_SESSION['heslo'].
        
if(!empty($_SESSION['login']) AND !empty($_SESSION['heslo']))
        {
// Dál ověřime, zda jsou tyto údaje platné
            
$login $_SESSION['login'];
            
$heslo $_SESSION['heslo'];
            
$over mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."' AND `pass`='".$heslo."'");
            
// Pokud najdeme identifikator s tímto loginem a heslem uložime ho do pole $res_over
            
if(mysql_num_rows($over)!=0)
            {
                
$res_over mysql_fetch_assoc($over);    
                
// Do proměnné $old_login uložíme stávající přihlášovací jméno
                
$old_login $_SESSION['login'];

// Taktéž uložíme identifikator uživatele, který můžeme získat z session a jako $res_over['id']                
                
$id $_SESSION['id'];
                
// Pro změnu avataru uložíme defaultní obrázek do proměnné $def_ava
                
$def_ava 'no_avatar.jpg';
                
/****************ZMĚNA LOGINA**************************/


// Pokud je vyplněno pole login
                
if(isset($_POST['login']) AND $_POST['login']!='')
                {
// ošetříme ho a uložíme do proměnné $login
                    
$login stripslashes(htmlspecialchars(trim($_POST['login'])));
// Ověřime, zda se jíž nepoužíva
                    
$query mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."'");
// Pokud je toto jméno v databází
                    
if(mysql_num_rows($query)!=0)
                    {
// Zobrazíme hlášení
                        
exit("Toto uživatelské jméno je jíž v databázi, zkuste jiné.");
                    } else {
                        
// Pokud není tak aktualizujeme tabulku users a nastavíme login se rovná nový login
                        
$query1 mysql_query("UPDATE `users` SET `login`='".$login."' WHERE `login`='".$old_login."'");
                        if(!
$query1) { echo mysql_error() . " - " mysql_errno(); }
                        else {
                            
// Jestli změna proběhla vpořádku taktéž musíme aktualizovat tabulku se zprávami, kde aktualizujeme jméno odesílatele
                            
$query2 mysql_query("UPDATE `message` SET `odesilatel`='".$login."' WHERE `odesilatel`='".$old_login."'");
// Uložíme nové přihlášovací jméno do sessions
                            
$_SESSION['login'] = $login
                            echo 
"<script>alert('Změna proběhla vpořádku.')</script>";
                            
header("Refresh: 0; url=uzivatel.php?id=".$_SESSION['id']."");
                        }
                    }
                }
                
                
/****************KONEC ZMĚNA LOGINA**************************/


/****************ZMĚNA HESLA**************************/
                
// Pokud je vyplněno pole pro změnu hesla 
                
elseif (isset($_POST['heslo']) AND $_POST['heslo']!='')
                {
// ošetříme ho a uložíme do proměnné $heslo
                    
$heslo stripslashes(htmlspecialchars(trim($_POST['heslo'])));
// Zašifrujeme heslo pomocí algoritmu md5       
                    
$heslo md5($heslo); 
// Ještě přidáme reverzí       
                    
$heslo strrev($heslo); 

// můžete přidat několik sybmolů, např. "g5ds8". V případě, že takto ošetřené heslo někdo bude chtít prolomit Brute Forcem ( hádání hesla )
// a použijí k tomu md5, pak se níčeho nedocíli. Můžete taky přidat symboly na začátku nebo uprostřed hesla.          
                    
$heslo    $heslo."g5ds8";        

// Aktualizujeme tabulku users                    
                    
$query3 mysql_query("UPDATE `users` SET `pass`='".$heslo."' WHERE `login`='".$login."'");        
                    if(!
$query3) { echo mysql_error() . " - " mysql_errno(); }    
                    else {
// Uložíme nové heslo do sessions
                        
$_SESSION['heslo'] = $heslo;
                        echo 
"<script>alert('Změna proběhla vpořádku.')</script>";
                        
header("Refresh: 0; url=uzivatel.php?id=".$_SESSION['id']."");
                    }
                }


/****************KONEC ZMĚNA HESLA**************************/


/****************ZMĚNA OBRÁZKU**************************/    

// Pokud je vyplněno pole pro změnu obrázku
                
elseif(isset($_FILES['avatar']['name']))
                {
                    
// Jestli je prázdné, tak přiřadíme mu náš defaultí obrázek no_avatar.jpg
                    
if(empty($_FILES['avatar']['name']) OR $_FILES['avatar']['name']=='')
                    {
                        
$avatar 'no_avatar.jpg';
                        
// Vybereme stávající obrázek uživatele
                        
$query4 mysql_query("SELECT `avatar` FROM `users` WHERE `login`='".$login."'");
                        
$result4 mysql_fetch_assoc($query4);
                        
// Pokud je obrázek defaultní tak ho nechceme odstranít, protože je jeden pro všechny                         
                        
if($result4['avatar'] == $def_ava)
                        {
                            $
$def_ava 1;
                        } else {
// Když není defaultní tak ho odstraníme    
                            
unlink("avatar/".$result4['avatar']);
                        }

// Jinak, jestli byl zadán nový obrázek
                    
} else {
                        
// Použijeme naši funkci upload_file() a uložíme nový avatar do proměnné $avatar                
                        
$avatar upload_file();
                        
// Pokud je i po použití funkce proměnná $avatar prázdná, tak do ní uložíme defaultní hodnotu    
// Toto se může stát na lokálním serveru, třeba u mě se neukládájí soubory na localhost                    
                        
if($avatar == ''
                        { 
                            
$avatar 'no_avatar.jpg'
                        }    
                        else 
                        {                            
// Uděláme z původního obrázku, obrázek o velikosti 90x90
                            
$mini_av resizeimg("avatar/$avatar","avatar/mini-$avatar",90,90);     
                            
unlink("avatar/".$avatar);
                            
$avatar 'mini-'.$avatar;
                        }    
                        
/*** Odstraníme starý obrázek    ***/    
                
// Vybereme stávající obrázek uživatele
                        
$query5 mysql_query("SELECT `avatar` FROM `users` WHERE `login`='".$login."'");
                        
$result5 mysql_fetch_assoc($query5);
                        
// Pokud je obrázek defaultní tak ho nechceme odstranít, protože je jeden pro všechny                         
                        
if($result5['avatar'] == $def_ava)
                        {
                            
$def_ava 1;
                        } else {
// Když není defaultní tak ho odstraníme    
                            
unlink("avatar/".$result5['avatar']);
                        }    
                        
/*** KONEC Odstraníme starý obrázek    ***/                    
                        
// Aktualizujeme tabulku users                            
                        
$query6 mysql_query("UPDATE `users` SET `avatar`='".$avatar."' WHERE `login`='".$login."'");
                        if(!
$query6) { echo mysql_error() . " - " mysql_errno(); }
                        else {
                            echo 
"<script>alert('Změna proběhla vpořádku.')</script>";
                            
header("Refresh: 0; url=uzivatel.php?id=".$_SESSION['id']."");
                        }
                    }
                }

/****************KONEC ZMĚNA OBRÁZKU**************************/    
                
else { echo "Zadejte parametr, který chcete změnit!!!"; }
                            
            } else {
// Jinak zobrazíme chybu
                
exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
            }
            
        } else {
// Pokud proměnné neexistují zobrazíme chybu
            
exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
        }
?>

del_post.php

Když člověk přečte zprávu a nebude jí víc potřebovat, tak asi jí bude chtít odstranit. V souboru uzivatel.php jsme přidali odkaz pro odstranění zprávy, který posíla identifikátor zprávy do souboru del_post.php, kde se ověří zda příjemce jste opravdu Vy a když ano tak se odstraní.

<?php
// Celý postup funguje na sessions. Právě v session se ukládají data uživatele, zatímco se nacházi na stránkach. Je důležite spustit sessions na začátku stránky! 
session_start();
header('Content-type: text/html;charset=UTF-8');

// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )    
require_once 'db.php';

if(!empty(
$_SESSION['login']) AND !empty($_SESSION['heslo']))
{
// Dál ověřime, zda jsou tyto údaje platné
            
$login $_SESSION['login'];
            
$heslo $_SESSION['heslo'];
            
$over mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."' AND `pass`='".$heslo."'");
            
// Pokud najdeme identifikator s tímto loginem a heslem uložime ho do pole $res_over
            
if(mysql_num_rows($over)!=0)
            {
                
$res_over mysql_fetch_assoc($over);
                
// Uložíme identifikator zprávy do proměnné $id                
                
if(isset($_GET['id']) AND $_GET['id']!='')
                {
                    
$id stripslashes(htmlspecialchars(trim($_GET['id'])));
                    
// Vybereme z DB příjemce zprávy podle id    
                    
$query mysql_query("SELECT `prijemce` FROM `message` WHERE `id`='".$id."'");
                    if(
mysql_num_rows($query)!=0)
                    {
                        
$result mysql_fetch_assoc($query);
                        
// Ověříme, zda se jedna o správného příjemce zprávy, protože do GET proměnné v URL můžete zadát libovolný identifikátor, tím pádem odstranit cizí zprávu
                        
if($result['prijemce'] == $login)
                        {
// V případě, že příjemce odpovídá přihlášovacímu jménu, odstraníme zprávu
                            
$query1 mysql_query("DELETE FROM `message` WHERE `id`='".$id."'");
                            if(!
$query1)
                            {
                                echo 
"<script>alert('Zpráva nebyla smazána.')</script>";
                                
header("Refresh: 0; url=uzivatel.php?id=".$_SESSION['id']."");
                            } else {
                                echo 
"<script>alert('Zpráva byla smazána.')</script>";
                                
header("Refresh: 0; url=uzivatel.php?id=".$_SESSION['id']."");
                            }
                        } else {
                            exit(
"Chcete odstranít cizí zprávu.");
                        }
                    } else {
                        exit(
"Zpráva s tímto identifikátorem neexistuje.");
                    }
                } else {
                    exit(
"Jste tady asi omylem.");
                }
            } else {
// Jinak zobrazíme chybu
                
exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
            }
        
} else {
// Pokud proměnné neexistují zobrazíme chybu
    
exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
}
?>

new_zprava.php

Pokud se člověk chce podívat na stránku někoho jiného, tak pochopitelně nemůže na ní nic měnit, akorat bude moci odeslat zprávu. Toto udělá soubor new_zprava.php:

<?php
// Celý postup funguje na sessions. Právě v session se ukládají data uživatele, zatímco se nacházi na stránkach. Je důležite spustit sessions na začátku stránky! 
session_start();
header('Content-type: text/html;charset=UTF-8');

// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )    
require_once 'db.php';

if(!empty(
$_SESSION['login']) AND !empty($_SESSION['heslo']))
{
// Dál ověřime, zda jsou tyto údaje platné
            
$login $_SESSION['login'];
            
$heslo $_SESSION['heslo'];
            
$over mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."' AND `pass`='".$heslo."'");
            
// Pokud najdeme identifikator s tímto loginem a heslem uložime ho do pole $res_over
            
if(mysql_num_rows($over)!=0)
            {
                
$res_over mysql_fetch_assoc($over);
                
// Uložíme identifikator příjemce do proměnné $id    
                
if(isset($_POST['id']) AND $_POST['id']!='')
                {
                    
$id stripslashes(htmlspecialchars(trim($_POST['id'])));
                    
                    if(isset(
$_POST['zprava']))
                    {
                        
$zprava stripcslashes(htmlspecialchars(trim($_POST['zprava'])));
                        if(
$zprava == '')
                        {
                            unset(
$zprava);
                        }
                    }
                    
                    if(isset(
$_POST['prijemce']))
                    {
                        
$prijemce stripcslashes(htmlspecialchars(trim($_POST['prijemce'])));
                        if(
$prijemce == '')
                        {
                            unset(
$prijemce);
                        }
                    }
                    
                    
$odesilatel $_SESSION['login'];
                    
                    if(empty(
$zprava) OR empty($prijemce) OR empty($odesilatel))
                    {
                        exit(
"Vyplňte všechna pole");
                    }
                    
                    
$query mysql_query("INSERT INTO `message`(`odesilatel`,`prijemce`,`date`,`zprava`) VALUES('".$odesilatel."','".$prijemce."',NOW(),'".$zprava."')");
                    if(!
$query
                    {
                        echo 
"<script>alert('Zpráva se neodeslala.')</script>";
                        
header("Refresh: 0; url=uzivatel.php?id=".$_SESSION['id']."");
                    } else {
                        echo 
"<script>alert('Zpráva se odeslala vpořádku.')</script>";
                        
header("Refresh: 0; url=uzivatel.php?id=".$_SESSION['id']."");
                    }
                    
                } else {
                    exit(
"Není jasné kdo je příjemce.");
                }
            } else {
// Jinak zobrazíme chybu
                
exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
            }
        
} else {
// Pokud proměnné neexistují zobrazíme chybu
    
exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
}
?>

all_users.php

Na stránce all_users.php zobrazíme seznam všech uživatelů, abyste náslědně mohli vyzkoušet odeslát někomu zprávu.

<?php
// Celý postup funguje na sessions. Právě v session se ukládají data uživatele, zatímco se nacházi na stránkach. Je důležite spustit sessions na začátku stránky! 
session_start();
header('Content-type: text/html;charset=UTF-8');

// Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )    
require_once 'db.php';

if(!empty(
$_SESSION['login']) AND !empty($_SESSION['heslo']))
{
// Dál ověřime, zda jsou tyto údaje platné
            
$login $_SESSION['login'];
            
$heslo $_SESSION['heslo'];
            
$over mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."' AND `pass`='".$heslo."'");
            
// Pokud najdeme identifikator s tímto loginem a heslem uložime ho do pole $res_over
            
if(mysql_num_rows($over)!=0)
            {
                
$res_over mysql_fetch_assoc($over);
            } else {
// Jinak zobrazíme chybu
                
exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
            }
        
} else {
// Pokud proměnné neexistují zobrazíme chybu
    
exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
}
echo 
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
    <title>Seznam uživatelů</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" >
</head>
<body>

<h1>Seznam uživatelů</h1>'
;

// Navigace
echo '<div><a href="uzivatel.php?id='.$res_over['id'].'">Můj profil</a> 
| <a href="index.php">Hlavní stránka</a> 
| <a href="all_users.php">Seznam uživatelů</a> 
| <a href="index.php?action=odhlasit_se">Odhlásit se</a></div>'


$query mysql_query("SELECT `id`,`login` FROM `users` ORDER BY `login` ASC");
if(!
$query) { echo mysql_error() . " - " mysql_errno(); }
else {
    while(
$result mysql_fetch_assoc($query))
    {
        echo 
"<div><a href="uzivatel.php?id=".$result['id']."">".$result['login']."</a></div>";
    }
}

echo
'
</body>
</html>'
;
?>

overeni.php

A ještě malíčkost, změníme odkaz na stránce overeni.php, který nás přesměruje na stránku uzivatel.php najděte tento řádek:

<?php
header("Location: ".$_SERVER['SERVER_ROOT']."index.php");
?>
a vyměňte ho za:
<?php
header("Location: ".$_SERVER['SERVER_ROOT']."uzivatel.php?id=".$r1['id']."");
?>

Závěr

Děkuji, že čtete mé články. Určitě ještě napišu aspoň jeden článek o registraci, kde rozebereme: automatické přihlášení, obnovení hesla a ještě něco=)

Systém Orphus
Napište komentář.
Celkem komenrářů(40)
Ronweix - 2017-11-17  14:29:56
 Antibiotics Without Prescriptions Uk [url=http://cheapviasales.com]generic viagra[/url] Cialis Vs Levitra Vs Viagra
Ronweix - 2017-11-17  14:29:54
 Antibiotics Without Prescriptions Uk [url=http://cheapviasales.com]generic viagra[/url] Cialis Vs Levitra Vs Viagra
Ronweix - 2017-11-17  14:29:53
 Antibiotics Without Prescriptions Uk [url=http://cheapviasales.com]generic viagra[/url] Cialis Vs Levitra Vs Viagra
Ronweix - 2017-11-17  14:29:51
 Antibiotics Without Prescriptions Uk [url=http://cheapviasales.com]generic viagra[/url] Cialis Vs Levitra Vs Viagra
Jeffpoonia - 2017-11-17  10:53:41
 Amoxil Natural Equivalent [url=http://tadalaf20mg.com ]generic cialis[/url] Viagra Frau Vergleich
Ronweix - 2017-10-22  03:09:00
 Generic Viagra Fedex Online Ordering Propecia [url=http://costofcial.com]cialis[/url] Difference Between Red Or Green Keflex Buying Discount Stendra
Ronweix - 2017-10-15  22:10:58
 Viagra Bestellen Holland Priligy Barata [url=http://cheapvia100mg.com]viagra[/url] Amoxicillin Refrigerate Synthese Levitra
Ronweix - 2017-10-15  22:10:57
 Viagra Bestellen Holland Priligy Barata [url=http://cheapvia100mg.com]viagra[/url] Amoxicillin Refrigerate Synthese Levitra
Ronweix - 2017-10-15  22:10:56
 Viagra Bestellen Holland Priligy Barata [url=http://cheapvia100mg.com]viagra[/url] Amoxicillin Refrigerate Synthese Levitra
Ronweix - 2017-10-15  22:10:54
 Viagra Bestellen Holland Priligy Barata [url=http://cheapvia100mg.com]viagra[/url] Amoxicillin Refrigerate Synthese Levitra
Ronweix - 2017-10-14  16:59:28
 Canadian Pharmacies No Pres [url=http://levibuying.com]buy levitra without prescription[/url] I Want To Buy Alli! Buy Prednisone Without Rx Propecia 1mg Or 5mg
Ronweix - 2017-10-12  17:01:38
 Priligy Generico Chile Priligy Acquisto On Line [url=http://leviprices.com]generic levitra for sale[/url] Himcospaz Propecia Overdose Hair Loss
Ronweix - 2017-10-12  17:01:37
 Priligy Generico Chile Priligy Acquisto On Line [url=http://leviprices.com]generic levitra for sale[/url] Himcospaz Propecia Overdose Hair Loss
Ronweix - 2017-10-12  17:01:36
 Priligy Generico Chile Priligy Acquisto On Line [url=http://leviprices.com]generic levitra for sale[/url] Himcospaz Propecia Overdose Hair Loss
Ronweix - 2017-10-12  17:01:34
 Priligy Generico Chile Priligy Acquisto On Line [url=http://leviprices.com]generic levitra for sale[/url] Himcospaz Propecia Overdose Hair Loss
Ronweix - 2017-10-06  03:43:44
 Propecia Rogaine Benefits [url=http://cheapvia25mg.com]viagra online prescription[/url] Can i purchase isotretinoin 10mg website cheap Inte
et Order Viagra Levitra Vendita Farmacia
Ronweix - 2017-10-06  03:43:43
 Propecia Rogaine Benefits [url=http://cheapvia25mg.com]viagra online prescription[/url] Can i purchase isotretinoin 10mg website cheap Inte
et Order Viagra Levitra Vendita Farmacia
Ronweix - 2017-10-06  03:43:41
 Propecia Rogaine Benefits [url=http://cheapvia25mg.com]viagra online prescription[/url] Can i purchase isotretinoin 10mg website cheap Inte
et Order Viagra Levitra Vendita Farmacia
Ronweix - 2017-10-06  03:43:40
 Propecia Rogaine Benefits [url=http://cheapvia25mg.com]viagra online prescription[/url] Can i purchase isotretinoin 10mg website cheap Inte
et Order Viagra Levitra Vendita Farmacia
Ronweix - 2017-10-05  22:41:02
 Pharmacy 2u Prozac Amoxicilina For Sale On Line Pharmacy [url=http://cheapviafast.com]viagra online prescription[/url] Viagra Depoxetine
[1] [2] 
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.