Probleme de script d'identification (help !)

floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007 - 25 avril 2005 à 14:59
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007 - 28 avril 2005 à 09:03
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...

9 réponses

floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007
25 avril 2005 à 15:47
ok, je crois voir d'où vient mon probleme ! Est-ce qu'il y a un moyen de détruire les variables $_SERVEUR ?<!-- ok, je crois voir d'où vient mon probleme ! Est-ce qu'il y a un moyen de détruire les variables $_SERVEUR ? -->
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 avril 2005 à 16:13
$_SERVEUR ca n'existe pas ;-)

Sinon : non. Enfin, je ne pense pas...
0
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007
25 avril 2005 à 16:24
$_SERVER['PHP_AUTH_USER'] et $_SERVER['PHP_AUTH_PW']. Il me semble que ca existe, puisque je l'utilise. A première vue, mon problème est que l'authentification par header rafraichi le script apres la saisie. Alors je planche sur l'algo... Mais ce serait plus simple de pouvoir détruire les variables du serveur.

Enfin, j'aimerais bien que tu expliques mieux ton : ça n'existe pas ;-)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 avril 2005 à 17:12
Tu avais ecri SERVEUR et non SERVERm c'est tout, ne panique pas, j'avais bien compris que c'etait juste une faute de frappe lol.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007
25 avril 2005 à 17:55
pas de probleme...
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
27 avril 2005 à 00:20
Lu,

Et ca ne les vides pas si on fait un $_SERVER = array(); ?

<hr style="width: 100%; height: 2px;">Si ma reponse te convient, merci de l'accepter !
0
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007
27 avril 2005 à 10:01
Non, cela ne marche pas. A premiere vue, si register_global est a off, on ne peut pas ecrire directement les variables de serveur.

La seule solution que j'ai trouvé, c'est de vider le cache du navigateur. Et la seule solution c'est de fermer le fenêtre avec :

echo '<SCRIPT Language="JavaScript">';
echo 'opener=self;';
echo 'self.close();';
echo '</SCRIPT>';

La solution est un peu brutale...
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
27 avril 2005 à 14:07
Re,

Essaye de ne mettre qu'un seul echo(), tu gagne en rapidité.



echo '<script type="text/javaScript">

opener=self;

self.close();

</script>';

/*

# - En Minuscule <script></script>

# - Sur 1 seule ligne

# - type"text/javascript" et pas language="Javascript"

*/

<hr style="width: 100%; height: 2px;">Si ma reponse te convient, merci de l'accepter !
0
floxone Messages postés 88 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 10 août 2007
28 avril 2005 à 09:03
merci
0
Rejoignez-nous