allora ragazzi... io sono partito da questa funzione ke funziona perfettamente per il login:
Codice PHP:
<?php
//dati per il login
$login_user="m3xican";
$pass_user="189bbbb00c5f1fb7fba9ad9285f193d1"; //passwd="prova"
$redirect="http://localhost:8888/forum/p1.php";
//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 user e passwd da login
if(IsSet($_POST['posted_username']) && IsSet($_POST['posted_password']))
{
if($login_user==($_POST['posted_username']) && $pass_user==md5($_POST['posted_password']))
$_SESSION['user']=$_POST['posted_username'];
}
//creazione cookie per login automatico
if(IsSet($_POST['ricorda']) && IsSet($_SESSION['user']))
{
$cok=md5($login_user)."%%".$pass_user;
setcookie("sav_user",$cok,time()+31536000);
}
//logout
if($_GET['logout']==1)
{
$_SESSION=array(); // Desetta tutte le variabili di sessione.
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 passwd 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)
$_SESSION['user']=$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");
?>
<HTML>
<HEAD>
</HEAD>
<BODY>
<?php
$PHPSESSID=session_id();
if(!IsSet($_SESSION['user'])) //non siamo loggati, pagina di login
{
if($_GET['nocookie']==1) //i cookie sono off e si vuole ricordare il login
print("Spiacente, ma con i cookie disabilitati non posso fare i miracoli ;)
Attivali se vuoi ricordare il tuo login.
");
print("
<FORM METHOD=POST ACTION=\"p1.php\">
username:
<INPUT TYPE=TEXT SIZE=20 NAME=posted_username>
password:
<INPUT TYPE=PASSWORD SIZE=20 NAME=posted_password>
ricordami: <INPUT TYPE=CHECKBOX NAME=ricorda VALUE=1>
<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Loggami\">
");
if(!IsSet($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID
print("<INPUT TYPE=HIDDEN NAME=PHPSESSID VALUE=$PHPSESSID>");
print("</FORM>");
}
else //siamo loggati pagina riservata
{
$username=$_SESSION['user'];
print("Il tuo ID ?: $PHPSESSID
");
print("Sei loggato come: $login_user
");
print("<A HREF=\"p1.php?logout=1\">logout</A>");
}
?>
</BODY>
</HTML>
la volevo cambiare in modo da renderla fattibile con un DB in mysql.... e ho fatto cosi:
Codice PHP:
<?php
//dati per il login
include 'funzdb.php';
$redirect="http://localhost:8888/forum/p.php";
//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 user e passwd da login
if(IsSet($_POST['posted_username']) && IsSet($_POST['posted_password']))
{ $connut=connetti();
$recset=mysql_db_query("my_toog","select * from utenti") or die( "Errore query classe: " . mysql_error() );
$numrec=mysql_affected_rows();
for($i=0;$i<$numrec;$i++)
{$login_user=mysql_result($recset,$i,"nick");
$pass_user=mysql_result($recset,$i,"pass");
echo $login_user.$pass_user."
";
if($login_user==($_POST['posted_username']) && $pass_user==sha1(md5($_POST['posted_password']))) {
//inserisce in log
$_SESSION['user']=$_POST['posted_username'];
$user=$_SESSION['user'];
$ip=$_SERVER['REMOTE_ADDR'];
$dataEntr=@time();
$query = mysql_query("SELECT id FROM utenti WHERE nick='$user'",$connut) or die( "Errore ricerca pass: " . mysql_error() );
$info = mysql_fetch_assoc($query);
$id=$info['id'];
$ora=ora($dataEntr);
$query1="INSERT INTO log (`idut`,`nick`,`ip`,`data`,`ora`) VALUES('$id','$user','$ip',CURDATE(),'$ora')";
mysql_db_query("my_toog",$query1);
}
}
disconnetti($connut);
}
//creazione cookie per login automatico
if(IsSet($_POST['ricorda']) && IsSet($user))
{
$cok=md5($user)."%%".$_POST['posted_password'];
setcookie("sav_user",$cok,time()+31536000);
}
//logout
if(IsSet($_GET['logout']) && $_GET['logout']==1)
{
$_SESSION=array(); // Desetta tutte le variabili di sessione.
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 passwd 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);
$connut=connetti();
$recset=mysql_db_query("my_toog","select * from utenti") or die( "Errore query classe: " . mysql_error() );
$numrec=mysql_affected_rows();
for($i=0;$i<$numrec;$i++)
{$login_user=mysql_result($recset,$i,"nick");
$pass_user=mysql_result($recset,$i,"pass");
echo $login_user.$pass_user."
";
if($cok_user==md5($login_user) && $cok_pass==$pass_user)
$_SESSION['user']=$cook_user; }
disconnetti($connut);
}
//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");
//ora attuale
function ora($ora)
{$ora = @time();
$b=$ora/60;
$sec=$ora%60;
$c=$b/60;
$min=$b%60;
$ora=$c%24;
if($ora>21)
{if($ora==22) $ora=0;
if($ora==23) $ora=1;
if($ora==24) $ora=2;
}
else $ora=$ora+2;
$tot=$ora.":".$min.":".$sec;
return $tot;
}
?>
<HTML>
<HEAD>
</HEAD>
<BODY>
<?php
$PHPSESSID=session_id();
if(!IsSet($_SESSION['user'])) //non siamo loggati, pagina di login
{
if(IsSet($_GET['nocookie']) && $_GET['nocookie']==1) //i cookie sono off e si vuole ricordare il login
print("Spiacente, ma con i cookie disabilitati non posso fare i miracoli ;)
Attivali se vuoi ricordare il tuo login.
");
print("
<FORM METHOD=POST ACTION=\"p.php\">
username:
<INPUT TYPE=TEXT SIZE=20 NAME=posted_username>
password:
<INPUT TYPE=PASSWORD SIZE=20 NAME=posted_password>
ricordami: <INPUT TYPE=CHECKBOX NAME=ricorda VALUE=1>
<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Loggami\">
");
if(!IsSet($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID
print("<INPUT TYPE=HIDDEN NAME=PHPSESSID VALUE=$PHPSESSID>");
print("</FORM>");
}
else //siamo loggati pagina riservata
{
$username=$_SESSION['user'];
print("Il tuo ID ?: $PHPSESSID
");
print("Sei loggato come: $username
");
print("<A HREF=\"p.php?logout=1\">logout</A>");
}
?>
</BODY>
</HTML>
il problema è ke non mi salva nulla nel cookie (e quindi non funziona il tasto ricordami) e non funziona il logout, o meglio funziona ma nn mi rimanda alla pagina di login km dovrebbe fare.... potete aiutarmi?