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ářů(118)
Apartzonse - 2017-08-15  13:59:24
 На представленном интернет-сайте вы сможете прочитать множество интересной и полезной информации о таком факте, как, в каковой последовательности, с каким инструментом и видом материала вам лично потребуется действовать. Вы непременно найдете именно тут более подробную информацию о всяком из процессов ремонта – клейка обоев, штукатурка, работа с гипсом, установка окон и дверей, утепление, отделка потолка, укладка пола, создание перегородок и т.д. Также вы имеете возможность уделить пристальное внимание и окружению собственного дома, то есть рассмотрите более детально как лучше легко и просто создать образцовый сад или другой вид оформления участка, что для такого нужно принять к сведению и купить.
Не лишним будет поглядеть в любой из разделов, при чем еще до начала ремонтных работ, так как может быть вы найдете какие-то необходимые рекомендации, какие дадут подсказку вам что-то еще выгодно осуществить в доме кроме того, что вы сами надумали. А соответственно, заранее нужно продумать ход самого ремонта, материалы и инструменты, очередность действий и т.п. Мы же вам подскажем, как работать с каждым из материалов, какой подойдет вам качественнее всего, с какими проблемами вы можете столкнуться и как их решить «на ходу», в ходе работы.
Также существуют и специализированные хитрости, именно они могут помочь справиться скорее или легче с уже известными, но нелегкими в осуществлении стадиями проведения ремонта. При чем современные новации и материалы, инструменты и находки могут быть с успехом вами использованы. Но, конечно же, чтобы ими воспользоваться, надо прежде узнать о том, что они существуют. А для этого и предназначен наш сайт!


[url=http://aparthome.org/uteplenie/penoplast-dlja-uteplenijal.html]пенопласт для утепления домаhttp://aparthome.org/[/url]
Allenfar - 2017-08-07  18:45:20
 ... акции и скидки до -?9?5?% на эксклюзивные женские брендовые товары ? ModnaKasta. ... Дизайнерские сумки, кошельки, аксессуары ... Уход за кожей и Вашей красотой .... Натуральная косметика, уход, лаки для ногтей. http://bags.moykrest.ru
IriJukrOM - 2017-08-07  11:05:52
 100% бонус реальными деньгами автоматом!
Перейти на официальный сайт http://vulcanclubplay.ru
Бесплатные онлайн игры на любых слотах!
Бонусы на все последующие депозиты!
Larryarret - 2017-08-01  17:29:56
 Хотим предложить вам инновационное средство для похудения сироп Мангустина. С ним реально сжечь около 15 килограмм за 14 суток.

Дерево мангкут растет в Малайзии. Плоды дерева имеют удивительные свойства. Во флаконе имеется около 25 плодов этого замечательного дерева. Плоды с дерева мангостан помогают растопить чрезмерную липидную ткань. И отлично влияют на человека в комплексе. Специфика изготовления препарата, и специальная упаковка позволяют сберечь все полезные свойства растения.

Основным компонентом сиропа Mangoosteen являются фрукты с дерева мангостан, в которых имеется большое количество полезных микроэлементов. Благодаря веществу окиси дифениленкетона, которое в громадных количествах имеется в плоде, сильно тормозятся процессы окисления в организме. Окись дифениленкетона признана одним из наиболее сильных антиоксидантов. В плоде растения мангостан также есть разные витамины и микроэлементы. Купить сироп Mangoosteen возможно на сайте http://mangoo77.mangoosteen.com.
Djxrumpsix - 2017-07-11  18:48:15
 [url=http://hexaseo.com]Hexaseo[/url]
Below is a simple guide to what you need to know when recruiting help with your search engine optimization initiative.
[URL=http://hexaseo.com] visit the following website page in hexaseo.com [/URL].
Top Rated Result Driven SEO Company TO IMPROVE Your Sales

An SEO expert shall know about all of these and will insist on using one of these.
For the latter the expert must send back to how they used to work or how they could do what they now do if indeed they weren't an expert.

At some true point, you'll likely want to look from being an SEO expert to being truly a true business owner (AND SEO expert).
You now know what you need to figure out how to become an SEO expert.
Domini - 2017-06-16  15:01:05
 Dobrý den vše jsem udelal dle vašeho návodu a když zadám do vyhledávače adresu mé webovky, tak mi to hlásí že je web nedostupný.
Mám založenou stránku u endory.
Keithduh - 2017-06-08  17:50:46
 Hello. And Bye.
RichardNeabe - 2017-06-08  03:44:14
 Мы поможем вам продвинуть ваши проекты рекламой в пабликах и группах Вконтакте.
Хорошая цена за качественную и честную рекламу Вконтакте.
Узнать подробнее: [url=http://vkx.biz/]http://vkx.biz/[/url]
[url=http://vkx.biz/]реклама в пабликах[/url]
Теги: купить рекламу вконтакте,вконтакте цена
реклама вконтакте цена
дешевая реклама вконтакте
CindyVot - 2017-06-07  19:46:00
 Но ведь эти юбки на азиатских девочках слишком короткие, как и футболки, и вызывающие, вам не кажется? Что она хочет этим показать?
[url=https://v-poze-rakom.ru/asiatki/1538-glamu
aya-aziatka-s-malenkimi-siskami-ebetsya.html][img]https://v-poze-rakom.ru/uploads/posts/2017-03/medium/1490730476_image_42702.jpg[/img][/url]
шикарная мамочка ебётся с другом сына без регистрации, [url=https://v-poze-rakom.ru/xardkor/1218-zagorelaya-zhenschina-posle-anilingusa-kayfuet-ot-hardkora.html]порно модель brazzers трахается настоящее порно фото[/url]
https://v-poze-rakom.ru/
Reykardskath - 2017-06-01  06:20:45
 Hello. And Bye.
TimothyDUM - 2017-05-25  14:18:34
 New trand
DamonFef - 2017-05-24  12:43:55
 [url=http://apotheke-online-24.com/drugs/cialis-generic]cialis generika billig kaufen [/url]
[url=http://apotheke-online-24.com/drugs/valif-jelly]valif bestellen [/url]
[url=http://apotheke-online-24.com/drugs/cialis-soft]cialis soft tabs bestellen [/url]
cialis soft tabs kaufen
super kamagra sicher online bestellen
original cialis gГјnstig kaufen
DiShuriginarv - 2017-05-20  09:35:10
 [img]https://s3.postimg.org/s59hec7xb/image.jpg[/img]

[b]Клиника Parada проводит некачественные хирургические операции, а так-же держит недо-хирургов, как Нугаев Тимур Шамилевич, который угражает своим пациентам, поциенткам, сдает их коллекторским конторам и т.д.[/b]

Нугаев Тимур Шамилевич провел неудачную операцию, после претензии поциентки стал угрожать ей через 3-х лиц...

[b]Вот тут подробнее[/b]
[url=https://www.youtube.com/watch?v=LmHqTvxiwaU]https://www.youtube.com/watch?v=LmHqTvxiwaU[/url]

[b]А так-же[/b]
[url=https://www.youtube.com/watch?v=40pNcXok_7U]https://www.youtube.com/watch?v=40pNcXok_7U[/url]

И можете тут подробнее рассмотреть операции этого рукожопа и клиники Parada:
[url=http://forum.baginya.org/viewtopic.php?f=16&t=6547]http://forum.baginya.org/viewtopic.php?f=16&t=6547[/url]

[img]https://s9.postimg.org/ecqyodtq7/image.png[/img]


nrem

timur_nugaev@mail.ru
Parada Санкт-Петербург
Parada Санкт-Петербург отзывы
Parada Мск отзывы
PARADA центр пластической хирургии и флебологии
маммопластика Parada
Parada ринопластика
абдоминопластика Parada
отопластика Parada
Интимная пластика Parada
Контурная пластика Parada
косметология Parada
пластика Parada Питер
отопластика Parada
Пластическая Хирургия Parada
Ринопластика Parada
Хирургия Парада
Нугаев Тимур Шамилевич
Нугаев Тимур Шамилевич Пластический хирург
Нугаев Тимур Шамилевич Хирург
Нугаев Тимур Шамилевич Отзывы
Нугаев Тимур Шамилевич Parada

http://sl.ehot.pl/member.php?action=profile&uid=4591
http://forum.rosgossert.ru/viewtopic.php?f=4&t=722017
http://pokergid.net/forum/cat-blogi-na-poker-gid/topic-81174-page-229.html#post291476
http://uniongaming.mtxserv.fr/member.php?action=profile&uid=58
Ethansic - 2017-05-12  18:59:03
 Крем воск Здоров для лечения суставов: отзывы, как купить, состав

Официальный сайт: http://zdorov.bxox.info
Aaronsok - 2017-05-01  19:47:12
 Hello. And Bye.
DonaldAnine - 2017-04-19  13:26:31
 [url=http://vardenafilprixenpharmacieacaen.com/]levitra prix en pharmacie sans ordonnance [/url]
vardenafil prix en pharmacie
BryanBlito - 2017-04-17  04:25:16
 [url=http://howtogetviagrawithoutadoctorprescription.us/]how to get viagra without a doctor prescription [/url]
how to get viagra without a doctor prescription
JamesEteft - 2017-04-16  23:23:53
 [url=http://acheterzithromaxsurinte
etenfrance.club/]acheter zithromax sans ordonnance [/url]
acheter zithromax
VincentMew - 2017-04-16  06:40:30
 [url=http://achatventolinesansordonnance.com/]achat ventoline sans ordonnance [/url]
acheter ventoline sans ordonnance
Timothytrors - 2017-04-16  02:39:23
 [url=http://acheterclomid100mgsurinte
etpascher.com/]acheter clomid 100mg sur inte
et pas cher [/url]
achat clomid 100mg
[1] [2] [3] [4] [5] [6] 
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.