problema form login

  • Creatore Discussione Creatore Discussione sbuzza
  • Data di inizio Data di inizio

sbuzza

Utente Attivo
15 Ott 2013
45
1
8
Italia
ciao a tutti,
ho creato il form per effettuare il login ma non mi mantiene i dati inseriti nella sessione, cioè non appena ricarico la pagina i dati del login spariscono come se non ci fosse nulla e non posso accedere alle altre pagine a causa di questo...

mi allego anche il codice, aiuto pls
PHP:
<?php
if($_SESSION['username']!="")
    echo "Sei loggato con ".$_SESSION['username'];
?>

<form action="gioco-a-premi.php" method="post">
Username:
<input type="text" name="username" size="10" value="username" />
<br>
Password:</label>
<input type="password" name="password" size="10" value="password" />
<br>
<input type="submit" name="Login"  value="Login" />
<input type="submit" name="Logout"  value="Logout" />
<?php
if($_POST['Logout']=='Logout')
{
  print "Arrivederci ".$_SESSION['username'];
  session_start();
   session_destroy();
	
	}
?>
inoltre nelle pagine ho incluso il file sessione.inc con scritto:
PHP:
<?php
session_start();
if(($_SESSION["username"]=="") || ($_SESSION["password"]==""))
header ("Location: home_page.php");
?>
 
ciao
nella pagina del form non vedo session_start(), tutte le pagine che usano sessioni devono iniziare con session_start()

vedo che usi il session_start dentro l'if del post quindi quindi quando usi la sessione nel primo if la session_start() non esiste
sensa xonsiderare che la metti dopo un print, l'inzializzazione deve avvenire prima di qualsiasi output html (salvo modifica del flusso)
 
Ultima modifica:
ciao
nella pagina del form non vedo session_start(), tutte le pagine che usano sessioni devono iniziare con session_start()

vedo che usi il session_start dentro l'if del post quindi quindi quando usi la sessione nel primo if la session_start() non esiste
sensa xonsiderare che la metti dopo un print, l'inzializzazione deve avvenire prima di qualsiasi output html (salvo modifica del flusso)

scusami mi ero dimenticato di scrivere anche questo:
PHP:
<?php
session_start();
include "DB.inc"; 
if($_POST['Login']=='Login')
{
$username=$_POST["username"];
$password=$_POST["password"];
$q="select username,password from utente where username='$username' and password='$password';";
$t=mysql_query($q,$connessione);
if(mysql_num_rows($t)!=0)
{$r=mysql_fetch_object($t);

$_SESSION["username"]=$r->username;
$_SESSION["password"]=$r->password;
}

else {print "<font color=”#FFFFFF” size=”7″>Login non riuscito</font></br>"; 
print "<font color=”#FFFFFF” size=”7″>Controlla i dati emessi</font></br>";  
}
}
?>
 
ciao
prima di passare alla sessione verifica bene gli input, poi rimane che non vedo nella pag del form alla prima riga session_start()
se provi questo mini script ti rendi conto di come risulta la query
PHP:
<?php
//.....
//simulo l'invio da post da parte di malentenzionato
$username="pinco";
$password= "pallo' OR username=''  OR password='";
$q="select username, password from utente where username='$username' and password='$password'";
echo "$q<br />";//$t=mysql_query($q,$connessione); 
//.....
?>
output dell'echo: select username, password from utente where username='pinco' and password='pallo' OR username='' OR password=''

che andrà dentro a mysql_query
ed è solo un piccolo esempio, quindi sia l'user che la pass devono essere prima verificate
poi vedo che usi le vecchie istruzioni mysql obsolete, passa alle mysqli o alla classe pdo
 

Discussioni simili