Register,Login,Logout - Php Tutorial

Published on July 2016 | Categories: Documents | Downloads: 34 | Comments: 0 | Views: 402
of 8
Download PDF   Embed   Report

Comments

Content

22.03.2010

Register,login,logout - php tutorial

Web aplikacije

Register,login,logout - php tutorial
[ http://www.elitesecurity.org/t343736 ] [ vidonk @ 11.11.2008. 21:57 ] @ Primjetio sam da ima dosta pitanja oko ove teme, i da ima dosta nejasnoca itd, kada sam ja pocinjao da se bavim php-om ovo nije postojalo, i ubio sam se uceci php i trazeci po netu objasnjenja itd, itd e da se to nebi desavalo buducim "programerima" i "web-dizajnerima" odlucio sam da postavim ovaj mali tutorial i ucinim ga dostupnim svakome kome zatreba a siguran sam da hoce. Pa dobro da pocnemo: 1 - kreirajte bazu podataka (nazovite je kako hocete, u mom slucaju ona se zove new) 2 - tablu takodje nazovite kako hocete, u mom slucaju ona se zove users 3 - br. polja 3 4 - prvo polje ID, type - mediumint, Length/Values - 9, Extra - auto_increment, i oznacite je kao primary (prvi radio button sa ikonicom kljuca) 5 - drugo polje username, type - varchar, Length/Values - 60 6 - trece polje password, type - varchar, Length/Values - 60 7 - kreirajte fajlove add.php, login.php, members.php, logout.php 8 - napomena: ovaj sistem radi pomocu cookia 9 - sve sto je potrebno da uradite je da napocetku svakog fajla zamjenite sledece: mysql_connect("localhost", "root", "password") or die(mysql_error()); ovo su postavke u localhostu mysql_select_db("new") or die(mysql_error()); localhost - ime vaseg hosta root - vas username password - vas password napomena: passworda nema u localhostu pa tu ostavite samo navodnike"" new - ime vase baze A evo i kodova od tih fajlova add.php Code: <?php // C onnects to your Database mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("new") or die(mysql_error()); //This code runs if the form has been submitted if (isset($_POST['submit'])) { //This makes sure they did not leave any fields blank if (!$_POST['username'] | !$_POST['pass'] | !$_POST['pass2'] ) { die('You did not complete all of the required fields'); } // checks if the username is in use if (!get_magic_quotes_gpc()) { $_POST['username'] = addslashes($_POST['username']); } $usercheck = $_POST['username']; $check = mysql_query("SELEC T username FROM users WHERE username = '$usercheck'") or die(mysql_error()); $check2 = mysql_num_rows($check); //if the name exists it gives an error if ($check2 != 0) { die('Sorry, the username '.$_POST['username'].' is already in use.'); } // this makes sure both passwords entered match if ($_POST['pass'] != $_POST['pass2']) { die('Your passwords did not match. '); } // here we encrypt the password and add slashes if needed $_POST['pass'] = md5($_POST['pass']); if (!get_magic_quotes_gpc()) { $_POST['pass'] = addslashes($_POST['pass']); $_POST['username'] = addslashes($_POST['username']);

www.elitesecurity.org/print/343736

1/8

22.03.2010
}

Register,login,logout - php tutorial

// now we insert it into the database $insert = "INSERT INTO users (username, password) VALUES ('".$_POST['username']."', '".$_POST['pass']."')"; $add_member = mysql_query($insert); ?> <h1>Registered</h1> <p>Thank you, you have registered - you may now login</a>.</p> <?php } else { ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <table border="0"> <tr><td>Username:</td><td> <input type="text" name="username" maxlength="60"> </td></tr> <tr><td>Password:</td><td> <input type="password" name="pass" maxlength="10"> </td></tr> <tr><td>C onfirm Password:</td><td> <input type="password" name="pass2" maxlength="10"> </td></tr> <tr><th colspan=2><input type="submit" name="submit" value="Register"></th></tr> </table> </form> <?php } ?> login.php Code: <?php // C onnects to your Database mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("new") or die(mysql_error()); //C hecks if there is a login cookie if(isset($_C OOKIE['ID_my_site'])) //if there is, it logs you in and directes you to the members page { $username = $_C OOKIE['ID_my_site']; $pass = $_C OOKIE['Key_my_site']; $check = mysql_query("SELEC T * FROM users WHERE username = '$username'")or die(mysql_error()); while($info = mysql_fetch_array( $check )) { if ($pass != $info['password']) { } else { header("Location: members.php"); } } } //if the login form is submitted if (isset($_POST['submit'])) { // if form has been submitted // makes sure they filled it in if(!$_POST['username'] | !$_POST['pass']) { die('You did not fill in a required field.'); } // checks it against the database if (!get_magic_quotes_gpc()) { $_POST['email'] = addslashes($_POST['email']); } $check = mysql_query("SELEC T * FROM users WHERE username = '".$_POST['username']."'")or die(mysql_error()); //Gives error if user dosen't exist

