[PHP][Pitanje]Login sistem

Započeo V_More, Februar 22, 2013, 19:34:27 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Pozdrav, interesuje me kako da napravi ovo za login sistem, znaci da ukucas username i password i prebaci te na neku stranicu ?

Evo kako sam ja napravio :


<?phpinclude("config.php");$username = $_POST['loginUsername'];$passwordreal = mysql_query("SELECT Password FROM users WHERE Username = '$username'");session_start();if(isset($_POST['loginSubmit'])){$password = $_POST['loginPassword'];if ( $password == $passwordreal ){     $_SESSION['loginSubmit'] = true;    header('Location: profile.php');    exit;} elseecho "Unesi tacan Nick i Password.";?>



Ovo je sve sto imam i nalazi se na jedinoj trenutno stranici koju imam, gdje je ta login forma.
Last nick: Vectro64

Nauci osnove php-a, nemoj uzimati gotove wanabe skripte koje su pune sigurnosnih propusta...

Nemos samo tako polje od post arraya korisitit, bez da ga filtriras...

Kod tebe ako username bude jednako: ' AND 1=1 DROP
ce obrisati tablicu...

Zato zasuci rukave, prouci http://en.wikipedia.org/wiki/Cross-site_scripting i napravi sigurni login

Citao sam to Dude, gledao sam 5-7 Tutova kako napravit i jos toliko da bude siguran login, protiv SQL injection i slicno, pls ako moze samo kod, to je pet minuta  :(
Last nick: Vectro64

Citat: V_More poslato Februar 23, 2013, 11:08:42 PRE PODNE
Citao sam to Dude, gledao sam 5-7 Tutova kako napravit i jos toliko da bude siguran login, protiv SQL injection i slicno, pls ako moze samo kod, to je pet minuta  :(
a da onda naucis smisleno citati?

nema tu univerzalnog koda, sve ovisi sta zelis napraviti, zato jos ti jednom kazem, zasuci rukave, nitko ti nece napraviti nista umjesto tebe...

Citat: Dude poslato Februar 23, 2013, 11:42:53 PRE PODNE
Citat: V_More poslato Februar 23, 2013, 11:08:42 PRE PODNE
Citao sam to Dude, gledao sam 5-7 Tutova kako napravit i jos toliko da bude siguran login, protiv SQL injection i slicno, pls ako moze samo kod, to je pet minuta  :(
a da onda naucis smisleno citati?

nema tu univerzalnog koda, sve ovisi sta zelis napraviti, zato jos ti jednom kazem, zasuci rukave, nitko ti nece napraviti nista umjesto tebe...

Ali evo od kako sam postavio vo pa do sadpokusavam i ne ide mi. Trazio sam po netu jos toga literature neke za PHP i slicno ali nikako nmg da skontam gdje sam pogrijesio i sto mi ne radi ....
Last nick: Vectro64

ovo sto si ti uradio moze lako da se hakuje, evo primer kako bih ja odradio

<?phpsession_start();//pokreces sesiju (sesija mora biti startovana pre bilo kakvoh headera)include("config.php");//ucitavas podatke o bazi i konektujes se na njuif(isset($_POST['loginSubmit'])){//ukoliko klijent klikne na "Login" dugme	//ovde formatujes kakv kveri zeils da ti bude	$query = sprintf("SELECT * FROM `User` WHERE `Name` = '%s' AND `Password` = '%s';", mysql_real_escape_string($_POST['loginUsername']), md5($_POST['loginPassword']));	//mysql_real_escape_string koristimo da me bi dosto do SQL injection tako da ako neko napise AND 1=1 DROP ne odradi to kao query	//vec da trazi username 'AND 1=1 DROP'	//md5 je hash password posto nikada lozinke ne treba da se cuvaju kao originali vec kao enkriptovani string	$result = mysql_query($query);//ovde storujemo podatke koje je kveri vratio	if(mysql_num_rows($result)){//mysql_num_rows vraca broj rezultata iz baze		//ako mysql_num_rows ne vrati 0 onda ce da se odradi sledece		$_SESSION['loginSubmit'] = true;//definisemo sesiju "loginSubmit" kao "true" sto znaci da je logovan		//negde u ostatku koda ces raditi proveri if($_SESSION['loginSubmit']) ako nije ulogovan vratice false i nece uci u if		$_SESSION['loginDatas'] = mysql_fetch_assoc($result);//ovde cuvamo podatke klijenta izvucene iz baze		//Ako na primer imamo u tabeli `Users` polja `Name`, `Password`, `Date`, `Age`		//onda ce $_SESSION['loginDatas'] da sadrzi pod arraye `Name`, `Password`, `Date`, `Age`		//kada bi var_dump-ovao celu sesiju "loginDatas" dobio bi sledece		//$_SESSION['loginDatas']['Name'], $_SESSION['loginDatas']['Password'], $_SESSION['loginDatas']['Date'], $_SESSION['loginDatas']['Age']		header('Location: profile.php');//ovde redirektujemo klijenta na profil page	}else 'Unesi tacan nick i password';//ukoliko podatci nisu tacni ispis gresku}?>


<form method="post">
<label for="loginUsername">Username:</label>
<input type="text" name="loginUsername" id="loginUsername" /><br />
<label for="loginPassword">Password:</label>
<input type="passwod" name="loginPassword" id="loginPassword" /><br />
<input type="submit" name="loginSubmit" id="loginSubmit" value="Login" />
</form>

Poslednja Izmena: Mart 05, 2013, 10:35:28 PRE PODNE od t0xIc_S
t0xIc_S anonymous connections...

Citat: t0xIc_S poslato Mart 05, 2013, 10:21:49 PRE PODNE
ovo sto si ti uradio moze lako da se hakuje, evo primer kako bih ja odradio

<?phpsession_start();//pokreces sesiju (sesija mora biti startovana pre bilo kakvoh headera)include("config.php");//ucitavas podatke o bazi i konektujes se na njuif(isset($_POST['loginSubmit'])){//ukoliko klijent klikne na "Login" dugme	//ovde formatujes kakv kveri zeils da ti bude	$query = sprintf("SELECT * FROM `User` WHERE `Name` = '%s' AND `Password` = '%s';", mysql_real_escape_string($_POST['loginUsername']), md5($_POST['loginPassword']));	//mysql_real_escape_string koristimo da me bi dosto do SQL injection tako da ako neko napise AND 1=1 DROP ne odradi to kao query	//vec da trazi username 'AND 1=1 DROP'	//md5 je hash password posto nikada lozinke ne treba da se cuvaju kao originali vec kao enkriptovani string	$result = mysql_query($query);//ovde storujemo podatke koje je kveri vratio	if(mysql_num_rows($result)){//mysql_num_rows vraca broj rezultata iz baze		//ako mysql_num_rows ne vrati 0 onda ce da se odradi sledece		$_SESSION['loginSubmit'] = true;//definisemo sesiju "loginSubmit" kao "true" sto znaci da je logovan		//negde u ostatku koda ces raditi proveri if($_SESSION['loginSubmit']) ako nije ulogovan vratice false i nece uci u if		$_SESSION['loginDatas'] = mysql_fetch_assoc($result);//ovde cuvamo podatke klijenta izvucene iz baze		//Ako na primer imamo u tabeli `Users` polja `Name`, `Password`, `Date`, `Age`		//onda ce $_SESSION['loginDatas'] da sadrzi pod arraye `Name`, `Password`, `Date`, `Age`		//kada bi var_dump-ovao celu sesiju "loginDatas" dobio bi sledece		//$_SESSION['loginDatas']['Name'], $_SESSION['loginDatas']['Password'], $_SESSION['loginDatas']['Date'], $_SESSION['loginDatas']['Age']		header('Location: profile.php');//ovde redirektujemo klijenta na profil page	}else 'Unesi tacan nick i password';//ukoliko podatci nisu tacni ispis gresku}?>


<form method="post">
<label for="loginUsername">Username:</label>
<input type="text" name="loginUsername" id="loginUsername" /><br />
<label for="loginPassword">Password:</label>
<input type="passwod" name="loginPassword" id="loginPassword" /><br />
<input type="submit" name="loginSubmit" id="loginSubmit" value="Login" />
</form>



dobar nacin, premda treba jos ubaciti nekih stvari... uglavnom nije potrebno spremati sve podatke u session, osobito ako ih je puno, samo su osnovni potrebni + trebalo bi spremiti npr IP u session i ako se promijeni da ga odlogira, cisto sigurnosno, ako netko ukrade session id...

+ da ne bude problem sa headerima:
if(!session_start()) die;

Pazi to sam stavio ako bas hoces sve da izvuces o tom korisniku radi daljih provera, a nema potrebe da se radi provera IP adrese, posto kada promenis svoju ip adresu server vise ne konta da je ta sesija za tebe i automatski je $_SESSION['loginSubmit'] == false :D

Da dodam, ako neko uspe da ukrade unikatan id sesije, taj nema sta da trazi na normalnim sajtovima :D
Poslednja Izmena: Mart 06, 2013, 09:59:09 PRE PODNE od t0xIc_S
t0xIc_S anonymous connections...

Citat: t0xIc_S poslato Mart 06, 2013, 09:58:14 PRE PODNE
Pazi to sam stavio ako bas hoces sve da izvuces o tom korisniku radi daljih provera, a nema potrebe da se radi provera IP adrese, posto kada promenis svoju ip adresu server vise ne konta da je ta sesija za tebe i automatski je $_SESSION['loginSubmit'] == false :D

Da dodam, ako neko uspe da ukrade unikatan id sesije, taj nema sta da trazi na normalnim sajtovima :D

ali ne promijeni se, session id se drzi kao cookie u browseru, ne ovisi o ip-u, zato i je dobra ip provjera ako ne zelis duzi period trajanja logina + puno je sigurnije...

Očito da te više ne zanima, ti si još jedan od onih koji kad se nečega sjete, odma to žele, iako im za 2 dana to više nije bitno, LOCK

About

Welcome to the community!