Thread obsoleto creare form per il login

scatenato

Nuovo utente
Autore del topic
13 Aprile 2014
24
0
Miglior risposta
0
ho bisogno di un aiuto ho creato un form per il login in html e il codice php per accedere vi posto il codice e subbito sotto il problema che mi da il browser.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

il problema e il seguente :

se lo lascio cosi come lo vedete mi dice utente non trovato.

se invece cambio questa stringa modificando il segno == 0
con > 0 mi trova l'utente ma anche se sbaglio la pass ho cambio username con uno non registrato mi fa accedere alla pagina riservata.php vi prego di dirmi dove sto sbagliando


PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Premetto che ci sono diversi errori, dalla logica alla sicurezza. Non andrò quindi a correggere tutto il codice ma solo la parte riguardante il login:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
Ho commentato direttamente sul codice e se il database è fatto correttamente non dovresti riscontrare nessun tipo di problema.
 
ho bisogno di un aiuto ho creato un form per il login in html e il codice php per accedere vi posto il codice e subbito sotto il problema che mi da il browser.

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Se > 0 significa che l'utente è stato trovato, quindi è logicamente errato. E' giusto == 0.
Sbagli perchè devi criptare in md5 la password prima di passarla alla query. In più puoi usare l'uguale (=) al posto del "LIKE".

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
(giacché mi sono permesso di metterti qualche commento)

Se posso darti un suggerimento, il sistema di login, così, è molto vulnerabile sia alle SQL injection e probabilmente anche all'XSS.
Controlla le variabili prima di passarle alla query, attento l'asterisco ed i caratteri simili, personalmente uso spesso htmlspecialchars(), ed un'ottima alternativa è htmlentities(), poi dipende anche da quello che devi fare, visto che ti può tornare utile anche addslashes();
 
Ultima modifica:
grazie per aver risposto e voglio dirti che ho provato ma non e cambiato niente,riesco comunque a connettermi con qualsiasi username o password anche se non registrati nel database.
veramente non riesco a capire da dove provenga l'errore,se c'e
 
Con quale codice hai provato? :-P Nel caso probabilmente ci sarà da vedere cosa restituisce la SELECT, anche perché entrambi i controlli che son stati fatti mi sembrano logicamente corretti ad una prima occhiata.
 
Ho copiato il codice cosi come e stato scritto da te e non mi da errore ma chiunque scriva nel form di login viene riportato alla pagina riservata.php quindi loggato anche se non e presente nel db creato
 
Ho copiato il codice cosi come e stato scritto da te e non mi da errore ma chiunque scriva nel form di login viene riportato alla pagina riservata.php quindi loggato anche se non e presente nel db creato
Hai indubbiamente ragione, errore mio, testavo via PDO. :emoji_smiley: Non uso quasi più mysql in quanto deprecato e in effetti ora capisco il perché anche in questa situazione. :-P

Allora nell'if sostituisci, come avete fatto precedentemente tu e Weit, questo:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

E così funziona correttamente, la logica è esattamente come ha spiegato Weit. ;)
 
purtroppo il problema persiste,mi dispiace darti ancora fastidio ma credo che ha questo punto ti incuriosisce sapere dove si trova l'errore.
io ho fatto varie prove e ho notato che probabilmente l'errore e in questa stringa

$sql = "SELECT * FROM registrati WHERE username LIKE '$username' AND password LIKE '$password'";
$result = mysql_query($sql);

if(mysql_num_rows($result) > 0 ) {

se lascio cosi il codice mi dice utente non trovato se cambio con == 0 mi trova username ma non la password quindi posso inserire qualsiasi pass e si logga
credo che sia qui il problema perche nel db il campo accesso diventa 1 appena loggo l'utente e se faccio logout diventa 0 .
spero che tu mi possa dare un ulteriore aiuto perche non riesco veramente ha capire.

- - - Aggiornato - - -

puoi ricontrollare il codice che hai corretto perche cosi da lo stesso problema trova l'utente ma non riconosce la password.
inserrendo qualsiasi password l'utente si logga e viene indirizzato alla pagina riservata.php
 
Sei sicuro di aver salvato le informazioni correttamente nel database? Il problema penso sia quasi sicuramente lì, il codice è corretto. ;) E sì, con == 0 ti logga con qualsiasi cosa inserisci visto che gli dici di non voler corrispondenza nel database. Lo sto testando anche adesso in locale e non ho nessun tipo di problema, cambia solo che non faccio l'UPDATE in quanto non ho ricreato esattamente quella che dovrebbe essere la tabella del tuo database ma questo non cambia la parte di login.

Poi dice che ti trova l'utente... Immagino che sia esattamente il primo degli utenti inseriti nel database a questo punto. Quindi questo sembrerebbe un problema nella query ma quella scritta qui è indubbiamente giusta. Ergo o hai copiato male qualcosa o c'è un errore nel database che hai creato o nei dati memorizzati, il codice di per sé funziona correttamente. :-P