www.elitesecurity.org/print/343736

2/8

22.03.2010

Register,login,logout - php tutorial

$check2 = mysql_num_rows($check); if ($check2 == 0) { die('That user does not exist in our database. <a href=add.php>C lick Here to Register</a>'); } while($info = mysql_fetch_array( $check )) { $_POST['pass'] = stripslashes($_POST['pass']); $info['password'] = stripslashes($info['password']); $_POST['pass'] = md5($_POST['pass']); //gives error if the password is wrong if ($_POST['pass'] != $info['password']) { die('Incorrect password, please try again.'); } else { // if login is ok then we add a cookie $_POST['username'] = stripslashes($_POST['username']); $hour = time() + 3600; setcookie(ID_my_site, $_POST['username'], $hour); setcookie(Key_my_site, $_POST['pass'], $hour); //then redirect them to the members area header("Location: members.php"); } } } else { // if they are not logged in ?> <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> <table border="0"> <tr><td colspan=2><h1>Login</h1></td></tr> <tr><td>Username:</td><td> <input type="text" name="username" maxlength="40"> </td></tr> <tr><td>Password:</td><td> <input type="password" name="pass" maxlength="50"> </td></tr> <tr><td colspan="2" align="right"> <input type="submit" name="submit" value="Login"> </td></tr> </table> </form> <?php } ?> members.php Code: <?php // C onnects to your Database mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("new") or die(mysql_error()); //checks cookies to make sure they are logged in if(isset($_C OOKIE['ID_my_site'])) { $username = $_C OOKIE['ID_my_site']; $pass = $_C OOKIE['Key_my_site']; $check = mysql_query("SELEC T * FROM users WHERE username = '$username'")or die(mysql_error()); while($info = mysql_fetch_array( $check )) { //if the cookie has the wrong password, they are taken to the login page if ($pass != $info['password']) { header("Location: login.php"); } //otherwise they are shown the admin area else { echo "Admin Area<p>"; echo "Your C ontent<p>"; echo "<a href=logout.php>Logout</a>";

www.elitesecurity.org/print/343736

3/8

22.03.2010
} } } else

Register,login,logout - php tutorial

//if the cookie does not exist, they are taken to the login screen { header("Location: login.php"); } ?> logout.php Code: <?php $past = time() - 100; //this makes the time in the past to destroy the cookie setcookie(ID_my_site, gone, $past); setcookie(Key_my_site, gone, $past); header("Location: login.php"); ?> Izvinjavam se ako sam negdje napravio gresku tokom pisanja ovog tutoriala (u kodovima nema gresaka u to sam siguran), nadam se da ce nekom biti od koristi i zelio bih cuti vase komentare u vezi svega ovoga... Pa sta cekate navalite sa kopiranjem kodova i imacete svoj sistem za registrovanje :)))

[ Predrag Supurovic @ 12.11.2008. 08:49 ] @ Nije ti ovo bas dobro resenje. Koristis cookies za smestanje vitalnih podataka a to je lose i nije bezbedno. Umesto toga treba da koristis sesije na serveru i to tako da se kroz sesiju izmedju strana provlaci samo id sesije a ne username, password ili bilo koji drugi podatak koji predstavlja bezbednosni rizik. C eo ovaj kod je tesko integrisati u neko gotovo okruzenje, pogotovo sto koristi odvojene datoteke za svaku akciju, umesto da napravis jednu php datoteku koja predstavlja interfejs i poziva se iz svakog dokumenta na sajtu. Recimo, mozes da napravis security.php koji radi ceo posao vezan za korisnika a njega koristis u svakom dokumentu na sajtu na primer ovako: <?php $_REQUIRED_SEC URITY_LEVEL = 'registered'; include 'security.php'; ... ?> Ako korisnik nema odgovarajuci nivo, skript mu sam ponudi da se uloguje (ili registruje). Interfejsno, uvek se poziva samo security.php a on, na osnovu statusa treba da odluci sta ce da radi dalje. Dobro je da on prikaze potreban dijalog ako je potrebno a ne da usmerava na neki drugi skript, da bi se zadrzao opsti izgled sajta.

