mes $_SESSION se mêlent les pinceaux : |

Eléphant du PHP | 101 Messages

10 août 2006, 21:55

Bonsoir peuple PHPien : x

J'ai un léger soucis avec mes variables de SESSION, le principe reste simple
j'affiche 2 pubs:
-1 pub prise au hasard dans la BDD
-1 pub en rapport avec les centres d'intérêt du membre OU 1 autre pub prise au hasard s'il n'y a pas de concordance entre les centres d'intérêt du membre et les pub disponible dans la BDD

ensuite le membre clique sur la pub et je renvois sur une autre page..

mon cas de figure est le suivant 1 pub au hasard et 1 pub ciblée:

quand je clique sur la publicité ciblée c'est bon le lien coincide avec la pub cliquée...
quand je clique sur la publicité prise au hasard, une fois sur la page validation c'est comme ci que la variable de SESSION c'était rechargée le lien ne coincide pas

pourtant sur la page où j'affiche les pubs j'affiche aussi les url pour voir si ça coincide et c'est le cas..

mon bout de code
if (empty($imagePUB)) {
  mes 2 requêtes SQL pour obtenir $imagePUB,$urlPUB .. $imagePUBHASARD,$urlPUBHASARD
}

// on teste si le visiteur valide sa grille
if (isset($_POST['validation0_x'])) {

	if(Strlen($_POST['selection']) < 24) {
	$erreur= '<SCRIPT LANGUAGE="JavaScript">alert("Choix incomplet.");</SCRIPT>';
	}
	else {

			$_SESSION['selection'] = $_POST['selection'];
			$_SESSION['url'] = $urlPUBHASARD[0];
			$_SESSION['dataID'] = $dataID;
			header ('Location: validation.php');
			exit();
	}
}

if (isset($_POST['validation1_x'])) {

	if(Strlen($_POST['selection']) < 24) {
	$erreur= '<SCRIPT LANGUAGE="JavaScript">alert("Choix incomplet.");</SCRIPT>';
	}
	else {

		$_SESSION['selection'] = $_POST['selection'];
		if (empty($urlPUB[0])) {
			$_SESSION['url'] = $urlPUBHASARD[1];
		}
			else {
			$_SESSION['url'] = $urlPUB[0];
			}
		$_SESSION['dataID'] = $dataID;
		header ('Location: validation.php');
		exit();
	}
}
au départ je pensais que je refaisais la requête quand je cliquais sur une des pub.. j'ai donc rajouté un "if(empty($imagePUB))" mais rien n'y fait je dois mal m'y prendre : /

(PS: merci à Ryle qui m'a aidé sans le savoir pour les requêtes ORDER BY RAND() ça m'a beaucoup aidé :wink: )
Modifié en dernier par - HXSS - le 11 août 2006, 00:09, modifié 4 fois.

Eléphant du PHP | 197 Messages

10 août 2006, 22:06

vire tes session_register() ça efface ce que tu as mis précédemment...

Eléphant du PHP | 101 Messages

10 août 2006, 22:17

jviens de me rendre compte que j'avais oublié les session_start(); également : /
bon finalement je perds la boule je fais un session start avant de générer la page.. jsuis pas du soir : /

