Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/04/2007, 08h25   #1
Invité régulier
 
Homme
Administrateur systèmes et réseaux
Inscription : mars 2007
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : mars 2007
Messages : 16
Points : 8
Points : 8
Par défaut redirection en boucle

bonjour,

j'ai un petit souci avec ce code :
Code :
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...
circajet7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 09h00   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451

Je propose que tu remplaces elsif par elseif. Il y a peut-être un autre problème mais ça pourrait déjà mieux fonctionner.
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 09h02   #3
Membre éclairé
 
Avatar de TucSale
 
Inscription : novembre 2005
Messages : 265
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : novembre 2005
Messages : 265
Points : 301
Points : 301
Envoyer un message via MSN à TucSale
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
TucSale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 13h18   #4
Invité régulier
 
Homme
Administrateur systèmes et réseaux
Inscription : mars 2007
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : mars 2007
Messages : 16
Points : 8
Points : 8
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
circajet7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 13h48   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
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 ?
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 14h37   #6
Invité régulier
 
Homme
Administrateur systèmes et réseaux
Inscription : mars 2007
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : mars 2007
Messages : 16
Points : 8
Points : 8
exactement
je redirige vers la page 36 pour que l'utilisateur puisse s'identifier...
circajet7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 16h00   #7
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Dans ce cas, quel est le problème exactement ? la redirection se fait pas ?
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 16h29   #8
Invité régulier
 
Homme
Administrateur systèmes et réseaux
Inscription : mars 2007
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : mars 2007
Messages : 16
Points : 8
Points : 8
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
circajet7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 16h36   #9
Invité régulier
 
Homme
Administrateur systèmes et réseaux
Inscription : mars 2007
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : mars 2007
Messages : 16
Points : 8
Points : 8
Code :
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
circajet7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2007, 14h48   #10
Invité régulier
 
Homme
Administrateur systèmes et réseaux
Inscription : mars 2007
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : mars 2007
Messages : 16
Points : 8
Points : 8
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 :
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é
circajet7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h44.


 
 
 
 
Partenaires

Hébergement Web