mysql_num_rows PROBLEM
Moderatori: Moderatori, Start Moderator
mysql_num_rows PROBLEM
Imi cer scuze daca deschid alt topic, dar am revenit cu o problema. Dupa ce am facut scriptu pentru inregistrare si merge, acuma am facut unu pentru autentificare/login, dar oricat il modific imi da eroarea asta. Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given
Asta e config'u:
<?php
session_start();
set_time_limit(0);
error_reporting(E_ALL);
// Informatii baza de date
$dburl = "localhost";
$dbuser = 'root';
$dbpassword = 'ceva';
$dbname = 'ceva';
$connect = mysql_connect($dburl,$dbuser,$dbpassword)
or die("Connection to database failed");
mysql_select_db($dbname, $connect) or die("Daabase not found");
?>
Acesta este login.php:
<?php
require_once(config.php);
$username = $_POST['username'];
$password = $_POST['password'];
$reqSQL = "SELECT * FROM 'ovidiu'.'users' WHERE
username='"$username]."' AND password='".md5($password]).'"';
$result = mysql_query($reqSQL);
$count = mysql_num_rows($result);
if($count == 1)
{
$_SESSION['logged'] = 'yes';
echo 'Login Successful';
}
else
{
echo 'Username or password is incorrect';
}
?>
Codul e unu foarte simplu si mic, acuma ma intereseaza cum rezolv problema, sau daca exista alta metoda prin care pot sa fac login. Multumesc
Asta e config'u:
<?php
session_start();
set_time_limit(0);
error_reporting(E_ALL);
// Informatii baza de date
$dburl = "localhost";
$dbuser = 'root';
$dbpassword = 'ceva';
$dbname = 'ceva';
$connect = mysql_connect($dburl,$dbuser,$dbpassword)
or die("Connection to database failed");
mysql_select_db($dbname, $connect) or die("Daabase not found");
?>
Acesta este login.php:
<?php
require_once(config.php);
$username = $_POST['username'];
$password = $_POST['password'];
$reqSQL = "SELECT * FROM 'ovidiu'.'users' WHERE
username='"$username]."' AND password='".md5($password]).'"';
$result = mysql_query($reqSQL);
$count = mysql_num_rows($result);
if($count == 1)
{
$_SESSION['logged'] = 'yes';
echo 'Login Successful';
}
else
{
echo 'Username or password is incorrect';
}
?>
Codul e unu foarte simplu si mic, acuma ma intereseaza cum rezolv problema, sau daca exista alta metoda prin care pot sa fac login. Multumesc
-
last1devil
- Average Member
- Mesaje: 60
- Membru din: Mar Sep 21, 2010 8:14 pm
- Localitate: Spain
- Contact:
.... asa .... sa o luam cu inteputul:
1. Eroare "Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given" iti spune ca query-ul nu se executa (este o diferenta intre un query care nu iti intoarce rezultate si unul care nu merge). Eu de fiecare data copiez codul SQL in phpmyadmin pentru ca deobicei acolo zice unde apare problema .... poate nu e scris numele unei colane bine poate ai pierdut o ghilimea etc ... N erori
2. Din moment ce nu iti apare: die("Connection to database failed"); sau die("Daabase not found"); ... nu es nicio problema la capitul conexiunii.
3. Problema este lq query (mergi la punctul 1.):
$reqSQL = "SELECT * FROM 'ovidiu'.'users' WHERE
username='"$username]."' AND password='".md5($password]).'"';
Daca nu cumva ai modificat tu vreo setare (nici nu stiu daca se poate dar ca sa fie ...) SELECT * FROM 'ovidiu'.'users' ghilimelele alea nu au ce cauta acolo .... tu poate ai vazut ceva prin phpmyadmin dar chestia e ca nu erau ghilimele erau: ````` dastea ..... pentru numele campurilor si al tabelelor se folosesc caractere ca alea de mai sus ... iar pentru valori se folosesc ghilimele.
Sper sa te ajute, bafta!
1. Eroare "Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given" iti spune ca query-ul nu se executa (este o diferenta intre un query care nu iti intoarce rezultate si unul care nu merge). Eu de fiecare data copiez codul SQL in phpmyadmin pentru ca deobicei acolo zice unde apare problema .... poate nu e scris numele unei colane bine poate ai pierdut o ghilimea etc ... N erori
2. Din moment ce nu iti apare: die("Connection to database failed"); sau die("Daabase not found"); ... nu es nicio problema la capitul conexiunii.
3. Problema este lq query (mergi la punctul 1.):
$reqSQL = "SELECT * FROM 'ovidiu'.'users' WHERE
username='"$username]."' AND password='".md5($password]).'"';
Daca nu cumva ai modificat tu vreo setare (nici nu stiu daca se poate dar ca sa fie ...) SELECT * FROM 'ovidiu'.'users' ghilimelele alea nu au ce cauta acolo .... tu poate ai vazut ceva prin phpmyadmin dar chestia e ca nu erau ghilimele erau: ````` dastea ..... pentru numele campurilor si al tabelelor se folosesc caractere ca alea de mai sus ... iar pentru valori se folosesc ghilimele.
Sper sa te ajute, bafta!
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
ok, faza cu mysql_num_rows vad ca s-a rezolvat folosind ` in loc de ' . Multumesc mult
Acuma roblema se prezinta cand trimit password-u cu .md5, adica .md5($_SESSION['password']. Cand fac login si fac select*from .md5('password') imi da eroare, adica IF il considera fals si trece la else, password incorect. Dar daca trimit password-u normal fara .md5 si la fel in login fac select*from $password, merge bine si ma pot autentifica. Cum rezolv ?
Imi cer scuze dar sunt inca la inceput.
Acuma roblema se prezinta cand trimit password-u cu .md5, adica .md5($_SESSION['password']. Cand fac login si fac select*from .md5('password') imi da eroare, adica IF il considera fals si trece la else, password incorect. Dar daca trimit password-u normal fara .md5 si la fel in login fac select*from $password, merge bine si ma pot autentifica. Cum rezolv ?
Imi cer scuze dar sunt inca la inceput.
-
quadmachine
- Senior Member
- Mesaje: 807
- Membru din: Sâm Iul 10, 2010 4:58 pm
- Localitate: Ploiesti
- Contact:
-
quadmachine
- Senior Member
- Mesaje: 807
- Membru din: Sâm Iul 10, 2010 4:58 pm
- Localitate: Ploiesti
- Contact:
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
Asa nu e bun?
signup.php
<?php
require_once('config.php');
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
$_SESSION['confirm'] = $_POST['confirm'];
$_SESSION['name'] = $_POST['name'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['age'] = $_POST['age'];
$_SESSION['country'] = $_POST['country'];
$_SESSION['username'] = stripslashes($_SESSION['username']);
$_SESSION['password'] = stripslashes($_SESSION['password']);
$_SESSION['confirm'] = stripslashes($_SESSION['confirm']);
$_SESSION['name'] = stripslashes($_SESSION['name']);
$_SESSION['email'] = stripslashes($_SESSION['email']);
$_SESSION['age'] = stripslashes($_SESSION['age']);
$_SESSION['country'] = stripslashes($_SESSION['country']);
$_SESSION['username'] = mysql_real_escape_string($_SESSION['username']);
$_SESSION['password'] = mysql_real_escape_string($_SESSION['password']);
$_SESSION['confirm'] = mysql_real_escape_string($_SESSION['confirm']);
$_SESSION['name'] = mysql_real_escape_string($_SESSION['name']);
$_SESSION['email'] = mysql_real_escape_string($_SESSION['email']);
$_SESSION['age'] = mysql_real_escape_string($_SESSION['age']);
$_SESSION['country'] = mysql_real_escape_string($_SESSION['country']);
if(($_SESSION['username'] == "") || ($_SESSION['password'] == "") || ($_SESSION['confirm'] == "") || ($_SESSION['email'] == "") || ($_SESSION['name'] == "") || ($_SESSION['age'] == "") || (!is_numeric($_SESSION['age'])) || ($_SESSION['country'] == "" ) )
{
echo 'Missing fields or incorrect. <br>
Click <a href="../signup.html">here</a> here to go back.';
}
else
{
echo 'Thank you. <br>
You have been successfully signed up. Click <a href="../index.html">here</a> to go to home page';
$reqSQL = "INSERT INTO `ovidiu`.`users` (`username`, `password`, `email`, `name`, `age`, `country`)
VALUES ('".$_SESSION['username']."', '".$_SESSION['password']."', '".$_SESSION['email']."', '".$_SESSION['name']."', '".$_SESSION['age']."', '".$_SESSION['country']."')";
echo $reqSQL;
mysql_query($reqSQL) or die(mysql_error());;
$_SESSION['username'] = '';
$_SESSION['password'] = '';
$_SESSION['confirm'] = '';
$_SESSION['email'] = '';
$_SESSION['name'] = '';
$_SESSION['age'] = '';
$_SESSION['country'] = '';
}
?>
login.php:
<?php
require_once('config.php');
$_SESSION['username'] = $_POST['username'];
$password = $_POST['password'];
$_SESSION['username'] = stripslashes($_SESSION['username']);
$password = stripslashes($password);
$_SESSION['username'] = mysql_real_escape_string($_SESSION['username']);
$password = mysql_real_escape_string($password);
$reqSQL = "SELECT `username`,`password` FROM `ovidiu`.`users` WHERE
username='".$_SESSION['username']."' AND password='".$password."' LIMIT 1";
$result = mysql_query($reqSQL);
$count = mysql_num_rows($result);
if($count == 1)
{
$_SESSION['logged'] = 'yes';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=secure.php">';
}
else
{
echo 'Username or password is incorrect';
}
?>
In DB password-u tot normal apare, adica nu criptat. Cum imbunatatesc si/sau scurtez din cod cu acelasi rezultat? Cer scuze daca insist
signup.php
<?php
require_once('config.php');
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
$_SESSION['confirm'] = $_POST['confirm'];
$_SESSION['name'] = $_POST['name'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['age'] = $_POST['age'];
$_SESSION['country'] = $_POST['country'];
$_SESSION['username'] = stripslashes($_SESSION['username']);
$_SESSION['password'] = stripslashes($_SESSION['password']);
$_SESSION['confirm'] = stripslashes($_SESSION['confirm']);
$_SESSION['name'] = stripslashes($_SESSION['name']);
$_SESSION['email'] = stripslashes($_SESSION['email']);
$_SESSION['age'] = stripslashes($_SESSION['age']);
$_SESSION['country'] = stripslashes($_SESSION['country']);
$_SESSION['username'] = mysql_real_escape_string($_SESSION['username']);
$_SESSION['password'] = mysql_real_escape_string($_SESSION['password']);
$_SESSION['confirm'] = mysql_real_escape_string($_SESSION['confirm']);
$_SESSION['name'] = mysql_real_escape_string($_SESSION['name']);
$_SESSION['email'] = mysql_real_escape_string($_SESSION['email']);
$_SESSION['age'] = mysql_real_escape_string($_SESSION['age']);
$_SESSION['country'] = mysql_real_escape_string($_SESSION['country']);
if(($_SESSION['username'] == "") || ($_SESSION['password'] == "") || ($_SESSION['confirm'] == "") || ($_SESSION['email'] == "") || ($_SESSION['name'] == "") || ($_SESSION['age'] == "") || (!is_numeric($_SESSION['age'])) || ($_SESSION['country'] == "" ) )
{
echo 'Missing fields or incorrect. <br>
Click <a href="../signup.html">here</a> here to go back.';
}
else
{
echo 'Thank you. <br>
You have been successfully signed up. Click <a href="../index.html">here</a> to go to home page';
$reqSQL = "INSERT INTO `ovidiu`.`users` (`username`, `password`, `email`, `name`, `age`, `country`)
VALUES ('".$_SESSION['username']."', '".$_SESSION['password']."', '".$_SESSION['email']."', '".$_SESSION['name']."', '".$_SESSION['age']."', '".$_SESSION['country']."')";
echo $reqSQL;
mysql_query($reqSQL) or die(mysql_error());;
$_SESSION['username'] = '';
$_SESSION['password'] = '';
$_SESSION['confirm'] = '';
$_SESSION['email'] = '';
$_SESSION['name'] = '';
$_SESSION['age'] = '';
$_SESSION['country'] = '';
}
?>
login.php:
<?php
require_once('config.php');
$_SESSION['username'] = $_POST['username'];
$password = $_POST['password'];
$_SESSION['username'] = stripslashes($_SESSION['username']);
$password = stripslashes($password);
$_SESSION['username'] = mysql_real_escape_string($_SESSION['username']);
$password = mysql_real_escape_string($password);
$reqSQL = "SELECT `username`,`password` FROM `ovidiu`.`users` WHERE
username='".$_SESSION['username']."' AND password='".$password."' LIMIT 1";
$result = mysql_query($reqSQL);
$count = mysql_num_rows($result);
if($count == 1)
{
$_SESSION['logged'] = 'yes';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=secure.php">';
}
else
{
echo 'Username or password is incorrect';
}
?>
In DB password-u tot normal apare, adica nu criptat. Cum imbunatatesc si/sau scurtez din cod cu acelasi rezultat? Cer scuze daca insist
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
Se pare ca ai chiulit de la lectia de array-uri dar ai fost de doua ori la aia de sesiuni?
uite, cum scriu eu in doua randuri ce ai scris tu in 10
[php]<?php
// 1. exista array, exista instructiuni repetitive
$fields = array('username', 'password', 'confirm', 'name', 'email', 'age', 'country');
// 2. nu e nevoie sa scrii in sesiune
foreach($fields as $field) {
$clean[$field] = isset($_POST[$field]) ? mysql_real_escape_string(stripslashes($_POST[$field])) : '';
}
// 3. exista array
$required = array('username', 'password', 'confirm', 'name', 'email', 'age', 'country');
// in cazul tau $required = $fields
$missingFields = false;
foreach($required as $reqField) {
if(empty($clean[$reqField]))
$missingFields = true;
}
if($missingFields) echo 'Vezi ca-ti lipseste ceva';
// 4. nu trebuie sa-i specifici baza de date
// 5. nu se adauga in baza de date parole neencriptate
// nu uita 'sarea', se foloseste si la verificare de login
define ( 'SALT', '$&*@*#@*&(#@');
if (!$missingFields && mysql_query('
INSERT INTO `users`
(`username`, `password`, `email`, `name`, `age`, `country`)
VALUES
( \''.$clean['username'].'\', \''.md5( SALT . $clean['password']).'\', './* etc... */ ' )'
))
echo 'GREAT SUCCESS!';
?>[/php]
sper ca ai inteles ideea.
uite, cum scriu eu in doua randuri ce ai scris tu in 10
[php]<?php
// 1. exista array, exista instructiuni repetitive
$fields = array('username', 'password', 'confirm', 'name', 'email', 'age', 'country');
// 2. nu e nevoie sa scrii in sesiune
foreach($fields as $field) {
$clean[$field] = isset($_POST[$field]) ? mysql_real_escape_string(stripslashes($_POST[$field])) : '';
}
// 3. exista array
$required = array('username', 'password', 'confirm', 'name', 'email', 'age', 'country');
// in cazul tau $required = $fields
$missingFields = false;
foreach($required as $reqField) {
if(empty($clean[$reqField]))
$missingFields = true;
}
if($missingFields) echo 'Vezi ca-ti lipseste ceva';
// 4. nu trebuie sa-i specifici baza de date
// 5. nu se adauga in baza de date parole neencriptate
// nu uita 'sarea', se foloseste si la verificare de login
define ( 'SALT', '$&*@*#@*&(#@');
if (!$missingFields && mysql_query('
INSERT INTO `users`
(`username`, `password`, `email`, `name`, `age`, `country`)
VALUES
( \''.$clean['username'].'\', \''.md5( SALT . $clean['password']).'\', './* etc... */ ' )'
))
echo 'GREAT SUCCESS!';
?>[/php]
sper ca ai inteles ideea.
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 24 vizitatori