Jump to content
php.lv forumi

Vai kverijs ir izpildījies?


daGrevis

Recommended Posts

Sveiki,

Problēma rodas, kad lietotājs cenšas ielogoties ar nepareiziem datiem (t.i. username + password). Datu pareizību pārbauda funkcija combination()...

 

function combination($ID, $password)
{

$query = mysql_query('

	SELECT `ID`
	FROM `users`
	WHERE `ID`="' . $ID . '" AND `password`="' . $password . '"

');

if(mysql_num_rows($query) === 1) {

	return true;

}

}

 

Tad ir funkcija get__ID(), kas no ievadītā username pārveido to kā ID...

 

function get__ID($username)
{

$query = mysql_query('

	SELECT `ID`
	FROM `users`
	WHERE `username`="' . $username . '"

');

return mysql_result($query, 0);

}

 

Un visbeidzot, fails, kurš, ja visam tiek "pass'ots" pāri - ielogo lietotāju sistēmā. =) Fragments...

 

if(!combination(get__ID($_POST['username']), sha1($_POST['password']))) {

$_SESSION['human_error'] = 'The username/password combination is invalid!';
redirect(ROOT . '/login.php');

}

 

Problēma ir tad, kad combinācija neatbilst. Izmet šādu brīdinājumu...

 

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 10 in C:\xampp\htdocs\bliss\includes\functions.php  on line 103

 

Īsti nevaru izdomāt kā lai novērš brīdinājumu. =/ Problēmas funkcijā get__ID(), jo nevar jau saņemt datus, ja tādu nav - tāpēc met brīdinājumu. Vai pareizas ceļš kā to atrisināt būtu '@'??

 

P.S. Par drošību lūdzu neteikt, zinu. =D

Link to comment
Share on other sites

function get__ID($username){
       $query = mysql_query('SELECT id FROM users HERE username="' . mysql_real_escape_string($username) . '"');
       return mysql_num_rows($query) ? mysql_result($query, 0) : false;
}

 

 

Pēcāk:

$id = get__ID($username); //Pieņemam, ka id > 0
if($id){
  echo "Id ir: $id";

}else{
 echo "Šāds id neeksistē"; //id ir false
}

Edited by briedis
Link to comment
Share on other sites

 

 

Varbūt jāpiemin, ka mysql_num_rows atgriezīs false tikai tad, ja padotais mainīgais nebūs resurss (mysql_query rezultāts), kas parasti ir tad, kad ir kļūda kvērijā. Normālā gadījumā atgrieztā vērtība būs >=0...

Link to comment
Share on other sites

if(!combination(get__ID($_POST['username']), sha1($_POST['password']))) {
[...]

 

Nope, nav validēti, funkcijās iet iekšā pa taisno no posta ;)

Edited by emsy
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...