Système de vote pour serveur privé

Par nergal71, il y a 11 ans


Bonjour, je suis actuellement en train de coder un système de vote pour mon site internet de mon jeu en ligne. Le principe étant de rajouter à chaque fois 40 points utilisable dans la boutique en jeu à chaque fois qu'un joueur vote tous les 2 heures.

Dans ma base de donnée j'ai rajouté 3 colonnes (timestamp_v1, vote_count, timestamp_v2) .

Malheureusement après essai, cà fait tout sauf ce que je veux... le délai des 2 heures pour les points n'est pas respecté, on clique 10x on obtiendra 10x les 40 points... et surtout je me retrouve en 2 clics avec une valeur à 2016 pour la colonne vote_count et de là, impossible d'avoir la valeur qui change, en gros la donnée est plantée...

Voici le code de mon système de vote :

Tout d'abord la partie config nécessaire à la connexion PDO :

<?php //Config points votes : $date = date("j"); if($date<=7){ $vote_point = 80; // Vote x2 7 premiers jours du mois. }else{ $vote_point = 40; //vote normal } //Connexion aux base de données try{ $dblogin = new PDO('mysql:host=localhost;dbname=aionswor_al_server_ls','toto','1234'); $dblogin->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $dbgame = new PDO('mysql:host=localhost;dbname=aionswor_al_server_gs','toto','1234'); $dbgame->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $dbnews = new PDO('mysql:host=localhost;dbname=aionswor_system','toto','1234'); $dbnews->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); } catch (Exception $e){ die('Erreur : ' .$e->getMessage()); } ?>

Ensuite sur ma page vote :

<?php @session_start(); require('config/db.php'); if(isset($_SESSION['idaion']) and !empty($_SESSION['idaion'])) { $sql1 = $dblogin->prepare('SELECT * FROM account_data WHERE id=?'); $sql1->execute(array($_SESSION['idaion'])); $sql1 = $sql1->fetch(); if($_GET['vote']!=0) { if($_GET['vote']==18){$colone = 18; $link = $linkgowonda; $timestamp="timestamp_v1";} elseif($_GET['vote']==20){$colone = 20; $link = $linkrpg; $timestamp="timestamp_v2";} else { echo '<script>window.location="index.php?p=index";</script>'; } if($sql1[$colone] !=0){ $lastvote_v1 = new DateTime($sql1[$colone]); $lastvote_v1->modify("+ 2 hours"); $now = new DateTime(); $now->format("Y-m-d H:i:s")." ".$lastvote_v1->format("Y-m-d H:i:s"); if($lastvote_v1<$now) { $vote = (int)$sql1[19]+1; $reward = $sql1[12] + $vote_point; $req2 = $dblogin->prepare('UPDATE acount_data SET '.$timestamp.'=?, toll=? vote_count=? WHERE id=?'); $req2->execute(array($now->format("Y-m-d H:i:s"), $reward, $vote, $_SESSION['idaion'])); $_SESSION['voteaion'] += 1; $_SESSION['pointaion'] += $vote_point; echo "<script>windows.location='".$link."'</script>"; } else { echo '<script>window.location="index.php?p=index";</script>'; } } else { $now = new DateTime(); $now = $now->format("Y-m-d H:i:s"); $vote = (int)$sql1[19]+1; $reward = $sql1[12] + $vote_point; $req2 = $dblogin->prepare('UPDATE account_data SET '.$timestamp.'=?, toll=?, vote_count=? WHERE id=?'); $req2->execute(array($now, $reward, $vote, $_SESSION['idaion'])); $_SESSION['voteaion'] += 1; $_SESSION['pointaion'] += $vote_point; echo"<script>window.location='".$link."'</script>"; } } else{ } } else{ echo'<script>window.location="index.php?p=index";</script>'; } ?>

Voilà, tout conseil ou astuce afin que ce script marche et que je passe à la suite et le bienvenue, étant donné que çà fait une semaine que je suis dessus, j'en ai plus que marre.

Merci à tous ceux qui prendront le temps de lire ce message et merci à ceux qui répondront également.

38 réponses

nergal71, il y a 11 ans

Bon essai effectuer au delà des 2 heures prévues, résultat impeccable, aucune erreur, je suis vraiment ravi. Merci à vous qui m'avez sacrément retirer une épine du pied.

Carouge10, il y a 11 ans

Bonjour,

Avez-vous comparer $lastvote_v1 et $now pour vérifier qu'ils sont correcte ?
Il me semble qu'il n'y pas d'espace entre "+" et "2" dans $lastvote_v1->modify("+ 2 hours");

Il manque une virgule dans la requête:

$req2 = $dblogin->prepare('UPDATE acount_data SET '.$timestamp.'=?, toll=? vote_count=? WHERE id=?');
nergal71, il y a 11 ans

tout d'abord, merci pour m'avoir signaler mon oubli de virgule, je me suis aperçu aussi que j'avais oublié un 'c' à account_data.

J'ai donc corrigé ceci et je me retrouve maintenant avec cette erreur :

( ! ) Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (1) at position 0 (1): Unexpected character' in C:\wamp\www\aion-sword_1.3\vote.php on line 20 ( ! ) Exception: DateTime::__construct(): Failed to parse time string (1) at position 0 (1): Unexpected character in C:\wamp\www\aion-sword_1.3\vote.php on line 20 Call Stack # Time Memory Function Location 1 0.0003 145064 {main}( ) ..\vote.php:0 2 2.9666 178200 __construct ( ) ..\vote.php:20

Par ailleurs lorsque je clic sur le bouton correspondant au $colone = 20, il m'envoie un offset undefined ligne 19 avant de basculer sur le site de référencement pour voter(RPG-PARADIZE);

Code de de la ligne 11 à 19 :

if($_GET['vote']!=0) { if($_GET['vote']==18){$colone = 18; $link = $linkgowonda; $timestamp="timestamp_v1";} elseif($_GET['vote']==20){$colone = 20; $link = $linkrpg; $timestamp="timestamp_v2";} else { echo '<script>window.location="index.php?p=index";</script>'; } if($sql1[$colone] !=0){ $lastvote_v1 = new Datetime($sql1[$colone]);
Carouge10, il y a 11 ans

Que vaut $sql1[$colone] ?

nergal71, il y a 11 ans

18 et 20 suivant la page appelé (18 et 20 correspondant à l'emplacement de timestamp_v1 et timestamp_v2 dans la table account_data

Carouge10, il y a 11 ans

Ce n'est pas la valeur de $colone que je désire, là je savais (^_^)
Faite un var_dump($sql1[$colone]); et dites moi ce qui est affiché.

nergal71, il y a 11 ans

alors avec le var_dump il m'affiche string '2016' (length=4) et c'est la valeur que je retrouve à chaque fois dans la colonne vote _count dès que çà plante ou du moins c'est peut être à cause de çà que çà plante

Carouge10, il y a 11 ans

D'accord
Donc comment voulez-vous convertir une année en année + mois + jour.... ?

De plus, je pense que la syntaxer de cette ligne est erroné :

$now->format("Y-m-d H:i:s")." ".$lastvote_v1->format("Y-m-d H:i:s");
nergal71, il y a 11 ans

Bah de toute manière, la valeur '2016' ne devrait même pas apparaitre dans la colonne vote_count, elle devrait s'incrémenter de 1 en 1...
Il va falloir que je revois cette partie du code...

Carouge10, il y a 11 ans

N'hésiter pas à faire des var_dump pour vérifier que les données sont conformes à vos attentes.

Si vous n'avez pas de html avant ce code, remplacer les :

echo '<script>window.location="index.php?p=index";</script>';

par

header('Location index?p=index'); die();
connected, il y a 11 ans

Bonjour,

de manière plus générale je trouve la conception trop complexe pour la fonctionnalité voulue.

Ce que je ferais :

Description des tables

La table users contient les utilisateurs et leurs informations associées
users(id, ..., count_vote)

La table votes contient chaque vote enregistré (ce qui permet de pouvoir mettre le compteur de la table users à tout moment)
votes(id, created, ..., #user_id)

La table lock_vote, empêche un utilisateur de re-voter avant 2heures
lock_vote(id, user_id, #end)

Exemple :

1er vote de l'utilisateur :
Un utilisateur portant l'id 15 vote à 15h30 :

Dans la table votes on enregistre son vote avec la date du vote.
Dans la table lock_vote on enregistre l'id de l'utilisateur et l'heure à la quelle il pourra re-voter.

2eme vote de l'utilisateur :
On check dans la table lock_vote s'il y a un verrou, c'est à dire s'il y a l'id de l'utilisateur avec une date de "end" qui n'est pas encore dépassée. Si c'est le cas l'utilisateur ne peut pas voté. Si la date est dépassée on supprime le verrou et on peut procéder au vote.

Voilà mon approche après je comprends que tu ne veuilles pas forcement tout changer. Si tu es interessé, je pourrai approfondir au besoin.

Bonne continuation.

nergal71, il y a 11 ans

ma restriction principale est notamment sur le fait que les bases de données sont avant tout celle du serveur de jeu ( la table account_data est composé de :
(id,name,password,activated,access_level,membership,old_membership,last_server,last_ip,last_mac,ip_force,expire,toll,email,question,answer , balance ) à laquelle j'ai rajouté à la fin les 3 colonnes sus mentionné plus haut.

la colonne toll est pour le nombre de points que possède le joueur en ayant voté toutes les deux heures

Bah entre tout changer et que çà fonctionne et rien changé et que çà fonctionne pas, je préfère que çà fonctionne tant qu'à faire ^^

connected, il y a 11 ans

De rien n'oublie pas de marquer la réponse qui a résolu ton problème ;)

connected, il y a 11 ans

Ok dans un premier temps je vais essayer de bien comprendre ce que tu veux faire.

Peux-tu me dire à quoi correspondent timestamp_v1 et timestamp_v2 ?
Et aussi comment tu fais pour stocker les points ? Dans quelle table et eventuellement dans quelle partie du code que tu as posté ?

Merci, on va y arriver :)

Edit : je prends la direction de faire fonctionner ton code existant... après on verra l'amélioration si possible.

nergal71, il y a 11 ans

timestamp v_1 et v_2 correspondent au heure ou l'utilisateur a voté sur RPGparadize et sur Gowonda. Les points sont stockés dans la table account_data au même endroit que le login , mot de passe , ip,ect...

les points sont envoyés lors de l'UPDATE :

$vote = (int)$sql1[19]+1; $reward = $sql1[12] + $vote_point; $req2 = $dblogin->prepare('UPDATE acount_data SET '.$timestamp.'=?, toll=? vote_count=? WHERE id=?'); $req2->execute(array($now->format("Y-m-d H:i:s"), $reward, $vote, $_SESSION['idaion'])); $_SESSION['voteaion'] += 1; $_SESSION['pointaion'] += $vote_point;

dans la requête timestamp = heure du dernier vote, toll = les points, vote_count = le nombre de fois que cette personne a voté.

connected, il y a 11 ans

Ok,

dis moi si ce code fonctionne :

<?php if(isset($_SESSION['idaion']) and !empty($_SESSION['idaion'])){ $sql1 = $dblogin->prepare('SELECT * FROM account_data WHERE id=?'); $sql1->execute(array($_SESSION['idaion'])); $results = $sql1->fetch(); if(empty($_GET['vote']) || $_GET['vote'] != 18 || $_GET['vote'] != 20){ header('Location: index?p=index'); } if($_GET['vote'] == 18){ $link = $linkgowonda; $column = 'timestamp_v1'; }elseif($_GET['vote'] == 20){ $link = $linkrpg; $column = 'timestamp_v2'; } $last = new DateTime($results[$column]); $last->modify("+ 2 hours"); $now = new DateTime(); if($last < $now) { $reward = $results['toll'] + $vote_point; $query = $dblogin->prepare("UPDATE account_data SET $column=NOW(), toll=:toll, vote_count= vote_count + 1 WHERE id=:id"); $query->bindParam(':toll', $reward); $query->bindParam(':id', $_SESSION['idaion']); $query->execute(); $_SESSION['voteaion'] += 1; $_SESSION['pointaion'] += $vote_point; header("Location:$link"); } } else { header('Location:index?p=index'); } ?>

Edit : merci @Carouge10, c'est corrigé

Carouge10, il y a 11 ans

@connected : il manque les : dans le 1er header... (^_^)

nergal71, il y a 11 ans

Quand on vote pour la première fois aucun problème les timestamp s'ajoute bien et le vote_count affiche bien +2 votes effectués, les points sont bien ajoutés. Mais si on tente de revoter :

on obtient l'erreur :
Notice : Undefined variable: link in C:\www\aion....\votephp?vote=18 on line 6 , correspondant :

if(empty($_GET['vote']) || $_GET['vote'] != 18 || $_GET['vote'] != 20){

En effet, comme il recharge le script et que column 18 ou column 20 n'est plus vide, il recherche la variable link correspondant (si j'ai bien compris l'erreur)

connected, il y a 11 ans

Bizarre, il n'y a aucune référence à $link à cette ligne; Tu peux poster le code de vote.php s'il te plait ?

nergal71, il y a 11 ans
<?php session_start(); require('config/db.php'); if(isset($_SESSION['idaion']) and !empty($_SESSION['idaion'])){ $sql1 = $dblogin->prepare('SELECT * FROM account_data WHERE id=?'); $sql1->execute(array($_SESSION['idaion'])); $results = $sql1->fetch(); if(empty($_GET['vote']) || $_GET['vote'] != 18 || $_GET['vote'] != 20){ echo"<script>window.location='".$link."'</script>"; } if($_GET['vote'] == 18){ $link = $linkgowonda; $column = 'timestamp_v1'; }elseif($_GET['vote'] == 20){ $link = $linkrpg; $column = 'timestamp_v2'; } $last = new DateTime($results[$column]); $last->modify("+ 2 hours"); $now = new DateTime(); if($last < $now) { $reward = $results['toll'] + $vote_point; $query = $dblogin->prepare("UPDATE account_data SET $column=NOW(), toll=:toll, vote_count= vote_count + 1 WHERE id=:id"); $query->bindParam(':toll', $reward); $query->bindParam(':id', $_SESSION['idaion']); $query->execute(); $_SESSION['voteaion'] += 1; $_SESSION['pointaion'] += $vote_point; header("Location:$link"); } } else { echo'<script>window.location="index.php?p=index";</script>'; } ?>

Et j'ai remis les window.location comme mes boutons ne sont pas placé dans le header.

nergal71, il y a 11 ans

bah en fait j'ai trouvé ma bourde lol.... J'ai mis un $link dans le echo"<script>window.location='".$link."'</script>";

Edit : Je relancerais deux votes dans deux heures et je te tiendrais au courant Connected :-)

connected, il y a 11 ans

Je me disais bien ... lol

connected, il y a 11 ans

Donc tout est bon ?

nergal71, il y a 11 ans

Bonsoir, je reviens vers vous car je me retrouve avec une erreur ennuyeuse concernant mon système de vote qui fonctionne parfaitement en local grâce au code fournit par Connected. Malheureusement ce soir, j'ai voulu mettre le site sur le serveur mutualisé et au moment du test pour les votes voici l'erreur que j'ai eu :

PHP Warning: Cannot modify header information - headers already sent by (output started at /home/aionswor/public_html/vote.php:15) in /home/aionswor/public_html/vote.php on line 35

Je remets le code de Connected :

<?php if(isset($_SESSION['idaion']) and !empty($_SESSION['idaion'])){ $sql1 = $dblogin->prepare('SELECT * FROM account_data WHERE id=?'); $sql1->execute(array($_SESSION['idaion'])); $results = $sql1->fetch(); if(empty($_GET['vote']) || $_GET['vote'] != 18 || $_GET['vote'] != 20){ echo'<script>window.location="index.php?p=index";</script>'; } if($_GET['vote'] == 18){ $link = $linkgowonda; $column = 'timestamp_v1'; }elseif($_GET['vote'] == 20){ $link = $linkrpg; $column = 'timestamp_v2'; } $last = new DateTime($results[$column]); $last->modify("+ 2 hours"); $now = new DateTime(); if($last < $now) { $reward = $results['toll'] + $vote_point; $query = $dblogin->prepare("UPDATE account_data SET $column=NOW(), toll=:toll, vote_count= vote_count + 1 WHERE id=:id"); $query->bindParam(':toll', $reward); $query->bindParam(':id', $_SESSION['idaion']); $query->execute(); $_SESSION['voteaion'] += 1; $_SESSION['pointaion'] += $vote_point; header("Location:$link"); } } else { echo'<script>window.location="index.php?p=index";</script>'; } ?>

J'ai bien compris qu'au niveau de l'erreur, le problème vient du

header("Location:$link");

Mais je sèche complètement quand à la solution pour résoudre ce problème.
Merci d'avance pour ceux qui pourront m'aider.

Carouge10, il y a 11 ans

Quand on fait appel à un header, il ne faut pas qu'il y ait de code html avant, ni de < script>....

nergal71, il y a 11 ans

Ok merci, j'ai encore beaucoup de chose à apprendre :)

nergal71, il y a 11 ans

bon j'ai remplacé tout les < script> par header, il n'y a donc que du php et malgré tout, lors du clic sur le bouton, c'est 2 erreurs maintenant :
Warning: Cannot modify header information - headers already sent by (output started at /home/aionswor/public_html/config/db.php:1) in /home/aionswor/public_html/vote.php on line 10

Warning: Cannot modify header information - headers already sent by (output started at /home/aionswor/public_html/config/db.php:1) in /home/aionswor/public_html/vote.php on line 31

y aurait t-il un problème avec

<?php session_start(); require('config/db.php');

j'ai vérifié si il y avait le moindre espace avant une balise <?php et rien d'anormal, nada....

Carouge10, il y a 11 ans

Puis-je voir le fichier db ? Caché les éléments sensibles

nergal71, il y a 11 ans

Le voici :

<?php //Réseau sociaux : $fb="https://www.facebook.com/aionsword4.6"; $tw="https://twitter.com/aionsword"; $ts="ts3server://94.23.16.195:8524"; //Lien des votes : $linkrpg = 'http://www.rpg-paradize.com/?page=vote&vote=101063'; $linkgowonda = 'http://www.gowonda.com/vote.php?server_id=5791'; //Informations serveur : $serveur = 'Aion Sword'; $version = '4.6.2'; $forum = 'http://forum.aion-sword.fr'; $access_level = "8"; //Serveur de jeu et Teamspeak : $host_ls = 'xx.xx.xx.xxx'; $port_ls = 2106; $host_gs = 'xx.xx.xx.xxx'; $port_gs = 7777; $host_ts = 'xx.xx.xx.xxx'; $port_ts = 10011; //Config points votes : $date = date("j"); if($date<=7){ $vote_point = 80; // Vote x2 7 premiers jours du mois. }else{ $vote_point = 40; //vote normal } //Connexion aux base de données try{ $dblogin = new PDO('mysql:host=localhost;dbname=db','root',' '); $dblogin->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $dbgame = new PDO('mysql:host=localhost;dbname=db','root',' '); $dbgame->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $dbnews = new PDO('mysql:host=localhost;dbname=db','root',' '); $dbnews->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $dbnews->exec("SET CHARACTER SET utf8"); } catch (Exception $e){ die('Erreur : ' .$e->getMessage()); } //Planning Forteresse : $fortolundi1[0]="/"; // Nom premiere forteresse Lundi $fortolundi1[1]="/"; // Heure premiere forteresse Lundi $fortolundi2[0]="Asteria/roah"; // Nom deuxieme forteresse Lundi $fortolundi2[1]="21h"; // Heure deuxieme forteresse Lundi $fortomardi1[0]="Tiamaranta"; // Nom premiere forteresse mardi $fortomardi1[1]="18h"; // Heure premiere forteresse mardi $fortomardi2[0]="KKM"; // Nom deuxieme forteresse mardi $fortomardi2[1]="21h"; // Heure deuxieme forteresse mardi $fortomercredi1[0]="/"; // Nom premiere forteresse mercredi $fortomercredi1[1]="/"; // Heure premiere forteresse mercredi $fortomercredi2[0]="Sillus"; // Nom deuxieme forteresse mercredi $fortomercredi2[1]="21h"; // Heure deuxieme forteresse mercredi $fortojeudi1[0]="Event"; // Nom premiere forteresse jeudi $fortojeudi1[1]="Toute la journée"; // Heure premiere forteresse jeudi $fortojeudi2[0]="Event"; // Nom deuxieme forteresse jeudi $fortojeudi2[1]="Toute la journée"; // Heure deuxieme forteresse jeudi $fortovendredi1[0]="Tiamaranta"; // Nom premiere forteresse vendredi $fortovendredi1[1]="18h"; // Heure premiere forteresse vendredi $fortovendredi2[0]="Bassen/prades"; // Nom deuxieme forteresse vendredi $fortovendredi2[1]="21h"; // Heure deuxieme forteresse vendredi $fortosamedi1[0]="/"; // Nom premiere forteresse samedi $fortosamedi1[1]="/"; // Heure premiere forteresse samedi $fortosamedi2[0]="Divine"; // Nom deuxieme forteresse samedi $fortosamedi2[1]="21h"; // Heure deuxieme forteresse samedi $fortodimanche1[0]="Inggison/Gelkmaros"; // Nom premiere forteresse dimanche $fortodimanche1[1]="18h"; // Heure premiere forteresse dimanche $fortodimanche2[0]="Siel/souffre"; // Nom deuxieme forteresse dimanche $fortodimanche2[1]="21h"; // Heure deuxieme forteresse dimanche ?>
Carouge10, il y a 11 ans

Je ne vois rien d'anormale dans le fichier db hormie le fait qu'il ne faut pas fermer la balise php s'il n'y a pas de html derrière. Le serveur la fermera et cela évite d'avoir un espace ou tout autre caractère qui pourrait se glisser.

J'ai un peu modifier le fichier vote pour essayer de trouver l'erreur:

<?php session_start(); require('config/db.php'); if(isset($_SESSION['idaion']) && !empty($_SESSION['idaion'])){ // Si le vote est différent des valeurs ci-dessous, alores redirection vers index if(empty($_GET['vote']) || $_GET['vote'] != 18 || $_GET['vote'] != 20){ header("Location: index.php?p=index"); die(); } if($_GET['vote'] == 18){ $link = $linkgowonda; $column = 'timestamp_v1'; }elseif($_GET['vote'] == 20){ $link = $linkrpg; $column = 'timestamp_v2'; } $sql1 = $dblogin->prepare('SELECT * FROM account_data WHERE id = ?'); $sql1->execute(array($_SESSION['idaion'])); $results = $sql1->fetch(); $last = new DateTime($results[$column]); $last->modify("+ 2 hours"); $now = new DateTime(); if($last < $now) { $reward = $results['toll'] + $vote_point; $query = $dblogin->prepare("UPDATE account_data SET $column = NOW(), toll = :toll, vote_count = vote_count + 1 WHERE id = :id"); $query->bindParam(':toll', $reward); $query->bindParam(':id', $_SESSION['idaion']); $query->execute(); $_SESSION['voteaion'] += 1; $_SESSION['pointaion'] += $vote_point; header("Location: $link"); die(); } } else { header("Location: index.php?p=index"); }
nergal71, il y a 11 ans

j'ai testé ce que tu as mis, et l'on revient toujours à la même erreur. Est ce que l'erreur pourrait venir d'une autre page ?

Edit : j'ai du merder quelque part, plusieurs autres pages me mettent la même erreur.

Carouge10, il y a 11 ans

Qu'elle est l'organisation de votre site, la page vote est-elle incluse dans une autre ?

nergal71, il y a 11 ans

l'organisation de haut en bas est de cette manière :
config => db.php
css => fichier .css
download => fichier téléchargeable
img => images
js => fichier javascript ( animation des boutons du site, slider,ect;)
modules => fichier requis pour exécuter un ajout de news, différentes fonctions pour l'inscription)
page => toutes les pages de contenu
template => tous les includes des différentes parties de l'affichage du site
admin.php
index.php
vote.php
logout.php

et comme je précise (sur WAMP) le site marche parfaitement. Donc je dois certainement avoir une gestion d'erreur sur mon serveur mutualisé que je n'ai pas activé sur WAMP...

Edit : Je viens de lire sur un site en faisant des recherches qu'il ne faut jamais utilisé la fonction header() si un session_start() est avant ? Le problème viendrait-il de cette raison ?

Carouge10, il y a 11 ans

Non, je l'utilise sur plusieurs de mes sites et cela ne pose aucun problème.
La page vote est-elle incluse dans une autre page ?

nergal71, il y a 11 ans

non Carouge10, mes deux boutons (vote.php?vote=18 et vote.php?vote=20) sont placés dans une div qui elle même est inclue dans le fichier index.php placé à la racine du site. ma page vote.php est donc uniquement appelé lorsque l'on clique sur l'un des boutons.

Carouge10, il y a 11 ans

Mettez un die("Je suis connecté"); avant la déclaration des tableaux dans le fichier config et voyez si vous avez toujours une erreur.
Si aucune erreur, déplacer ce die et voyez là où la page plante.

nergal71, il y a 11 ans

Bon bah l'erreur était toute bête, j'avais fais une erreur dans une autre page ou un session_start était inclue avec dans la page index.php

Carouge10, il y a 11 ans

Encore un problème de résolu. (^_^)