Simple petit script qui ne fonctionne pas avec ie :s

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Simple petit script qui ne fonctionne pas avec ie :s

par Sékiltoyai » 09 mai 2007, 13:07

D'après les spécifications de HTML 4.01 la valeur d'un attribut peut être entourée de double ou simple quotes, " ou ' (voire rien du tout sous certaines conditions). Et au cas où vous vous poseriez la question, on peut aussi utiliser les ' en XML, donc en XHTML.
On en apprends tous les jours !
Je devrais lire les recommandations :-/

par Hubert Roksor » 09 mai 2007, 08:19

D'après les spécifications de HTML 4.01 la valeur d'un attribut peut être entourée de double ou simple quotes, " ou ' (voire rien du tout sous certaines conditions). Et au cas où vous vous poseriez la question, on peut aussi utiliser les ' en XML, donc en XHTML.

par Sékiltoyai » 09 mai 2007, 07:44

Je plussoie, ce n'est pas correct.

par ghalaad » 09 mai 2007, 06:37

Ya que moi que ça choque dans :
echo "<html>
    <body>
    <form action='login.php' method='post' name='login'>
    <input name='pass' type='text'>
    <input name='Submit' type='submit' value='Envoyer'>
    </form>
    </body>
    </html>"; 
???

action='login.php' ... C'est pas très W3C tout ça ...
à remplacer par : action="login.php"

par Sékiltoyai » 08 mai 2007, 23:40

Il est inutile de tester tous les champs, un seul suffit, si un champ existe c'est que le formulaire a été envoyé, et il existera qu'il soit rempli ou pas par l'utilisateur. :)
Non, parce qu'il faut toujours considérer que l'utilisateur envoie ce qu'il veut.
Car rien ne dit qu'il ne va pas y avoir quelqu'un pour n'envoyer que tel ou tel champ. Donc on vérifie tous les champs, après on peut ne vérifier l'envoi du formulaire que sur un champ, mais de toute facon il faudra tester tous les autres ensuite...

par Jules Petibidon » 08 mai 2007, 22:52

Il est inutile de tester tous les champs, un seul suffit, si un champ existe c'est que le formulaire a été envoyé, et il existera qu'il soit rempli ou pas par l'utilisateur. :)

par Foxstyle » 08 mai 2007, 21:49

Quand tu as plusieurs champs, tu testes tous les champs. :-/
Oula c'est laborieux :s, moi mon but avec le isset($_POST['Submit']) c'est de savoir si l'utilisateur a déjà tenté d'entrer au moins une fois ses identifiants ... J'ai un autre script que j'ai réalisé qui me permet aux utilisateurs à l'aide d'un formulaire avec près de 10 champs de texte de s'inscrire pour devenir membre ( tout a fait banal ), et pour vérifier si les champs ne sont pas vides ou si les caracteres entrés sont correct j'ai utilisé le fameux isset($_POST['Submit']) . Tant que les champs ne sont pas corrects le formulaire réaparait et dans ce script isset($_POST['Submit']) marche très bien ... Et la ce qui m'intrigue vraiment c'est qu'avec firefox ca marche :roll:

par Sékiltoyai » 08 mai 2007, 20:01

