Redirection conditionnelle PHP

Résolu
nouns62 Messages postés 111 Date d'inscription   Statut Membre Dernière intervention   -  
nouns62 Messages postés 111 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!

--
@+

10 réponses

  1. jeremy.s Messages postés 1248 Statut Membre 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
  2. nouns62 Messages postés 111 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
  3. jeremy.s Messages postés 1248 Statut Membre 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
  4. nouns62 Messages postés 111 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jeremy.s Messages postés 1248 Statut Membre 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
  7. nouns62 Messages postés 111 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
  8. jeremy.s Messages postés 1248 Statut Membre 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
  9. nouns62 Messages postés 111 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
  10. jeremy.s Messages postés 1248 Statut Membre 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
  11. nouns62 Messages postés 111 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