possible d'ouvrir une page qu'une fois par connection

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : possible d'ouvrir une page qu'une fois par connection

par AB » 27 sept. 2007, 23:00

Par ailleurs ta méthode incrémentielle n'est pas fiable car suivant les navigateurs et les machines des visiteurs, certains vont gagner des points plus vite que d'autres.

Mon code était plus précis quoique pas tout à fait car un blocage temporaire (gros ralentissement) de la machine du visiteur aurait faussé le comptage du temps. En fait je compensais les variations pour une utilisation normale. C'était une première approximation faite à la volée.

Tu trouveras un code beaucoup plus sûr ici :

http://actuel.fr.selfhtml.org/archives/ ... 0/tedh.htm

Cela dit si tu souhaites un maximum de sécurité, n'utilises cette fonction que comme une indication pour le visiteur.

En effet si tu reportes la valeur dans un champs de formulaire même caché, un pirate un peu connaisseur en prog pourrait t'envoyer un formulaire externe avec cette valeur modifiée. J'étais parti sur un jeu sans enjeu réel, et cela pouvait donc suffire.

Sinon le code javascript doit servir simplement d'indication et pour le comptage du temps reél tu stockes l'heure de début du chargement de la page en php dans une variable de session et à la sortie de page tu fais le décompte en fonction de la nouvelle heure php.

par AB » 27 sept. 2007, 22:09

J'ai édité mon message dans lequel il y a la réponse pour appeler une fonction js sur un chargement de la page.

Essaies plutôt de partir de ma fonction js compte_temps()

Elle peut te paraitre compliquée mais si j'ai mis deux champs : valeur_temps et valeur_témoin, c'est que pour aller vite j'ai fait afficher le décompte dans un champ de formulaire "valeur_temps" qui pourrait être modifié par l'utilisateur, alors qu'il n'a pas accès directement à "valeur_témoin".

par solodown » 27 sept. 2007, 22:06

j'ai éssayé un bout de js fait maison(je debute en js)

Code : Tout sélectionner

<script language="Javascript" type="text/javascript"> var sec=35; secund(); function secund() { sec++; document.f.s.value=sec; setTimeout('secund()',1000); } </script>
dans le head : marche pas
dans le body, au dessu du form : marche pas
dans le body, en dessou du form: ça marche

comment cela ce fait-il ?

par AB » 27 sept. 2007, 21:44


et aussi, comment savoir où mettre le js head ou body? la difference ?
Pour une syntaxe correcte dans le dernier code que je t'ai donné, il manquait la fermeture de la balise head. Je viens donc de corriger (Cette faute n'existait pas dans les codes précédents).

Autant que possible on met le code js entre les balises head soit directement comme dans le code que je t'ai proposé, soit par l'intermédiaire d'un lien vers un fichier externe js - principalement si ce code est réutilisé dans d'autres pages.
Dans l'absolu on peut mettre du code js un peu n'importe mais il est déconseillé de le faire quand on peut faire autrement.
Bien entendu entre tes balises javascript <script type="text/javascript"> et </script> tu peux mettre autant de fonctions js que tu veux.

Donc par exemple tu pourrais mettre les deux blocs de code que je t'ai indiqué à l'intérieur de ces balises et pour les appeler simultanément au chargement de la page faire

Code : Tout sélectionner

<body onload = "diapo();compte_temps()">
Cette façon de faire te permettrais par exemple d'afficher des bannières différentes indépendamment du comptage des points.

par solodown » 27 sept. 2007, 19:10

en fait, il lui aura deux types de lien

- Les liens ou code JavaScript des régie publicitaires.
- Le lien hypertexte des membres(options payantes)

pour le moment, j'ai repris tout à zéro et je suis en train de m'occuper du problème qui m'a fait venir à vous

et aussi, comment savoir où mettre le js head ou body? la difference ?

par AB » 27 sept. 2007, 18:36

Comme en php

Code : Tout sélectionner

if (mavariale != '') { }
Tu en es où? Tu fais le code js pour pouvoir faire des liens sur tes bannières ?
Au fait, combien veux tu faire défiler de bannières différentes ?

par solodown » 27 sept. 2007, 18:13

Bonjour,

Comment faire(en JS) pour savoir si une var est vide ou pas pour faire une vérif avec un if()

par AB » 25 sept. 2007, 14:33

No problème.

Il existe des classes très complètes pour alimenter des tableaux javascript avec du php, mais dans ton cas comme tu ne devrais pas avoir de " dans le nom de tes fichiers images, il est simple d'alimenter ton tableau photo js comme ceci :

Code : Tout sélectionner

var photo = new Array(<?php echo $chaine ?>);


où tu aura pris soin de formater $chaine à partir du résultat de ta requête initiale pour que cette variable retourne : "chemin du premier fichier","chemin du second fichier","etc"

EDIT en fait les enregistrements doivent êtres concaténés sous la forme
$chaine='';
//puis dans ta boucle qui lit ta requête :
$chaine .= '"'.chemin du premier fichier.'",'; //etc
//sauf le dernier qui doit être sous la forme
$chaine .= '"'.chemin du dernier fichier.'"';
Et tu pourras réutiliser cette méthode pour alimenter des petits diaporama de présentation ou publicitaires à partir d'une requête php.

par solodown » 25 sept. 2007, 12:39

ok mais

Peut-on utilisé du php dans JS ou/et l'inverse ?

pour les bannière je dois effectué une requête

par AB » 24 sept. 2007, 19:28

Pour enregistrer les points c'est le même principe que tu utilises actuellement sauf que cela se fera soit quand l'utilisateur valide ses points soit quand il quitte ta page.

Sinon, concernant le principe du diaporama pour changer ta banière toutes les x secondes tu peux utiliser un script du genre :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>Sans titre</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript"> <!-- var photo = new Array("http://www.abciweb.net/PHOTO/abciweb-100.jpg","http://www.abciweb.net/PHOTO/amazigh-100.jpg","http://www.abciweb.net/PHOTO/aned_mau-100.jpg","http://www.abciweb.net/PHOTO/aub_ane-100.jpg"); var source = new Array(); for (var i=0; i < photo.length; i++){ source[i] = new Image(); source[i].src = photo[i]; } var Temps = 35 * 1000; /*Temporisation par défaut (35 secondes) à définir ici*/ var Inc = 0; var timer = 0; function diapo() { document.getElementById("vue").src = source[Inc].src; if (Inc < photo.length - 1) {Inc++;} else {Inc = 0;} timer = setTimeout("diapo()",Temps); } //--> </script> </head> <body onload="diapo();"> <div id="diaporama"> <img id= "vue" style="border:0" src="" alt="" /> </div> </body> </html>
Il suffit de remplir le tableau javascript "photo". Tu peux bien sûr mettre l'adresse des images en relatif. Et s'il n'y a pas de " dans l'adresse de tes fichiers (il ne devrait pas y'en avoir), tu peux facilement alimenter ce tableau par un script php (résultat d'une requête ou autre) au chargement de la page.

En rajoutant un bout de code et un tableau dans le code javascript, tu peux également rendre les photos cliquables.

par solodown » 24 sept. 2007, 18:14

Peut-on utilisé du php dans JS ou/et l'inverse :?:

par AB » 24 sept. 2007, 13:53

Je viens de répondre à ta dernière question en t'envoyant un message.

Sinon pour le début de ta question y'a pas besoin d'utiliser ajax pour faire ma méthode précédente. Javascript seul devrait suffire avec un peu de php en complément.

par solodown » 24 sept. 2007, 13:13

Je vais essayé sa

En fait, faut utilisé ajax ?

Merci de consacre quelque minute de ton temps a mon problème
Est-ce possible de conversé avec toi par messagerie instantané ?

par AB » 24 sept. 2007, 12:32

Si on fait au plus simple

Dans la frame supérieure
- tu fais un décompte des points en javascript avec une fonction dans le genre de celle que je t'ai indiquée par exemple. A toi de l'adapter si tu souhaites pour afficher + 1 point toutes les 35 secondes.

- Donc arrivé au seuil des 35 secondes tu fais afficher + un point en javascript et tu en profites pour changer le contenu de ta bannière toujours en javascript comme pour un diaporama.

- Un bouton pour que le visiteur puisse valider ses points. Quand il valide tu fais l'enregistrement en bdd et tu le redirige vers une page de ton choix.

Si tu veux éviter que le visiteur ait à valider ses points tu peux utiliser onUnload qui déclenchera l'envoi de formulaire lorsque le visiteur quittera cette page.
doc http://fr.selfhtml.org/javascript/langa ... m#onunload

- Pour éviter que le visiteur ne puisse pas rejouer (se reconnecter sur cette même page) durant la même session - puisque c'est ce que tu demandes dans ton premier post - tu pourras donc utiliser le système de session dont nous avons déjà parlé.

Est-ce que ce système te conviens ?

(essaies d'éviter trop de titres en rouge dans tes post, ça flash)

Re: possible d'ouvrir une page qu'une fois par connection

par solodown » 22 sept. 2007, 23:17

Je vais te repondre clairement.

Tout d'abord, voici la page temporaire concerné http://www.mabarre.com/labarre/cashbar.php

- Que peut-il faire ou qu'est-il sensé faire sur cette page ?
Il peut soit regardé la bannière en haut et ces points ou navigué sur internet grace au frame.

- Qu-a-t-il à faire pour gagner des points ?
Rien !!^^, navigué avec cette page.

- De quelle façon enregistres-tu les points ?
Avec un form caché qui contient id, points du membre, quand la page ce rafraichi elle recupere les données du form avec $_post['']; puis les ajoute dans a bdd.

- Pourquoi veux-tu rafraichir cette page toutes les x secondes ?
Je m'en sert pour changé la bannière et ajouté 1 point au membre.

- Que ce passe-t-il lors de ce rafraichissement ?
Comme dit juste au dessus.

- Y-a-t-il une redirection automatique au bout de X secondes ?
En javascript

Code : Tout sélectionner

<form name="ss" method="post" action=""> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Veuillez patienter</font> <input type="text" name="tt" size="2"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">sec.</font> </form> <form name=finishtask action=bar.php method=post> <input type=hidden name=id value=<?echo $id ?>> <input type=hidden name=pts value=<?echo $points?>> <input type=hidden name=banp value=<?echo $banp?>> </form> <script language="Javascript" type="text/javascript"> var sec=35; secund(); function secund() { sec--; document.ss.tt.value=sec; if(sec==0) document.finishtask.submit(); setTimeout('secund()',1000); } </script>
- Si le visiteur tente de se reconnecter ultérieurement sur la même page durant la même session, que veux-tu qu'il se passe ?
C'est-à-dire ?