Redirection conditionnelle PHP

Résolu/Fermé
nouns62 Messages postés 110 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 - 7 juin 2013 à 15:16
nouns62 Messages postés 110 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 - 10 juin 2013 à 09:54
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!

10 réponses

jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
7 juin 2013 à 15:20
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 jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 96
7 juin 2013 à 15:42
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
7 juin 2013 à 15:48
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 jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 96
7 juin 2013 à 16:28
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
7 juin 2013 à 16:34
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 jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 96
7 juin 2013 à 16:39
ç'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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
7 juin 2013 à 16:44
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 jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 96
7 juin 2013 à 16:54
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
7 juin 2013 à 16:57
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 jeudi 3 novembre 2011 Statut Membre Dernière intervention 3 février 2014 96
10 juin 2013 à 09:54
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