Buongiorno, oggi vi proporrò una strana nonché curiosa cosa che mi accade con PHP 5, credetemi non so più cosa fare.. Premetto, sto lavorando su un sito nel Hosting Altervista il problema però è nel LOGIN e nel riconoscimento dell’utente nell’area Privata con PHP 5 poichè con PHP 4 funziona.
Dunque iniziamo, io ho la pagina LOGIN (login.php) seguente:
Poi la pagina MAIN (main.php):
Mentre le pagine interne dopo il LOGIN hanno tutte questo codice posto in alto prima di ogni cosa:
Dov'è he sbaglio?
Perchè in PHP 5 non mi riconosce l'utente e mi dice UTENTE INESISTENZE.
Dunque iniziamo, io ho la pagina LOGIN (login.php) seguente:
PHP:
<form action="main.php" method="post">
<table cellpadding="3" cellspacing="3" width="200">
<tr onmouseover="this.className = 'hlt';" onmouseout="this.className = 'hlu';" class="hlu">
<td><div align="center">Nome:</div></td>
<td><div align="left">
<input type="text" name="pg" id="pg" />
</div></td>
</tr>
<tr onmouseover="this.className = 'hlt';" onmouseout="this.className = 'hlu';" class="hlu">
<td><div align="center">Pass:</div></td>
<td><div align="left">
<input type="password" name="pass" id="pass" max="32" />
Poi la pagina MAIN (main.php):
PHP:
require_once("percorso mio per recupera i dati di connessione al DB"); //connessione al db
$giorno=date('j');
$mese=date('M');
if($mese=="Jan"){$meseOK="Gennaio";}
if($mese=="Feb"){$meseOK="Febbraio";}
if($mese=="Mar"){$meseOK="Marzo";}
if($mese=="Apr"){$meseOK="Aprile";}
if($mese=="May"){$meseOK="Maggio";}
if($mese=="Jun"){$meseOK="Giugno";}
if($mese=="Jul"){$meseOK="Luglio";}
if($mese=="Aug"){$meseOK="Agosto";}
if($mese=="Sep"){$meseOK="Settembre";}
if($mese=="Oct"){$meseOK="Ottobre";}
if($mese=="Nov"){$meseOK="Novembre";}
if($mese=="Dec"){$meseOK="Dicembre";}
$ora=date('H:i');
$anno=date('Y');
$data="$giorno"." $meseOK"." $anno"." $ora";
$data2="$giorno"." $meseOK"." $anno"." $ora";//Calcolo la data testuale
$control1=mysql_query("SELECT * FROM user WHERE nome='".$pg."' AND password='".$pass."'");//selezione utente da db
$pgnum=mysql_num_rows($control1);
$control=mysql_fetch_array($control1);
$ip=$_SERVER["REMOTE_ADDR"]; //recupero l'ip
if($pgnum!="1"){ //controllo se il pg esiste
header("Location: php_errori/utente_inesistente.php");
}else{
if($control[ban]=="1"){
header("Location: php_errori/utente_bannato.php");
}else{
if ($control[connesso]=="1"){
header("Location: php_errori/utente_collegato.php");
}else{
if(($ip==$control[ip]) OR ($control[connesso]=="0")){
session_start();
session_register("nome della sessione");
$_SESSION['nome'] = $control[nome];
$user = mysql_real_escape_string($_POST['pg']);
$user = htmlentities ($_POST['pg']);
$pass = mysql_real_escape_string($_POST['pass']);
$pass = htmlentities ($_POST['pass']);
$user=$_SESSION['nome'];
$now=time();//recupero time
$insert=mysql_query("INSERT INTO accessi (nome,data,data2,ip,stato) VALUES ('".$user."','".$data."',NOW(),'".$ip."','entrato')");//inserisci accesso
$update=mysql_query("UPDATE user SET time='".$now."', luogo='Mappa', luogo_a='Mappa', ullacc='".$data2."', connesso='1', ip='".$ip."', ultimaexp = '".$now."' WHERE nome='".$user."'");//aggiorno valori
header('Location: main2.php', true);//mando la prima pagina
}}}}
?>
Mentre le pagine interne dopo il LOGIN hanno tutte questo codice posto in alto prima di ogni cosa:
PHP:
session_start();
require_once('includiamo il collegamento con il DB');
require_once('include/controllo_sessione.php');
if((session_is_registered(nome della sessione))&&($_SESSION['nome'])){
$row=mysql_fetch_array(mysql_query("SELECT * FROM user WHERE nome='".$user."'"));
Dov'è he sbaglio?
