Salut à tous,
J'ai un problème avec un script utilisant une identification au travers un header.
LE PROBLEME : la fenetre de saisie s'ouvre 2 fois ! J'ai remarqué que les paramètres serveurs (PHP_AUTH_USER) étaient conservés. Donc, la fenêtre s'ouvre 2 fois mais utilise l'ancienne saisie et garde la nouvelle qui sera interpretee si on se delog et relog.
J'espere que c'est clair... Voici le code :
----- Dans la page à sécurisée ----
session_start();
if(!isset($_SESSION['username'])) {
include "securite3.php";
}
----- Dans la page de verification --------
<?php
//On se connecte à la base
include "connexion.php";
connection_base();
//si on ne s'est pas encore identifié (pas de nom sur le serveur ou pas de session enregistrée), on se logge
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SESSION['username']))
{
//lancement de la fenetre de saisie de loggin + mot de passe
header('WWW-Authenticate: Basic realm="My Realm"');
//on initialise 2 variables pour la reguete sql
$user_name=$_SERVER['PHP_AUTH_USER'];
$password=$_SERVER['PHP_AUTH_PW'];
}
//sinon, on redirige sur l'accueil tout en détruisant la session au travers de la page logout.php
else
{
echo "<script>";
echo "window.location.href = 'logout.php'";
echo "</script>";
}
//Requêtes mySQL pour établir la validation.
$query = "SELECT * FROM users WHERE login='".$user_name."' AND pass='".$password."' ";
//Exécution de la requête mySQL et affectation du nombre de rangés valides dans la table.
$result = mysql_query($query) or die('error making query');
$affected_rows = mysql_num_rows($result);
//Si il y a un enregistrement, la connexion est valide sinon invalide.
if($affected_rows == 1) {
//ajoute l'utilisateur à une variable de session et rafraichi la page
$_SESSION['username'] = $user_name;
echo "<script language='JavaScript' type='text/javascript'>";
echo "location.reload()";
echo "</script>";
exit;
}
//sinon, on redirige sur l'accueil tout en détruisant la session au travers de la page logout.php
else {
echo "<script>";
echo "window.location.href = 'logout.php'";
echo "</script>";
exit;
}
?>
Merci de votre aide : j'en ai marre... Ca me prend trop la tête.
Je suis désolé, je dev en local... Je peux pas vous montrer le problème sur un site...