Sécurisé un petit jeu en php

Eléphant du PHP | 259 Messages

06 oct. 2008, 19:12

Bonjour,

Je suis en train de faire un petit jeu en php qui conssiste à l'internaute de répondre a plusieurs questions.
Par exemple une question s'affiche, l'internaute répond et valide, une nouvelle question arrive...etc

Je me pose des questions sur la "sécurité" du jeu car si la personne fait précédent il retournera a la question précédente, comment faire pour éviter cela ? avec les sessions ?

De plus si on rafraichit la page, cela affiche une nouvelle question, comment faire pour que la question reste là même lorsque l'internaute rafraichit la page ?

Merci d'avance

Mammouth du PHP | 804 Messages

06 oct. 2008, 20:16

utilise ajax ;)

Eléphant du PHP | 259 Messages

06 oct. 2008, 20:34

je ne connais pas ajax, c'est possible de le faire en php non ?

Mammouth du PHP | 804 Messages

06 oct. 2008, 20:49

c'est du php :wink:

La page de base appelle une page avec traitement des prochaines questions, de ce fais aucun page ne reste dans l'historique et une simple session sur la page active ferait agrémente une variable session et pourrait servir de déclanchement fin de teste, une session pourrait aussi servir à indiquer à quelle question l'internaute se trouve :)

Eléphant du PHP | 259 Messages

06 oct. 2008, 20:53

mais en fait les questions s'affiche de maniére aléatoire, donc impossible de connaitre la prochaine question.

Eléphant du PHP | 451 Messages

06 oct. 2008, 21:11

Si tu utilise la fonction rand() pour afficher tes questions tu peux connaitre le chiffre de la question d'après.

Montre nous ton code ça sera plus simple pour t'aider.

Mammouth du PHP | 804 Messages

06 oct. 2008, 21:17

je te montre un exemple :wink:

ta page de base
form_question.php
<html>
<head>
<title>question réponse</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<script type='text/JavaScript'>
function getXhr(){
var xhr = null; 
if(window.XMLHttpRequest) 
xhr = new XMLHttpRequest(); 
else if(window.ActiveXObject){ 
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { 
alert("Votre navigateur ne supporte pas le javascripts"); 
xhr = false; 
} 
return xhr
}
</script>

<script language="JavaScript" type="text/JavaScript">

function prochaine_question(question_num){
var xhr = getXhr()
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;

document.getElementById('ecran').innerHTML = leselect;
}
}
xhr.open("POST","affiche_question.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');			

var question_num; 

xhr.send("question_num="+question_num);			
}
</script>	
<body>

<div id="ecran">
<form name="form" method="post" action="">
Quelle heure est il ?<br><br>
<img src="v" width="176" height="32"  onclick="prochaine_question('0')" > 
</form>
</div>

</body>
</html>
et voici la page qui va traiter les nouvelles questions
affiche_question.php
<?php 
header('Content-Type: text/html; charset=ISO-8859-1');

echo "Vous avez répondu à la question $question_num";

$question_suivante = $question_num + 1;

$newquestion[1] = "quelle voiture avez vous ?";
$newquestion[2] = "tu connais phpfrance ?";

echo "<form name='form1' method='post'>
$newquestion[$question_suivante]<br><br>
<img src='' width='176' height='32' onclick='prochaine_question($question_suivante)' > 
</form>";

?>
la page de base à une fonction ajax qui va envoyer le numéro de la question actuelle
la page de traitement des prochaines question va retourner les nouvelles questions sans aucun rafraichissement de page, puisque elle va refaire ton formulaire sans recharger ton navigateur

après il ne te reste plus cas arranger ca à ta sauce :wink:
Modifié en dernier par dogmongo le 07 oct. 2008, 15:46, modifié 1 fois.

ViPHP
ViPHP | 4039 Messages

06 oct. 2008, 22:49

c'est du php :wink:
Ouh ouh, la vilaine désinformation..

Non, ajax n'est pas du php. C'est du javacript, qui permet d'aller chercher, de façon asynchrone, l'un ou l'autre contenu sur un serveur. Stou. Après, ce qui tourne sur cet autre serveur, ajax s'en fout. Mais ça peut parfaitement être du php, ça oui, c'est sur.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Mammouth du PHP | 804 Messages

06 oct. 2008, 23:30

je me suis mal expliqué mais tu as compris mon objectif :wink: