Acces restreint sur une page

cs_doberman_420 Messages postés 22 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 7 août 2007 - 6 août 2007 à 16:27
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008 - 7 août 2007 à 18:08
Bonjour,

 Encore une fois j'ai besoin de votre aide et je remercie tous ceux qui mon déja aider,

 J'ai divisé ma page profil en deux index "indexFemme.php" et "indexHomme.php", dans le code que je siterais un peu plus loin, je restreint l'accés à ces pages selement aux membres et admin du site.

 Je souhaite et j'ai essayé de faire en sorte que "indexFemme.php" ne peu étre visible qu'uniquement par des membres femmes, pour cela j'ai passé dans ma session $_SESSION['sexe'].

  J'ai essayé pas mal de choses sans aucun résultats ou presque...

 Si vous pouvez sur la chose je vous remercie d'avance!
 Voila le script à l'état d'origine:


<?php
if (!isset($_SESSION)) {
  session_start();
}
$MM_authorizedUsers = "membre,admin";
$MM_donotCheckaccess = "false";


// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
  // For security, start by assuming the visitor is NOT authorized.
  $isValid = False;


  // When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
  // Therefore, we know that a user is NOT logged in if that Session variable is blank.
  if (!empty($UserName)) {
    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
    // Parse the strings into arrays.
    $arrUsers = Explode(",", $strUsers);
    $arrGroups = Explode(",", $strGroups);
    if (in_array($UserName, $arrUsers)) {
      $isValid = true;
    }
    // Or, you may restrict access to only certain users based on their username.
    if (in_array($UserGroup, $arrGroups)) {
      $isValid = true;
    }
    if (($strUsers == "") && false) {
      $isValid = true;
    }
  }
  return $isValid;
}


$MM_restrictGoTo = "../login.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {  
  $MM_qsChar = "?";
  $MM_referrer = $_SERVER['PHP_SELF'];
  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)
  $MM_referrer .= "?" . $QUERY_STRING;
  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  header("Location: ". $MM_restrictGoTo);
  exit;
}
?>

Merci à tous!

8 réponses

kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
6 août 2007 à 21:39
Bonjour,
Je sais pas si ca t'aide :
if (isset($_SESSION['sexe'])) {
if ($_SESSION['sexe']=="homme") { echo 'tu es un homme'; } else if ($_SESSION['sexe']=="femme") { echo 'tu es une femme'; }
} else { echo 'tu es l\'homme neutre insensible a l\'orgazmo rayon de captain orgazmo'; }

_Marikou
0
cs_doberman_420 Messages postés 22 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 7 août 2007
7 août 2007 à 00:44
Bonsoir,

 Je te remercie de ta réponse kishkaya, 
 
 Je me suis peu étre mal exprimé,
avec ce script par exemple, si je ne me suis pas loggué, kan je tape
l'adresse
http://monsite.fr/indexFemme.php
ou homme ça me redirige sur une page d'erreur "

Il faut être membre pour pouvoir acceder à cette page".

 Mais la quand tu es loggué, un membre Homme peu allé sur  l'index Femme et acceder à des fonctions réservées aux Femmes.

 Il faudrait que j'ai le méme message d'erreur quand sur cette page le script reconnait une session Homme.  

 Peu étre est-ce un peu plus clair, pas trés évident à expliquer.

 Merci.
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
7 août 2007 à 01:21
Hello,

ben tu mets le sexe dans une variable en session au moment du login, et en haut de ta page Femme tu mets if ( $_SESSION[sexe] == homme) { header (location : ailleurs) }
il y a qqch que tu ne comprends pas là-dedans ?
à+
0
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
7 août 2007 à 10:13
En haut de chaque page tu peux faire un truc genre
if (isset($_SESSION['sexe'])) {
if ($_SESSION['sexe']=="homme") { include('homme/mapage.php'); } else if ($_SESSION['sexe']=="femme") { include('femme/mapage.php'); }
} else { header('Location: erreur/log.php'); }
Ca devrait marché, adapte ca à l'arborescence de ton site.
_Marikou
0

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

Posez votre question
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
7 août 2007 à 10:15
Oublie pas de ne pas envoyer d'entete (en gros, met rien avant le header: Location..) ou rajoute une bufferisation de ta page.
cf php.net->ob_start();

_Marikou
0
cs_doberman_420 Messages postés 22 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 7 août 2007
7 août 2007 à 16:54
Bonjour,

 Merci à Evangun et kishkaya et bien en fait j'avais déja essayé avec une condition comme Evangun la cité et la j'ai essayer avec ton code kishkaya.


 J'ai toujour un message d'erreur du au header avec "ob_start();" aussi


 Peu étre en mettant une dans la condition une redirection meta? si bien sur j'arrive à écrire la condition, lol.


 Merci beaucoup.


 
0
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
7 août 2007 à 18:07
Bonjour,
Quand t'as des probleme avec l'aide qu'on te donne pense a regarder sur php.net c'est la base, c'est là ou il y a la documentation.
Ca marche pas parce que ob_start(); commence la bufferisation de ta page et a aucun moment tu arrete de bufferiser, donc en fait tu n'envoie jamais la page a l'utilisateur.
<?php
ob_start(
);

?>


<html>

 

 C'est comme comparer des carottes et des pommes de terre.


 

</html>

<?php

header('autrepage.php');

ob_end_flush();

?>

ceci aura pour effet de te rediriger vers la page autrepage.php quoi que tu fasse tu verras jamais :
c'est comme comparer des carottes et des pommes de terre.

La redirection meta c'est au niveau client, avec header c'est au niveau serveur, donc c'est mieux. Essaye de mettre ob_start(); en haut de ton script et ob_end_flush(); tout a la fin. Comme ca tu peux faire des header(location:..) partout ou tu veux dedans =)
_Marikou
0
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
7 août 2007 à 18:08
pardon c'est header('Location: autrepage.php');
autant pour moi

_Marikou
0
Rejoignez-nous