Buongiorno a tutti, ho un piccolo problema con la gestione delle autenticazioni in php.
Ho uno script (lo allego alla fine del topic), che controlla gli accessi. Se non loggato mostra la maschera per il login e se tutto è OK rende disponibili il link per il DB altrimenti nega l'accesso alle pagine che includono questo file.
Il problema è questo... su win e apache funziona agreggiamente invece in produzione su Fedora non funziona bene. L'errore è che se un utente per sbaglio inserisce dei dati errati non può più accedere a quella pagina. deve obbligatoriamente cancellare i temporanei di ie per ritentare l'accesso...
Trovate qualcosa di sbagliato ?? Suggerimenti ??
Ho uno script (lo allego alla fine del topic), che controlla gli accessi. Se non loggato mostra la maschera per il login e se tutto è OK rende disponibili il link per il DB altrimenti nega l'accesso alle pagine che includono questo file.
Il problema è questo... su win e apache funziona agreggiamente invece in produzione su Fedora non funziona bene. L'errore è che se un utente per sbaglio inserisce dei dati errati non può più accedere a quella pagina. deve obbligatoriamente cancellare i temporanei di ie per ritentare l'accesso...
Trovate qualcosa di sbagliato ?? Suggerimenti ??
PHP:
require "dbutil.php";
require "debug.php";
// DumpArrayOfVars($_SERVER, 'svr');
function authenticate() {
header('WWW-Authenticate: Basic realm="Prova del Sistema di Autenticazione"');
header('HTTP/1.0 401 Unauthorized');
echo "<br>Per poter accedere a questa risorsa occorre inserire una coppia login e password valide\n";
exit;
}
session_cache_limiter('private');
session_start();
header("Cache-control: must-revalidate");
session_register("SESSION_DATA");
$DSN = "DRIVER=iSeries Access ODBC Driver;SYSTEM=192.168.X.XXX;DBQ=XXXX";
$DB = odbc_pconnect($DSN,"UID","PWD") or die ("iSeries connessione Falita");
// if (!isset($_SERVER['PHP_AUTH_USER']) || ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
if ( (!isset($_SERVER['PHP_AUTH_USER'])) ) {
authenticate();
} else {
$SQL =<<<EOT
SELECT NOME, COGNOME, LIVELLO, FILIALE, AGENTE FROM WEB_USERS
WHERE UID='$_SERVER[PHP_AUTH_USER]' AND PWD='$_SERVER[PHP_AUTH_PW]'
EOT;
$R = odbc_exec($DB, $SQL);
// ShowTable($R, 'top');
if (odbc_fetch_row($R)) {
$SESSION_DATA["uid"] = $_SERVER[PHP_AUTH_USER];
$SESSION_DATA["nome"] = odbc_result($R, 1);
$SESSION_DATA["cognome"] = odbc_result($R, 2);
$SESSION_DATA["level"] = odbc_result($R, 3);
$SESSION_DATA["filiale"] = odbc_result($R, 4);
$SESSION_DATA["agente"] = odbc_result($R, 5);
$SESSION_DATA["logged"] = 1;
} else {
echo "<li>Nome utente o Password ERRATI";
$SESSION_DATA["logged"] = 0;
authenticate();
exit ();
}
}
$uid = $SESSION_DATA["uid"];
$nome = $SESSION_DATA["nome"];
$cognome = $SESSION_DATA["cognome"];
$filiale = $SESSION_DATA["filiale"];
$level = $SESSION_DATA["level"];
$agente = $SESSION_DATA["agente"];
/*
if ($_SERVER['SERVER_NAME'] == 'ghennetport') {
echo "Auth User: " . $_SERVER['PHP_AUTH_USER'] . "<br>";
echo "Filiale: " . $filiale . " - FilSession: " . $SESSION_DATA["filiale"] . "<br>";
echo "Level: " . $level . "<br>";
echo "Agente: " . $agente . "<br>";
}
*/
?>