[ vidonk @ 12.11.2008. 11:27 ] @ Hvala na dobroj kritici, ali ja sam jos uvijek pocetnik u svemu ovome tako da nemam (trenutno)bas dovoljno znanja iz php (ali ucim ucim!) za to sto ti govoris, vidim da su sesije mocna stvar mada se uvijek zadesi situacija sta ako ovo ... ili ono ... Kod je tu pa ako neko vidi neki propust ne ukaze na to, ili ako vi (nemislim na nikoga pojedinacno) mislite da to moze bolje vi pokazite kako i sta kao sto je ovdje slucaj, mada sam primjetio da se steceno znanje tesko djeli sa nekim cak i ako ga podjele to je nekih 1% sto prakticno neznaci nista, toliko za sad od mene pa se vi vidite. P.S nemam namjeru da nikog vrijedjam ili omalazavam samo govorim u istinu kako jeste.

[ Predrag Supurovic @ 12.11.2008. 12:16 ] @

www.elitesecurity.org/print/343736

4/8

22.03.2010

Register,login,logout - php tutorial

Ja sam ti samo iz dobre namere ukazao na nedostatke tvog koda i dao ti predlog kako bi to trebalo da se uradi. Ovo sto sam ti ja ispricao nisam ja izmislio, imas na netu sijaset gotovih PHP skriptova koji se tako ponasaju. Da se razumemo, prvi put kada sam se dohvatio slicnog problema, na prvu loptu sam imao slicnu ideju. Srecom ja sam pre PHP-a imao mnogo godina programerskog iskustva tako da sam tu ideju odbacio jer sam brzo uvideo manjkavosti, ali sam i ja morao da prodjem kroz nekoliko razlicitih pristupa dok nisam uklavirio sta je najprakticnije. Moj komentar je napisan samo sa namerom da ti da ideju kako bi to mogao bolje da uradis. Sledece sto bih mogao da uradim je da ti dam gotov kod, a to nema svrhe da radim kada mozes i sam da ga nadjes preko Google-a. Pozabavi se sesijama. Nisu one nista teze za korsicenje od kolacica, cak su jednostavnije. Sto se tice raznovrsnosti podataka koji mogu da ti sepojave a vezani su za sesiju to resi tako sto ces na serveru imati jednu tabelu za sesije i kako se koja seisa otvori u toj tabeli nparavio slog za nju. Sv epodatke koji ti za sesiju trebaju upisuj u taj slog, a slogu pristupaj preko ID sesije. U toj tabeli mozes da cuvas i korisnicko ime i lozinku (mada je to i tu nepotrebno, dovoljno je da cuvas inforamciju da li je korisnik ulogovan ili ne, tako da sa loiznkom radis samo na jednom jeidnom mestu - kada proveravas da li ju je korisnik ispravno ukucao), i vreme kada se ulogovao i vreme kada je poslednji put otvorio neku stranu tako da mozes da ga automatski izlogujes ako je neaktivan, i IP sa koga se ulogovao i mnogo stosta sto ti zatreba. Inace ova tema nije nova, siguran sam da ces na ES naci bar jednu slicnu diskusiju koja ide i u vece detalje.

[ vidonk @ 12.11.2008. 12:45 ] @ Misim da me nisi bas dobro razumio, shvatio sam sta pokusavas da mi kazes jos iz prvog posta, mada nisam znao da su kolacic tako losi za ovaj sistem i hvala ti na ukazanom putu i datoj ideji kojom cu se pozabavit u narednom periodu pa cu rezultat da ostavim ovdje, mada si me sad zatrpao dosta sa sesiama tako da cu prvo morati da ukapiram ovo oko tebele za njih jer mi je potpuno novo, zahvaljujem ti se na iscrpnoj kritici, i izvinjavam ti se ali nisam imao ama bas nikakvu losu nameru, ali mislim da znas kako je kad ti se prvi uspjesan projekat zasniva na losoj platformi, Ali sam ovaj skript uradio zato sto sam mislio da zbog nemogucnosti da se vidi php kod da je siguran i bezbjedan, mada nevidim nacin kako bi se doslo do nekih osjetljivih informacija u slucaju kukia, ali je to vjerovatno zbog mog neznanja php, jos jedno hvala i nadam se da mogu racunati na tebe kad zavrsim ovo sa sesiama da bacis pogled na to?

[ vidonk @ 12.11.2008. 15:00 ] @ Zaboravih da te pitam jos jednu stvar ovo oko sesija,znaci kreiram jednu tabelu koja je ustvari brousver u slucaju kukia a nekakav unos u tu tabelu tj. kako to kazu "setovana sesia" su ustvari kuki-i u slucaju predhodnog primjera, tj. kada se neko uloguje sesia salje neku vrijednost u tabelu odakle i provjerava da li si ulogovan ili ne, a i postoji neko vrijeme posle kog se brise vrijednost iz te tabele (kao sto brovsver pamti kolacice neko vrijeme) i korisnik je izlogovan ili na dugme logout ta se vrijednost iz tabele se brise, jeli to tako dodje nesto, a i po tom sistemu moze se vidjeti koliko je korisnika on-line i jos bolje koji su, ispravi me ako grijesim?

[ barons @ 13.11.2008. 00:22 ] @ a nisi stavio index.php fajl, pocetnu stranu, mislim da to fali ovom jako dobrom topicu.

[ Prokleta_Nedelja @ 13.11.2008. 08:12 ] @ index.php nema veze sa ovim. Ljudi pricaju o loginu, fajlovima koje ces koristiti u kombinaciji sa ostalim fajlovima tvoje web aplikacije.

[ vidonk @ 13.11.2008. 08:14 ] @ Ako mislis na index.php pocetnu stranu sajta nju ti kreiras sam samo dodas link koji vodi do add.php fajla a to je ustvari forma za registrovanje, a login.php mozes da stavis na pocetnu stranu sajta a i nemoras nego isto stavis link sa pocetne do login.php, a members.php su ti ustvari sve ostale stranice do kojih imas pristup sa index.php, tj dio koda iz members.php stavis u head svake strane (kojoj pristupas sa pocetne) sem index.php jer dok se ne ulogujes nemozes pristupiti members.php tj. ostalim stranicama tvog/nekog sajta, jesi shvatio kako ovo funkcionise, tj tako sam ga ja otprilike zamislio.

[ vidonk @ 13.11.2008. 11:29 ] @ Posto vidim da je tema posjecena moze li neko da objasn malo detaljnije ovo oko sessia, na kom principu rade, i ovo oko tabele sa kojom sesie rade u sistemu za logovanje, bio bih mu zahvalan, a nebi

www.elitesecurity.org/print/343736

5/8

22.03.2010

Register,login,logout - php tutorial

bilo lose ni da ukljuci kakav primjer u sve to, hvala

[ barons @ 13.11.2008. 12:26 ] @ C itat: koji vodi do add.php fajla a to je ustvari forma za registrovanje da to mi je trebalo.

[ beep @ 13.11.2008. 22:09 ] @ C itat: vidonk: Posto vidim da je tema posjecena moze li neko da objasn malo detaljnije ovo oko sessia, na kom principu rade, i ovo oko tabele sa kojom sesie rade u sistemu za logovanje, bio bih mu zahvalan, a nebi bilo lose ni da ukljuci kakav primjer u sve to, hvala Instaliraj Joomla-u i vidi session tabelu i sve ce ti se samo kazati ... Probaj da ovaj kod objedinis u klasu da bi kasnije mogo lakse da se koristi ....

[ miki987 @ 25.01.2009. 22:30 ] @ jedno pitanje za sve odnosno nekog ko ce mi odgovoriti, gde se smestaju podaci (korisnicko ime i lozinka) o korisnicima koji se uloguju preko ove skripte izmena>uspeo sam pronaci ali je problem sto se samo jedanput mogu logovati i baza pamti jednog usera, kad po drugi put u add.php unesem on kao prihvati ali u bazi i dalje stoji onaj jedan???
[Ovu poruku je menjao miki987 dana 25.01.2009. u 22:57 GMT+1]

[ vidonk @ 28.01.2009. 21:45 ] @ Druze .... ocigledno da si nes pobrko ...... hm ovako ..... Ti ovdje imas php fajl za registrovanje i php za logovanje ......... kad se registrujes ....... unose se podaci u bazu ....... kad se logujes ...... neunosi se nis u bazu .... tj php fajl ti setuje (dodijeli) kuki i po tome zna da li si se ulogovo ili ne ..... baze nema veze sa logovanjem ...... ( neunose se nikakvi podaci u bazu kad se logujes ) znaci taj problem sto si ti naveo to si nes pobrko .......... jel jasnije ..... :) ..... pozz

[ casanoova @ 29.01.2009. 16:56 ] @ Dobar tutorijal !

[ miki987 @ 30.01.2009. 02:16 ] @ sory mislio sam na registraciju, zasto u bazi vidim samo PRVO korisnicko ime, drugi put kada se registrujem nema nicega-novog korisnickog imena, razumes?(pocetnik)

