IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

redirection en boucle


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 14
    Points
    14
    Par défaut redirection en boucle
    bonjour,

    j'ai un petit souci avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if ($_ENV['id_page'] <> 36 || $_ENV['id_page'] <> 37) {
    		if ($_ENV['id_page'] == 2 || $_ENV['id_page'] == 6 || $_ENV['id_page'] == 19 || $_ENV['id_page'] == 21 || $_ENV['id_page'] == 25 || $_ENV['id_page'] == 27 || $_ENV['id_page'] == 29 || $_ENV['id_page'] == 7 || $_ENV['id_page'] == 8) {
    		 	if ($_SESSION['Droit'] <> 'admin') {
    				echo "<SCRIPT LANGUAGE=\"JavaScript\">
        	 		document.location.href=\"./index.php?id_page=36&auth=noauth3\"
    				</SCRIPT>";
    			}
    		}elsif ($_SESSION['Droit'] <> 'users' || $_SESSION['Droit'] <> 'admin') {
    			echo "<SCRIPT LANGUAGE=\"JavaScript\">
        		 document.location.href=\"./index.php?id_page=36&auth=noauth2\"
    			</SCRIPT>";
    		}
    	}
    }
    ma page est redirigé en boucle : l'id_page 36 est la page d'identification et la page 37 est l'action du formulaire.
    le probleme vien du elsif apperemment car sans cette instruction le code fonctionne et les id_page listé dans la condition sont bien bloqué sans les droits...

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut

    Je propose que tu remplaces elsif par elseif. Il y a peut-être un autre problème mais ça pourrait déjà mieux fonctionner.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre averti Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Points : 325
    Points
    325
    Par défaut
    bonjour,

    • elseif à la place de elsif
    • Utilise $_GET a la place de $_ENV
    • Test si les variables sont définies grace a isset()
    • je ne vois pas de session_start()
    • fais un print_r($_GET) et print_r($_SESSION)
    • error_reporting = E_ALL dans le php.ini



    En revanche, je ne savais pas que different pourrais s'ecrire <>, je l'ai toujours ecrit != xD
    Tuc l'Original, On ne peut que l'aimer

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    oups désoler j'ai pas tout dit
    ceci est une portition de ma page index.php session_start() est tout en haut la variable $_ENV['id_page'] et définit et le test isset et fait bcp plus haut.

    merci pour le elseif mais sa n'a pas suffit malheureusement (fausse joie :p)

    pour se qui est de la variable $_SESSION['Droit'] elle est définit car mon site fonctionne sans la 2ème condition elseif qui est la pour bloquer tout le site sauf la page d'identification 36.

    merci de vos réponce

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je résume :
    la condition pour entrer dans le elseif donne quelque chose comme ça :
    Citation Envoyé par ceci n'est pas du code
    SI page != 36 OU page != 37
    ET SI page !=2 ET !=6 ET !=19 ET !=21 ET !=25 ET !=27 ET !=7 ET !=8
    ET SI droit!=user ou droit !=admin
    En gros, si la page n'est pas 36 ou 37, ni un tas d'autres, et que les droits ne sont pas utilisateur ou admin, tu renvois tout à la page 36. C'est bien ce que tu veux faire ? ou est-ce moi qui n'ai rien compris ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    exactement
    je redirige vers la page 36 pour que l'utilisateur puisse s'identifier...

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Dans ce cas, quel est le problème exactement ? la redirection se fait pas ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    si mais en boucle se qui bloque l'accès bien évidemment...

    Je viens d'essayer plusieurs combinaisons différentes le mieu que j'arrive à faire c'est que l'admin ai accès uniquement à une partie du site et l'utilisateur à l'autre partie...

    Je m'explique : j'ai un soucis avec l'opérateur || sur la condition $_SESSION['Droit'] qui combine les 'admin' et 'users'... j'ai bien essayé OR ou même un if ($_SESSION['Droit'] <> 'users') {}else{ if($_SESSION['Droit'] <> 'admin') {} } mais rien n'y fait il ne veut pas que l'admin ai accès aux 2 partie du site (se qui est le but )

    PS : Il est possible que je me plante dans ma logique et qu'il faille reprendre le truc autrement et de 0 mais je n'arrive pas a me persuader que j'ai tord sur ce code :s

  9. #9
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    session_start();
     
    	if (isset($_SESSION['NomFan'])) {
    		echo '<dd>Vous êtes : <font color="red"> <strong>'.$_SESSION['NomFan'].' </strong></font> : <a href="./index.php?id_page=38"> Déconnexion</a>';
    		$NomFan = $_SESSION['NomFan'];
    	}
    	if (isset ($_SESSION['Droit']))	$Droit = $_SESSION['Droit']; else $Droit="";
    	error_reporting(E_ALL);
    	// Inclus le fichier contenant les fonctions personalisées
    	include 'mes_fonctions_site.php';
     
    	// Fonction de connexion à la base de données
    	connexion_DB('SiteAnime');
     
    	// Définit l'Id de la page d'accueil (1 dans cet exemple)
    	// Pensez à le modifier si ce n'est pas le cas chez vous.
    	$id_page_accueil = 1;
     
    	// Récupère l'id de la page courante passée par l'URL
    	// Si non défini, on considère que la page est la page d'accueil
    	if (isset($_GET['id_page'])) {
    		$_ENV['id_page'] = intval($_GET['id_page']);
    	} else {
    		$_ENV['id_page'] = $id_page_accueil;
    	}
    	if ($_ENV['id_page'] <> 36 || $_ENV['id_page'] <> 37) {
    		if ($_ENV['id_page'] == 2 || $_ENV['id_page'] == 6 || $_ENV['id_page'] == 19 || $_ENV['id_page'] == 21 || $_ENV['id_page'] == 25 || $_ENV['id_page'] == 27 || $_ENV['id_page'] == 29 || $_ENV['id_page'] == 7 || $_ENV['id_page'] == 8) {
    		 	if ($Droit <> 'admin') {
    				echo "<SCRIPT LANGUAGE=\"JavaScript\">
        	 		document.location.href=\"./index.php?id_page=36&auth=noauth3\"
    				</SCRIPT>";
    			}
    		}
    		if ($_ENV['id_page'] == 3) {
    			if ($Droit <> 'users') {
    				echo "<SCRIPT LANGUAGE=\"JavaScript\">
        			 document.location.href=\"./index.php?id_page=36&auth=noauth3\"
    				</SCRIPT>";
    			}else{
    				if ($Droit <> 'admin') {
    					echo "<SCRIPT LANGUAGE=\"JavaScript\">
        				 document.location.href=\"./index.php?id_page=36&auth=noauth3\"
    					</SCRIPT>";
    				}
    			}
    		}
    	}
     
     
    	// Extrait les informations correspondantes à la page en cours de la DB
    	extraction_infos_DB();
    ?>
    pour aider je met le code a partir du début
    j'ai stocker les variables $_SESSION dans des variables normale pour être sure lol
    Dans ma page, une fois compilé, le nom d'utilisateur s'affiche en au a gauche correctement se qui prouve que $_SESSION retourne bien les variables de session et si $_GET['id_page'] ne fonctionnait pas il ne m'enverrai pas de page alors que là, j'ai bien accès aux pages demandées.
    Le seul truc qui fonctionne pas maintenant c'est le problème décrit dans mon post juste au dessus

  10. #10
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2007
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    j'ai contourné le problème lol et sa fonctionne et il y a une grosse erreur dans le code au dessus (soupir, meme si une fois corrigé sa n'a pas résolu mon problème initiale)

    Donc se que j'ai fait :
    J'ai conservé la partite du code qui donne l'accès a la partie sensible du site uniquement à l'administrateur...
    J'ai ajouté une portion de code dans les pages non sensible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (($_SESSION['Droit'] == 'users') || ($_SESSION['Droit'] == 'admin')) {
    //
    //Contenu de la page
    //
    }else{
    	echo "<SCRIPT LANGUAGE=\"JavaScript\">
        			 document.location.href=\"./index.php?id_page=36&auth=noauth3\"
    				</SCRIPT>";
    }
    Et la plus de souci

    Résultat :
    Toute personne non identifié est redirigé a la page d'identification ;
    Toutes personne possédant les droit 'users' n'ont accès qu'aux pages non sensible ;
    Et bien sure les admin ont accès à tout

    Entre deux j'ai installé la nouvelle version de debian (etch 4.0) ainsi que la suite apache2, php5.2, mysql 5, proftpd, sshd et je le recommande à ceux qui hésite à déjà passer à la nouvelle version de Debian :
    -Installation simple
    -Fichier de config plus complet (surtout pour proftpd)
    <> mysql ne demande plus d'entrer le mot de passe root... il suffit de lui enregistrer après l'install

    Bref si quelqu'un veut des renseignements sur l'install il peut m'envoyer un message privé je lui répondrais volontié

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Sécurité - Redirection en boucle
    Par n1k00 dans le forum Symfony
    Réponses: 2
    Dernier message: 27/08/2013, 10h45
  2. [.htaccess] Redirection en boucle
    Par redah75 dans le forum Apache
    Réponses: 16
    Dernier message: 28/03/2013, 01h34
  3. Redirection 301 boucle infini
    Par J0r_x dans le forum Débuter
    Réponses: 5
    Dernier message: 28/01/2009, 15h39
  4. Réponses: 12
    Dernier message: 23/04/2008, 17h46
  5. Analyse d'un fichier de redirection dans une boucle
    Par Safaritn dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/02/2008, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo