Tom's Guide > Forum > Programmation > Authentification php
Mot :    Pseudo :           
 

Bonjour,
j'aimerai mettre en place un petit programme pour une authentification pour un accès à internet. j'ai 2 petit morceau de codes,
le premiers est le formulaire d'authentification:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>

<title>Authentification</title>
<link rel="stylesheet" type="text/css" media="screen,projection" href="ecran.css"/>

<script type="text/javascript" src="script.js"></script>
</head>
<body>
<p>Saisissez vos Nom et mot de passe pour vous identifier: </p>
<form action="Validation.php" method="post">
<table border="0">
<tr>
<td>Nom:</td>
<td><input type="text" name="Nom" size="25" class="majuscule" /></td>
</tr>
<tr>
<td>Prenom:</td>
<td><input type="text" name="Prenom" size="25"/></td>
</tr>
<tr>
<td>Mot de passe:</td>
<td><input type="password" name="Password" size="10"/></td>
</tr>
</table>
<p><input type="submit" name="Valider" value="Valider"/></p>
</form>


</body>
</html>

le second est la connexion à ma bdd pour valider l'authentification:

<?php
session_start();
$_SESSION=array(); //efacement de toutes les variables enregistrées

//Connection au serveur MYsql et à la Bdd
$mysql_hostname="localhost";
$mysql_username = "root";
$mysql_password = "";
$mysql_basename = "sergentberthet";
$ConnexionServeur = mysql_connect($mysql_hostname, $mysql_username, $mysql_password );
$ConnexionBdd = mysql_select_db($mysql_basename, $ConnexionServeur);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
<title>Validation</title>
<link rel="stylesheet" type="text/css" media="screen,projection" href="ecran.css"/>