[ vidonk @ 30.01.2009. 19:26 ] @ Evo sam sad ponovo upotrebio ovaj code i kod mene radi normalno kao i prije ........ mogu da se registrujem koliko hocu puta i svaki user postoji u bazi tj unesen je ....... ne znam zasto kod tebe nece .... Da li koristis wamp ili neki drugi ........ ? Pokusaj ponovo da kopiras kod u nove falove ....... pa probaj ponovo ........ i naravno kreiraj novu bazu ...........jesi podesio tablu kako treba (autoincriment i td .. )..... ne znam ali ako ti je jednom unijelo podatke u bazu ........ zasto nece i drugi put ....... probaj ovo sto sam reko ....... pa cemo da vidimo ......... nerazumijem ......

[ miki987 @ 30.01.2009. 21:12 ] @ vidonk Hvala uspeo sam, problem je sto ovo trazi stalno da se osvezava a greska je bila u tabeli...e sad jos samo ako ima resenja (link) da uradim ono kad god se neko uloguje da podaci idu na njegov mail sa aktivacionim kodom? i usput kako da vidim password ispod ekripcije ne bih da cackam ali mislim da je to negde u tabeli podesavanje prilikom kreiranja???

www.elitesecurity.org/print/343736

6/8

22.03.2010
[ vidonk @ 30.01.2009. 21:43 ] @

Register,login,logout - php tutorial

Hm ....... ti bi da vidis password a ? ......... eeee........... ne moze! ........ (salim se ) ..... nebih ti preporucio da password ostavis bez enkripcije ali kako hoces ....... samo nadji gdje ti pise "md5" u add.php i obrisi ...... i passeord ti nece biti sifriran ...... ali sta ako ti neko bane u bazu ...... ? (ne znam kako hoces .... ) a e-mail ....... nema potrebe za tim ..... (imaces vise korisnika) ...... a imas li e mail na hostu ?

[ miki987 @ 30.01.2009. 23:10 ] @ pravim neki sajtic jako zanimljiv u komercijalne svrhe, u flash-u (dizajn radim lepo as slabije) i bice mi potrebna varijanta sa mail-om, cak bih zbog provere bilo idealno uraditi i ono sa br.tel. ali...sto se tice passworda potrebno mi je ono "zaboravljena lozinka" pa na mail.Hvala jos jednom.p.s.radim jos uvek na localhostu

[ miki987 @ 03.07.2009. 00:53 ] @ opet ja posle nekog vremena malo sam izmenio i dodao stvari koje su mi trebale problem lezzi sada sto ne znam kako da odradim sledece: korisnik napravi login, i tek kada se uloguje otvara se odredjena stranica, a da bez logovanja istu naravno ne moze da vidi probao sam da ubacim odredjeni link i redirekciju ali kad neko iskopira tu stranu moze da pristupi njoj i bez logovanja, dakle kako to da izbegnem Hvala

[ Milos911 @ 03.07.2009. 07:18 ] @ C itat: miki987: probao sam da ubacim odredjeni link i redirekciju ali kad neko iskopira tu stranu moze da pristupi njoj i bez logovanja, dakle kako to da izbegnem Hvala Kako mislis kad neko iskopira tu stranu?

[ miki987 @ 04.07.2009. 15:03 ] @ pa vidi, ako ja njemu stavim da posle provere login-a ide redirekcija na stranu recimo ...o_nama.html on tu istu moze direktno da iskopira prvog puta i svaki naredni put ide direktno na o_nama.html ja znam sta meni treba, treba mi nesto sto ce da ucitava cookie a u kojima pise da se ulogovao ali ne znam kako to da izvedem ova skripta je odlicna, ali samo do mesta logovanja ali sta dalje ... nadam se da me razumes

[ Milos911 @ 04.07.2009. 18:26 ] @ Ti trebas da stavljas proveru da li je korisnik logovan na svaku stranu...

[ miki987 @ 05.07.2009. 17:30 ] @ znaci da trebam? jel to konstatacija ili ...? mozes li mi objasniti na koji nacin?

[ zizi_ba @ 13.08.2009. 04:06 ] @ Neznam dali si našao rješenje, ovo ti je potrebno da bude ispisano u zaglavlju skripte(MEMBERS skripte), poslje <?php session_start(); ?> Code: <?php if(!isset($_SESSION['user_id'])){ //Ovaj USERID je tvoj neki podatak koji si dodjelio provjerom dali postoji user u bazi redirect('login.php'); // ako ne postoji sesija, automatski ide na login.php } ?>

www.elitesecurity.org/print/343736

7/8

22.03.2010
Nadam se da je to to ;)

Register,login,logout - php tutorial

Web aplikacije

Register,login,logout - php tutorial
[ http://www.elitesecurity.org/t343736 ] C opyright (C ) 2001-2010 by www.elitesecurity.org. All rights reserved.

www.elitesecurity.org/print/343736

8/8

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close