*jancis38* Posted October 29, 2008 Report Share Posted October 29, 2008 Iesakat kā labāk veidot login skriptu. Kādu paroles glabāšanas veidu labāk izmantot (hašošanu). Nu un visu pārējo, kas ar loginu saistīts. Nebūtu slikti arī kādu pamācību normālu iesviest. Link to comment Share on other sites More sharing options...
samuray Posted October 29, 2008 Report Share Posted October 29, 2008 ar šo nepietiek? http://www.olate.co.uk/articles/185 Link to comment Share on other sites More sharing options...
lazda2 Posted October 29, 2008 Report Share Posted October 29, 2008 gfx-deream bija laba video pamaaciiba tikai uz dazaam dienaam gfx ir off Link to comment Share on other sites More sharing options...
X ID Posted October 29, 2008 Report Share Posted October 29, 2008 Man šķiet, ka te pirms kāda laiciņa es izplūdu garās pārdomās par lietotāju autorizēšanu un datu glabāšanu. Link to comment Share on other sites More sharing options...
_Yu-Gi-Oh__ Posted October 30, 2008 Report Share Posted October 30, 2008 datus glabā ar mysql parolei izmanto md5 Link to comment Share on other sites More sharing options...
X ID Posted October 30, 2008 Report Share Posted October 30, 2008 _Yu-Gi-Oh__, tas ir pārāk vispārīgi. Ja vakarā būs kāds brīvs brītiņš, tad uzbliezīšu kādu lasāmvielu par šo tēmu. Link to comment Share on other sites More sharing options...
ExTent Posted October 30, 2008 Report Share Posted October 30, 2008 Taisīju pēc tās pamācības un visur kur bija jābūt () tur rādījās || so baigi gruti saprast Link to comment Share on other sites More sharing options...
_Yu-Gi-Oh__ Posted November 2, 2008 Report Share Posted November 2, 2008 Reģistrācija (registracija.php) http://paste.php.lv/8265?lang=php Login fails (login.php) http://paste.php.lv/8266?lang=php Vietā, kur gribi redzēt savu login kluci <? displayLogin(); ?> Link to comment Share on other sites More sharing options...
wap1337 Posted November 2, 2008 Report Share Posted November 2, 2008 , beidzot kāds arī kaut ko gudru uzmočīja p.s. tev 404 (error) posti Link to comment Share on other sites More sharing options...
X ID Posted November 2, 2008 Report Share Posted November 2, 2008 šo vietu gan es nesauktu par "gudru" PHP <? // ... $query = sprintf("INSERT INTO lietotaji (lietotajvards, parole, epasts, ip) VALUES ('$lvards', '$md5parole', '$epasts', '$ip');", quote_smart($lvards), quote_smart($parole), quote_smart($epasts), quote_smart($ip)); // ... ?> Link to comment Share on other sites More sharing options...
wap1337 Posted November 2, 2008 Report Share Posted November 2, 2008 varēj vel htmlspecial chars , stripslashes un visus pārējos , kr4 varej vairāk aizsargāties ne? Link to comment Share on other sites More sharing options...
X ID Posted November 3, 2008 Report Share Posted November 3, 2008 (edited) 1) derētu palasīt, ko dara funkcija sprintf() 2) kāda jēga mainīgo apstrādāt pēctam, kad tas jau ir ievietots stringā? EDIT: Bišķi atvainojos, nepamaniju, ka gandrīz sprintf() jēga ir saprasta, izņemot vienu. Šajā gadījumā stringā tiek jau gatava mainīgie un no tām stringa apstrādes funkcijām tur jēga nav nekāda. Ja būtu rakstīts šādi, tad viss ok: PHP <? // ... $query = sprintf("INSERT INTO lietotaji (lietotajvards, parole, epasts, ip) VALUES ('%s', '%s', '%s', '%s');", quote_smart($lvards), quote_smart($parole), quote_smart($epasts), quote_smart($ip)); // ... ?> Edited November 3, 2008 by X ID Link to comment Share on other sites More sharing options...
sPankijs Posted November 8, 2008 Report Share Posted November 8, 2008 Sava index.php faila pashaa augshaa ieraksti sekojoshu kodu: <?php #iekļauj konfigurāciju include("../config.php"); error_reporting(E_ALL); #sāk sesiju session_start(); if(isset($_GET['darbiiba']) and $_GET['darbiiba'] == 'iziet' and isset($_SESSION['ieligojies'])) { session_destroy(); header("location: index.php"); } if(isset($_POST['username']) and isset($_POST['password'])) { $username = quote_smart($_POST['username']); $password = quote_smart(md5($_POST['password'])); $result = mysql_query("SELECT COUNT(*) FROM lietotaaji WHERE niks = $username AND parole = $password"); if(mysql_result($result,0,'COUNT(*)') > 0) { session_regenerate_id(); #ieliek sesijā datus $_SESSION['ieligojies'] = 1; $id = mysql_result(mysql_query("SELECT id FROM lietotaaji WHERE niks = $username AND parole = $password"),0,'id'); $_SESSION['mans_id'] = $id; } } ?> Taja pasa faila atrodi vietu kur tev vajag lai ir login box un ieraksti sekojosu kodu: <?php } ?> </div> <div id="sidebar"> <?php if(!isset($_SESSION['ieligojies'])) { ?> <form action="" method="post"> <fieldset> <legend>Login</legend> <label for="username">Username:</label> <input type="text" name="username" id="username" value=""/> <label for="password">Password:</label> <input type="password" name="password" id="password" value=""/> <div class="submit"> <input type="submit" name="login" value="Login" /> </div> </fieldset> </form> <?php } else echo 'čau'; ?> Protams neaizmirsti izveidot savaa datubaazee tabulu : lietotaaji ar 5 ailem EXRTA id int 10 auto_increment TE IEKEKSEE NO KREISAS PUSES 1. niks varchar 255 parole varchar 32 epasts varchar 255 tips tinyint 1 Link to comment Share on other sites More sharing options...
X ID Posted November 8, 2008 Report Share Posted November 8, 2008 Pirms atbildi - izlasi jautājumu. Viņš neprasa gatavu nekvalitatīvu skriptu, bet teoriju. Link to comment Share on other sites More sharing options...
sPankijs Posted November 8, 2008 Report Share Posted November 8, 2008 Ja vins beigas raksta, ka varetu ari kadu pamacibu ieviest, tad viss atrakais veids ir iedot vinam login kodu. Un kas tev pret to, ja cilvekam mazak jamocas? Link to comment Share on other sites More sharing options...
X ID Posted November 9, 2008 Report Share Posted November 9, 2008 Es uzskatu, ka tu piedrazo topiku (: Link to comment Share on other sites More sharing options...
*jancis38* Posted November 11, 2008 Author Report Share Posted November 11, 2008 Uzcepu kautko tādu: PHP <?php session_start (); include( "konfiguracija.php"); // šeit glabājas db dati. $lietotajvards = $_POST["lietotajvards"]; $parole = $_POST["parole"]; $sql = "SELECT * FROM $dbtabula WHERE lietotajvards='$lietotajvards' and parole='$parole'"; $rezultats = mysql_query($sql); $counts = mysql_num_rows($rezultats); if( $counts==1) { session_register("lietotajvards"); session_register("parole"); echo "ielogojies"; } else { echo "neielogojies"; ?> Viss notiek kā vajag! Ievadu valīdus datus - bliežu pa login, un viņš man parāda: echo "ielogojies"; Un kad es refrešoju lapu, viņš man parāda: echo "neielogojies"; Šis: session_register("lietotajvards"); session_register("parole"); tiek pilnībā ignorēts. Vai arī es esmu izdarijis kautko nepareizi? Link to comment Share on other sites More sharing options...
X ID Posted November 12, 2008 Report Share Posted November 12, 2008 Funkcija session_register() nedara to, ko tu gribi, lai viņa darītu. Tev jādefinē sesijas mainīgais: PHP <? $_SESSION [$key]=$value; ?> Bet principā lietotājvārdu un paroli glabāt sesijā nav pārāk gudri. Kapēc? Sesijas id ir publiski pieejama informācija (sevišķi, ja tas tiek padots caur urli un urlis nosūtīts kādam draugam, draugs tiks autorizēts kā tu). Es ieteiktu sesijā vai cepumā pieglabāt kautkādu uz haļavu ģenerētu mainīgo. Datubāzē pieglabājam šī mainīgā un vēl kautkā (kautkādi mainīgie, kas katram datoram būs savi) hašu, pēctam salīdzinam cepuma vai sesijas un šo unikālo mainīgo hešu ar datubāzē ierakstīto. Izkatās tas ~ PHP <? function login($uname,$passw,$exp=0){ global $_SERVER; $sql="SELECT id FROM `users` WHERE i_username='".mysql_real_escape_string($uname)."' AND i_password='".md5($passw)."' LIMIT 1"; $res=mysql_query($sql); if( mysql_num_rows($res)<1){ return false; } $row=mysql_fetch_object($res); $hash=md5(time()+rand(100000,999999)); $save=md5(md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']).$hash); mysql_query("UPDATE `users` SET i_hash='".mysql_real_escape_string($save)."' WHERE id=".intval($row->id)); setcookie("authid",$hash,$exp,"/"); } function authorize(){ global $_COOKIE,$_SERVER; $search=md5(md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']).$_COOKIE['authid']); $sql="SELECT * FROM `users` WHERE i_hash='".mysql_real_escape_string($search)."' LIMIT 1"; $res=mysql_query($sql); return mysql_num_rows($res)<1?false:mysql_fetch_object($res); } function logout(){ global $_COOKIE,$_SERVER; $search=md5(md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']).$_COOKIE['authid']); mysql_query("UPDAET `users` SET i_hash='' WHERE i_hash='".mysql_real_escape_string($search)."'"); setcookie("authid","",-1,"/"); } ?> Link to comment Share on other sites More sharing options...
*jancis38* Posted November 17, 2008 Author Report Share Posted November 17, 2008 Es īsti neiebraucu. Kā tad īsti jauzstāda tā sessija? Link to comment Share on other sites More sharing options...
Kavacky Posted November 18, 2008 Report Share Posted November 18, 2008 "session_start();"? Link to comment Share on other sites More sharing options...
*jancis38* Posted January 19, 2009 Author Report Share Posted January 19, 2009 Varētu paturpināt padiskutēt par šo. Itkā esmu ticis ar to login skriptu galā, un viss strādā kā nākas. Tik kā pieņemsim atšķirt lietotāju no administrātora? Piešķirt visādas tiesības katram lietotājam, un tādā garā? Link to comment Share on other sites More sharing options...
X ID Posted January 19, 2009 Report Share Posted January 19, 2009 Tajā pašā datubāzē tabulā pieglabā attiecīgo levelu/flagus. Pārsvarā tiek lietotas 2 pieejas: 1) Tiek dotas tiesības darīt kaut kādas darbības, ja tavs līmenis ir vienāds vai lielāks ar nepieciešamo return $level>=$x ? true : false; 2) Tiek dotas tiesības darīt kaut kādu darbību, ja konkrētajam lietotājam ir nepieciešamais flags return in_array($x,$flags) ? true : false; Link to comment Share on other sites More sharing options...
*jancis38* Posted January 19, 2009 Author Report Share Posted January 19, 2009 Skaidrs, sapratu. Uzbūru kautko līdzīgi strādājošu, thanks. Un kā veidot lietotāja profilu, lai to var apskatīt? Šitas gan man nav skaidrs, ir reģistrēto lietotāju liste, kā skatīt lietotāja profilu? Datubāzē lauka ID man nav, neuzskatu par nepieciešamu viņu lietot, nekā savādāk, kā pēc lietotajvārda izvēlēties neatliks. Ceru uz kādiem piemēriem, lai ir skaidrs kā to darīt. Link to comment Share on other sites More sharing options...
X ID Posted January 19, 2009 Report Share Posted January 19, 2009 Es gan būtu katram lietotājam piekšķīris id... Nu ja tev primārā atslēga ir, piemēram, lietotājvārds, tad padod to un selektē. Piemērā, piemēram, user.php?name=test (exit un visu pārējo liec kā tev vajag, vienkārši exit neizskatīsies smuki (: ) PHP <? if(empty($_GET['name'])){ exit; } $sql="SELECT * FROM `users` WHERE username='".mysql_real_escape_string($_GET['name'])."' LIMIT 1"; $res=mysql_query($sql); if( mysql_num_rows($res)<1){ echo 'Jūzeris neeksistē'; exit; } $row=mysql_fetch_object($res); var_dump($row); ?> Link to comment Share on other sites More sharing options...
TI-83+ Silver Posted January 27, 2009 Report Share Posted January 27, 2009 (edited) publiski pieejama informācija (sevišķi, ja tas tiek padots caur urli un urlis nosūtīts kādam draugam, draugs tiks autorizēts kā tu). Nunu, nav jau tik traki. Jaa, PHP publiski tiek suutiits tikai sesijas ID. Bet arii Tavus datus var nosniffot, un Tev security balstaas tikai uz $_SERVER['REMOTE_ADDR'] un $_SERVER['HTTP_USER_AGENT'] nemainiibu. Kameer tie paliek vieni un tie pashi, un visi publiskie dati ir identiski paartverti, tikmeer tavs skripts arii autorizeesies. Vienkaarshaak ir tajaa pashaa sesijaa pieseivot abus REMOTE_ADDR un HTTP_USER_AGENT, no kuriem sesija tika palaista/izveidota. Un tikliidz shamie sesija laikaa mainaas - nesakriit sesijaa saglabaatais remote_addr & agent - taa sesiju destroyot un prasiit ielogoties pa jaunu. Efekts taads pats. Tikai tavaa gadiijumaa ir veelviens papildus cuukijs, t.i., sesija+cuukijs, kas ir arii vieniigais uzlabojums. Edited January 27, 2009 by TI-83+ Silver Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now