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

JavaScript Discussion :

Vérification présence JavaScript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2011
    Messages : 70
    Par défaut Vérification présence JavaScript
    Bonsoir à tous

    Bon je sais c'est une question déjà posée mainte et mainte fois. Mais les recherches sur google renvoient des solutions toutes différentes des unes des autres et j'ai du mal à voir ce qu'il me conviendrait le mieux, ce qui n'est pas bon..

    Alors je vous explique premièrement la structure du site. J'ai un index.php avec un session_start();
    Il include (je simplifie) /pages/$_GET['pg'].php.

    Dans certaines pages, mes éléments ne fonctionnent qu'en javascript. Le problème c'est que j'aimerais que le site soit entièrement fonctionnel même si javascript est désactivé. Par exemple, je prend la page pour créer un nouveau compte. Il y a un formulaire, avec un captcha. Ce captcha est en jquery. Il s'inscrit: <div id="captcha"></div>. J'aimerais ajouter pour cette page un if($_SESION['javascript']=="disabled") par exemple, on n'affiche pas ce div captcha, mais un <img src="captcha.php"> avec un input text, afin de permettre à l'utilisateur sans js de rentrer un captcha et de valider ce formulaire.

    Je ne sais pas si j'ai été très clair.
    Alors j'ai essayé un simple
    <noscript><?php $_SESSION['javascript'] = "disabled"; ?></noscript> mais ça définit la variable, que js soit activé ou pas. Je poste sur ce forum car je pense que la solution est en javascript directement.

    N'hésitez pas à me demander si quelque chose est flou.
    Je vous remercie par avance =)

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    cela ne peut se faire qu'avec un échange entre le client et le serveur

    le client demande une page
    le serveur ne sais pas si le client possède javascript
    il lui renvoie un page contenant un bout de js qui créé un cookie
    et fait une redirection (expire)

    du coup le client invoque la nouvelle page (par redirection ou clic)
    dans celle-ci tu peut lire les entêtes de la requête et si le cookie est présent il n'a put être mis que par le js c'est donc que le client à javascript

    tu ne peux pas sur le serveur lire ce qu'il a sur le poste du client
    tu ne peut que le lui demander (le coup du cookie est une façon de le demander)

    le serveur ne peut recevoir que les informations que lui envoie le navigateur
    et le support de javascript n'est pas une info que le navigateur envoie spontanément


    au passage
    Il include (je simplifie) /pages/$_GET['pg'].php.
    fait partit des pratique potentiellement dangereuse à éviter
    particulièrement si le contenu est un script php (s'il contient des définition ça l'est moins)

    A+JYT

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2011
    Messages : 70
    Par défaut
    Bonjour seikaiijin

    Je sais tout ça, ce que j'aimerais savoir c'est quel méthode utiliser.
    Pour les cookies, l'utilisateur peut les désactiver. Il me semble que ne soit pas une bonne solution.

    Pour l'include, j'ai bien préciser que je simplifiais. Ce serais inutile de coller le code php de l'include alors que c'est pas le sujet, c'était juste pour préciser que index.php contient une autre page.

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Perso je pense que si tu veux un Captcha accessible sans Javascript, il est inutile d'en incorporer un suplémentaire en JQuery.

    Il vaudrait mieux se concentrer sur la création (ou recherche) d'un Captcha en "dur" qui contribue à se protéger contre le maximum de robots spammeurs qui visitent les pages sans JS.

    Mantenant, si je ne voudrais pas me séparer de la "version Javascript" du Captcha, je ferais un truc du genre...
    Code xhtml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <!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" xml:lang="fr" lang="fr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>Test</title>
    	<style type="text/css" media="screen">
    		#noJS_captchaContainer{display:block}
    	</style>
    </head>
    <body>
    	<form action="http://accessible.exemple.com/soumission.php" method="post" id="form">
    		<div>
    			<label for="user">Utilisateur :</label><br /><input type="text" name="user" id="user" value="" /><br />
    			<label for="pass">Mot de passe :</label><br /><input type="password" name="pass" id="pass" value="" /><br /><br />
     
    			<div id="noJS_captchaContainer">
    				<label for="captcha">Code :</label> <img src="captcha.php" alt="" /><br />
    				<input type="text" name="captcha" id="captcha" value="" /><br /><br />
    			</div>
     
    			<input type="submit" value="Envoyer" name="send" id="send" />
    		</div>
    	</form>
    	<script type="text/javascript">
                    var elt=document.getElementById('noJS_captchaContainer');
     
                    /*      Si Javascript est activé, on peut cacher l'élément HTML (id="noJS_captchaContainer") avec le code
     
                                    elt.style.display='none';
                            
                            Mais il est préférable - pour éviter les conflits de noms (name et/ou id) - de... */
     
                    // Supprimer complétement l'élément HTML (id="noJS_captchaContainer")
     
                    while(elt.hasChildNodes())elt.removeChild(elt.lastChild);
                    elt.parentNode.removeChild(elt);
                    
                    // À partir d'ici ou une fois le document chargé (onload), on peut ajouter le Captcha JS dans l'arbre DOM.
            </script>
    </body>
    </html>

  5. #5
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    [troll=on]
    sérieux, à part les robots et les 2 geeks au fond d'un bois qui utilisent un navigateur en ascii sous linux dont j'ai oublié le nom (et ceux qui ont désactiver le script sur une page bien spécifique pour trouver des failles) il y a 0% des "vrais" visiteurs qui n'ont pas javascript d'activé.
    [/troll=off]

  6. #6
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2011
    Messages : 70
    Par défaut
    Salut Eric2a

    Mon captcha en dur est suffisant. Surtout que sur ce site il n'y aucun endroit ou des robots pourraient spammer.Tout le jquery qu'il y a sur le site, et pour e captcha, c'est pour rendre plus agréable l'apparence et la navigation. Donc oui j'y tiens, j'aurais très bien pu faire tout en php. C'est un + que je lui ai offert et que je lui laisserais.
    Honnetement je suis pas fan de ta solution, je me vois mal supprimer des élements html sur toutes les pages ou il y a du javascript. En fait il n'y a pas une page sans.. Faire ça sur chacune des pages serait barbare.

    Willpower j'aimerais me dire comme toi, d'ailleurs j'étais parti comme ça au départ, mais les concurrents l'ont fait, alors je veux le faire aussi =P

    Toutes les données sont revérifiées en php derrière, donc pour ceux "qui ont désactiver le script sur une page bien spécifique pour trouver des failles", c'est peine perdue.

    N'y a t il réellement aucune solution possible et qui tient la route sans être bourrin ?

  7. #7
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par flozza Voir le message
    Bonjour seikaiijin

    Je sais tout ça, ce que j'aimerais savoir c'est quel méthode utiliser.
    Pour les cookies, l'utilisateur peut les désactiver. Il me semble que ne soit pas une bonne solution.

    Pour l'include, j'ai bien préciser que je simplifiais. Ce serais inutile de coller le code php de l'include alors que c'est pas le sujet, c'était juste pour préciser que index.php contient une autre page.
    le cookie était un example
    tu mets un js qui ajoute une image invisible de un pix dans la page l'url de cette image étant un script php
    ce script lorsqu'il est activé ajoute une info dans la sessions
    comme c'est un script js qui place l'image dans la page l'appel au script de l'image ne peut avoir été appelé que si le client à javascript il suffit donc de mettre cette info en session

    dans les autres pages il suffit de vérifier la présence du js dans la sesssion

    A+JYT

Discussions similaires

  1. [AC-2003] Vérification présence fichier
    Par DUCKY_ dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/11/2009, 12h38
  2. API d'indentation et de vérification syntaxe JAVASCRIPT
    Par fabboy dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 17/07/2009, 11h24
  3. Vérification présence fichier
    Par Tifendro dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/06/2008, 17h25
  4. Vérification en javascript
    Par fatenatwork dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/03/2008, 19h07
  5. [PHP-JS] Vérification en javascript d'un tableau en PHP
    Par johnson95 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/12/2006, 13h24

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