-
Website
http://www.informaticafriuli.com -
Original page
http://www.informaticafriuli.com/programmazione-friuli-informatica/php-friuli/php-tutorial-come-creare-un-semplice-sistema-di-login-20070403.html -
Subscribe
All Comments -
Community
-
Top Commenters
-
Gaetano Costa
1 comment · 1 points
-
robertaamato
1 comment · 1 points
-
Affordable SEO Services
1 comment · 1 points
-
Flavio Copes
1 comment · 1 points
-
Giulio Gaudiano
1 comment · 1 points
-
-
Popular Threads
Infatti senza un prima di Member Login ed il relativo tag di chiusura dopo lo script non esegue nessuna autenticazione.
Ciao
In poche parole volevo dire che, senza un tag form con attributi action="checklogin.php" method="post" che racchiude tutta la table di immissione nome utente e password, lo script non esegue nessuna autenticazione.
Scusami per i commenti precedenti
lo script php funzionava, fino a quando è stato scritto qui.
Purtroppo l'editor a nostra disposizione ha cancellato parte di codice.
Vedo di sistemarlo il prima possibile.
Ciao
Roberto
ritorna errori:
session.bug_compat_42 e session.bug_compat_warn
In questo caso spero che Roberto, l' autore della guida, possa aggiornare l' articolo.
$myusername=$_POST['myusername'];
e
session_register("myusername");
E' possibile disabilitare l'errore da php.ini, ma è sicuramente consigliabile utilizzare nomi diversi.
Inoltre, per evitare un SQl-injection, è necessario modificare la query come segue
$sql="SELECT * FROM $tbl_name WHERE username='".addslashes($myusername)."' and password='".addslashes($mypassword)."'";
La funzione addslashes (dovrebbe) applica uno carattere di escape prima di ogni carattere potenzialmente pericoloso per mysql.
Nello script in questione, utilizzando come utente e come password
' OR ''='
vengo autenticato correttamente, in quanto la query diventa:
SELECT * FROM $tbl_name WHERE username='' OR ''='' and password='' OR ''=''
Condizione sempre vera; si viene quindi autenticati,anche se con user e password non "ottimali".
Così, in caso di accesso al database, non sarebbe possibile (a meno di verifiche a forza bruta) risalire alla password dell'utente (che poi così è libero di dimenticarla sul post-it sopra monitor !)
CREATE TABLE `members` (
`id` INT(4) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(65) NOT NULL DEFAULT '',
`password` VARCHAR(32) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
--
-- Dumping data for table `members`
--
INSERT INTO `members` VALUES (1, 'admin', md5('admin'));
In questo modo la password "admin" viene convertita in md5, una stringa di 32 caratteri univoca. Nel caso di "admin" risulta:
21232f297a57a5a743894a0e4a801fc3
La query dovrà diventare:
$sql=”SELECT * FROM $tbl_name WHERE username=’”.addslashes($myusername).”‘ and password=’”.md5($mypassword).”‘”;
Ora, se un hackerino riuscisse a risalire ad dato salvato (md5), magari con una query malevola che stampasse il contenuto della tabella di autenticazione, comunque non potrebbe accedere, in quanto non esiste (forza bruta a parte!) sistema per passare da md5 a parola chiave.
ho installato lo script ed ho un problema...
L'autenticazione sembra funzionare solo con la prima pagina login_success.php, ma quando vado a fare la verifica nelle altrepagine che voglio progeggere da autenticazione, vengo rediretto alla pagina di login.
Dov'è l'inghippo?
Thanx
Dany
Diciamo che mi era sembrato più logico mettere un ID come chiave primaria anche per quello che riguarda gli indici.. poi se ci sono modi migliori parliamone :)
E se fiosse stato complicato?
E per Nicola che non lo considera troppo semplice direi di tener presente che non è mai troppo tardi per cambiare e rinnovarsi ...
ho testato tutto ma non va
errori: manca lo script registrayione