<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form action="suite.php" method="post">
<?php
//on crée les variables en provenance du formulaire
extract ($_POST[)

$Password=trim(stripslashes($Password));
$Nom=stripslashes($Nom);
//Mise en majuscule du nom pour comparaison avec la base de données
echo "strtoupper($txt)";

//preparation de la requete pour interoger la bdd
$Sql="SELECT `Nom` , `Prenom` , `Password` FROM sergentberthet WHERE ";
//on envoi la requete
$Reponse = mysql_querry($Sql, $ConnexionServeur);
$NbLignes = mysql_num_rows($Reponse);

//Combien de lignes correspondent
if ($NbLignes==0)
{
session_destroy();
echo "<p>utilisateur inconnu! Essayez à nouveau.</p>\n";
echo "<p>Vous allez retrouver le formulaire dans 2 secondes</p>\n";
echo "<script type= 'text/javascript'>\n";
echo "setTimeout(\"document.location.replace('authentification.html')\",2000);\n";
echo "</script>\n";
}
else
{
$LigneReponse=mysql_fetch_array($Reponse, MYSQL_ASSOC);
$_SESSION['NomUtilisateur']=$Nom;
$_SESSION['IdUtilisateur']=$LigneReponse['id'];

echo "<script type= 'text/javascript'>\n";
echo "document.location.replace('suite.php');\n";
echo "</script>\n";
}
//Fermeture de la connexion au serveur mysql
mysql_close($ConnexionServeur);
?>

<p class="align-droite"></p>
</form>
</body>
</html>


Le problème, c'est qu'une fois rempli, le formulaire ne donne rien, je ne sais pas si ce sont mes deux programmes qui ne communiquent pas, ou si il y a des erreurs.
j'aimerais que si l'authentification est bonne, on me redirige sur google, mais si elle ne l'est pas, que je retourne sur mon formulaire.
Je vous remercie d'avance pour votre aide

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

salut, je ne suis pas très bon en web mais
echo "<script type= 'text/javascript'>\n";
echo "setTimeout(\"document.location.replace('authentification.html')\",2000);\n";
echo "</script>\n";

me parait byzarre de mélanger du php et du javascript.
sinon pour le retour du formulaire tu n'as qu'a faire
echo "authentification refusée";
include("formulaire.html" );
et la redirection google : header("Location: www.google.fr" );

Répondre à mcpherson

voila la communication se fait entre les deux si j'ouvre le formulaire par firefox mais pas par internet explorer, si tu sais pourquoi?

de plus, avec firefox, il me met un message:
utilisateur inconnu! Essayez à nouveau.\n"; echo "

Vous allez retrouver le formulaire dans 2 secondes
\n"; echo "\n"; } else { $LigneReponse=mysql_fetch_array($Reponse, MYSQL_ASSOC); $_SESSION['NomUtilisateur']=$Nom; $_SESSION['IdUtilisateur']=$LigneReponse['id']; echo "\n"; } //Fermeture de la connexion au serveur mysql mysql_close($ConnexionServeur); ?>

alors que le login et le mot de passe son bon

Sinon je vais rajouter ton idée, mais je pourrais pas la tester tant que l'authentification ne se fait pas

Répondre à asile38

J'ai modifier mon second programme:

  


//Combien de lignes correspondent
<?
if ($NbLignes==0)
{
echo "<meta http-equiv='refresh' content='0; url=Formulaire.html'>";
}
else
{
echo "<meta http-equiv='refresh' content='0; url=http://www.google.fr'>";
}
?>

  

Le probleme c'est qu'avec firefox, ca m'ouvre google directement, meme avec un login et mo de passe erronné. et avec internet explorer, meme avec de bon login et password, je reste sur mon formulaire.


Message édité par asile38 le 12-05-2009 à 12:23:06
Répondre à asile38

si tu reste sur le formulaire sans aucun message d'erreur c'est probablement que t'as une couille dans le javascript.
je comprend pas un truc c'est pourquoi la partie bdd dans ton 2ème programme est dans un formulaire?ton validation.php ne devrait meme pas avoir de html puisque tout ce qu'elle fait c'est redirigé sur google ou renvoyer le formulaire.
ensuite si t'arrive direct sur google quoi qu'il arrive c'est forcément que ton select ne trouve rien, autrement dit la requête est mal faite.

petite maquette rapide :
formulaire.html
ton formulaire pas de problème

validation.php
extract($_post);
$connexion=mysql_connect($host, $log, $passe);
mysql_select_db($base);
//on récupère les champs login et password en évitant les caractères html
$pseudo=htmlspecialchars($_POST['login']);
$password=htmlspecialchars($_POST['password']);
//récupération des informations du membre par rapport au pseudo entré
$query="SELECT password FROM membre where pseudo='$pseudo'";
$resultat=mysql_query($query, $connexion);
$donnees=mysql_fetch_array($resultat);
//comparaison du mot de passe entré et du mot de passe en base(hashage)
//si bon mot de passe
if($password==$donnees['password])
//redirige vers google
header("Location:google.fr" );
else
{
echo "pas bon";
include("formulaire.html" );
}

je l'ai fait assez rapide j'espère que c'est assez clair.
je te conseille de virer tout ton javascript puisque il ne sert pas pour l'authentification.

tiens nous au courant

Répondre à mcpherson

Je pense avoir suivi a peu pres ce que tu m'a dit:
<?php

//Connection au serveur MYsql et à la Bdd
$mysql_hostname="localhost:8080";
$mysql_username = "root";
$mysql_password = "";
$mysql_basename = "sergentberthet";

//on crée les variables en provenance du formulaire
extract ($_POST)
$ConnexionServeur = mysql_connect($mysql_hostname, $mysql_username, $mysql_password );
$ConnexionBdd = mysql_select_db($mysql_basename, $ConnexionServeur);

$Password=htmlspecialchar($_POPST['Password']));
$Nom=htmlspecialchar($_POST['Nom']);
$Prenom=htmlspecialchar($_POST['Prenom']);
//Mise en majuscule du nom pour comparaison avec la base de données
//echo "strtoupper($txt)";

$Sql="SELECT Nom, Prenom, Password FROM motdepasse";
//on envoi la requete
$Reponse = mysql_querry($Sql, $ConnexionServeur);
$donnees=mysql_fetch_array($Reponse);

//comparaison du mot de passe entré et du mot de passe bdd
if($Password==$donees['Password'])
header("Location:google.fr" );
else
{
echo "Mauvaise identification";
include("Formulaire.html" );
}

?>

mais ça ne fonctionne toujours pas, mon fichier validation s'ouvre et m'affiche une page blanche.
Je pense qu'il doit y avoir un problème au niveau du if ou de la connexion à la bdd.
je n'y connais pas grand chose mais merci déjà pour ton aide

Répondre à asile38

ah je vois, en fait c'est ta requete
tu dois récupérer le mot de passe la ou le pseudo entré est le meme que le pseudo en bdd
donc
SELECT Nom, Prenom, Password FROM motdepasse where champ_nom_de_ta_bdd=$Nom AND champ_prenom_de_ta_bdd=$Prenom";
la ca devrait etre mieux

Répondre à mcpherson

J'ai toujours une page blanche

Répondre à asile38

oh oh tu dois avoir une variable pourri quelque part qui est vide
vérifie bien tous les noms de variables
au dessus je vois par exemple :
if($Password==$donees['Password'])
alors qu'au dessus donees a un "n" de plus :)

Répondre à mcpherson

J'ai corrigé mon probleme, mais meme avec des login ok ou non, j'obtient toujours une page blanche

Répondre à asile38

il faut que tu débug le bordel en faisant des echo "test" a divers endroits du programme pour s'approcher du plantage.
par exemple au lieu de faire ton header fais un echo "test" pour voir si ça s'affiche

Répondre à mcpherson

Je ne sais pas trop ou mettre ce test, ni de la façon dont il s'écrit, je ne l'ai jamais utilisé

Répondre à asile38

bon je l'ai refais t'as fais pas mal de fautes en faites mais aucune méchante c'est juste des fautes de frappe
formulaire :
<html>
<body>
<p>Saisissez vos Nom et mot de passe pour vous identifier: </p>
<form action="validation.php" method="post">
<table border="0">
<tr>
<td>Nom:</td>
<td><input type="text" name="Nom" size="25" class="majuscule" /></td>
</tr>
<tr>
<td>Prenom:</td>
<td><input type="text" name="Prenom" size="25"/></td>
</tr>
<tr>
<td>Mot de passe:</td>
<td><input type="password" name="Password" size="10"/></td>
</tr>
</table>
<p><input type="submit" name="Valider" value="Valider"/></p>
</form>


</body>
</html>

validation :
<?php


//on crée les variables en provenance du formulaire
extract ($_POST) ;
ta connexion a la bdd

$Password=htmlspecialchars($_POST['Password']);
$Nom=htmlspecialchars($_POST['Nom']);
$Prenom=htmlspecialchars($_POST['Prenom']);
//Mise en majuscule du nom pour comparaison avec la base de données
//echo "strtoupper($txt)";

$Sql="SELECT nom, prenom, password FROM motdepasse where nom='$Nom' AND prenom='$Prenom'";
//on envoi la requete
$Reponse = mysql_query($Sql, $connexion);
$donnees=mysql_fetch_array($Reponse);

//comparaison du mot de passe entré et du mot de passe bdd
if($Password==$donnees['password'])
header("Location: http://www.google.fr" );
else
{
echo "Mauvaise identification";
include("form.html" );
}

?>

change les noms biensur puisque je n'ai pas tout à fait les memes noms que toi genre validation.php et non Validation.php etc
ça marche chez moi


Message édité par mcpherson le 12-05-2009 à 15:41:30
Répondre à mcpherson

J'ai corrigé mes erreurs, mais la ca ne marche toujours pas, je vais verifier dans phpmyadmin, si ce n'est pas un probleme sur la bdd directement

Répondre à asile38

mais tu as une page toute blanche??
parce que quand j'ai récupéré ton code j'avais pleins d'erreurs de syntaxe php.
si c'était la bdd je pense que t'aurais une erreur à la connexion et si il ne trouve pas les mots de passe il afficherais au moins le formulaire.
regarde bien que c'est au bon fichier que t'envoie le formulaire.
moi ça marche donc c'est obligé qu'il te reste une petite faute.
reposte les codes des 2 fichiers que t'a corrigé que je regarde s'il reste une merde

Répondre à mcpherson

A ta premiere question, je repondrais oui, j'ai une page toute blanche avec comme url l'adresse de mon fichier validation3.php

voila mes deux codes apres correction:

formulaire:

<body>
<p>Saisissez vos Nom et mot de passe pour vous identifier: </p>
<form action="Validation3.php" method="post">
<table border="0">
<tr>
<td>Nom:</td>
<td><input type="text" name="Nom" size="25" class="majuscule" /></td>
</tr>
<tr>
<td>Prenom:</td>
<td><input type="text" name="Prenom" size="25"/></td>
</tr>
<tr>
<td>Mot de passe:</td>
<td><input type="password" name="Password" size="10"/></td>
</tr>
</table>
<p><input type="submit" name="Valider" value="Valider"/></p>
</form>


</body>






Validation3:


<?php

//Connection au serveur MYsql et à la Bdd
$mysql_hostname="localhost:8080";
$mysql_username = "root";
$mysql_password = "";
$mysql_basename = "sergentberthet";

//on crée les variables en provenance du formulaire
extract ($_POST)
$ConnexionServeur = mysql_connect($mysql_hostname, $mysql_username, $mysql_password );
$ConnexionBdd = mysql_select_db($mysql_basename, $ConnexionServeur);

$Password=htmlspecialchars($_POST['Password']);
$Nom=htmlspecialchars($_POST['Nom']);
$Prenom=htmlspecialchars($_POST['Prenom']);
//Mise en majuscule du nom pour comparaison avec la base de données
//echo "strtoupper($txt)";

$Sql="SELECT Nom, Prenom, Password FROM motdepasse where nom='$Nom' AND prenom='$Prenom'";
//on envoi la requete
$Reponse = mysql_querry($Sql, $ConnexionServeur);
$donnees=mysql_fetch_array($Reponse);

//comparaison du mot de passe entré et du mot de passe bdd
if($Password==$donnees['Password'])
header("Location:http://www.google.fr" );
else
{
echo "Mauvaise identification";
include("Formulaire.html" );
}

?>


Merci de me consacrer ce temps et de me répondre aussi vite

Répondre à asile38

dans ta requête select :
$Sql="SELECT Nom, Prenom, Password FROM motdepasse where nom='$Nom' AND prenom='$Prenom'";
tu fais select de truc avec majuscule en première lettre puis where truc sans majuscule. je ne sais pas si mysql y est sensible mais : dans ta base je ne sais pas si tu as mis les majuscules mais si oui ensuite met les partout.
un truc aussi c'est que à extract($_POST) il manque le point virgule et la c'est impossible que ça n'affiche pas d'erreur.
si le formulaire est bien envoyé au bon fichier, dis moi tu utilise quoi pour coder?et quel logiciel avec php apache et phpmyadmin?wamp?easyphp?

Répondre à mcpherson

Ca ne va pas mieu, mais j'utilise wamp, et j'ai en parallèle un serveur iis, mais apache est configuré sur le port 8080, il n'y a donc pas de conflit, mais peut etre un probleme de connexion, je n'ai peut etre pas besoin d'utiliser apache.
Sinon j'ecrit mon code sous pspad editor

Répondre à asile38

il doit y avoir un gros conflit parce que il te reste des erreurs de syntaxe, le préprocesseur PHP ne fonctionne pas sinon en exécutant ton code tu aurais déjà :
Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\gestion09\validation3.php on line 11
c'est obligé que tu ait l'erreur mais ton php ne marche pas donc tu obtiens une page blanche. Il faut que tu utilise juste wamp comme moi et yaura aucun problème. Sinon si tu veux pas virer ton autre serveur je ne sais pas comment régler ça

Répondre à mcpherson

Merci beaucoup pour tono aide, je dois garder mon serveur iis a cause d'application en asp, mais je vais essayer de trouver une solution, maintenant que je sais qu'il me reste que quelques erreurs et que php ne fonctionne pas.
Merci pour tout ce temps passé à m'aider

Répondre à asile38

de rien mon brave mais on a mis du temps avant de comprendre un truc tout bête! :)

Répondre à mcpherson

C'est de ma faute si on a mis tout ce temps, j'aurai du y penser plus tot.
J'ai trouver un tuto pour installer php sur iis:

http://www.sbsfr.org/index.php?page=PHPsurXP

Donc je vais essayer et si ca marche je mettrais un petit post que tout le monde soit au courant.
Merci pour ton aide

Répondre à asile38
Tom's Guide > Forum > Programmation > Authentification php
Aller à :

Il y a 291 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens