Registrace uživatelů - čast. 1 ( práce s PHP a MySQL)

 2012-09-15 00:00:00
 Dmitry Burobin

Zdravím všechny, již delší dobu jsem nic nepsal, neměl jsem bohužel čas, ale teď jak jsem sliboval napišu řadu článků o spojení PHP s MySQL. Rozhodl jsem se, že začnu registraci uživatelů. V prvním článku Vám spíše ukážu hlavní myšlenku registraci, na tom určitě vyzkoušite to spojení dvou jazyků programování, dále ji budeme zlepšovat, přidávat různe prvky.

Tvorba tabulky

Začneme tím, že si vytvořite tabulku users ve Vaši databázi v phpmyadmin. Vložte do SQL příkazového okna:

CREATE TABLE `users` (
`id` INT( 5 ) NOT NULL AUTO_INCREMENT,
`name` VARCHAR( 255 ) NOT NULL,
`login` VARCHAR ( 255 ) NOT NULL,
`pass` VARCHAR ( 255 ) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci

phpmyadmin
Tabulka bude obsahovat jméno, login a heslo nového uživatele.

Programování aplikace

Jako první věc si vytvořime soubor db.php pro spojení s databázi.

<?php
$DBSERVER 'localhost';
$DBUSER 'root';
$DBPASS '******';

$DB 'users';

$link mysql_connect($DBSERVER,$DBUSER,$DBPASS) or die ('I cannot connect');
mysql_select_db($DB,$link) or die ('I cannot select DB');
mysql_query("SET NAMES utf8");
?>

Dále vytvořte soubor registration.php, ve kterém se bude provádět přidávaní nového uživatele.

<?php
<!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>Registrace</title>
    <
meta http-equiv="content-type" content="text/html;charset=utf-8" >

<
style>

.
back{
    
font-size:10pt
    
margin-top:20px;
}

</
style>
    
</
head>

<
body>
<
h1>Registrace nového uživatele</h1>
<
form action="pridavani.php" method="POST">
<!--  
pridavani.php je skript pro přidávaní nových uživatelů do databázetznpo klíknutí na tlačítko Ok se data pošlou do tohoto souboru metodou $_POST  -->
    
    <
div><label for="name">Jméno:</label></div>   
    <
div><input type="text" name="name"></div>
<!--  Do 
textového pole se jménem name name="name" nový uživatel zadá svoje jméno  -->

    <
div><label for="login">login:</label></div>
    <
div><input type="text" name="login"></div>
<!--  Do 
textového pole se jménem login name="login" nový uživatel zadá svůj login  -->
    
    <
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  -->

    <
div><input type="submit" name="go" value="Ok"></div>
<!--  
tlačítko type="submit" odesíla data do souboru pridavani.php  -->

</
form>

<
div class="back"><a href="index.php">přihlásit se</a></div>
    
</
body>
</
html>
?>

Teď vytvořime soubor pridavani.php, který bude zpracovávát data a ukládát je do databáze:

<?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

    
if(isset($_POST['name']))
    {
        
$name stripslashes(htmlspecialchars(trim($_POST['name'])));
        if(
$name == '')
        {
                unset(
$name);
        }
    }
//uložime do proměnné $name jméno, které uživatel zadál ve formuláři, 
//a hned ji ošetříme několika funkcemi, aby ani tagy ani skripty nefungovali a odstraníme mezery ( trim ) 
//Jestli je proměnná prázdna tak ji odstraníme.

    
    
if(isset($_POST['login']))
    {
        
$login stripslashes(htmlspecialchars(trim($_POST['login'])));
        if(
$login == '')
        {
                unset(
$login);
        }
    }
//uložime do proměnné $login login, který uživatel zadál ve formuláři, 
//a hned ji ošetříme několika funkcemi, aby ani tagy ani skripty nefungovali a odstraníme mezery ( trim ) 
//Jestli je proměnná prázdna tak ji odstraníme.
    
    
if(isset($_POST['heslo']))
    {
        
$heslo stripslashes(htmlspecialchars(trim($_POST['heslo'])));
        if(
$heslo == '')
        {
                unset(
$heslo);
        }
    }
//uložime do proměnné $heslo heslo, které uživatel zadál ve formuláři, 
//a hned ji ošetříme několika funkcemi, aby ani tagy ani skripty nefungovali a odstraníme mezery ( trim ) 
//Jestli je proměnná prázdna tak ji odstraníme.


//V případě, že jakákoli proměnná je prázdna, zastavíme skript a vyvedeme hlášení    
    
if(empty($name) or empty($login) or empty($heslo))
    {
        exit(
"Vyplňte všechna pole");
    }


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

//Ověřujeme, zda jíž není uživatel se stejným loginem    
    
$q1 mysql_query("SELECT * FROM `users` WHERE `login`='".$login."'");
    if(!
$q1) { echo mysql_error() . ' - ' mysql_errno(); }
    else {
//Jestli existuje tak vyvedeme hlášení
        
if(mysql_num_rows($q1)==1){
            exit(
"Uživatelské jméno je obsazené, vyberte si jiné");
        } else {
//V případě, že není tak vložíme data o novém uživateli do databáze
            
$q2 mysql_query("INSERT INTO `users`(`name`,`login`,`pass`) VALUES('".$name."','".$login."','".$heslo."')");
            if(!
$q2) { echo mysql_error() . ' - ' mysql_errno(); }
            else {
                echo 
"Děkuji za registraci, teď se můžete <a href="index.php">přihlásit</a>.";
            }
        }
    }
    
} else { 
header("Location: ".$_SERVER['SERVER_ROOT']."registration.php"); }
?>
Popis použitých funkci najdete u mě na stránkach zde. htmlspecialchars, trim, mysql_query, mysql_error, mysql_errno, mysql_num_rows.

Nyní se člověk může registrovat. Další věc, kterou uděláme bude soubor index.php pro přihlášení uživatelů:

<?php
session_start();
//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!  
?>

<!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>Přihlašení uživatele</title>
    <
meta http-equiv="content-type" content="text/html;charset=utf-8" />

<
style>

.
back{
    
font-size:10pt;
    
margin-top:20px;
}

</
style>
    
</
head>

<
body>
<?php
//ověřujeme zda proměnné jméno a id jsou prázde nebo ne
if(!empty($_SESSION['name']) AND !empty($_SESSION['id']))
{
//V případě, že nejsou tak zobrazime jméno uživatele a odkaz, který je schovaný, jesli uživatel není přihlášený
 
 
echo "<h1>Ahoj ".$_SESSION['name']."</h1> 
 <p>Tyto <a href="
http://www.complux.eu/cz/">stránky</a> můžou navštívit jen registrované uživatele</p>";    
} else {
//V případě, že tyto proměnné jsou prázdne, zobrazime přihlašovací formulář a odkaz s prázdným atributem href    
 
 
echo "
 <h1>Přihlaste se</h1>
<form action="
overeni.php" method="POST">
<!--  overeni.php je skript pro ověření zadaných dat, tzn. po klíknutí na tlačítko Ok se data pošlou do tohoto souboru metodou POST  -->

    <div><label for="
login">login:</label></div>
    <div><input type="
text" name="login"></div>
<!--  Do textového pole se jménem login ( name="
login" ) uživatel zadá svůj login  -->

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

    <div><input type="
submit" name="go" value="Ok"></div>
<!--  tlačítko ( type="
submit" ) odesíla data do souboru overeni.php  -->

</form>
 "
;
 
 echo 
"Ahoj návtěvníku. Tyto <a href="#">stránky</a> můžou navštívit jen registrované uživatele";        
 
echo '<div class="back"><a href="registration.php">registrace</a></div>'
}
?>

</body>
</
html>

Poslední soubor, který musime vytvořit, je soubor pro ověření uživatele, zda je v databázi. Soubor overeni.php:

<?php
session_start();
//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!  
 
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
    
    
if(isset($_POST['login']))
    {
        
$login stripslashes(htmlspecialchars(trim($_POST['login'])));
        if(
$login == '')
        {
                unset(
$login);
        }
    }
//uložime do proměnné $login login, který uživatel zadál ve formuláři, 
//a hned ji ošetříme několika funkcemi, aby ani tagy ani skripty nefungovali a odstraníme mezery ( trim ) 
//Jestli je proměnná prázdna tak ji odstraníme.


    
if(isset($_POST['heslo']))
    {
        
$heslo stripslashes(htmlspecialchars(trim($_POST['heslo'])));
        if(
$heslo == '')
        {
                unset(
$heslo);
        }
    }
//uložime do proměnné $heslo heslo, které uživatel zadál ve formuláři, 
//a hned ji ošetříme několika funkcemi, aby ani tagy ani skripty nefungovali a odstraníme mezery ( trim ) 
//Jestli je proměnná prázdna tak ji odstraníme.


//V případě, že jakákoli proměnná je prázdna, zastavíme skript a zobrazime hlášení        
    
if(empty($login) or empty($heslo))
    {
        exit(
"Vyplňte všechna pole");
    }

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

//Ověřime, zda máme záznam v tabulce s zadaným loginem    
    
$q1 mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."'");
    if(!
$q1) { echo mysql_error() . ' - ' mysql_errno(); }
    else {
        if(
mysql_num_rows($q1)==1){
//V případě, že máme, vložime id tohoto uživatele do pole
            
            
$r1 mysql_fetch_assoc($q1);
//A vybereme data z tabulky s tímto id a ověřime, zda je správně zadané heslo
            
            
$q2 mysql_query("SELECT * FROM `users` WHERE `id`='".$r1['id']."' AND `pass`='".$heslo."'");
            if(!
$q2) { echo mysql_error() . ' - ' mysql_errno(); }
            else {
//Jestli je všechno správně, tak do sessions uložime identifikator uživatele a jméno, tyto proměnné budou použité v souboru index.php
                
$r2 mysql_fetch_assoc($q2);
                
$_SESSION['id'] = $r2['id'];
                
$_SESSION['name'] = $r2['name'];
//Budete přesměrování na hlavní stránku
                
header("Location: index.php");
            }
        } else {
//Jinak zobrazime hlášení
            
exit("Uživatel s tímto uživatelským jménem neexistuje.");
        }
    }
    
} else { 
header("Location: ".$_SERVER['SERVER_ROOT']."index.php"); }
?>
Použil jsem funkci, kterou možná ještě neznáte mysql_fetch_assoc

Poslední věc, kterou uděláme je odkaz pro odhlášení uživatele. Přidáme odkaz do souboru index.php:

<?php
.
.
echo 
"<h1>Ahoj ".$_SESSION['name']."</h1> 
 <p>Tyto <a href="
http://www.complux.eu/cz/">stránky</a> můžou navštívit jen registrované uživatele</p>
 
<p><a href="".$_SERVER['PHP_SELF']."?action=odhlasit_se">Odhlásit se</a></p>";    
.
.
?>
a na začátek stejného souboru, hned po session_start:
<?php
session_start();
//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!  
 
if(isset($_GET['action']) AND $_GET['action'] == 'odhlasit_se'){

    
$_SESSION['name']='';
    
$_SESSION['id']='';
    unset(
$_SESSION['name']);
    unset(
$_SESSION['id']);
    
}
?>
vidíme, že do URL prohlížeče posílame action=odhlasit_se, pak jestli klíkneme na tento odkaz, pomoci GET zjístime, že jestli hodnota atributu action se rovná odhlasit_se odstraníme proměnné sessions.

Takže máme to. Tento článek je možná trochu nudný, ale je v něm hlavní myšlenka realizace registraci uživatelů a měli byste trochu procvíčit spolupráci PHP a MySQL. Dál tyto skripty budeme zlepšovat, přidáme šifrování hesla, captchu, avatar, generování nového hesla a td.

