mysql_num_rows PROBLEM

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

dlsmoker
Average Member
Mesaje: 64
Membru din: Vin Noi 04, 2011 5:43 pm

mysql_num_rows PROBLEM

Mesajde dlsmoker » Mie Noi 09, 2011 5:17 pm

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



last1devil
Average Member
Mesaje: 60
Membru din: Mar Sep 21, 2010 8:14 pm
Localitate: Spain
Contact:

Mesajde last1devil » Mie Noi 09, 2011 8:41 pm

Be creative!

dlsmoker
Average Member
Mesaje: 64
Membru din: Vin Noi 04, 2011 5:43 pm

Mesajde dlsmoker » Joi Noi 10, 2011 12:55 am

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given
Aceiasi eroare. Sa inteleg ca nu reuseste sa faca legatura cu DB, sau care e problema?

w3apps
Average Member
Mesaje: 156
Membru din: Joi Sep 02, 2010 11:41 pm

Mesajde w3apps » Joi Noi 10, 2011 5:05 am

.... 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!

Avatar utilizator
iluc
Junior Member
Mesaje: 39
Membru din: Dum Mai 29, 2011 11:49 pm
Localitate: Focsani
Contact:

Mesajde iluc » Joi Noi 10, 2011 6:16 am

In primul rand foloseste aptana studio ca editor text, verifica daca ai scris coloanele din mysql corect, ce am patit eu, am facut un tabel in mysql, la numele coloanei am scris numele acesteia cu sptiu si de aceia nu functiona si daca tot nu reusesti poti copia codul din phpmyadmin.

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Joi Noi 10, 2011 9:55 am

vezi ca ai pus ' in loc de ` in sql - e o diferenta, vizuala, logica si de pozitionare pe tastatura. E indicat sa folosesti ` deci, nu renunta la obicei/idee dar nu folosi apostroful, ca nu e acelasi lucru.

dlsmoker
Average Member
Mesaje: 64
Membru din: Vin Noi 04, 2011 5:43 pm

Mesajde dlsmoker » Joi Noi 10, 2011 1:47 pm

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.

quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Mesajde quadmachine » Joi Noi 10, 2011 4:15 pm


w3apps
Average Member
Mesaje: 156
Membru din: Joi Sep 02, 2010 11:41 pm

Mesajde w3apps » Joi Noi 10, 2011 5:29 pm


dlsmoker
Average Member
Mesaje: 64
Membru din: Vin Noi 04, 2011 5:43 pm

Mesajde dlsmoker » Joi Noi 10, 2011 5:50 pm


quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Mesajde quadmachine » Joi Noi 10, 2011 6:01 pm


Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Joi Noi 10, 2011 6:41 pm


dlsmoker
Average Member
Mesaje: 64
Membru din: Vin Noi 04, 2011 5:43 pm

Mesajde dlsmoker » Vin Noi 11, 2011 11:47 am

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

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Vin Noi 11, 2011 1:15 pm

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.

dlsmoker
Average Member
Mesaje: 64
Membru din: Vin Noi 04, 2011 5:43 pm

Mesajde dlsmoker » Vin Noi 11, 2011 3:00 pm



Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 24 vizitatori