- Home
- Categorie
- Coding e Sistemistica
- PHP
- php problema con le sessioni.
-
php problema con le sessioni.
Ragazzi ho un problema con la mia funzione login, non riesco a portarmi la sessione da una pagina all'altra.
nella mia pagina index.php ho il seguente form:
[PHP]
<form id="login-form" action="gestione.php" method="post">
<fieldset>
<legend>Entra</legend><label for="login">Username</label> <input type="text" id="login" name="user_accesso" style="text-transform:lowercase;"/> <div class="clear"></div> <label for="password">Password</label> <input type="password" id="password" name="pass_accesso"/> <div class="clear"></div><br /> <input type="submit" style="margin: -20px 0 0 287px;" class="button" name="commit" value="Entra"/> </fieldset> </form>
[/PHP]
dove mi richiamo la mia pagina gestione.php
[PHP]<?php
if(!isset($_SESSION["user111"])){
include 'login.php';
}
if(!isset($_SESSION["user111"])){
echo "<script>document.location.href='index.php'</script>";
echo "<script>'Content-type: application/octet-stream'</script>";
}
?>
[/PHP]dove la mia pagina login.php è la seguente:
[PHP]<?php
$redirect="index.php";
if (isset($_GET['username']) && isset($_GET['email']) )
{
$login_user_form=$_GET['username'];
$login_user_form=mysql_real_escape_string ($login_user_form);$email=$_GET['email']; $email=mysql_real_escape_string ($email); $pass=@mysql_query("SELECT pass FROM utenti WHERE email=\"$email\" ") or die(mysql_error()); $pass_user = mysql_fetch_array($pass); $pass_user_form=$pass_user[0]; } else { $login_user_form=$_POST['user_accesso']; $login_user_form=mysql_real_escape_string ($login_user_form); $pass_user_form=$_POST['pass_accesso']; } $pass=@mysql_query("SELECT pass,abilita FROM utenti WHERE user_name=\"$login_user_form\" ") or die(mysql_error()); $pass_user = mysql_fetch_array($pass);
//gestione della sessione nel caso in cui i cookie sono disabilitati
if(isset($_POST['PHPSESSID']) && !isset($_COOKIE['PHPSESSID'])){
$PHPSESSID=$_POST['PHPSESSID'];
header("Location: $redirect?PHPSESSID=$PHPSESSID"); //si ricarica la pagina di login
}session_start(); //si inizia o continua la sessione
//controllo login e passwprd se sono vuoti
if ($login_user_form=='' or pass_user_form=='' ){
echo ("<script> alert('Inserisci Nome Utente e\o Password!') </script>");
echo "<script>document.location.href='index.php'</script>";
echo "<script>'Content-type: application/octet-stream'</script>";}
//controllo user e passwd da login
if(isset($login_user_form) && isset($pass_user_form)){
if($pass_user[0]==$pass_user_form and $pass_user[1]==1)
{$_SESSION['user111']=$login_user_form;}
if($pass_user[0]==$pass_user_form and $pass_user[1]==0)
{echo ("<script> alert('Devi convalidare la registrazione, cliccando sul link ricevuto via email.')</script>");
echo "<script>document.location.href='index.php'</script>";
echo "<script>'Content-type: application/octet-stream'</script>"; }
if($pass_user[0]!=$pass_user_form)
{echo ("<script> alert(' Nome Utente o Password errata!') </script>");
echo "<script>document.location.href='index.php'</script>";
echo "<script>'Content-type: application/octet-stream'</script>";}
}//creazione cookie per login automatico
if(isset($_POST['ricorda']) && isset($_SESSION['user111'])){
$cok=md5($login_user)."%%".$pass_user[0];
setcookie("sav_user",$cok,time()+31536000);
}//logout
if(@$_GET['logout']==1){
unset($_SESSION);
$_SESSION=array(); // Desetta tutte le variabili di sessione.
unset($_SESSION);
session_destroy(); //DISTRUGGE la sessione.
if(isset($_COOKIE['sav_user'])) //se presente si distrugge il cookie di login automatico
setcookie("sav_user",$cok,time()-31536000);
header("Location: $redirect"); //si ricarica la pagina di login
exit; //si termina lo script in modo da ritornare alla schermata di login
}//controllo user e password da cookie
if(isset($_COOKIE['sav_user'])){
$info_cok=$_COOKIE['sav_user'];
$cok_user=strtok($info_cok,"%%");
$cok_pass=strtok("%%");
setcookie("sav_user",$info_cok,time()+31536000);
if($cok_user==md5($login_user) && $cok_pass==$pass_user[0])
$_SESSION['user111']=$login_user;
}//caso in cui si vuole ricordare il login, ma i cookie sono off
if(!isset($_COOKIE['PHPSESSID']) && isset($_POST['ricorda']))
header("Location: $redirect?nocookie=1");$PHPSESSID=session_id(); ?>
<?php
if(!isset($_SESSION['user111'])){ //non siamo loggati, pagina di login
if(@$_GET['nocookie']==1){ //i cookie sono off e si vuole ricordare il login
print("<script>alert('I cookie sono disabilitati. Attivali per il login automantico!')</script>");
echo "<script>document.location.href='index.php'</script>";
echo "<script>'Content-type: application/octet-stream'</script>";}
?>
<?php
if(!isset($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID
print("<input type="hidden" name="phpsessid" value="$PHPSESSID" />");}
else{
$username=$_SESSION['user111'];
$id_utente_1 = mysql_query("SELECT id FROM utenti WHERE user_name="$username" ") or die(mysql_error());
$id_utente = mysql_fetch_array($id_utente_1);
echo $id_utente['id'];
}
?><div align="center">
<form action="gestione.php?logout=1" method="post">
<input id="loginsubmit" type="submit" value="Logout" >
</form>
</div>
[/PHP]il problema è che se poi mi richiamo un'altra pagina del tipo gestione.php?page=2 mi dice che non sono loggato, come mai? sto impazzendo