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=neco. !!!
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?logout=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
. Dik
Je spíš na ničené session používám unset($_SESSION["blabla"])... Poradte co je lepsi?
(tj. jiným, než bych to řešil já).
.
aspoň si udělám reklamu
.
. Možná mi blbne XAMPP. Nevím
Chtěl sem to testnout jak to funguje ale neumím pracovat s tabulkama pls, poraďte mi někdo nebo napište jak by měli vypadat ty tabulky Díky.
| Novinky | Pridat novinku |
| Login | |
| Vycet... |
Čau, hele fakt moc pěknej článek ale potřeboval bych se zeptat na pár věcí. Tu tvoji registraci sem kupodivu rozchodil(což se mě často nestává:-D ) ale potřeboval bych to upravit. Jednak bych se chtěl zeptat, jak to udělat, aby se ty hlášky typu „byl jsi odhlášen“ nezobrazovali v tom okýnku ale normálně se to napsalo na stránkách. Pak jak ou ty práva 0, 1, 2 tak k tomu mám udělat práva sám nebo už je to nějak rozdělený? Dále bych potřeboval udělat, aby ještě před tím, než se někdo zaregistruje, mě přišel majl, já bych zkontroloval jestli je ten člověk allright a pak bych mu účet aktivoval. A hlavně bych potřeboval vykoumat, jak udělat to, že když se někdo zaregistruje, aby se mu automaticky vytvořil takovej jeho virtuální „pokoj“ kterej by si pak mohl sám administrovat – toto je pro mě nejdůležitější věc, potřebuju to na svý stránky.
Je toho hodně a možná mám i blbý otázky ale pevně věřím že mě
poradíte, předem Díky! ![]()
chtel bych se zeptat jak si to muzu nastavit tak ze kdys se nekdo zaregistruje automaticky dostane tabulku ze svima udajma napriklad kdys kliknes na uzivatela tak sa ti otvori taka tabulka a este jak to mozem naprogramovat tak ab po prihlaseni hned isiel na tu stranku co chcem ja ale natu stranku by sa dalo ist len jako clen
a jako si mozem vytvorit set_user.php tak aby si uzivatel mohol zadat este ktomu meno a tak len ked chce a viete menit nastavenia useru
čus hele mne se to neda rozdelit ze kdyz neni uzivatel prihlasenej tak by se mu mnelo zjevit prihlas se ale kdyz neni prihlasenenej zobrazi se mu vsechno poradte mi pls mne to protected.php nefunguje
Používat samotné session_destroy() nestačí, koukni se do manuálu ;) Schválně vyzkoušej tenhle kód:
<?php
session_start();
$_SESSION['test'] = "zdravi session";
session_destroy();
echo($_SESSION['test']);
?>
Správně by se to mělo dělat nějak takhle (viz ten přklad tam).
Takže doufám, že to opravíš a nebudeš tu šířit dezinformace mezi nováčky v PHP ;)[b]jonge[/b]:
Cawes, potreboval by som pomoct, kedtze sa mi nedari spracovat ten kod na tie udaje, kt. maju byt chranene. Nejak mi to vsetko ide OK, len tie chranene udaje mi nejdu, neviete preco, idem presne podla prirucky, tejto. DAKUJEM
nevite co s tim je kdyz vyplnim formular registruju se a napise mi to
Warning: mysql_connect() [function.mysql-connect.php]: Can't connect to local MySQL server through socket ‚/var/run/mysqld/mysqld.sock‘ (2) in /home/free/ic.cz/s/spuna/root/www/inc/db.php on line 2 Spatne zadane udaje (asi heslo, server nebo jmeno.) v inc/db.php
Je to good ! Sem si to dokonce upravil! na to že jsem lama i sám sebe překvapuji! Ale zaráží mě možnost to nekam implementovat! Nevím jak to dostanu do svého! když se regnu, zobrazí se mi alert4 a ked se chci prihlasit tak mi nepřežijou sessions :'( ! Pls poraďte! Ale asi to bude tím že při nalogování nemám stránku přihlášen která by jí ty sessions vytvořila
Doporučuj znovu přečíst, včetně komentovaného kódu.
Už jsem to vyřešil! Bylo to tím že jsem tam neměl jaksi implementovaný přihlášený uživatel atd… který by to udržovalo! :D
Warning: require(inc/error_msg.php) [function.require]: failed to open stream: No such file or directory in /home/free/ic.cz/p/ps-zborovice/root/www/index.php on line 58
Fatal error: require() [function.require]: Failed opening required ‚inc/error_msg.php‘ (include_path=‚/usr/share/php/smarty/libs:/usr/share/fpdf:/usr/share/php/:.‘) in /home/free/ic.cz/p/ps-zborovice/root/www/index.php on line 58
toto se mi ukáže při přihlášení
Pecane moc dik pomohlo mi to opravdu moc jen ted resim jak bych mohl pridat
treba nad logout kdyz ma uzivatel prava 1 treba nejakou spesl
polozku…(administrace atd…) snad na to prijdu tak jeste jednou diky
moc ![]()
if(!isset($_SESSION[‚prihlasen‘]) and @$_SESSION[‚prihlasen‘]!=1)
Ahoj! Nemělo by tam být spíše OR místo AND?
if(!isset($_SESSION[‚prihlasen‘]) and @$_SESSION[‚prihlasen‘]!=1)
Ahoj! Nemělo by tam být spíše OR místo AND?
Sorry, že se to postlo dvakrát, ale hlásilo to že už to někdo registroval i když se to postlo, což jsem si nevšiml.
zdravim vsechny, mam takovej dotaz, vse jsem delal podle navodu a kdyz se
chci registrovat nebo prihlasit tak mi to nahlasi ze je spatne zadana databaze
v db.php a pritom je to dobre, nevite cim to muze byt ? ![]()
ono si to chybové hlášení nevymyslelo, tedy budeš mít asi opravdu něco blbě zadané.
zdravim PeCane, naštudoval som si tvoj článok, a snažím sa rozbehnúť prihlásenie na locale. Zaregistrujem uživateľa ale nemôžem sa prihlásiť -Vypisuje mi to hlášku: Zadal jsi špatné údaje. Kodovanie stránky je zhodné s databázou, heslo je uložené v šifre md5, tak fakt netuším kde bude chyba, som nováčik takže to môže a asi aj bude nejaká triviálna chyba. Už som z toho dosť nešťastny.
Diky.
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/free/wu.cz/v/vztah/root/www/reg_zpracuj.php on line 13 Table ‚wu_vztah.uzivatele‘ doesn't exist
Neví někdo co s tím?8-|
Ako docielim to ze ked sa zabudne uzivatel odhlasit aby sa po nejakom case session same zmazalo?
A dalo by sa urobit aby take ako protected ale aby to zobrazovalo len adminovi napr ked mam login admin?
Jak udělat aby se po přihlášení uživatele zobrazily jeho poznámky/obrázky?????.
Uživatel se přihlásí .V databázi se podle jeho id vypíšou do tabulky 1/…jen jeho OBR+ poznámky(možnost omezení max počtu)
přiklad: pokud se přihlásí TONDA pak se ZOBRAZÍ obr1,pozn1–20, NEBO obr5,pozn1–20 pokud se přihlásí PETR pak se ZOBRAZÍ obr3,pozn1–20, NEBO obr5,pozn1–20
**za hotový skript nabízím HOTOVOST…
**
[marek19992: Mno muzes zkusit porovnat session s pevnym parametrem napr. nak jako
<?php
if($_SESSION['login'] !== "admin") {
echo "tato stranka je jen pro uzivatele admin";
exit;
}
?>
//obsah zabezpecene stranky
dzuff: napis mi na icq 354673074
Zdarvím, pomůžete mi to dát na můj web? Registraci uživatelů myslím.. Děkuji
JanaNení problém ozvy se na ICQ 351513660 nebo Skype black_angle57
Když se chci přihlásit tak mi to háže vtohle:
Warning: require(db.php) [function.require]: failed to open stream: No such file or directory in /home/free/ic.cz/f/fantasy-blog/root/www/gamebook/login_zpracuj.php on line 10
Fatal error: require() [function.require]: Failed opening required ‚db.php‘ (include_path=‚/usr/share/php/smarty/libs:/usr/share/fpdf:/usr/share/php/:.‘) in /home/free/ic.cz/f/fantasy-blog/root/www/gamebook/login_zpracuj.php on line 10
Vůbec nevim co s tim..
Stahnůl jsem si zdroják a jějak to nezakčí (Spatne zadana databaze
v inc/db.php) . Co stím ?
![]()
Ahoj,udelal jsem si na webu registraci a prihlasil se.I prez to ze jsem
trihlasen me to nechce pustit do toho obsachu pro registrovane,proc? <?php
if(!isset($_SESSION[‚prihlasen‘]) and
@$_SESSION[‚prihlasen‘]!=1){
echo „<h1>Tato stránka je jen pro registrované</h1>“;
exit; } ?>
<h1>Tajný obsah</h1> <p>
Muj vlastni text pro registrovane </p>
>
crazyboy: <?php
$spojeni = mysql_connect(„mysql.ic.cz“,„ch_star_gate“,„xxx“ ) or
die (‚<b>Critical error!</b><br>Nepodarilo se pripojit
k databazi!‘);
mysql_select_db(„ch_star_gate“, $spojeni) or die (‚Spatne zadana
databaze v db.php‘);
mysql_query(„SET character_set_client=utf8“);
mysql_query(„SET character_set_connection=utf8“);
mysql_query(„SET character_set_results=utf8“); ?> Zmen databazi podle
skutecnosti(„mysql.ic.cz“,„ch_star_gate“,„xxx“ )na svoji
Prosímvás já jsem asi fakt blbec. Prosím pomožte mě s tím někdo. Napište na ICQ 597786148 nebo na skype pepino…8
**Tlustě**
*Kurzíva*
"Odkaz":http://neco.cz nebo http://neco.cz (i www.neco.cz)
/---code php
php kód
\---