Changer une variable session et rediriger l'user

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 : Changer une variable session et rediriger l'user

Re: Changer une variable session et rediriger l'user

par devlop78 » 18 déc. 2010, 20:29

$_SESSION['Disclaimer'] = 0; // store session data
Là, tu lui dis de toujours mettre à 0 dès le lancement de la page. Donc tu auras toujours ton disclaimer qui va s'afficher. Et "<body>" ne doit pas apparaitre avant session_start(); Une fois la session démarrée, tu peux envoyer autant de données que tu veux au navigateur, et manipuler les variables session quand tu veux.
Ok, here we go voici la page index.php:
<body>
<?php
session_start();
$_SESSION['Disclaimer'] = 0; // store session data
?>
<div class="Structure" id="Structure">
<div class="Header" id="Header">
<img src="images/Web.jpg" width="1000" height="107" alt="" />
</div>
<div class="GlobalMenu" id="GlobalMenu">
			<ul id='menu'>
			<li class="button"><a href='./index.php?page=Home' >Home</a></li>
			<li class="button"><a href='./index.php?page=Overview' >Overview</a></li>
			<li class="button"><a href='./index.php?page=Fund' >Fund</a></li>
			<li class="button"><a href='./index.php?page=Contact' >Contact</a></li>
            <li class="button"><a href='./index.php?page=Regulatory' >Regulatory</a></li>
			</ul>
</div><!-- End of Nav Div -->	
<div class="Include" id="Include">
<?php 

if(isset($_GET['unset']))
 $_SESSION['Disclaimer'] = 1;
 
// Chemin absolu
// le répertoire dans lequel se trouve CE fichier
// IMPORTANT : mettre un / à la fin
$root_dir = $_SERVER['DOCUMENT_ROOT'].'/';


// la page par defaut, si les valeurs fournies sont incorrect :
$page_defaut = 'Home';
$page_disclaimer = 'Disclaimer';


// on recupere la valeur passé dans l'url :
if(!empty($_GET["page"]))
    $page = $_GET["page"];
else
    $page = $page_defaut;


//Enlevons les caractères html
$page = htmlentities($page, ENT_QUOTES);

//Si on a des répertoires que l'on ne veut pas accéder, un les liste ici :
$repProteger = array('include', 'libs', 'admin');
$temp = preg_split('//',$page);
if(isset($temp[0]) && in_array($temp[0],$repProteger))
    $page = $page_defaut;

if($_SESSION['Disclaimer'] == 0)
	$page = $page_disclaimer;
	
// on enlèves les caractères non autorisés
$page = str_replace(':/', '', $page);
$page = str_replace('./', '', $page);


//Testons si la page demandé existe bien en local
if(file_exists($root_dir.$page.'.php'))
    include($root_dir.$page.'.php');
else
    include($root_dir.$page_defaut.'.php');
?></div>
Aucune donnée de corps ne doit sortir avant l'ensemble des headers.
Dsl je suis pas un dev web donc je sais pas vraiment se que cela veut dire ??

Re: Changer une variable session et rediriger l'user

par moogli » 18 déc. 2010, 17:59

devlop78 veut dire que le session_start() doit être fait avant tout affichage, donc pas après du html (tu doit d’ailleurs avoir une erreur si ce n'est pas le cas je te conseil de modifier ton php.ini afin de les avoir (pour cela passer le paramètre error_reporting à la valeur E_ALL | E_STRICT)

pour la valeur de la variable de session autant ne pas le faire et utiliser isset pour savoir si oui ou non elle existe ;)

sur le principe le script est bon, hormis la session qui ne s'initialise pas a cause du mauvaise emplacement du session_start();

@+

Re: Changer une variable session et rediriger l'user

par santino_london » 18 déc. 2010, 14:39

salut,

tu peut mettre le code complet parce que la on ne peut que supposer.

En tous cas l'affectation à 0 de la variable de session juste avant le test de valeur me fait dire qu'il ne peut en être autrement que d'afficher la page "disclaimer" !


@+
Effectivement, je me suis apercu de cette erreur et c est pour ca que dans le code poste au dessus, l affectation a 0 est fait dans la premiere partie mais aucune idee si c est bon.....

Re: Changer une variable session et rediriger l'user

