IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] PHP & Javascript désactivé


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut [PHP-JS] PHP & Javascript désactivé
    Bonjour,

    J'aimerais savoir s'il existe une solution pour bloquer l'envoi d'un formulaire lorsque javascript est désactivé sur le browser.

    J'ai le code suivant pour mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form method="post" name="contact" action="confirmation.php" onsubmit="return validation()">
     
    <input type="text" name="nom" value=""  />
    <input type="text" name="prenom" value=""  />
    ......
     
    </form>
    J'ai un script JS qui va contrôler que les champs sont bien renseignés et si c'est le cas, les données sont envoyées au fichier confirmation.php, qui va les inscrire dans ma base mysql.

    Seulement voilà, si l'internaute désactive javascript, les champs ne sont plus contrôlés et s'il clique sur "envoyer", les données tapées (qui peuvent du coup être n'importe quoi) sont quand même enregistrées dans ma base.

    Y a t il une solution en php pour contourner ça ? Je n'ai rien trouvé de probant dans mes recherches pour le moment...

    Merci pour vos suggestions.

  2. #2
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Et bien, tu pourrais simplement faire vérifier tes données par php juste avant l'enregistrement, comme ça si le js est désactivé, les données sont quand même sécurisées.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    J'y ai pensé mais dans ce cas, il faut que je redirige l'internaute vers une nouvelle page lui affichant le message d'erreur comme quoi il s'est trompé dans la saisie. Et s'il veut revenir en arrière et modifier, ce n'est pas un peu lourd comme système à mettre en place ?

    J'avais pensé à rajouter un champ caché dans mon formulaire permettant de checker le javascript et récupérer la valeur et la tester dans le fichier confirmation.php, mais je ne sais pas comment m'y prendre.

  4. #4
    Membre habitué Avatar de Pahcixam
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 289
    Points : 191
    Points
    191
    Par défaut
    Moi je te propose un truc tout simple.

    En haut de ton formulaire par exemple, tu ajoute ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $erreur_1 = 'Le champs 1 est erroné';
     
    if(isset($_GET['erreur'])){
    echo constant('erreur_'.$_GET['erreur']);
    }
    ?>
    Ce code permet de récupérer un code d'erreur et d'afficher le message correspondant stocké dans une variable erreur_X .

    Et puis bien sur dans ton fichier de vérification tu vérifies si les champs sont vides, et si une des condition n'est pas remplie tu fait une redirection avec ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: formulaire.php?erreur=X');
    A noter qu'aucun code html ne doit être passé avant cette ligne.

    Voilà, j'espère que ça t'aidera.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Je ne suis pas une formule 1 en php donc si j'ai bien compris ton idée :
    En plus de la vérification de mes champs en JS, je les vérifie en php et en cas d'erreur (avec JS désactivé), le bout de code que tu m'as communiqué me permettra de revenir sur le formulaire déjà prérempli ?

  6. #6
    Membre averti Avatar de johweb
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Points : 367
    Points
    367
    Par défaut
    Citation Envoyé par creatchy
    Bonjour,

    J'aimerais savoir s'il existe une solution pour bloquer l'envoi d'un formulaire lorsque javascript est désactivé sur le browser.

    ...
    Merci pour vos suggestions.
    Une proposition :
    -tu place un champs caché dans ton formulaire avec value="0"
    -sur le submit de ton formulaire, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.form1.mon_champs_cache.value=1;
    -si sur ta page qui recoit le formulaire, ta valeur est toujours à 0, c'est que le javascript n'est pas activé. Donc, là, tu reviens sur ta page de formulaire.

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Merci johweb; je me doutais bien qu'il y avait une astuce avec le champ caché mais par contre je ne comprends pas où je dois mettre la ligne de code que tu m'as donnée dans le submit de mon formulaire sachant que j'ai déjà ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form method="post" name="contact" action="confirmation.php" onsubmit="return validation()">
    ....
     
    <input name="submit" type="submit" id="valider" value="Envoyer" />
    </form>

  8. #8
    Membre averti Avatar de johweb
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Points : 367
    Points
    367
    Par défaut
    Tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onsubmit="return validation()"
    Donc à ta place, je le mettrai à la première ligne de ma fonction validation.

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2003
    Messages : 217
    Points : 242
    Points
    242
    Par défaut
    C'est quoi cette manie de se baser sur du JS pour vérifier les données ?
    Oui, avec le JS, on peut vérifier les données, mais dans tous les cas il faut absolument un vérification en php derrière, sinon n'importe qui peut balancer avec le script approprié n'importe quoi dans la base de données...

  10. #10
    Membre averti Avatar de johweb
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Points : 367
    Points
    367
    Par défaut
    Là, en l'occurence, il ne s'agit pas de vérifier les données QUE par le javascript. J'ai donné une astuce pour vérifier si le javascript est desactivé ou pas, ce qui correspond à la question d'origine de ce thread.
    Mais une vérification javascript n'est jamais négative tant qu'elle est couplée, bien évidemment, par sécurité, à une vérification php.

  11. #11
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2003
    Messages : 217
    Points : 242
    Points
    242
    Par défaut
    C'est ca qui m'a fait bondir :
    Seulement voilà, si l'internaute désactive javascript, les champs ne sont plus contrôlés et s'il clique sur "envoyer", les données tapées (qui peuvent du coup être n'importe quoi) sont quand même enregistrées dans ma base.

  12. #12
    Membre averti Avatar de johweb
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 342
    Points : 367
    Points
    367
    Par défaut
    Effectivement, sur cette phrase, je suis d'accord avec toi !

  13. #13
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    J'ai une solution aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input name="submit" type="button" id="valider" value="Envoyer" onClick="document.monformulaire.submit();" />


    Ps : par contre recontrolle les champs en php, ne laisse jamais le js seul.

  14. #14
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Salut à tous et merci pour vos suggestions.

    Bien évidemment, j'ai compris l'intérêt de doubler la sécurité côté php et suis content d'avoir fait réagir Sékiltoyai à ce sujet car ça peut en aider plus d'un vu les posts que l'on trouve sur divers forums.

    Mais, étant débutant en php, j'aime bien pousser les choses un peu plus loin afin de renforcer la sécurité au maximum.

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Johweb, comme tu me l'as conseillé, j'ai ajouté la ligne de code dans
    ma fonction JS et je teste le champ caché dans mon fichier confirmation.php.

    ça fonctionne très bien.
    Et cerise sur le gâteau, je re-vérifie toutes les données côté php.

    Merci encore à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] PHP dans du code javascript
    Par ChrisMan dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/05/2007, 15h51
  2. Réponses: 7
    Dernier message: 08/10/2005, 09h59
  3. [PHP-JS] php & javascript
    Par MANU_2 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/08/2005, 12h18
  4. [PHP-JS] Arguments PHP d'une fonction javascript
    Par Néo-Tony dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/12/2004, 13h06
  5. [PHP-JS] Php dans un script javascript
    Par nebule dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/11/2004, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo