Entra

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)
++++++++++++++++++

Zeppe79
16-07-2015, 11:16
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