View Full Version : [php mysql] problema
eyesevil7777777
14-07-2015, 15:48
salve ragazzi hho un problema nel creare un piccolo login con database , vi lascio il codice php :)
<?php
$username=$_POST['username'];
$password=$_POST['password'];
$password=md5($password);
if($username && $password){
$connessione=mysql_connect('localhost','root','') or die("Impossibile connettersi");
mysql_select_db('users',$connessione);
$query="SELECT * FROM 'users'";
echo $query;
$risultato=mysql_query($query,$connessione);
echo $risultato;
$numero=mysql_num_rows($risultato);
echo $numero;
}else{
die("Prego inserire username e password per autentificarsi.");
}
?>
mi riporta questo errore
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in "percorso" on line 17
Il problema è che non mi fa visualizzare il numero colonne in poche parole mmh
vittorio130881
14-07-2015, 16:28
se metti count(*)
perchè senno ti da tutto il db o sbaglio?
dyablo96
14-07-2015, 17:12
sicuramente con la select che hai fatto non vedi il numero degli elementi, devi utilizzare l'operatore count come ha detto vittorio130881
così ottieni solo il numero di elementi nella tabella e ti basta stampare il singolo risultato che ti da la query
eyesevil7777777
14-07-2015, 19:34
ragazzi ho risolto, ma ora ho trovato un altro problema , se vado in phpadmin nel databave vedo per esempio la password in md5 72a86026abb289634ec64d7f3b544f , la password sarebbe 'paola' codificata, quando vado a fare la ricerca pero dal form e codifco tramite php la parola paola mi esce 72a86026abb289634ec64d7f3b544f0c che è diversa alla fine, aggiunge 2 caratteri mmh, quindi la query SELECT * FROM users WHERE Username='paola' AND Password='72a86026abb289634ec64d7f3b544f0c' mi va a non trovare l'utente paola, dove risiede l'inghippo?
dyablo96
14-07-2015, 20:13
anche io ho utilizzato l'md5 per la codifica della password, non mi ha mai dato questo problema, prova a reinseire un nuovo utente.
io codificavo direttamente con la funzione php durante la registrazione e poi nel form quando dovevo effettuare il login
DavideDaSerra
14-07-2015, 22:55
Ma la query, così com'era scritta ti dava il risultato, perché secondo me c'erano delle ' ' di troppo in select * from 'users', in questo caso il parser sql interpretava 'users' come stringa e non come nome tabella, quindi la query restituiva FALSE e num_rows andava in pappa perché voleva un result anziché un boolean.
nota:
inoltre tutt'al più non ti stampava il numero di righe (tuple) del result-set, non di colonne (attributi)
domanda: quando hai generato l'hash e ricontrolli le password sei sicuro di cassare i line-feed carriage-return (\r\n) o (\n) dalla password che analizzi)
per chiarezza
+++++++++++++++++
inserimento password
pass=md5("pippo\n")
verifica della corrispondenza
pass=md5("pippo")
In questo caso avresti un errore, che potrebbe scappare inosservato,
dovresti passare la stringa a una funzione che la 'sanitarizzi'
cancellando tutti i caratteri che non sono glifi (ovvero caratteri che generano una macchia d'inchiostro)
++++++++++++++++++
ragazzi ho risolto, ma ora ho trovato un altro problema , se vado in phpadmin nel databave vedo per esempio la password in md5 72a86026abb289634ec64d7f3b544f , la password sarebbe 'paola' codificata, quando vado a fare la ricerca pero dal form e codifco tramite php la parola paola mi esce 72a86026abb289634ec64d7f3b544f0c che è diversa alla fine, aggiunge 2 caratteri mmh, quindi la query SELECT * FROM users WHERE Username='paola' AND Password='72a86026abb289634ec64d7f3b544f0c' mi va a non trovare l'utente paola, dove risiede l'inghippo?
Hai verificato la lunghezza del campo password nel db ? Perché credo che tu gli abbia assegnato VARCHAR 30, mentre misembra che la codifica md5 produca 32 caratteri
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.