Codice sbagliato nel login

ciao ragazzi...

cosa c'è di sbagliato in qusto codice?

PEchè vi spiego... mi crea le sessioni... anche se metto una user e una pass inventate.. perchè? non dovrebbe....

//INIZIO CONTROLLI LOGIN

session_start ();

include "../dati.php" ;

mysql_select_db($db_name, $db);

if ( $_GET[action]=="login")

{

$sql_controllo="SELECT password,id FROM iscritti WHERE username = '$_POST[username]' ";

$result_controllo = mysql_query($sql_controllo);

$controllo = mysql_fetch_array($result_controllo);

if ( $controllo[password] == "$_POST[password]" ) {

$_SESSION[loggato]="si";

$_SESSION[username]="$_POST[username]";

$_SESSION[id_user]="$controllo[id]";

setcookie ("username", "$_POST[username]",time()+31536000,"/") ;

setcookie ("password", "$_POST[password]",time()+31536000,"/") ;

}

}

elseif ( $_GET[action]=="logout")

{

$_SESSION[loggato]="no";

session_destroy();

setcookie ("username", "", time() - 31536000,"/");

setcookie ("password", "", time() - 31536000,"/");

}

if ( $_SESSION[loggato]=="si"  ) { $login="ok"; }

elseif ( isset($_COOKIE[username]) AND isset ($_COOKIE[password]) )

{

$sql_controllo="SELECT password,id FROM iscritti WHERE username = '$_COOKIE[username]' ";

$result_controllo = mysql_query($sql_controllo);

$controllo = mysql_fetch_array($result_controllo);

if ( $controllo[password] == "$_COOKIE[password]" ) {

$_SESSION[loggato]="si";

$_SESSION[username]="$_COOKIE[username]";

$_SESSION[id_user]="$controllo[id]";

$login="ok";

}

else

{

$login="no";

}

}

else { $login="no"; }

if ( $login=="ok" )  { $sql_user="SELECT * FROM iscritti WHERE id = '$_SESSION[id_user]' ";

$result_user = mysql_query($sql_user);

$users = mysql_fetch_array($result_user); }

//FINE CONTROLLI LOGIN

inviato 9 anni fa
pazzomania
X 0 X

Ciao,

ci sono diversi errori, sia concettuali che di linguaggio:

- $controllo[password] == "$_POST[password]"

e molti altri: non mettere la variabile POST tra virgolette...non serve!

- gli operatori logici in PHP sono && || ! , non AND OR NOT

- fai un escape delle variabili che passi alle query (vedi post precedenti)

- controlla che le query abbiano dato almeno una riga come risultato..altrimenti il fetch del risultato potrebbe darti un errore

prova a correggere queste cose, inoltre le sessioni vengono scritte perchè session_destroy non cancella le variabili di sessione: http://tw2.php.net/session_destroy . ti conviene rimuovere con unset le variabili di sessione loggato, username, password. Spero questo sia di aiuto!

 :bye:

risposto 9 anni fa
robertomigli
X 0 X

Una precisazione: gli operatori logici SONO anche and or not ma in minuscolo.

risposto 9 anni fa
LonelyWolf
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda