Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

session header urlrewritin?

1 réponse
Avatar
pascal scalpa
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

1 réponse

Avatar
Olivier Miakinen
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&quot;);

[...]

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