Ciao ragazzi.
Credo proprio che sto andando in loop, non riesco a trovare dove sta l'errore in una funzione che sto scrivendo.
Premessa:
Sto scrivendomi delle funzioni che si occupano di gestire il login ed il riconoscimento degli utenti seguendo le indicazioni trovate nella Guida di Sicurezza in PHP.
Ho quindi scritto una funzione doLogin che si occupa di gestire il controllo delle stringhe nome_utente e password passate da form, per bloccare codice malevolo, lunghezze delle stringhe non valide ecc ecc.
Questa funzione, in caso di login valido, registra una sessione ed un cookie per il controllo utente e per (provare a) prevenire un attacco tipo session-hijacking.
Questa funzione fa il suo dovere egregiamente.
Nelle pagine della sezione privata ho pensato di mettere una funzione che si occupi di controllare l'uguaglianza tra le variabili settate in remoto nella sessione e quelle in locale dell'utente.
Se questo controllo è superato, viene stampato il menù dell'utente, altrimenti un messaggio di cortesia.
Qui nasce il mio problema.
La funziona checkParam, se non richiamata da un file esterno (es. checkParam.php) funziona, altrimenti no.
Posto il codice sperando che qualcuno di voi abbia le facoltà mentali meno in pappa delle mie.
checkParam.php:
Codice PHP:
<?php
function checkParam(){
ini_set("session.save_path","tmp_sss");
session_start();
session_regenerate_id();
// se non esiste una sessione registrata per questo utente
// allora non posso visualizzare la pagina
if (!isset($_SESSION['hash_utente'])) {
$login_ok = false;
}
if ($_SESSION['hash_utente'] == $_COOKIE['prova_login']) {
$login_ok = true;
} else {
$login_ok = false;
}
return $login_ok;
}
?>
Il seguente è invece il codice di una delle pagine private.
Codice PHP:
<?php
global $login_ok;
include 'checkLogin.php';
checkParam();
if ($login_ok == true) {
// stampo la pagina
echo "<h1>Login Effettuato con successo!</h1>";
echo "
<div id=\"menu\">
<ul>
[*]<a href=\"javascript:void(0)\">Voce 1</a>
[*]<a href=\"javascript:void(0)\">Voce 2</a>
[*]<a href=\"javascript:void(0)\">Voce 3</a>
[*]<a href=\"javascript:void(0)\">Voce 4</a>
[*]<a href=\"javascript:void(0)\">Voce 5</a>
[*]=====================
[*]<a href=\"logout.php\">Log Out</a>
[/list]
</div>
";
} else {
setcookie("prova_login", "");
session_unset();
session_destroy();
echo "
<h1>Login non Effettuato!</h1>
(Errore 1)
<a href=\"logout.php\">Accedi</a> nuovamente.
";
}
?>
C'è qualcuno che riesce ad aprirmi gli occhi? :dhò: