Eh, per pigrizia non l'ho copiaincollato prima.. è parecchio lungo e dovrei "spulciarlo" stando attento a cosa potrebbe in effetti potenzialmente modificare la sessione.
Dunque vediamo che riesco a fare... :master:
Così registro la sessione (questo è tutto il file della registrazione incluso all'inizio di ogni pagina, dopo aver chiaramente avviato la sessione):
Codice PHP:
<?php
$sNICK = $_SESSION['nick'];
$sUID = (int) $_SESSION['uid'];
$sLEVEL = (int) $_SESSION['lev'];
if((!isset($_SESSION['nick']) || !isset($_SESSION['uid']))
{
$_SESSION['uid'] = '';
$_SESSION['nick'] = '';
$_SESSION['lev'] = '';
unset($sNICK);
unset($sUID);
unset($sLEVEL);
}
?>
Questa è la funzione incriminata (nonchè l'UNICA chiamata all'interno della pagina che dà problemi:
Codice PHP:
function getnickfromuid($id)
{
$q = mysql_query("SELECT `uid`, `nick` FROM `users` WHERE `uid` = " . (int) $id . " LIMIT 0, 1");
if(!is_resource($q) || mysql_num_rows($q) == 0) return FALSE;
else
{
$data = mysql_fetch_array($q);
return $data['nick'];
}
}
E ora arriviamo al "succo"...
All'interno della pagina incriminata c'è un semplice switch su una variabile (pulita) passata con GET (per comodità riporto solo il caso in cui riporta problemi).
I files che non ho menzionato prima (config.php e select_lang.php) non contengono chiamate a funzioni di sessione, ma solo rispettivamente delle variabili di configurazione e il caricamento selettivo del linguaggio del sito:
Codice PHP:
<?php
session_start();
include("session_reg.php");
include("config.php");
include("select_lang.php");
include("functions.php");
$a = strip_tags($_GET['a']);
if($a == '' || !isset($a)) $a = "main";
switch($a)
{
case 'user': { include( "/path/alla/pagina.php");
} break;
}
?>
e infine la famosa pagina inclusa recita così:
Codice PHP:
<?php
$queryj = mysql_query("SELECT * FROM `users` LIMIT 0, 10");
$numresults = mysql_num_rows($queryj);
//Intestazioni per tabella (puro codice HTML) rimosse
while($pic = mysql_fetch_array($queryj))
{
$nick = getnickfromuid($pic['uid']);
//tabella html
//contenuto celle
echo "<A href=\"" . $pic['path'] . "\" target=\"_blank\"><IMG src=\"" . $pic['thumb'] . "\" alt=\"$nick\" border=\"1\"></A>
<A href=\"" . $_SERVER['PHP_SELF'] . "?a=profile&id=" . $pic['uid'] . "\">" . $nick . "</A>
<INPUT type=\"radio\" name=\"ch$cont\" value=\"1\" checked=\"checked\"><IMG src=\"images/choice_yes.png\" border=\"0\" alt=\"$imlst4\"> <INPUT type=\"radio\" name=\"ch$cont\" value=\"0\"><IMG src=\"images/choice_no.png\" border=\"0\" alt=\"$imlst5\"><INPUT type=\"hidden\" name=\"photo$cont\" value=\"" . $pic['id'] . "\">";
//ancora tabella html
//ancora tabella html
$row++; //conteggio righe per colori diversi
$cont++;
}
?>
Per dirla tutta, dopo il primo while, la sessione perde le variabili se la funzione getnickfromuid() viene modificata come ho accidentalmente fatto io (vd. post sopra)
Grazie mille per la pazienza
le pagine funzionano, quindi eventuali errori nelle variabili o nel flusso son dovute alla fretta o al copia/taglia/incolla selvaggio del momento