Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

session header urlrewritin?

0 views
Skip to first unread message

pascal scalpa

unread,
Nov 4, 2009, 4:10:31 PM11/4/09
to
Bonjour � tous
je suis d�butant en php et essai de faire fonctionner (d�sesp�r�ment)
ceci :
Je souhaiterai que quand un internaute arrive sur une pageA
directement, il soit redirig� vers une pageB.
La pageB contient du code permettant � l'internaute de s'identifier.
Ces donn�es seraient transmises � la pageA, une fois quelques choix
op�r�s sur la pageB.
J'ai essay� ceci dans la pageA :
<?php
// D�marrage de la session
session_start();
//si le flag est � false, c'est que le visiteur n'est pas pass� par la
pageB:
if ($_SESSION['monflag'] == True){
//$_SESSION['monflag'] = False;
}else{
header("Location: pageB.php");
exit;
}
$titre_page="Identifier les verbes conjugu�s dans une phrase";
$js_deplus="./id_mot/fr_conj_id_vrb1.js";
$css_deplus="./id_mot/clicmot.css";
$body_page="";
require("./header.php");
?>


puis dans la pageB :
<?php
// Initialisation d'une �ventuelle session.
session_start();
// D�truit toutes les variables de session
$_SESSION = array();
// Si vous voulez d�truire compl�tement la session, effacez �galement
le cookie de session.
// Note : cela d�truira la session et pas seulement les donn�es de
session
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// Finalement, on d�truit la session.
session_destroy();
// D�marrage de la nouvelle session
session_start();

//flag utilis� pour v�rifier si le visiteur est pass� par cette page
$_SESSION['monflag'] = True;
// D�claration des variables de la page
$titre_page="Identifier les verbes conjugu�s dans une phrase";
$js_deplus="verif_form.js";
$css_deplus="";
$_SESSION['matiere'] = Conjugaison;
require("./header.php");
?>

Merci de m'�clairer.
pascal

Olivier Miakinen

unread,
Nov 8, 2009, 6:26:50 PM11/8/09
to
Bonjour,

Le 04/11/2009 22:10, pascal scalpa a ᅵcrit :
>
> je suis dᅵbutant en php et essai de faire fonctionner (dᅵsespᅵrᅵment)


> ceci :
> Je souhaiterai que quand un internaute arrive sur une pageA

> directement, il soit redirigᅵ vers une pageB.

Ah ? Et pourquoi ᅵa ?

> La pageB contient du code permettant ᅵ l'internaute de s'identifier.
> Ces donnᅵes seraient transmises ᅵ la pageA, une fois quelques choix
> opᅵrᅵs sur la pageB.

Dans ce cas, pourquoi ne pas *inclure* le code de la pageB dans la pageA
au lieu de faire une redirection ? Fonctionnellement c'est identique, et
c'est beaucoup plus simple ᅵ gᅵrer.

> J'ai essayᅵ ceci dans la pageA :
> <?php
> // Dᅵmarrage de la session
> session_start();
> //si le flag est ᅵ false, c'est que le visiteur n'est pas passᅵ par la


> pageB:
> if ($_SESSION['monflag'] == True){
> //$_SESSION['monflag'] = False;

Je ne connais pas grand-chose aux sessions, et je ne peux donc pas te
dire si un tel systᅵme de flag peut marcher ou pas. J'aurais tendance ᅵ
penser que non car ᅵ mon humble avis il peut y avoir plein de cas tordus
selon le nombre de fenᅵtres ouvertes simultanᅵment par le visiteur sur
ton site.

Or donc, plutᅵt que de tester une variable monflag sans signification,
tu ferais mieux de tester si les donnᅵes d'authentification elles-mᅵmes
sont remplies, c'est-ᅵ-dire exactement les donnᅵes pour lesquelles tu as
eu l'idᅵe de faire une pageB pour les remplir !

> }else{
> header("Location: pageB.php");

Attention ! Quoique les navigateurs les plus courants acceptent une url
partielle ici, ce n'est pas standard et tu devrais donc mettre une url
complᅵte :
header("Location: http://www.example.com/chemin/complet/pageB.php");

> [...]


>
> puis dans la pageB :
> <?php

> // Initialisation d'une ᅵventuelle session.
> session_start();
> // Dᅵtruit toutes les variables de session
> $_SESSION = array();
> // Si vous voulez dᅵtruire complᅵtement la session, effacez ᅵgalement
> le cookie de session.
> // Note : cela dᅵtruira la session et pas seulement les donnᅵes de


> session
> if (isset($_COOKIE[session_name()])) {
> setcookie(session_name(), '', time()-42000, '/');
> }

> // Finalement, on dᅵtruit la session.
> session_destroy();
> // Dᅵmarrage de la nouvelle session
> session_start();> ?>
>
> Merci de m'ᅵclairer.
> pascal

>
> //flag utilisᅵ pour vᅵrifier si le visiteur est passᅵ par cette page
> $_SESSION['monflag'] = True;


Aaaargh ! C'est si compliquᅵ que ᅵa, les sessions, qu'il faille une
dizaine de lignes au dᅵbut du script, parmi lesquelles deux appels ᅵ
session_start() ? Encore une fois je n'y connais rien mais j'ai le
sentiment que tu te fais des nᅵuds au cerveau avec une solution trop
complexe -- et qui donc a peu de chances de marcher !

> // Dᅵclaration des variables de la page
> $titre_page="Identifier les verbes conjuguᅵs dans une phrase";


> $js_deplus="verif_form.js";
> $css_deplus="";
> $_SESSION['matiere'] = Conjugaison;
> require("./header.php");

Je pense sincᅵrement que tu n'as pas besoin d'une pageB.

En gros, je verrais plutᅵt dans pageA :

if ($_REQUEST[] contient ce qu'il faut) {
traitement prᅵvu initialement pour pageA
} else {
afficher le formulaire pour remplir les donnᅵes
d'authentification (ce que tu avais prᅵvu pour
pageB initialement), le paramᅵtre ᅵ action ᅵ
contenant un lien vers pageA
}

Cordialement,
--
Olivier Miakinen

0 new messages