Formulaire

Fermé
babouchboy - Modifié par babouchboy le 20/10/2013 à 15:07
 babouchboy - 22 oct. 2013 à 19:53
Bonjour,

Je requiers votre aide car je débute en Php et j'ai un code qui ne fonctionne pas (normal me direz vous...).

C'est un formulaire qui demande un login et un mot de passe. Je ne vérifie pas les login et mot de passe pour l'instant car quelque chose cloche et je ne sais pas quoi... voyez par vous même :


<?php




//Si il y a présence des variables login et password

if (isset($_POST['login']) AND isset($_POST['password']))
{

echo('Il y a 2 champs remplis, mais sont ils bon?');
}





//S'il n'y a pas la présence d'au moins une des deux variables

elseif (!isset($_POST['login']) OR !isset($_POST['password']))
{
echo ('Il y a un champs vide');
}




//sinon (si les 2 variables sont absentes)

else
{
echo ('Il n\'y a rien du tout, tu te fiches de moi?');
}

?>

Merci

5 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
21 oct. 2013 à 11:17
Salut,

Pour ta deuxième condition, si tu veux vérifier qu'au moins 1 des champs est présent, il faut utiliser l'opérateur XOR :

//S'il n'y a pas la présence d'au moins une des deux variables

elseif (!isset($_POST['login']) XOR !isset($_POST['password'])) {
echo ('Il y a un champs vide');
}

On vérifie ainsi que la variable $_POST['login'] existe ou que la variable $_POST['password'] existe, mais pas les deux.
1
Merci ! Il y avait ce problème en effet.

Mais il y en a un autre ! La fonction isset() ne fonctionne pas, seulement empty().


Lorsque je laisse les 2 champs vides, avec isset() ça me dit que les champs sont remplis...
1
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
21 oct. 2013 à 17:32
La fonction isset() vérifie uniquement si les variables existent, peu importe leurs contenus.
Donc même en laissant les champs vides, à l'envoie de ton formulaire les variables existent (même si elle sont vide) et ta première condition est vraie.

La fonction empty() vérifie si les variables sont vides et considère une variable qui n'existe pas comme vide.

Il serait donc plus adapté que tu utilises la fonction empty() à la place de isset() pour ce cas.
0
Nickel, merci pour tout :).

Cependant je ne vois pas trop l'utilité du isset() pour le coup !

Mais ça fait plaisir de mettre un "résolu".
0
intoxx62 Messages postés 361 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 13 mars 2015 70
Modifié par intoxx62 le 20/10/2013 à 15:31
Bonjour, je n'ai pas pratiqué php depuis un bon temps mais ça devrait aller et je n'ai pas Apache ou autre pour le tester sous la main.

Est-ce que ce code te convient et fonctionne ? Je l'ai bien commenté / Fais signe ;)


<?php

if(isset($_POST['login']) == "INTOXX" && isset($_POST['password']) == "Password")
{
// Les variables existent et correspondent à celles attendues

echo("<h3>Bienvenue à : </h3> <p> " . $_POST['login']);
}
elseif(isset($_POST['login']) == "" || isset($_POST['password']) == "")
{
// Les champs ne sont pas bien remplis (vides)
echo("Vérifiez vos informations");
}
else {
echo("<p>Une erreur est survenue, vérifiez vos informations</p>");
// Erreur
}

?>

Evidemment c'est un code minim
0
intoxx62 Messages postés 361 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 13 mars 2015 70
20 oct. 2013 à 15:17
N'oublie pas d'encoder ton fichier en UTF-8
0
Merci, mais il me semble qu'on ne peut pas tester si la variable $_POST est présente en même temps de vérifier si elle est égale à ce qu'on souhaite (il faudrait mieux écrire :

if(isset($_POST['login']) AND $_POST['login']== "INTOXX")

quelque chose dans ce style là. En tout cas le code ne marche pas non plus lol.
Sinon j'ai vérifié pour l'utf 8 et c'est bon.

Je ne comprends pas :/
0
:'(
0
intoxx62 Messages postés 361 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 13 mars 2015 70
21 oct. 2013 à 04:18
Ah oui exactement
0
quand tu veux trouver pourquoi ton formulaire ne marche pas, tu dois te mettre en tête de toujours débugguer ton application.

pour ça avant de tester les variables: vérifies ce quelles contiennent:

<?php
//<pre></pre> juste pour de la mise en forme
echo "<pre>";

//uniquement si tu envois ton formulaire avec la méthode GET
print_r($_GET);

//normalement ça devrait te retourner des valeurs non vide
print_r($_POST);

//uniquement si tu as des variables de session
print_r($_SESSION);

echo "</pre>";


if(isset($_POST['login']) == "INTOXX" && isset($_POST['password']) == "Password")
{
...
?>

affiche le résultat ici du $_POST, on devrait réussir à t'orienter un peu plus...
0

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

Posez votre question
Avec isset() :

Array
(
[login] =>
[password] =>
[valider] => valider
)
Il y a 2 champs remplis, mais sont ils bon?


Merci pour ces explications mais je crois que Pitet a vu juste.
En tout cas, je connaissais pas et je les réutiliserais !
0
comme tu peux le remarquer ton login et ton password sont vides ! :) donc il ne remplissent aucune des conditions.

affiche le code de ton formulaire (version light)
0
Regarde le message de Pitet, cela explique le pourquoi du comment ;).

Merci pour la méthode en tout cas !
0