par santino_london » 18 déc. 2010, 14:35

Ok, here we go voici la page index.php:
<body>
<?php
session_start();
$_SESSION['Disclaimer'] = 0; // store session data
?>
<div class="Structure" id="Structure">
<div class="Header" id="Header">
<img src="images/Web.jpg" width="1000" height="107" alt="" />
</div>
<div class="GlobalMenu" id="GlobalMenu">
			<ul id='menu'>
			<li class="button"><a href='./index.php?page=Home' >Home</a></li>
			<li class="button"><a href='./index.php?page=Overview' >Overview</a></li>
			<li class="button"><a href='./index.php?page=Fund' >Fund</a></li>
			<li class="button"><a href='./index.php?page=Contact' >Contact</a></li>
            <li class="button"><a href='./index.php?page=Regulatory' >Regulatory</a></li>
			</ul>
</div><!-- End of Nav Div -->	
<div class="Include" id="Include">
<?php 

if(isset($_GET['unset']))
 $_SESSION['Disclaimer'] = 1;
 
// Chemin absolu
// le répertoire dans lequel se trouve CE fichier
// IMPORTANT : mettre un / à la fin
$root_dir = $_SERVER['DOCUMENT_ROOT'].'/';


// la page par defaut, si les valeurs fournies sont incorrect :
$page_defaut = 'Home';
$page_disclaimer = 'Disclaimer';


// on recupere la valeur passé dans l'url :
if(!empty($_GET["page"]))
    $page = $_GET["page"];
else
    $page = $page_defaut;


//Enlevons les caractères html
$page = htmlentities($page, ENT_QUOTES);

//Si on a des répertoires que l'on ne veut pas accéder, un les liste ici :
$repProteger = array('include', 'libs', 'admin');
$temp = preg_split('//',$page);
if(isset($temp[0]) && in_array($temp[0],$repProteger))
    $page = $page_defaut;

if($_SESSION['Disclaimer'] == 0)
	$page = $page_disclaimer;
	
// on enlèves les caractères non autorisés
$page = str_replace(':/', '', $page);
$page = str_replace('./', '', $page);


//Testons si la page demandé existe bien en local
if(file_exists($root_dir.$page.'.php'))
    include($root_dir.$page.'.php');
else
    include($root_dir.$page_defaut.'.php');
?></div>
Aucune donnée de corps ne doit sortir avant l'ensemble des headers.
Dsl je suis pas un dev web donc je sais pas vraiment se que cela veut dire ??

Re: Changer une variable session et rediriger l'user

par devlop78 » 18 déc. 2010, 14:19

Code : Tout sélectionner

<body> <?php session_start(); ?>
Aucune donnée de corps ne doit sortir avant l'ensemble des headers.

Re: Changer une variable session et rediriger l'user

par moogli » 18 déc. 2010, 12:32

salut,

tu peut mettre le code complet parce que la on ne peut que supposer.

En tous cas l'affectation à 0 de la variable de session juste avant le test de valeur me fait dire qu'il ne peut en être autrement que d'afficher la page "disclaimer" !


@+

Changer une variable session et rediriger l'user

par santino_london » 18 déc. 2010, 11:52

Hello,

Bon je ne suis un pas php develloper mais je dois monter un site avec un disclaimer. Pour des raisons legal, le visiteur doit absolument l'approuver.

Tout a ete concu avec un include() and php et fonctionne parfaitement excepte...le disclaimer.

Voila le code:

Page Disclaimer.php (qui est include dans index.php)
<body>
<form method="GET" action="index.php?page=Home&unset"> 
  <input type="submit" value="I agree" />
</form>
</body>
Home.php
<body>
<?php
if(isset($_GET['unset']))
 $_SESSION['Disclaimer'] = 1 
?>

index.php au tout debut de la page:
<body>
<?php
session_start(); 
?>
Dans la section HTML ou l'include est fait:
<?php 
$_SESSION['Disclaimer'] = 0; // store session data

//code which manage the include

if($_SESSION['Disclaimer'] == 0)
	$page = $page_disclaimer;

Mais impossible de changer la variable session 'Disclaimer' a 1 pour qu'une fois le disclaimer approuver, le visiteur puisse voir toutes les autres pages...

Une idee sur le probleme?

Tks