Pb de passages de variables entre pages html ou php

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 : Pb de passages de variables entre pages html ou php

Re: Pb de passages de variables entre pages html ou php

par sirakawa » 01 mars 2015, 20:33

Pour disposer des valeurs, on peut utiliser
extract($_SESSION); ce qui crée des variables (toutes) portant le nomqui étaiit dans les crochets, ou faire comme vous faisiiez.

Re: Pb de passages de variables entre pages html ou php

par mongmc » 01 mars 2015, 17:37

[quote="sirakawa"]
<?PHP
session_start();
        $_SESSION["numquestion"]=0;
        $_SESSION["intitulequestion"]="a";
        $_SESSION["intitulereponse"]="a";
        $_SESSION["numgain"]=0;
        $_SESSION["intitulegain"]="a";
        $_SESSION["bonnesreponses"]=0;
        $_SESSION["email"]="email";
print "envoi";
       var_dump($_SESSION);
print "<form method = 'post' action = 'index1.php'>
<button type = 'submit'>ok </button>
</form>";
?>

Je viens de faire un copier coller, ca fonctionne

Le resultat me donne les caracteristiques et valeurs de l array crée pour la SESSION

Je vais repartir de la (du début mais qui fonctionne) pour tout recommencer lol

Merci Sirakawa, je vous tiendrais au courant de l evo au cas ou un autre pb surgirait :P

Re: Pb de passages de variables entre pages html ou php

par sirakawa » 01 mars 2015, 17:07

<?PHP
session_start();
        $_SESSION["numquestion"]=0;
        $_SESSION["intitulequestion"]="a";
        $_SESSION["intitulereponse"]="a";
        $_SESSION["numgain"]=0;
        $_SESSION["intitulegain"]="a";
        $_SESSION["bonnesreponses"]=0;
        $_SESSION["email"]="email";
print "envoi";
       var_dump($_SESSION);
print "<form method = 'post' action = 'index1.php'>
<button type = 'submit'>ok </button>
</form>";
?>
<?PHP
session_start();
var_dump($_SESSION); die();
?>
OU
<?PHP
session_start();
	extract ($_SESSION);
print "$numquestion";
?>

Re: Pb de passages de variables entre pages html ou php

par mongmc » 01 mars 2015, 16:17

qu'en est-il quand session_start est appelé avant tout envoi au navigateur ? (donc avant d'écrire de l'html)
J en ai aucun message d erreur lors de l exécution

Je viens de faire le test :

echo de toutes les var avant de donner les valeurs aux var de SESSION :
vides ou remplies par les var definies dans cette pages
resultat ok

je donne des valeurs a toutes les var de SESSION :
	$_SESSION["IPCli"]=$IPCli;
	$_SESSION["numquestion"]=0;
	$_SESSION["intitulequestion"]="a";
	$_SESSION["intitulereponse"]="a";
	$_SESSION["numgain"]=0;
	$_SESSION["intitulegain"]="a";
	$_SESSION["bonnesreponses"]=0;
	$_SESSION["email"]=$email;
	$_SESSION["destinataire1"]=$destinataire1;
	$_SESSION["sujet"]=$sujet;
	$_SESSION["nom"]=$nom;
echo de toutes les var de SESSION :
	echo ("contenu des variables de session");
	echo ($_SESSION["IPCli"]);
	echo ("<br>");
	echo ($_SESSION["numquestion"]);
	echo ("<br>");
	echo ($_SESSION["intitulequestion"]);
	echo ("<br>");
	echo ($_SESSION["intitulereponse"]);
	echo ("<br>");
	echo ($_SESSION["numgain"]);
	echo ("<br>");
	echo ($_SESSION["intitulegain"]);
	echo ("<br>");
	echo ($_SESSION["bonnesreponses"]);
	echo ("<br>");
	echo ($_SESSION["email"]);
	echo ("<br>");
	echo ($_SESSION["destinataire1"]);
	echo ("<br>");
	echo ($_SESSION["sujet"]);
	echo ("<br>");
	echo ($_SESSION["nom"]);
	echo ("<br>");
resultat ok

ensuite j ai

<form method="post" action="0001.php">

avec bouton submit qui me dirige vers la page 0001

j ouvre ma session
session_start();
je recupere les datas
	$IPCli = $_SESSION["IPCli"];
	$numquestion = $_SESSION["numquestion"];
	$intitulequestion = $_SESSION["intitulequestion"];
	$intitulereponse = $_SESSION["intitulereponse"];
	$numgain = $_SESSION["numgain"];
	$intitulegain = $_SESSION["intitulegain"];
	$bonnesreponses = $_SESSION["bonnesreponses"];
	$email = $_SESSION["email"];
	$destinataire1 = $_SESSION["destinataire1"];
	$sujet = $_SESSION["sujet"];
	$nom = $_SESSION["nom"];
résultats via echo :

................................. --> rien nada :/

Toutes les ouvertures et fermetures de <?php et ?> sont bonnes
Toutes mes fins de lignes de commandes par ; sont ok
Pas de ( ou ) qui manquent
mes commentaires sont sur ligne // donc pas de soucis
Donc la syntaxe est bonnes c est juste la perte des datas dans la session

Dois je récupérer les datas dans un nom de variable différents ?

Re: Pb de passages de variables entre pages html ou php

par tof73 » 01 mars 2015, 15:31

qu'en est-il quand session_start est appelé avant tout envoi au navigateur ? (donc avant d'écrire de l'html)

Re: Pb de passages de variables entre pages html ou php

par mongmc » 01 mars 2015, 14:35

cf http://php.net/manual/fr/function.session-start.php
Le plus simple est de mettre session_start() juste après le premier <?PHP
Oui j ai deja lu tout ca mais les datas ne se transmettent pas.

Ca a fonctionné quelque fois mais ca ne fonctionne plus

Re: Pb de passages de variables entre pages html ou php

par mongmc » 01 mars 2015, 14:30

ok j essaie direct

non aucune difference :cry:

Re: Pb de passages de variables entre pages html ou php

par sirakawa » 01 mars 2015, 14:12

cf http://php.net/manual/fr/function.session-start.php
Le plus simple est de mettre session_start() juste après le premier <?PHP

Re: Pb de passages de variables entre pages html ou php

par mongmc » 01 mars 2015, 13:56

Je réessaie avec SESSION :

Mon fichier de depart : 0000.php
<!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" >
   <head>
       <title>Trainvial Poursuite</title>
   </head>
<?php

// Définition des variables

//	Variables pour l affichage de l heure

	date_default_timezone_set('UTC+1');
	$demandequestion = date(DATE_RFC2822);

//	Fin affichage de l heure

//	Variables pour la construction de l email

	$email = 'mon [email protected]';
	$destinataire1 = 'mon [email protected]';
	$sujet = 'jeu';
	$nom = 'jeu';

//	Détermine l adresse IP de la demande

	$IPCli = $_SERVER["REMOTE_ADDR"];

//	Fin de l IP

//Préparation de l'entête du mail:
	$mail_entete  = "MIME-Version: 1.0\r\n";
	$mail_entete .= "From: {$nom} "
	             ."<{$_POST['email']}>\r\n";
	$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
	$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
	$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
	$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";
	 
	// préparation du corps du mail
	$mail_corps .= "Message de : \n";
	$mail_corps .= "$IPCli \n";
	
	$mail_corps .= "Jour, Date et Heure de la demande des questions :\n"; 
	$mail_corps .= "$demandequestion\n";
	$mail_corps .= "IP du demandeur :\n"; 
	$mail_corps .= "$IPCli\n";	
	
//	Fin construction de l email
	
// envoi du mail destinataire 1
if (mail($destinataire1,$sujet,$mail_corps,$mail_entete)) {
  //Le mail est bien expédié
} else {
  //Le mail n'a pas été expédié
  echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}

// Ouverture d une session pour le passage des variables entre feuilles

session_start();

//Envoi des variables dans la session

	$_SESSION["IPCli"]=$IPCli;
	$_SESSION["numquestion"]=0;
	$_SESSION["intitulequestion"]="";
	$_SESSION["intitulereponse"]="";
	$_SESSION["numgain"]=0;
	$_SESSION["intitulegain"]="";
	$_SESSION["bonnesreponses"]=0;
	$_SESSION["email"]=$email;
	$_SESSION["destinataire1"]=$destinataire1;
	$_SESSION["sujet"]=$sujet;
	$_SESSION["nom"]=$nom;

//	Fin de l envoi des variables dans la session

// Fin de la déclaration des variables

?>

<body>

