Autor | Zpráva | ||
---|---|---|---|
Cup Profil |
#1 · Zasláno: 2. 12. 2009, 21:58:04
Chci si napsat jednoduchou funkci na přihlašování, ... napsal sem jen malý kousek
function login($email, $pass, $spojeni){ $result = mysql_query ("SELECT idUser FROM user WHERE emailUser = '".addslashes($email)."' AND hesloUser='".md5($pass)."'"; if(!$dotaz){showerror();} $num_rows = mysql_num_rows($result); if($num_rows==1) return true; else return false; } jako je to jednoduchy, ale nevim co tam více vymýšlet ... nebo je nějaký důvod proč bych to neměl použít? díky |
||
Nox Profil |
#2 · Zasláno: 2. 12. 2009, 22:01:27
nemáš ukončenou závorku u query, $num_rows je trochu navíc...ale hlavně ta funkce nijak nepřihlašuje... jen autentizuje
|
||
Cup Profil |
#3 · Zasláno: 2. 12. 2009, 22:04:51
dobře za chvilku to skusím znovu :)
|
||
Cup Profil |
#4 · Zasláno: 2. 12. 2009, 22:08:17
function login($email, $pass, $spojeni){ $result = mysql_query ("SELECT * FROM user WHERE emailUser = '".addslashes($email)."' AND hesloUser='".md5($pass)."'"); if(!$dotaz){showerror();} $row = mysql_fetch_array($result); if(isset($row["idUser"])) { Session_Start(); $_SESSION["idUser"]=$row["idUser"]; $_SESSION["jmenoUser"]=$row["jmenoUser"]; $_SESSION["prijmeniUser"]=$row["prijmeniUser"]; $_SESSION["hodnostUser"]=$row["hodnostUser"]; $_SESSION["cas_relace"]=Time()+3600; return true; } else {return false;} } Tak ještě jednou, můžu toto bezpečně používat? |
||
Cup Profil |
#5 · Zasláno: 2. 12. 2009, 22:09:46
jde mi hlavne o tento řádek
if(isset($row["idUser"])) co mi to hodí při NULLovém záznamu? false? ... pokud ano tak nevidím důvod proč to nepoužívat |
||
Majkl578 Profil |
#6 · Zasláno: 2. 12. 2009, 22:11:04
[#1]
Kromě toho co řekl Nox: Funkce addslashes neprovede dostatečné ošetření řetězce. K tomu slouží funkce mysql_real_escape_string. Pak také nechápu proč je povinný parametr $spojeni, když není nikdy použit. Další věc je $result a $dotaz, nemá to být nahodou jedno a to samé? Není. Proč to nenapsat takto? function login($email, $password){ $result = mysql_query ("SELECT `idUser` FROM `user` WHERE `emailUser` = '" . mysql_real_escape_string($email) . "' && `hesloUser` = '" . md5($pass) . "'"; if(!$result) { showerror(); } return mysql_num_rows($result) === 1; } |
||
Cup Profil |
#7 · Zasláno: 2. 12. 2009, 22:14:56 · Upravil/a: Cup
Majkl578:
jo to ošetření vstupu mě taky zajímalo nevěděl jsem jakou fci použít, díky ... jo s tím nepoviným parametrem je to překlep psal sem to narychlo ... tak sem to tam zapoměl mám to takto ... function login($email, $pass, $spojeni){ $result = mysql_query ("SELECT * FROM user WHERE emailUser = '".mysql_real_escape_string($email)."' AND hesloUser='".md5($pass)."'", $spojeni); if(!$result){showerror();} $row = mysql_fetch_array($result); if(isset($row["idUser"])) { Session_Start(); $_SESSION["idUser"]=$row["idUser"]; $_SESSION["jmenoUser"]=$row["jmenoUser"]; $_SESSION["prijmeniUser"]=$row["prijmeniUser"]; $_SESSION["hodnostUser"]=$row["hodnostUser"]; if($row["hodnostUser"]==1){$_SESSION["casRelace"]=Time()+3600;} return true; } else {return false;} } |
||
Jan Tvrdík Profil |
#8 · Zasláno: 2. 12. 2009, 23:22:58
Cup:
Trochu jsem to zpřehlednil a drobně upravil: function login($email, $pass, $spojeni = null) { $result = mysql_query(" SELECT * FROM user WHERE emailUser = '" . mysql_real_escape_string($email) . "' AND hesloUser='" . md5($pass) . "' ", $spojeni); if (!$result) showerror(); if (mysql_num_rows($result) === 1) { $row = mysql_fetch_array($result); Session_Start(); // tohle bych dal jinam, na globálnější úroveň $_SESSION["idUser"] = $row["idUser"]; $_SESSION["jmenoUser"] = $row["jmenoUser"]; $_SESSION["prijmeniUser"] = $row["prijmeniUser"]; $_SESSION["hodnostUser"] = $row["hodnostUser"]; if ($row["hodnostUser"] == 1) $_SESSION["casRelace"] = Time() + 3600; return true; } return false; } |
||
Cup Profil |
#9 · Zasláno: 2. 12. 2009, 23:28:17
děkuji ... ale jednu věc nechápu ... jaktože $spojeni = null ? potřbuji ho přece aby se dotaz vykonal nebo ne? ... spojeni je spojeni s databází. jinak ... na globálnější úroveň myslíte kam?
|
||
Jan Tvrdík Profil |
#10 · Zasláno: 3. 12. 2009, 07:36:51
Cup:
„jaktože $spojeni = null“ Čekal jsem, že to funkce mysql_query bude akceptovat jako neuvedený parametr, ale bohužel to nejde. Asi bude tedy lepší, když ten parametr spojení úplně vyhodíš. Nečekám, že budeš pracovat s více než jedním spojením zároveň. „potřebuji ho přece, aby se dotaz vykonal“ Nepotřebuješ, druhý parametr funkce mysql_query je nepovinný. Pokud ho neuvedeš, použije se aktuální spojení. „na globálnější úroveň myslíte kam?“ Do nějakého skriptu, který se spouští vždy a zajišťuje takové ty obvyklé věci jako připojení k DB apod. |
||
Cup Profil |
#11 · Zasláno: 3. 12. 2009, 09:25:50
Jan Tvrdík:
Ok druhý parametr funkce mysql_query je nepovinný to jsem nevěděl, díky Do nějakého skriptu, který se spouští vždy a zajišťuje takové ty obvyklé věci jako připojení k DB apod. to jsem si myslel, díky moc |
||
Časová prodleva: 14 let
|
0