Redirection conditionnelle PHP

Résolu
nouns62 Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   -  
nouns62 Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je m'adresse à vous car je ne trouve pas la réponse à ma question.
Je développe un site, dans ce site il y a des variables de session.
$_SESSION['majactu'] est initialisée dans la page 'majeurs.php'.
Il existe une page 'modifPGT. php'qui sert à modifier les données de la base qui concernent le majeur dont l'id est contenu dans $_SESSION['majactu'].
Je voudrais donc que sur la page de modif, si $_SESSION['majactu'] n'est pas affectée, on soit redirigé vers 'majeurs.php' pour obliger à en choisir un.
Voici donc ma première ligne de code de 'modifPGT.php':
if(!isset($_SESSION["majactu"])) header('Location: majeurs.php');
Mais elle ne fonctionne pas bien car même si $_SESSION["majactu"] est bien initialisée, je suis tout de même redirigé!
Merci d'avance pour votre aide!
A voir également:

10 réponses

jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Salut !

Est-ce que à défaut tu fais un truc du genre :
$_SESSION['majactu'] = '';
??

Si oui, if(!isset($_SESSION['majactu']) && !empty($_SESSION['majactu'])) header('Location: majeurs.php');

Ou alors vérifie enplus qu'elle existe, qu'elle ne soit pas égale à ce que tu rentre d'habitude

0
nouns62 Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   100
 
Salut!
Décidément, c'est toujours toi qui répond à mes questions! ;D
Merci de ta réponse.
Non, je n'ait pas de valeur par défaut, mais je n'en voit pas l'utilité puisque je teste avec isset()...
Pourquoi rajouter une 2ème condition qui, pour moi revient à la première ?
ou alors je rate qqch... ?
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
isset et empty sont deux chose completement différente.
Pour t'expliquer, voici un exemple :

Tu as un formulaire de connexion avec un champ login et un champ mdp
Le début du code php est le suivant :
if(isset($_POST['login']) && isset($_POST['mdp']))
{

}

L'utisateur oublie de remplir login, et bah ta variable login existe bien, mais est vide. Donc le if est passé.
Le empty vérifie que la variable est pas vide. C'est une sécurtié en plus :
if(isset($_POST['login']) && !empty($_POST['login'])) // si login existe, et qu'il n'est pas vide
0
nouns62 Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   100
 
Ah ok merci bien pour cette précision, cela fonctionne maintenant apparemment.
Merci beaucoup!
Mais je ne comprend pas pourquoi le !isset renvoyait true alors que la variable contenait qqch..?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Ah j'avais pas vu que tu avais !isset.
Dans ce cas c'est !isset && empty ;-)

Attention :
!isset veut dire si elle n'existe pas.
La variable existe, donc le isset renvoie true. Le ! devant est interprété séparément, il n'est pas à associer avec le isset
0
nouns62 Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   100
 
ç'aurait été trop beau...
je ne comprend pas il me sort une erreur à la page 'modifPGT.php'
Erreur de syntaxe près de '0003' à la ligne 1
Sachant que la variable $_SESSION['majactu'] contient "SU_0003"
voici le début de mon code...
<?php

	session_start();
	
	if(!isset($_SESSION["majactu"]) && !empty($_SESSION["majactu"])) header('Location: majeurs.php');
	
	include("./module/connexion.inc");
	include("./module/functions_menu.php");
	
	//affichage des menus (cf functions_menu.php)
	head();
	menu_haut('1');
	menu_pgt('1');
	
	$res=mysql_query("SELECT * FROM majeur WHERE code=".preg_replace("/_/"," ",$_SESSION['majactu']."")) or die(mysql_error());
	$rowma=mysql_fetch_array($res);
	
?>

:'(
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Non c'est pas logique ta condition ;-)
Je te l'ai rectifié juste en haut en plus.
Traduis la en francais et tu comprendras ;-)
0
nouns62 Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   100
 
oO oui effectivement. Mais l'erreur reste en mettant
if(!isset($_SESSION["majactu"]) && empty($_SESSION["majactu"])) header('Location: majeurs.php');
mais je ne comprend pas pourquoi il faut mettre les deux puisque si (!isset($_SESSION["majactu"]) renvoie true, ça veut dire que la var n'existe pas, donc pas besoin de tester si elle est vide!
..?
0
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
Bien vu, j'y ai pensé en revoyant la condition corrigée !

Et donc
if(!isset($_SESSION["majactu"])) header('Location: majeurs.php');
ne marche pas ?
0
nouns62 Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   100
 
me revoilà après un week-end...
bon, j'ai réglé le problème, ma condition est finalement :
if(!isset($_SESSION["majactu"]) || empty($_SESSION["majactu"])) header('Location: majeurs.php');
remarque que j'utilise un "ou logique" ( || ) et non pas un "et logique" ( && ).
Merci de ton aide.
[RESOLU]
0