Probleme de parametres PHP

Fermé
yahya23 - 7 sept. 2009 à 16:27
 Utilisateur anonyme - 9 oct. 2014 à 11:34
Bonjour, chui debutant et voici mon code
la page contenant le formulaire:
<?php
mysql_connect('localhost','yahya','yahya') or die('connexion introuvable');
mysql_select_db('yahya');
if(isset($_POST['Con']))
{
$l=$_POST['log'];
$p=$_POST['PW'];
$req="select * from user where loginuser ="+$l+"and passuser="+$p ;
$res=mysql_query($req);
if(!$res)
{
exit();
}


}
?>
<table align="center" border="0">
<form name="auth" method="post" action="menu.php?var=<?php echo $_POST['log'];?>" >
<tr bgcolor="#000000"><td colspan="2"><font color="#FFFFFF">Veuiller introduire votre Login et Mot de passe</font></td></tr>
<tr bgcolor="#999999"><td><b>Login<b></td><td><input type="text" name="log"/><td></tr>
<tr bgcolor="#999999"><td><b>Password<b></td><td><input type="password" name="PW"/><td></tr>
<tr bgcolor="#999999"><td align="center"><input type="submit" name="Con" value="Connexion"/></td><td align="center"><input type="reset" name="res" value="Annuler" /></td></tr>
</form>
</table>


et voici le code de la page d'arrivé
<h2>Bienvenu Veuiller choisir une opération à partir du menu Bon travail :)</h2>
<h3> vous etes connecté en tant que
<?
$va=$_GET['var'];
echo $va;
?>

</h3>

je veux que le code php verifie si le login existe dans la base si il existe il verifie si il est conforme avec le password si l'autantification est valide alors je veux ouvrir la deuxieme page en envoyant le login merci d'avance
A voir également:

2 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 sept. 2009 à 18:06
Bonjour,

Il y a une faute de syntaxe sur la construction de ta requête :
$req="select * from user where loginuser ="+$l+"and passuser="+$p ; 

En PHP, ce ne sont pas des '+', mais des '.' qu'il faut utiliser (les '+' c'est ne javascript).

Ton code devient donc :
$req="select * from user where loginuser =".$l."and passuser=".$p ; 


Ensuite, tu peux très bien avoir le bon login mais le mauvais mot de passe, ton test de validité n'est pas bon, il faut aussi que tu ajoute un contrôle sur le nombre de résultat retourné par ta requête SQL (dans un cas OK, le nombre doit être de 1)

Ton test devient donc le suivant :
if( $res != null && mysql_num_row($res) != 1 ){
   exit();
} 


Ensuite, tu as oublié de redirigé l'utilisateur sur la seconde page dans le cas où l'authentification est correcte (cas du else de ton if de test)
Ton test devient donc le suivant :
if( $res != null && mysql_num_row($res) != 1 ){
   exit();
} else {
   // --- Redirection sur la page 2
   header("chemin d'acces a la page 2 en relatif");
}


Enfin, dans ton formulaire, tu n'as pas besoin de passer une url avec un paramètre :
action="menu.php?var=<?php echo $_POST['log'];?>"


Un simple :
action="menu.php"


suffit.

Déjà ces corrections devraient t'aider, je n'ai parcouru que rapidement la suite.
0
Bonjour,
Je rejoins notre ami kij_82 et aimerai rajouter


<table align="center" border="0">
<form name="auth" method="post" action="menu.php?var=<?php echo $_POST['log'];?>" >
<tr bgcolor="#000000"><td colspan="2"><font color="#FFFFFF">Veuiller introduire votre Login et Mot de passe</font></td></tr>
<tr bgcolor="#999999"><td><b>Login<b></td><td><input type="text" name="log"/><td></tr>
<tr bgcolor="#999999"><td><b>Password<b></td><td><input type="password" name="PW"/><td></tr>
<tr bgcolor="#999999"><td align="center"><input type="submit" name="Con" value="Connexion"/></td><td align="center"><input type="reset" name="res" value="Annuler" /></td></tr>
</form>
</table>


Mettre le formulairedans dans une table n'est pas répandu comme méthode, mettre une table dans un formulaire si.

Donc ton code devient

<form name="auth" method="post" action="menu.php?var=<?php echo $_POST['log'];?>" >
<table align="center" border="0">
<tr bgcolor="#000000"><td colspan="2"><font color="#FFFFFF">Veuiller introduire votre Login et Mot de passe</font></td></tr>
<tr bgcolor="#999999"><td><b>Login<b></td><td><input type="text" name="log"/><td></tr>
<tr bgcolor="#999999"><td><b>Password<b></td><td><input type="password" name="PW"/><td></tr>
<tr bgcolor="#999999"><td align="center"><input type="submit" name="Con" value="Connexion"/></td><td align="center"><input type="reset" name="res" value="Annuler" /></td></tr>
</table>
</form>


que vient faire le signe > à la fin de ta balise form ?

Ensuite, il y a un autre pb. dans ta ligne

<tr bgcolor="#999999"><td><b>Login<b></td><td><input type="text" name="log"/><td></tr>


Une balise <td> doit être terminée par une balise </td> ce sui n'est pas le cas. Idem pour la balise <b> ( balise qui au demeurant est obsolete, utilise <STRONG> à la place.

Cette ligne devient donc

<tr bgcolor="#999999"><td><strong>Login</strong></td><td><input type="text" name="log"/></td></tr>


Même chose pour la ligne concernant le Password

Tu devrais utiliser une feuille de style ( Css ) externe. L'pplication des attributs de style dans une balise se fait sous la forme, par exemple

<tr style = "bgcolor:#000000">


Cdt



En informatique 99% des problèmes se situent entre le fauteuil et le clavier
0