Newsgroup: it.comp.www.php
Titolo: Problemi con $_SESSION

Salve,
ho uno strano problema con le sessioni. Ho due siti su Aruba, uno su 
server Windows e l'altro su server Linux. Ho creato uno script di 
autenticazione che usa le sessioni per salvare dei valori, in particolare 
una variabile boolean "Login" che viene impostata a true se l'utente 
viene riconosciuto come Amministratore ed impostato a false nel caso 
contrario.
Ora, lo script funziona correttamente sul sito residente su server Linux, 
mentre non funziona più sul server Windows. Lo script che si accerta del 
riconoscimento dell'utente, alla fine del controllo, imposta la variabile 
Login e rispedisce l'utente alla pagina chiamante. Ma alla pagina 
chiamante non risulta impostata la variabile Login (sul server Windows) e 
non riesco più ad accedere all'amministrazione del sito.
Qualche idea ?
Francesco
-- 
http://www.itp-news.com

Ciao!
Anche io ho avuto parecchi problemi con le sessioni su aruba.
Uno script che in locale (php su win) e in remoto su miohosting/test
(php linux aruba) non funzionava su nuovosito php linux sempre aruba.
Ho scritto all'assistenza e dopo avermi fatto postare il codice hanno
detto che non era un loro problema su come io scrivevo il codice...
PS stessa cosa con un form che invia una mail. Stesso hoster, tipo di
hosting(linux) ma server diverso, risultato: su uno funziona
sull'altro no... a questo punto seguirò il suggerimento di Andrea B.
sul suo blog.



E cioè ? Quale consiglio ? Quale blog ?
Anche a me su Aruba da dei problemi nella spedizione di mail. A volte 
funziona a volte non funziona, con gli stessi dati e con lo stesso script.
Francesco
-- 
http://www.itp-news.com

Non voglio fare pubblicità di hosting ma del blog che seguo si ...
http://www.andreabeggi.net/
 c'è un link che ti porta ad un hosting che
oltre tutto ha php 5 e di default 5 sottodomini inclusi.
Cmq io ho risolto purtroppo con i cookie.
Semplicemente oltre a settare e controllare le sessioni, setta e
controlla i cookie. ma usalo come "oltre" cioè come seconda opzione
non cancellando il vecchio sistema di modo che se dovessero sistemare
il problema o quanto meno tu cambiassi hosting avresti l'opportunità
di utilizzare le sessioni che ritengo più sicure.
Ciao!

Ciao, 
purtroppo solo ora mi accorgo di aver fatto un errore. Il sito di cui 
parlo è su un server Linux, ho appena controllato su Aruba. Avevo quasi 
dimenticato di aver fatto il passaggio a Linux. Posto il codice, nel caso 
possa essere utile:
<?php
session_start();
error_reporting(E_ALL);
include($_SERVER['DOCUMENT_ROOT']."/script/dbconnect.php");
$tabella="utenti";
$dbname="teachingonline";
if (!isset($_SESSION['Login']))   $_SESSION['Login']=false;
$IdUser=session_id();
$data=date('Y-m-d');
if (!isset($HTTP_COOKIE_VARS["TeachingOnLine"]))
setcookie("TeachingOnLine",$IdUser,time()+60*60*24*365);
else
$IdUser=$HTTP_COOKIE_VARS["TeachingOnLine"];
// Apertura tabelle dei dati
mysql_select_db($dbname);
$username=$_POST["username"];
if (strlen($username)<=3)
{
session_write_close();
$url=$_SERVER['HTTP_REFERER']; 
header ("Location: $url"); 
}
$username=mysql_escape_string($username);
$password=$_POST["password"];
$password=mysql_escape_string($password);
$tabella="utenti";
// Ricerca nella tabella Utenti la coppia UserName e UserPassword
$query="Select IdUser, Username, UserPassword from $tabella where 
('$password'=UserPassword) and  ('$username'=Username)";
$result=mysql_query("$query") or die(mysql_error());
// Legge IdUser
$record=mysql_fetch_array($result);
$UserId=$record["IdUser"];
$Username=$record["Username"];
//echo "UserId=".$UserId;
//echo "   Username=".$Username;
// Se esiste l'utente con username e password allora consenti il login 
if (mysql_affected_rows()==1)
{
$_SESSION['Login']=true;
//echo '<input type="hidden" name="Login" value='.$_SESSION['Login'].">";
$UserId=$record['IdUser'];
//echo "UserId=".$UserId;
$permessi="permessiutente";
$query_permessi="Select IdUtente, TipoPermesso from $permessi where 
(IdUtente='$UserId')";
$risultato=mysql_query("$query_permessi") or die (mysql_error());;
if (mysql_affected_rows()>0)
{
$record=mysql_fetch_array($risultato);
$permit=$record["TipoPermesso"];
//echo "Permesso ".$permit;
if (!isset($_SESSION["TipoPermesso"]))
$_SESSION["TipoPermesso"]=$permit;
//echo '<input type="hidden" name="TipoPermesso" value='.$_SESSION
['TipoPermesso'].">";
//echo "Tipo Permesso :". $_SESSION['TipoPermesso'];
}
$url=$_SERVER['HTTP_REFERER'];
//echo "Referer: ".$url;
//echo "Login:".$_SESSION['Login'];
header("Location: $url"); 
}
else // Invia l'utente sulla pagina di registrazione
{
$_SESSION['Login']=false;
$url="/script/RegistraUtente.php";
header ("Location: $url"); 
}
?>
-- 
http://www.itp-news.com