[Aide] Je cherche un Script de vote

TEST210
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 42
Inscription: 4 Fév 2012

[Aide] Je cherche un Script de vote

Message le Sam Fév 04, 2012 23:37

Bonsoir, je viens récemment de m'inscrire sur le forum car j'aimerais avoir un petit peu d'aide.

Quelqu'un aurait un script de vote permettant de mettre +1 ou -1 (ou pouce vert/pouce rouge à la manière de youtube) à des images qui défilent ?

Si quelqu'un pouvait m'aider un petit peu à avancer, ça serait sympa !

Cordialement.


guicara
WRInaute passionné
WRInaute passionné
 
Messages: 2472
Inscription: 2 Fév 2006

Re: [Aide] Je cherche un Script de vote

Message le Dim Fév 05, 2012 14:02

Bonjour,

La question a déjà été postée dans cette section (une recherche t'aurais permis d'avoir une réponse plus rapidement).
Mais je te redonne quand même quelques liens :

http://www.9lessons.info/2009/08/vote-with-jquery-ajax-and-php.html
http://www.technabled.com/2009/02/reddit-style-voting-with-php-mysql-and.html
http://webhole.net/2010/04/04/voting-script-with-php-and-jquery/


stone66
WRInaute discret
WRInaute discret
 
Messages: 122
Inscription: 30 Aoû 2010

Re: [Aide] Je cherche un Script de vote

Message le Sam Fév 11, 2012 8:44

Bonjour,

suite à de nombreuses recherches j'ai décider d'utiliser ce système de vote :
http://www.technabled.com/2009/02/reddit-style-voting-with-php-mysql-and.html

mais une question me "turllupine" :D

avant de le mettre en service j'aimerais comprendre pourquoi le fichier jquery.pack.js est aussi gros (55ko), je n'y connais rien en jquery et j'aimerais avoir votre avis ?

sa taille est-elle normal ? ne peut-on pas le réduire ?

ajouter un fichier de 55ko à télécharger à chaque accès aux page m'embête un peu :oops:

je vous remercie d'avance pour votre aide précieuse,

amicalement,
Stone66


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: [Aide] Je cherche un Script de vote

Message le Sam Fév 11, 2012 9:51

Si le serveur Web est bien configuré il enverra le fichier gzippé, donc ça fera bcp moins volumineux.
Tu peux aussi inclure le jQuery à partir des CDN:
http://code.google.com/apis/libraries/devguide.html#jquery
http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery


stone66
WRInaute discret
WRInaute discret
 
Messages: 122
Inscription: 30 Aoû 2010

Re: [Aide] Je cherche un Script de vote

Message le Sam Fév 11, 2012 10:28

Merci pour votre réponse,

je suis chez OVH en mutualiser, j'imagine que l'option est activé par défaut !!!?

je ne préfère pas utiliser un fichier externe pour des questions de sécurité ( j'ai peut-être tord mais c'est psychologique !).
il est donc normal que mon fichier jquery soit aussi volumineux ?

amicalement,
stone66


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: [Aide] Je cherche un Script de vote

Message le Sam Fév 11, 2012 10:47

Tu regardes les entêtes HTTP pour l'URL de ton fichier JS, et si tu vois: Content-Encoding: gzip c'est que c'est bien gzippé.
Il n'y a pas de danger à utiliser jQuery à partir des 2 CDN que j'ai cité. C'est avantageux car pleins de sites les utilisent et ces scripts ont bcp de chance d'être déjà en cache dans le navigateur du visiteur.
En tout cas c'est moins dangereux que d'avoir installé un script PHP dont tu maitrises pas le code et qui n'échappe pas les données lors du update :D


zeb
WRInaute accro
WRInaute accro
 
Messages: 4553
Inscription: 5 Déc 2004

Re: [Aide] Je cherche un Script de vote

Message le Sam Fév 11, 2012 13:44

spout a écrit:En tout cas c'est moins dangereux que d'avoir installé un script PHP...

Code: Tout sélectionner
$q = "UPDATE entries SET votes_down = $votes_down WHERE id = $id"; 

:D c'est cool ont peut faire du vote de masse.

@stone66 : D'un autre point de vue passer par des bibliothèques JS pour faire des trucs aussi simple c'est pas un peut prendre un bulldozer pour déterrer un radis ? Parce ce que cliquez sur une image pour solliciter un script côté serveur qui va faire +1 ou -1 faut pas être ingénieur non plu ...
Idem composer des pages en fonction d'une BDD d'images c'est pas "super sport" non plu.


stone66
WRInaute discret
WRInaute discret
 
Messages: 122
Inscription: 30 Aoû 2010

Re: [Aide] Je cherche un Script de vote

Message le Sam Fév 11, 2012 15:42

zeb a écrit: :D c'est cool ont peut faire du vote de masse.


@zeb : tu peux développer ?

Je ne peux pas faire le script moi-même car je ne connais ni javascript, ni ajax ni aucun language qui me permet de voter et d'afficher le résultat sans rafraichissement de la page et je ne crois pas que PHP sache le faire ?

Tous les systèmes de votes que j'ai parcouru sont où trop complexe pour ce que je veux faire ou bourrés de failles !

celui-ci je le trouvais pas mal pour une fois, j'y ai juste ajouter l'utilisation des cookies pour ne pouvoir voter qu'une fois par jour...


zeb
WRInaute accro
WRInaute accro
 
Messages: 4553
Inscription: 5 Déc 2004

Re: [Aide] Je cherche un Script de vote

Message le Sam Fév 11, 2012 17:36

Code: Tout sélectionner
$q = "UPDATE entries SET votes_down = $votes_down WHERE id = $id"; 

