Jump to content
Sign in to follow this  
xpatval

Javascript désactivé

Rate this topic

Recommended Posts

Bonjour,

Je voulais juste savoir de quelle manière il était possible de savoir si javascript est ou non désactivé sur un poste client.

Merci,

xpatval

Share this post


Link to post
Share on other sites

Donc, il faudrait activer un js, qui, si javascript n'est pas activé sur un poste cient, ne renvoie aucune valeur variable, si l'on veut être sur de son inactivité.

Cette question pour une raison bien simple:

Dans un formulaire, un script js se charge dans un premier temps de vérifier la bonne saisie des champs.

après validation, c'est php qui se charge de la vérif coté serveur, et en cas de mauvaise manip, ou d'une saisie ambigüe que js aurait laissé passer (surtout moi). Mais si javascript est désactivé, je souhaite que ce soit php qui prenne la main dès le départ. D'où ma question.

xpatval

Share this post


Link to post
Share on other sites

Ton javascript appelle une image. En fait, ce n'est pas une image, mais un 'bout de code' destiné à controler si le javascript est opérationnnel ou non. Si cette image est appelée, c'est que le javascript marche, sinon non.

Simple,

Anonymus.

Share this post


Link to post
Share on other sites

Mon conseil tu laisses le javascript et le php... Double vérification, une côté client, une côté serveur... En plus php ne peut pas prendre la main dès le départ, mais qu'après postage du formulaire... Ou alors tu enlèves le javascript qui ne sert quasi à rien et ne met que le php, avec repostage automatique des données... Ca devient presque transparent pour l'utilisateur. Ex il poste son formulaire mais il a oublié un champs sur 8, tu réaffiches le formulaire prérempli mais avec un message disant "vous n'avez pas rempli tous les champs obligatoires" et tu mets en rouge le champs qui n'a pas été rempli. Comme ça tu te soucies plus du javascript et ça marche à coup sûr sur tous les navigateurs. @+

Share this post


Link to post
Share on other sites

Bonjour,

Tu peux procéder de la façon suivante:

- tu inclues dans ton formulaire un champ caché dont la seule utilité est d'indiquer au serveur lors de la soumission si javascript est activé (et donc si PHP peut se contenter d'une vérification "légère", le gros de la vérification ayant été fait par javascript)

- lors de la soumission du formulaire, tu exécutes la vérification en javascript, et tu modifies la valeur de ce champ caché, toujours en js. A ce stade si js est activé, la vérification est faite ET le champ caché positionné. Dans le cas contraire, la vérification js n'est pas faite, mais le champ caché garde sa valeur par défaut

- ainsi lors de l'envoi au serveur, il ne reste plus à PHP qu'à tester la valeur du champ caché pour savoir si la vérification js a été faite, ou si au contraire il faut tout vérifier en PHP.

Un peu compliqué dans le principe, mais très simple dans l'implémentation. Ca donne ça:

<?php
if (isset($_POST["envoyer"])) { // l'utilisateur a soumis le formulaire
  if ($_POST["jsactif"]=="non") { // le javascript de vérif des données n'a pas été exécuté: le faire en php
      ....
  }
  else { // i.e. $_POST["jsactif"]=="oui", le javascript de vérif des données a pas été exécuté: une vérif légère en php suffit
       ....
  }
}
?>
<html>
<head>
...
<script type="text/javascript" language="JavaScript">
<!--
function verif(formulaire)
{
// vérification des champs et positionnement du flag erreur si une erreur est rencontrée
....
if (erreur) { // erreur: on informe l'utilisateur mais on ne soumet pas le formulaire
  alert ('Erreur dans un des champs du formulaire.');
  return false;
}
else { // pas d'erreur, on soumet le formulaire
   // sans oublier de positonner le champ caché pour indiquer au serveur que la vérif js a été faire
    formulaire.jsactif.value="oui";
    return true;
}
// -->
</script>
</head>
<body>
....
<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post" name="tonformulaire" onsubmit="return verif(this);">
...
<input type="hidden" name="jsactif" value="non">
<input name="envoyer" type="submit" value="Envoyer">
</form>
....
</body>
</html>

Share this post


Link to post
Share on other sites

Pour les tenants du tout vérif en php, je ne suis pas en désaccord, bien au contraire, à partir du moment où l'implémentation d'une base est en jeu.

Dans mon cas, le formulaire ne sert qu'à envoyer par mail certaines informations qui me seront utiles.

Ce pour quoi j'estime (à tord ?) que la vérif js est pratique dans un premier temps, évitant un (des) aller(s)/retour(s) client/serveur.

Mais si le js est désactivé, je dois faire ces vérifs par php interposé. D'où ma question...

>> Jan, dans le script de vérif js, tu codes ainsi:

formulaire.jsactif.value="oui";

Donc, au submit formulaire, la valeur de la variable (valorisée par le js) sera automatiquement "récupérée" par php ? on est bien d'accord ?

(Faible suis-je en js...En js seulement ? allons donc...) ;)

xpatval

Share this post


Link to post
Share on other sites

Oui, c'est ça.

On teste la valeur de $_POST["jsactif"] en PHP (voir les 1eres lignes du code)

Share this post


Link to post
Share on other sites

Je up pour réagir a une bizzarerie.

Certains on sous entendu que le php pouvais faire des controles leger puisque js avais deja controler...........

N'avez vous jamais appris que js ne fait que des contrôles de "confort" permettant l'implémentation d'un validateur informant le client en temp réel ou empêchant l'envoie d'un form inutile puisque non valider.

Cependant, js ne doit JAMAIS servir a effectuer des contrôles sur lesquelles vous vous basez pour introduire des données dans votre DB, vous devez TOUJOURS refaire l'INTEGRALITE des contrôles en PHP.

Tout simplement parce que le js peut etre controuné par un enfant de 8 ans possédant firefox et FireBug, pour trafiquer facilement les champs et le javascript.

Apres , c'est vous qui voyez....si vous êtes suicidaire.....^^

Share this post


Link to post
Share on other sites

Même si c'était déjà le cas à l'époque, répondre 4 ans après le sujet initial ne me parait pas d'une grande utilité ? ou alors pour une piqure de rappel...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...