[RISOLTO] Non funziona __autoload con le sessioni ...

Salve a tutti!

Ho un problema con __autoload ...

Dentro l'admin [nell'header] ho inserito questo:


//Autoload delle classi function __autoload($class_name) { require_once ('classes/'.$class_name.'.php'); }   // Controllo l'utente loggato - questo deve essere presente in tutte le pagine dell'admin include("../login/check.php"); ......

$utenti=Utenti::getUtenti();


Non funziona!

Se sostituisco la funzione __autoload con 

require_once ('../classes/Utenti.php');

funziona! (quindi direi che non è un problema di percorsi).

Mi sono accorto che se elimino

include("../login/check.php");

funziona! [il problema è che non lo posso eliminare è il controllo sul login]

Per completezza riporto il file check.php:

<?php session_start();   if (!$_SESSION["nome"])  { $msg= 6; $destinazione = "../index.php?msg=".$msg; echo '<script language=javascript>document.location.href="'.$destinazione.'"</script>'; } //controllo sul tempo di inattività dell'utente if ($_SESSION['secondi_inattivo']) { $secondi_inattivo=$_SESSION['secondi_inattivo']; $start_session=$_SESSION['start_session']; $adesso= time(); $differenza=$adesso-$start_session; if ($differenza >$secondi_inattivo) { $msg= 5; $destinazione = "../index.php?msg=".$msg; echo '<script language=javascript>document.location.href="'.$destinazione.'"</script>'; } else { //si azzera il tempo di inattività a partire dalla richiesta appena eseguita $_SESSION["start_session"] = $adesso; } } ?>  

Qualcuno sa aiutarmi? Credo sia un problema tra __autoload e sessioni ......

Grazie!

inviato 4 anni fa
Lapo
Lapo
7
modificato 4 anni fa
X 0 X

Un cosa che probabilmente non c'entra con l'errore è la verifica dell'array $_SESSION. Tu scrivi

if (!$_SESSION["nome"])... ma in PHP una variabile come quella o c'è ed è popolata con un valore che può essere vero o falso o qualsiasi altra cosa, oppure non esiste.

Se volevi semplicemente verificare se $_SESSION['nome'] era settato o meno dovevi fare if (!isset($_SESSION['nome'])) .... lo stesso per tutti gli altri controlli.

Anche perché in PHP il valore intero di false è 0, mentre tutti gli altri sono true, (compreso -1) quindi sen on sai in modo assolut che na variabile non assuma a caso il valore zero, pre tutti gli altri è sempre true e se non è settata perché non esiste, non esiste appunto quindi !variabile non da un valore certo.

Altra cosa, perché usi javascript in luogo di header()?

M.

risposto 4 anni fa
Marco Grazia
X 0 X

Sembra che il problema sia un baco nelle versioni precedenti alla versione PHP 5.3.4 dove è stato risolto!

Per maggiori informazioni:
https://bugs.php.net/bug.php?id=53141

Per quanto mi riguarda ho sostituito la funzione __autoload con spl_autoload_register come consiglia anche il manuale

function __autoload_libraries($class){
include_once ('../classes/'.$class.'.php');
}

spl_autoload_register('__autoload_libraries');


Grazie comunque dell'aiuto!!!

risposto 4 anni fa
Lapo
Lapo
7
X 0 X X
Effettua l'accesso o registrati per rispondere a questa domanda