salve a tutti, sto cercando di sviluppare un sito su apache con database postgresql. ho un problemino con la pagina di login. eccola:
Codice PHP:
<?php
function controlloDB($usr, $pass){
$conn_string = "host=localhost port=5432 dbname=x user=y password=z";
$dbconn = pg_connect($conn_string) or die ("Impossibile connettersi al database PostGres --> " . pg_last_error($conn));
$result2 = pg_query($dbconn,'SET CHARACTER SET utf8');
$sql = "SELECT count(*),nickname FROM utenti where nick_norm='".$usr."' AND password='".$pass."' GROUP BY id_utente";
$result = pg_query($dbconn,$sql);
while ($row = pg_fetch_row($result)) {
if ($row[0]>0){
echo "corretto";
$_SESSION['user']=$row[1];
$login_user=$row[1];
}
else {
echo "utente e/o password sbagliati";
}
}
pg_close($dbconn);
return $login_user;
}
//dati per il login
$redirect="/login.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['user']) && IsSet($_POST['psw']))
{
$pass= md5($_POST['psw']);
$usr= $_POST['user'];
$usr= strtolower($usr);
$login_user= controllaDB($usr,$pass);
}
//creazione cookie per login automatico
if(IsSet($_POST['ricorda']) && IsSet($_SESSION['user']))
{
$cok=md5($usr)."%%".$pass;
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);
$login_user= controllaDB($cok_user,$cok_pass);
}
//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();
if(!IsSet($_SESSION['user'])) //non siamo loggati, pagina di login
{
if($_GET['nocookie']==1) //i cookie sono off e si vuole ricordare il login
echo "Spiacente, ma con i cookie disabilitati non posso fare i miracoli ;)
Attivali se vuoi ricordare il tuo login.
";
echo "
<FORM METHOD=POST ACTION=\"login.php\">
username:
<INPUT TYPE=TEXT NAME=user>
password:
<INPUT TYPE=PASSWORD NAME=psw>
ricordami: <INPUT TYPE=CHECKBOX NAME=ricorda VALUE=1>
<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Login\">
";
if(!IsSet($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID
echo "<INPUT TYPE=HIDDEN NAME=PHPSESSID VALUE=$PHPSESSID>";
echo "</FORM>";
}
else //siamo loggati pagina riservata
{
$username=$_SESSION['user'];
echo "Il tuo ID ?: $PHPSESSID
";
echo "Sei loggato come: $username
";
echo "<A HREF=\"login.php?logout=1\">logout</A>";
}
?>
ora non capisco perché cliccando sul bottone del form cerca di ricaricarmi la pagina di login ma non la carica. sapete aiutarmi? grazie.