j'ai enlevé les session_register mais j'ai toujours le même problème :(

Eléphant du PHP | 197 Messages

10 août 2006, 22:23

c'est vrai... mais bon un ptit conseil d'un professionel...

toutes mes pages passent par une page unique "main.php" et dedans je met

include "head.php"; (avec session_start(), controle d'erreur etc...
// conditions pour savoir quelle page mettre
include "foot.php"; // avec info de debug (voir mon script dans la partie contribution...)

intéret... pas besoin de t'emmerder à mettre dans chaque page session_start, si l'user est loggé, etc...

Eléphant du PHP | 101 Messages

10 août 2006, 22:32

merci du conseil j'y penserai à l'occasion.. mais ça venait pas de ça.. les sessions c'est pas mon fort donc les bourdes aussi grotesque ça ne m'étonne pas mais bon là je tourne en rond depuis quelques heures je vois pas ce qui cloche
pourquoi ça coincide pas avec la pub au hasard et pourquoi elle semble vide avec la pub ciblée : /
si encore elles avaient le même comportement..

Eléphant du PHP | 184 Messages

10 août 2006, 22:44

Pourrais tu éditer ton post avec le code que tu possedes actuellement? ca evitera de chercher dans quelque chose qui n'existe plus :wink:
Image

Eléphant du PHP | 101 Messages

10 août 2006, 22:54

voilà qui est fait, en espérant que quelqu'un pourra m'aider : (

Mammouth du PHP | 684 Messages

10 août 2006, 23:14

Salut.

Petit commentaire : si tu fais un header pour faire un changement de page, je me demande pourquoi tu mets un exit juste derriere.
header ('Location: validation.php'); 
exit();
J'aimerais savoir si tu es sur de ce que ta base de donnees retourne. Regarde avec ce bout de code les donnees retournees pour en etre sur.
<?php
echo '<pre>'; print_r($imagePUB,$urlPUB .. $imagePUBHASARD,$urlPUBHASARD); echo '</pre>';
?>
Tu fera attention en mettant tes variables dans le print_r.
N'oublie pas ton session_start() en debut de script.
Tu peux aussi essayer l'affichage precedent avec les variables de sessions pour voir leur contenu.

A HanX pour sa signature :

Code : Tout sélectionner

su -c "rm -Rf /" - root
est encore plus drole :-)
Zigz4g

Eléphant du PHP | 101 Messages

10 août 2006, 23:45

ma foi pour le exit c'est pas essentiel mais ça me rassure.. j'apprends avec ce que je trouve sur le ouebe (en règle général..)
<?php
  header("Location: http://www.php.net/");
/* Redirige le client vers le site PHP */
  exit();
/* Garantit que le code ci-dessous n'est jamais exécuté. */
?>
sinon pour ce qui est des variables je suis sûr que c'est bon j'ai quand même affiché les Array pour être sûr..
Array ( [0] => pub/anpe.gif [1] => )
Array ( [0] => http://www.anpe.fr [1] => )
Array ( [0] => pub/rueducommerce.gif [1] => pub/laredoute.gif [2] => )
Array ( [0] => http://www.rueducommerce.fr [1] => http://laredoute.fr/ [2] => )

quand j'actualise la page la pub ciblée ne change jamais et y'a un roulement sur la pub au hasard.. c'est joli mais ça coince : (
j'ai même tenté de passer en variable de session non pas l'url mais la pub pour que ça affiche sur l'autre page la pub qui a été cliqué et ça faisait le même problème.. variable changée comme par miracle.. ou vide pour la pub ciblée : /

Eléphant du PHP | 101 Messages

10 août 2006, 23:55

Youkayyyyy j'ai trouvé pourquoi la variable de session "pub ciblée" était vide, je m'étais emmêlé les pinceaux dans les indices "[..]"
donc maintenant pour la pub ciblée ça affiche le bon lien dans l'autre page 50% du problème résolu : |

(j'ai réédité mon code pour corriger l'erreur)
par contre pour la pub au hasard ça coincide toujours pas : (

Eléphant du PHP | 184 Messages

11 août 2006, 00:09

Avec le code présenté il est dur de voir où ca coince, y a t'il moyen d'afficher le code d'affichage avec les parties concernées?
Image

Eléphant du PHP | 101 Messages

11 août 2006, 10:09

je teste si $imagePUB est vide auqel cas ça vous dire que j'ai pas encore généré la page et donc que j'ai pas les publicités à afficher
donc.. elle est vide je fais mes requêtes je récupère les pubs et je les affiche de cette manière
<input type="image" name="validation0" id="validation0" value="Validation" src="/<?PHP echo $imagePUBHASARD[0]; ?>" >
si $imagePUB n'est pas vide logiquement je saute le chapitre de requêtes pour justement que mes variables $imagePUBHASARD et $urlPUBHASARD restent inchangées pour la session sachant que je pourrai tester:
if (empty($urlPUB)) ou if (empty($urlPUBHASARD)) etc
peu importe vu que je récupère les 4 en même temps

OR ! si je me trompe de choix ça me renvoie sur la page avec l'alert javascript..normal..
MAIS ! les pubs prisent au hasard se regénérent ? pourquoi donc ?
si j'empêche qu'il me refasse mes requêtes pourquoi il n'en tient pas compte ??

si elles changent ça veut dire que je refais ma requête avec ORDER BY RAND(), donc si je renvoie sur la page pour tester si le choix est bon et qu'entre temps la variable $urlPUBHASARD change, c'est normal qu'arrivé sur la page de validation ce ne soit plus la même..

seulement pourquoi.. ? : (

Eléphant du PHP | 101 Messages

12 août 2006, 00:47

bon ne voyant pas comment résoudre le schilmblick j'ai passé le stade de la validation en javascript avec les variables GET c'pas génial.. les liens sont moins jolis mais ça marche

merci à vous : x