<form method="post" action="0001.php">

	Le jeu consiste à répondre à des questions sur divers sujets.
	<br>
	<br>
	Plus vous répondrez correctement aux questions et plus votre gain sera important.
	<br>
	<br>
	Le gain augmente de 10000 unités par question, le choix du matériel est aléatoire.
	<br>
	<br>
	<font color="red">!!!!!!!!! Si vous répondez mal à 1 seule question, le jeu est terminé !!!!!!!!</font>
	<br>
	<br>
	A vous de prendre la bonne décisions lors de la demande de question suivante.
	<br>
	<br>
	Une fois que vous aurez choisi d'arreter, un train (ou plusieurs) partira avec votre gain.
	<br>
	<br>
	Une seule participation par joueur, par connexion et par semaine est possible.
	<br>
	<br>
	Si vous jouez plusieurs fois sur la semaine, seule le premier jeu sera pris en compte.
	<br>
	<br>
	Les questions sont aléatoires et donc peuvent revenir plusieurs fois (chance de gain supplémentaire) mais au fur et à mesure des semaines, le nombre de questions augmentera.
	<br>
	<br>
	Ne donnez pas de reponse avec des caractères spéciaux, ni majuscules, toutes réponses ne respectant pas ses regles seront d office éliminatoires.
	<br>
	<br>
	<input type="submit" value="C est parti ? go" />

</form>

</body>
</html>

Qui enclenche le 2eme fichier 0001.php
<!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" >
   <head>
       <title>Trainvial Poursuite</title>
   </head>
<?php

// Ouverture d une session pour le passage des variables entre feuilles

session_start();

// Récupération des variables

	$IPCli = $_SESSION["IPCli"];
	$numquestion = $_SESSION["numquestion"];
	$intitulequestion = $_SESSION["intitulequestion"];
	$intitulereponse = $_SESSION["intitulereponse"];
	$numgain = $_SESSION["numgain"];
	$intitulegain = $_SESSION["intitulegain"];
	$bonnesreponses = $_SESSION["bonnesreponses"];
	$email = $_SESSION["email"];
	$destinataire1 = $_SESSION["destinataire1"];
	$sujet = $_SESSION["sujet"];
	$nom = $_SESSION["nom"];


?>

<body>

<form method="post" action="TSquestionbonne.php">

<?php
// Affichage des variables recues

	echo ("Variables recues :");
	echo ("<br>");
	echo ("<br>");
	echo ($IPCli);
	echo ("<br>");
	echo ($numquestion);
	echo ("<br>");
	echo ($intitulequestion);
	echo ("<br>");
	echo ($intitulereponse);
	echo ("<br>");
	echo ($numgain);
	echo ("<br>");
	echo ($intitulegain);
	echo ("<br>");
	echo ($bonnesreponses);
	echo ("<br>");
	echo ($email);
	echo ("<br>");
	echo ($destinataire1);
	echo ("<br>");
	echo ($sujet);
	echo ("<br>");
	echo ($nom);
	echo ("<br>");
	echo ("<br>");
	echo ("<br>");
	echo ("________________________________");


	echo ("IP du client : ");
	echo ($IPCli);
	echo ("<br>");
	echo ("Numéro de la question : ");
	echo ($numquestion);
	echo ("<br>");
	echo ("Numéro du gain : ");
	echo ($numgain);
	echo ("<br>");
	echo ("Nombre de bonnes reponses : ");
	echo ($bonnesreponses);
	echo ("<br>");

?>



<!-- affichage du gain -->

<?php 
	echo ("Vous allez jouer pour gagner : ");echo (($bonnesreponses+1) * 10000);echo (" ");echo ($intitulegain);
	echo "<br>";
	echo "<br>";
?>

<!-- affichage de la question -->

<?php 
	echo ($intitulequestion); 
	echo "<br>";
	echo "<br>";
?>

<!-- Demande de la reponse -->

	<input type="text" name="reponsedonnee">

<?php
?>

	<input type="submit" value="Soumettre à la correction et question suivante" />
	<input type="reset" value="Effacer les réponses" />

</form>

</body>
</html>
Je ne comprends pas pourquoi les valeurs de 0000.php ne se transmettent pas dans le 0001.php

:shock:

Re: Pb de passages de variables entre pages html ou php

par mongmc » 28 févr. 2015, 19:50

Merci sirakawa, je vais creuser deja dans ce sens ;)

Re: Pb de passages de variables entre pages html ou php

par sirakawa » 28 févr. 2015, 16:21

Il y a bien cet embryon:
index.php
<?PHP
session_start();
$_SESSION['fois'] = 0;
header('Location: http://localhost/index1.php');
?>
index1.php
<?PHP
session_start();
function verifier()
{
$_SESSION['pause']= false;
return TRUE;
}
function afficher($question, &$gain)
	{
		global $continuer, $pauser;	
		if ($_SESSION['fois'] < 15)
		{
			$continuer = true;
			$_SESSION['fois'] = $_SESSION['fois']+1;
			$laq = $question ['q'];
			$larep = $question ['r'];
			$lav = $question ['v'];
			$chaine = "<body><form action= 'index1.php'id ='fen'
				<input type = 'textarea' name = 'quest'> $laq'</textarea>
				<input type = 'text' name ='rep' />
				<button type = 'submit' >Tester</button>
			<button type = 'submit' formaction = 'payer.php'> Garder</button>
			</form></body>";
			
			$pauser = true;
			print "$chaine";
		}
		else
		{
					$continuer = false;
		}
	}
$continuer = isset($continuer) ? $continuer :true;
$gain = isset($gain) ? $gain: 0;
$pauser = isset($_POST['pause'])  ? $_POST['pause']: False;

	
$q = array
(
	1 => array ('q' => 'Quelle est la couleur ?', 'r' =>'Blanc', 'v' =>100),
	2 => array ('q' => 'Qui est le fils de mon père ?', 'r' =>'Moi', 'v' =>100),
);
$nbq = count ($q);
while ($continuer == true)
{
	if  ($pauser == false)
	{
		$r = afficher ($q[rand(1,2)], $gain);
	}
else
{
$r = verifier();
$pauser= FALSE;
}
}


?>
<script type ='text/javascript'>

function effacer()
{  document.open ();
            document.close ();
}
effacer();
</script>
Mais je ne sais pas effacer l'écran entre deux, ou alors en mettant une div

Re: Pb de passages de variables entre pages html ou php

par mongmc » 28 févr. 2015, 14:11

Concernant $_SESSION, faut il faire autre chose que "session_start();" dans le code ? faut il faire qqch au serveur ou la session débute ?

Pb de passages de variables entre pages html ou php

par mongmc » 28 févr. 2015, 00:12

Bonjour,

Je voudrais créer un petit jeu de questions reponses. (genre trivial poursuite)

La personne arrive sur la page, une premiere question est posée aléatoirement puisée dans un array de question.
Si la reponse est mauvaise, tout est perdu (genre millionnaire)
Si la reponse est bonne, bonnereponse = +1 et proposition de question supplémentaire
Si oui, question suivante, si non arret des questions et confirmation du gain.
A la 1ere question, un email m est envoyé pour connaitre l IP et la date et l heure afin d eviter qu un joueur ne joue plusieurs fois en connaissant le plus de reponses possibles a l avance. J augmente le nombre de questions au jour le jour.

J ai les tableaux : questions, reponses, explications et gains pas de soucis
La recherche aléatoire de la question et du gain, pas de soucis
L evolution du gain est un multiple du nombre de bonnes reponses donc pas de soucis
l IP date et heure pas de soucis

J ai essayé avec les fonctions, avec l url, avec SESSION mais mes variables ont tendances a se perdre de page en page.

J ai testé plusieurs solutions mais ce que j aimerais c est :

une page html ou php dans laquelle :

une fonction ou page .php transmettrais la question, la reponse et l explication dans 3 variables distinctes
une fonction ou page .php transmettrais le gain dans une variable

l affichage de la question et la demande de reponse dans cette même page (donc retour sur la page de depart, si pas possible, ben une autre page ^^ )

une fonction ou page .php qui verifierais la reponse <input> donnée et qui incrementerais le nombre de bonnes reponses

2 boutons qui donnerait la possibilité de continuer dans une boucle de 20 passages maximum (si pas possible pour la boucle, 20 pages différentes m iront également) ou de stopper

Déjà si j arrivais a passer mes variables par fonction ou par SESSION ou par pages différentes (page 0001 reponse bonnes =0 => page 0002 reponse bonne = 1 ...) ce serais génial. La solution de l URL n est pas top car on voit les datas.

Je n arrive pas a piger le fonctionnement du passage des variables, même apres de multiple recherche sur le net et les forums.

Si qq1 avait une idée :mrgreen: Si vous connaissez des exemples de ce type de script php, je suis preneur aussi bien entendu afin de pouvoir les adaptés

D'avance merci a tous