Je n'y avait pas pensé et je vais testé ca peut etre que ca règlera tout, en fait j'ai utilisé $_POST['Submit'] car imaginons que j'ai plusieurs champs de texte pourquoi en choisir un arbitrairement plutot qu'un autre ? ( ca sra le cas quand j'aurai ajouté le champ login par exemple )
Quand tu as plusieurs champs, tu testes tous les champs. :-/

par Foxstyle » 08 mai 2007, 19:18

Voila grand merci Jules Petibidon ta solution marche !
En tout cas je ne comprends pas bien pourquoi ma solution marche sous firefox et pas sous internet explorer ... :roll:
Et merci à tous ! :wink:

par Foxstyle » 08 mai 2007, 19:12

hello,

un truc simple pour voir ce que te renvoie ton formulaire :

echo '<pre>' , print_r( $_POST , true ) , '</pre>';

tu colle cette ligne avant le moindre test, cela t'affichera tout ce que contient $_POST.
Merci pour cette ligne de code assez utile pour débuger ! J'avais placé un echo $_POST['pass'] mais ta commande est plus pratique elle scanne le tableau $_POST. Du coup j'ai constaté que lorsque je tape le mot de passe $_POST['Submit'] devient non seulement vide mais surtout indéfinie... pour des raisons que j'ignore encore.
ensuite, tester $_POST['Submit'] n'a aucun intéret. Si tu veux savoir si ton formulaire a été envoyé, tu teste isset( $_POST['pass'] ), il sera automatiquement "set" si le formulaire a été validé (par contre il peut etre "empty" mais cela n'a aucune importance).
Je n'y avait pas pensé et je vais testé ca peut etre que ca règlera tout, en fait j'ai utilisé $_POST['Submit'] car imaginons que j'ai plusieurs champs de texte pourquoi en choisir un arbitrairement plutot qu'un autre ? ( ca sra le cas quand j'aurai ajouté le champ login par exemple )
Si je comprends :

tu souhaites ouvrir une session avec un mot de passe par une personne qui c'est préalablement inscrite.

Si c'est cela, il faut donc une bdd et interroger ta base pour savoir si le password est valide...
Oui cest tout a fait ca, sauf que ca ne me serivrai a rien de compliqué les choses vu que si ce petit script ne marche pas je peux m'arréter la ^^

par alaingpl » 08 mai 2007, 18:41

Si je comprends :

tu souhaites ouvrir une session avec un mot de passe par une personne qui c'est préalablement inscrite.

Si c'est cela, il faut donc une bdd et interroger ta base pour savoir si le password est valide...

par Jules Petibidon » 08 mai 2007, 18:37

hello,

un truc simple pour voir ce que te renvoie ton formulaire :

echo '<pre>' , print_r( $_POST , true ) , '</pre>';

tu colle cette ligne avant le moindre test, cela t'affichera tout ce que contient $_POST.

ensuite, tester $_POST['Submit'] n'a aucun intéret. Si tu veux savoir si ton formulaire a été envoyé, tu teste isset( $_POST['pass'] ), il sera automatiquement "set" si le formulaire a été validé (par contre il peut etre "empty" mais cela n'a aucune importance).

par Foxstyle » 08 mai 2007, 18:29

Désolé, mais plûtot le code du formulaire
Ben le formulaire et le code sont dans une meme page dont j'ai posté le code dans mon premier post:
<?
// Name : login.php
 
if (isset($_POST['Submit']))
{
    if($_POST['pass']!="password")
    {
        echo "Mot de passe incorrect"."<br>";
        echo " <form action='login.php' method='post' name='login2'>
        <input name='pass' type='text'>
        <input name='Submit' type='submit' value='Envoyer'>
        </form>";
    }
    else
    {
        echo "it's good!!";
    }
}
else
{
    echo "<html>
    <body>
    <form action='login.php' method='post' name='login'>
    <input name='pass' type='text'>
    <input name='Submit' type='submit' value='Envoyer'>
    </form>
    </body>
    </html>";
}
    
?>

Le formulaire c'est :
echo "<html>
    <body>
    <form action='login.php' method='post' name='login'>
    <input name='pass' type='text'>
    <input name='Submit' type='submit' value='Envoyer'>
    </form>
    </body>
    </html>";

par Foxstyle » 08 mai 2007, 18:26

Bon j'ai cliqué sur le lien et j'ai cru que je devenais fou sur le coup, mais en fait pas tant que ca :lol:
Si vous surfez avec firefox, vous ne rencontrerez pas de probleme c'est seulement avec ie qu'il se produit :? ...
Au lieu de faire que si le pass est different de "password" ca fasse le then et sinon le else. tu devrais faire que si pass=="password" ( que si le pass est egal a password ca fasse le then et sinon le else). Permet moi de rester septible sur l'éficassité de ma solution mais on sait jamais tente. Sinon jai vu que pour dire different (!=) certain mettent 2 = (!==) essaye ca aussi.Mais je te garanti rien.
Ouais j'avais déjà tenté mais rien ... :roll: , je ne connaissais pas le !== mais je viens de tenter et rien non plus ^^[/quote]

par alaingpl » 08 mai 2007, 18:18

Désolé, mais plûtot le code du formulaire