Systém Orphus
Napište komentář.
Celkem komenrářů(446)
Bernarddooma - 2018-08-13  18:49:20
 Элементарно. Как рубануть 120 000 рублей за месяц на хостинг-площадках с нулём в кармане... Повторит каждый!

Данный способ заработка очень прост в освоении.
Он не требует начальных вложений, технических навыков и много времени.
80% работы мы выполним за 2 недели, после чего забываем о ней
и выходим на пассивный доход или масштабируемся при желании дальше.

Узнайте больше на сайте: http://hosting-compant.tk
Uargoritta - 2018-08-12  20:03:11
 Зарабатывайте До 9000 руб в день на создании и заполнении профилей в интернете!
Никаких вложений, продаж, партнерок и т.д. Выплаты ежедневно!
Более подробная информация на нашем сайте. >> http://rabotaprofily.tk/
Donnyenag - 2018-08-07  13:34:45
 Зарабатывай 9000 руб в день на создании и заполнении профилей в интернете!
Никаких вложений, продаж, партнерок и т.д. Выплаты ежедневно!
Более подробная информация на сайте. >> [url=http://rabotaprofily.tk]www.rabotaprofily.tk[/url]
DanyelRuire - 2018-08-06  13:34:35
 [b]Платим за лайки! - Выплаты по требованию! [/b]

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. [url=http://vklikers.tk][b]www.vklikers.tk[/b][/url]

Вывод заработанных средств ежедневно в течении нескольких минут.
DavidTix - 2018-07-17  05:40:47
 kamagra soft chewable tablets 100 mg
[url=https://www.kamagrajellyk.com/]buy kamagra[/url]
kamagra reviews forum
kamagra jelly
kamagra oral jelly how to use video
Charlesmah - 2018-07-15  16:11:03
 pra comprar viagra precisa de receita medica
[url=http://viagrapipls.com/]generic viagra[/url]
reviews of viagra professional
viagra generic
female viagra pills cvs
http://viagrapipls.com/
best generic viagra forum
Robertevodo - 2018-07-14  07:15:11
 kamagra oral jelly 100mg side effects
kamagra oral jelly
kamagra kopen
[url=https://www.kamagrapos.com/]kamagra[/url]
kamagra oral jelly amazon nederland texas
Haroldwok - 2018-07-13  21:48:18
 kamagra 100 chewable tablet einnahme
[url=https://www.kamagradax.com/]kamagra 100mg[/url]
kamagra oral jelly usa
buy kamagra
kamagra oral jelly how to use
Jawerplfek - 2018-06-09  21:36:09
 Бодрого дня!
Мигает ошибка a150 на частотном преобразователе M400-05200250A. Другие приборы ATV61EXC2D90N4, CIMRV7AZ41P50, VFD900F43A-G на компрессорах в норме.
Мастерскую нашел в гугле здесь http://prom-electric.ru/articles/8/39567/
Пока!
GolisstAbocota - 2018-06-01  03:08:11
 Весной совсем не хочется выползать из постели. Особенно рано утром. Но упорно звенит будильник. Я выбираюсь из его теплых объятий и выключаю будильник. Надо вставать, одеваться…
Еще минуточку, обещаю я себе.
Однако когда я наконец собираюсь с духом, его рука вдруг хватает меня и прижимает к себе. - Не сейчас, мне пора на работу… - шепчу я ему. Но он держит меня и не выпускает. Он ласкает мою шею, потом начинает опускаться ниже. Я чувствую между ног его твердую плоть, но он опускается еще ниже…

[url=https://vk.com/club62217601?w=wall-62217601_437%2Fall]смотреть красивое фото эротика[/url]
GolisstAbocota - 2018-06-01  03:08:09
 Весной совсем не хочется выползать из постели. Особенно рано утром. Но упорно звенит будильник. Я выбираюсь из его теплых объятий и выключаю будильник. Надо вставать, одеваться…
Еще минуточку, обещаю я себе.
Однако когда я наконец собираюсь с духом, его рука вдруг хватает меня и прижимает к себе. - Не сейчас, мне пора на работу… - шепчу я ему. Но он держит меня и не выпускает. Он ласкает мою шею, потом начинает опускаться ниже. Я чувствую между ног его твердую плоть, но он опускается еще ниже…

[url=https://vk.com/club62217601?w=wall-62217601_437%2Fall]смотреть красивое фото эротика[/url]
GolisstAbocota - 2018-06-01  03:08:07
 Весной совсем не хочется выползать из постели. Особенно рано утром. Но упорно звенит будильник. Я выбираюсь из его теплых объятий и выключаю будильник. Надо вставать, одеваться…
Еще минуточку, обещаю я себе.
Однако когда я наконец собираюсь с духом, его рука вдруг хватает меня и прижимает к себе. - Не сейчас, мне пора на работу… - шепчу я ему. Но он держит меня и не выпускает. Он ласкает мою шею, потом начинает опускаться ниже. Я чувствую между ног его твердую плоть, но он опускается еще ниже…

[url=https://vk.com/club62217601?w=wall-62217601_437%2Fall]смотреть красивое фото эротика[/url]
GolisstAbocota - 2018-06-01  03:08:05
 Весной совсем не хочется выползать из постели. Особенно рано утром. Но упорно звенит будильник. Я выбираюсь из его теплых объятий и выключаю будильник. Надо вставать, одеваться…
Еще минуточку, обещаю я себе.
Однако когда я наконец собираюсь с духом, его рука вдруг хватает меня и прижимает к себе. - Не сейчас, мне пора на работу… - шепчу я ему. Но он держит меня и не выпускает. Он ласкает мою шею, потом начинает опускаться ниже. Я чувствую между ног его твердую плоть, но он опускается еще ниже…

[url=https://vk.com/club62217601?w=wall-62217601_437%2Fall]смотреть красивое фото эротика[/url]
JasonRep - 2018-05-25  23:02:38
 http://bit.ly/2INJdie Snorest - клипса от храпа
Инновационное приспособление, которое стимулирует рефлексогенные точки в области носовой перегородки, расширяет дыхательные пути и повышает концентрацию кислорода в крови.
Тем самым - избавляет от храпа и делает ваш сон глубоким и здоровым!
Williamhix - 2018-05-21  01:10:39
 Сезонная распродажа Ray-Ban по ценам производителя
http://bit.ly/2F23Wh1
Williamovarl - 2018-05-17  11:05:49
 http://bit.ly/2IH9Q8m Гелевые перчатки и носочки для spa ухода за руками и ногами
Инновационные гелиевые носки и перчатки на основе натуральных компонентов для ухода за кожей рук и ног.
Питают и тонизируют кожу, восстанавливают ее эластичность и упругость, способствуют профилактике грибковых заболеваний.
Williamhix - 2018-05-15  08:20:06
 Сезонная распродажа Ray-Ban по ценам производителя
http://bit.ly/2F23Wh1
Ramatik - 2018-05-12  17:26:48
 Платим за лайки! - Выплаты ежедневно!

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > vklikers.tk <

Вывод заработанных средств ежедневно в течении нескольких минут.
SallieHor - 2018-04-26  00:20:44
 Вам будет интересно как где и сколько стоят леса, схема проезда и многое другое:
вышка тура брест и
строительные леса напрокат
SallieHor - 2018-04-26  00:20:41
 Вам будет интересно как где и сколько стоят леса, схема проезда и многое другое:
вышка тура брест и
строительные леса напрокат
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.