Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/01/2012, 19h51   #1
Membre du Club
 
Homme Florian siles
Webmaster
Inscription : juin 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Florian siles
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Webmaster
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : juin 2011
Messages : 59
Points : 47
Points : 47
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 =)
flozza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 21h09   #2
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 424
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 424
Points : 2 811
Points : 2 811
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
Citation:
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 22h20   #3
Membre du Club
 
Homme Florian siles
Webmaster
Inscription : juin 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Florian siles
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Webmaster
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : juin 2011
Messages : 59
Points : 47
Points : 47
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.
flozza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 22h25   #4
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
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 :
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>
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 23h12   #5
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
[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]
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 00h18   #6
Membre du Club
 
Homme Florian siles
Webmaster
Inscription : juin 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Florian siles
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Webmaster
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : juin 2011
Messages : 59
Points : 47
Points : 47
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 ?
flozza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 21h09   #7
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 424
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 424
Points : 2 811
Points : 2 811
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h05.


 
 
 
 
Partenaires

Hébergement Web