11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde
Je travail sur une fonction javascript qui bloque les robots (spam) dans les formulaires
voici comment j'ai fait :

$page_key = "......";
if ($_POST['fingerkey'] <> $page_key)
{
//c'est un robot je traite pas le formulaire
}
else
{
// ce n'est pas un robot
}
<form action="index.php" method="post" name='mon_form'>
<input type="hidden" name="action" value="process" />
<input type="hidden" name="fingerkey" id="fingerkey" value="0" />
....
</form>

<script type='text/javascript'>
document.getElementById('fingerkey').value='$page_key';
</script>

cette fonction fonctionne trés bien sous Firefox et IE6, mais avec IE7 ça foire... Smiley bawling

Ma question est :
Est ce que quelqu'un à déja essayé de changer un champ caché (hidden) sous IE7? si oui c'est quoi la mèthode utilisé

J'ai essayé les méthodes suivantes sans succés avant de poster ce message :
1- document.forms["mon_form"].elements["fingerkey"].value='xxx';
2- J'ai essayé avec la laibrire prototype la mèthode $('mon_form').value='xxx' et aussi $F('mon_form') = 'xxx';

J'attend vos remarques ... Smiley smile
Administrateur
Bonjour,

est-ce du Javascript obstrusif? Aucun robot n'utilise Javascript mais ceux qui n'ont pas Javascript ne sont pas tous des robots Smiley cligne (et qui rase le barbier? Smiley confused )
Bonjour,
Il me semble que j'ai pas dit que les robots utilisait javascript.
et c'est pour cela qu'un robot sera bloqué...
sinon tant pi pour les navigateurs qui n'ont pas javascript...et ça semble rare aujourd'huit...
ma question n'est pas sur la validité de la fonction mais sur la mèthode getElementById sous IE et le changement d'un champ hidden...
Merci
Administrateur
100% des utilisateurs réussissant à utiliser ton formulaire auront Javascript, c'est sûr.
Mais c'est impossible d'estimer combien auraient bien voulu l'utiliser et n'ont pas réussi Smiley cligne entre les gens surfant au boulot dans des entreprises où les admins ont supprimé Javascript pour des raisons de sécurité et ceux qui le désactivent volontairement (Fx + NoScript pour ma part)
Vous avez tout a fait raison.
Sauf que ces personnes qui n'auront pas mon formulaire n'auront pas Gmail ni Netvibes...et la liste est longue ...
Et il faut que le service informatique soit vraiment con pour désactiver le javascript dans les posts des employés...
Modérateur
Salut,

Ceci ne répondrait-il pas à tes besoins ?
<?php

session_start();
header('Content-type: text/html; charset=utf-8');

function token()
{
	return md5(uniqid(rand(), true));
}

if(empty($_POST['token']))
	$_SESSION['token'] = $token = token();

$page = 
'<!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>Exemple</title>
	</head>
	<body>
';

$page .= !empty($_POST['token']) && $_POST['token'] === $_SESSION['token'] ?

	'		<p>Ce n\'est pas un robot !</p>
':

	'		<form action="index.php" method="post">
			<div>
				<input type="hidden" name="token" value="' . $token . '" />
				<input type="submit" value="Valider" />
			</div>
		<form>
';

$page .=
'	</body>
</html>
';

echo $page;

?>


PS : Peux-tu éditer ton premier post afin de baliser le code comme prévu dans les règles du forum ? Merci d'avance. Smiley cligne