ça c'est une ligne de code vue sur la page que tu indique, ou la variable $id est utilisée pour attaquer la base de données sans aucun controle si je ne me trompe donc rien ne m'empêche d'envoyer une requête où la variable id contiendra un truc du genre "1 or id!=1" ce qui aura pour effet d'affecter tous les records de la table (comme te le faisait remarquer Spout)
Et çà c'est un exemple "gentil".

afficher le résultat sans rafraichissement de la page et je ne crois pas que PHP sache le faire ?

Si c'est très possible et même assez simple mais bien sur faut un peut mettre le nez dans javascript (donc de facto ajax)

Dans le principe php te génère une page contenant tes photos et leur vote disons que ce vote avec les boutons (ou images) + et - sont situés dans une <div id="Vote123"></div>

le clic sur le bouton + ou - via 3/4 lignes d'ajax (en fait de javascript qui génère un objet "XMLHttpRequest") va appeler (sans rechargement de page) un script côté serveur en php.
Ce script appelé sera chargé de faire plus 1 ou moins 1 dans la base (c'est d'ailleur le même genre que celui que nous citons ici) et il produira via un "echo" php une sortie texte que tu pourra inclure dans ta div qui avait été chargée a l'origine dans la page.

donc en gros :

on affiche une page HTML avec les options a cliquer pour + et -
on clique sur + ou -
ça déclanche un javascript (onclick sur l'image par exemple)
le javascript appel le serveur sur une url précise
le script serveur fait son job (+ ou - en base)
le script renvoie un contenu html formaté avec la nouvelle valeur de + ou -
le javascript appelant reçoit la réponse du script php
le javascrit change le contenu de la page (la div "vote123" ci dessus) et affiche donc le nouveau vote.

en pratique si ta page contient un truc du genre :
Code: Tout sélectionner
<div id="vote123">
   5 plus <img src="voteplus.jpg" onclick="voteplus('123');" /><br/>
   6 moins <img src="votemoins.jpg" onclick="votemoins('123');" /><br/>
</
div> 

Plus le code javascript / ajax suivant (te met juste l'exemple du plus):
Code: Tout sélectionner
function voteplus(x){
   // créer l'objet ajax
   var xhr=null;
   if(window.XMLHttpRequest){xhr=new XMLHttpRequest();}
   else if(window.ActiveXObject){xhr=new ActiveXObject("Microsoft.XMLHTTP");}

   // appeler le serveur
   xhr.open("GET","http://www.example.com/ajax/vote-plus.php?id="+x,false);
   xhr.send(null);

   // modifier le page sans recharger celle ci
   document.getElementById('vote' + x).innerHTML= xhr.responseText;
}
 

et que côté serveur tu as dans le dossier ajax (l'url : "http://www.example.com/ajax/vote-plus.php") un code du genre :
Code: Tout sélectionner
<?php
    header
('Content-type: text/html; charset=iso-8859-1');
    $id = $_GET[id]; // c'est ça qu'il faut sécuriser
    $sql = "UPDATE `tableVote` SET voteplus = voteplus+1 WHERE `id` = ${id}";
    mysql_query($sql);
    
    $sql 
= "SELECT voteplus,votemoins FROM `tableVote` where `id` = ${id}";
    mysql_query($sql);

    (...)

    echo "<div id=\"vote${id}\">${valPlus} plus <img src=\"voteplus.jpg\" onclick=\"voteplus('${id}');\" /><br/>${valMoins} moins <img src=\"votemoins.jpg\" onclick=\"votemoins('${id}');\" /><br/>
</div>"
;
?>


Le script php de vote est schématisé au plus simple j'ai pas tous mis dedans ça doit pas être trop difficile de trouver ce qui manque ou un truc équivalent... note bien le "// c'est ça qu'il faut sécuriser" car le souci évoqué est dans ce genre d'endroit, là ou une variable accessible de l'extérieur est utilisée dans du code.


stone66
WRInaute discret
WRInaute discret
 
Messages: 122
Inscription: 30 Aoû 2010

Re: [Aide] Je cherche un Script de vote

Message le Sam Fév 11, 2012 18:58

olala quel post ! merci de ton temps je vais étudier tout ce que tu as écrit...il va me falloir un peu de temps.

dernière question : pour sécuriser $id = $_GET[id];

est-ce que cela suffit ? :

if(isset($_GET['id'])){ $id = mysql_real_escape_string($_GET['id']); }
else { $id = ' '; }


zeb
WRInaute accro
WRInaute accro
 
Messages: 4553
Inscription: 5 Déc 2004

Re: [Aide] Je cherche un Script de vote

Message le Lun Fév 13, 2012 21:05

stone66 a écrit:dernière question : pour sécuriser $id = $_GET[id];


Si la variable est utilisé a destination d'un serveur SQL il faut veiller au moins a virer les simple quote "addslashes()" et ensuite vérifier que la variable reçu est du type désirée dans les limites possibles (int, caractère, ...), faire aussi attention au séparateurs de requête ";"

Si la variable risque de finir affichée, "htmlentities()" pour éviter les injections de html et / ou "strip_tags()" pour stériliser les balises.

Si la variable risque d'être exécutée, system(), exec() c'est chaud faut voir au cas par cas.

Il y a trop de cas pour avoir des solutions "standard" faut se placer a la place de l'attaquant et imaginer en regardant le script ce qui peut être fait.

Dans tous les cas faire des tests pour savoir si le contenu reçu est "dans les normes".

Éviter aussi les message d'erreurs qui renseignent sur les failles possibles (ou aident a les peaufiner) donc utiliser un opérateur de silence devant les commandes critiques "@"

Et surtout te renseigner plus un peu partout.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité