Nouveau sujet Répondre Imprimer Syndication RSS 2.0

[Réglé] Récupérer les autorisations du MOD Groupe sur son site.

Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
Message édité 5 fois, dernière édition par Spark, 08 Décembre 2006, 1:25     Lien vers ce message 02 Décembre 2006, 23:23
Salut tout le monde,

Ca faisais longtemps que je n'avais pas sollicité votre aide ^^

J'utilise le mode groupe et je voudrais définir des droits sur mon site en fonction des groupes et non pas avec INVITE/MEMBRE/MODO/ADMIN. (T’en qu'on y est pouvez me donner la syntaxe exacte de INVITE/MEMBRE/MODO/ADMIN, je risque d’en avoir besoin aussi plus tard).

Qu'est ce que je mets à la place de INVITE :

Citation
<?php
if ($membre['membre_id'] == INVITE)
{
redir($racine . 'connexion.php');
exit;
}
?>


Le nom du groupe ? Ou bien est ce que c'est complètement différent, si oui comment fait-on alors ?

Peut-on également règlementer l'accès à tout un dossier pour restreindre l'accès au téléchargement de fichiers ? Toujours avec les groups. Et si le dit dossier est sur un autre serveur ?

Merci d'avance :)


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Flamme ardente
Avatar de TCool
  • Age : 25 ans
  • Messages : 470
  • Inscrit : 04 Février 2005
  Lien vers ce message 02 Décembre 2006, 23:41
Salut,

Pour les groupes c'est pas si facile, l'implémentation du mod dans FSB n'est pas total.

/*
**	Détermine si un membre fait partie d'un groupe
**		$groupe_id	=> Identifiant du groupe
**		$membre_id => Identifiant de l'utilisateur
**	Retourne True si Membre fait partie du groupe, 
**		      False s'il fait partie et 
**		     Null si le MOD n'est pas actif ou si Membre est un invité
*/
function is_groupe($groupe_id, $membre_id)
{
	if($MOD['groupes'] && $membre_id != INVITE)
	{
		static $groupe;
		
		//Pour alléger on récupére une seul fois les informations par utilisateurs
		if($groupe === null || ! isset($groupe[$membre_id]))
		{	
			$sql = 'SELECT g_id FROM ' .  GROUPES_MEMBRES_TABLE . '
					WHERE gm_status <> ' . GROUPE_ATTENTE . ' AND u_id = \'' . $membre_id . '\''; 
			if (!$result = $bdd->requete($sql))
			{
				info($langue['er_titre'], sprintf($langue['er_select'], 'groupes_membres'), __LINE__, __FILE__, $sql);
			}
			
			// On place le résulta dans un tableau
			while( $row = $bdd->tableau($result) )
			{
				$groupe[$membre_id][] = $row['g_id'];
			} 
			$bdd->free($result);
		}
		
		$j = count($groupe[$membre_id]);
		for($i = 0; $i < $j; $i++)
		{	
			// On Parse le tableau à la recherche de groupe_id
			if($groupe[$membre_id][$i] == $groupe_id)
			{
				return true;
			}
		}
		return false;
	}
	// Le Mod n'est pas actif
	return null;
}

J'ai pas testé mais sa devrait être bon :)

@++,
TCooL


TCooL TCooL
MonFSB, hébergement de son forum fsb gratuit ^^
Zoneur And PurPle développement ^^
Tous mes MOD dispo ici
 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 03 Décembre 2006, 0:56
J'ai testé mais il ne se passe rien, j'ai créé un membre qui est dans le groupe 1, j'ai essayé aussi en t'en qu'invité, mais rien, rien non plus quand je mets $groupe_id=2;. Pas de messages d'erreurs, pas de filtrage, comme si je n’avais rein fais.

Si j'ai bien compris il faut que je détermine la variable $groupe_id en fonction du groupe attendu sur la page ?

Dans mon exemple je veux autoriser les membres du groupe id=1, mais dans la réalité je vais autoriser plusieurs groupes (1 et 2), mais pas tous (3, 4, 5, ...). Comment faudra-il faire ?


Merci de ton aide :)
Citation
<?php
/*
** Détermine si un membre fait partie d'un groupe
** $groupe_id => Identifiant du groupe
** $membre_id => Identifiant de l'utilisateur
** Retourne True si Membre fait partie du groupe,
** False s'il fait partie et
** Null si le MOD n'est pas actif ou si Membre est un invité
*/
$groupe_id=1;
function is_groupe($groupe_id, $membre_id)
{
if($MOD['groupes'] && $membre_id != INVITE)
{
static $groupe;

//Pour alléger on récupére une seul fois les informations par utilisateurs
if($groupe === null || ! isset($groupe[$membre_id]))
{
$sql = 'SELECT g_id FROM ' . GROUPES_MEMBRES_TABLE . '
WHERE gm_status <> ' . GROUPE_ATTENTE . ' AND u_id = \'' . $membre_id . '\'';
if (!$result = $bdd->requete($sql))
{
info($langue['er_titre'], sprintf($langue['er_select'], 'groupes_membres'), __LINE__, __FILE__, $sql);
}

// On place le résulta dans un tableau
while( $row = $bdd->tableau($result) )
{
$groupe[$membre_id][] = $row['g_id'];
}
$bdd->free($result);
}

$j = count($groupe[$membre_id]);
for($i = 0; $i < $j; $i++)
{
// On Parse le tableau à la recherche de groupe_id
if($groupe[$membre_id][$i] == $groupe_id)
{
return true;
}
}
redir($racine . 'connexion.php'); // C'est juste pour le test
}
// Le Mod n'est pas actif
return null;
}
?>


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Flamme ardente
Avatar de TCool
  • Age : 25 ans
  • Messages : 470
  • Inscrit : 04 Février 2005
  Lien vers ce message 03 Décembre 2006, 1:44
Re,

Alors exemple pour l'user actuel, il doit faire partie du groupe 1 et 2

$is_droit = is_groupe(1, $membre['membre_id']) || is_groupe(2, $membre['membre_id']);

if($is_droit)
{
     echo 'Salut, ' . $membre['membre_login'] . ' tu as le droit de voir la page.';
}
else
{
     echo 'Salut, ' . $membre['membre_login'] . ' tu n\'as pas le droit de voir la page.';
}

@++,
TCooL


TCooL TCooL
MonFSB, hébergement de son forum fsb gratuit ^^
Zoneur And PurPle développement ^^
Tous mes MOD dispo ici
 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 03 Décembre 2006, 15:08
Ha ok merci http://www.fire-soft-board.com/fsb/bigmouth.gif ,

Maintenant le problème c'est que personne n'est autorisé, invité, membre du groupe, admin.

Une idée ??


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Flamme ardente
Avatar de TCool
  • Age : 25 ans
  • Messages : 470
  • Inscrit : 04 Février 2005
  Lien vers ce message 03 Décembre 2006, 16:25
vi je crois :)

essay de remplacer $MOD par $GLOBALS['MOD']

@++,
TCooL


TCooL TCooL
MonFSB, hébergement de son forum fsb gratuit ^^
Zoneur And PurPle développement ^^
Tous mes MOD dispo ici
 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 03 Décembre 2006, 16:46
C'est fait avec INVITE ça va mais avec le rest :

Citation
Fatal error: Call to a member function on a non-object in t:\sites perso\site+forum\includes\autorisation_groupe.php on line 21


21=
if (!$result = $bdd->requete($sql))


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Flamme ardente
Avatar de TCool
  • Age : 25 ans
  • Messages : 470
  • Inscrit : 04 Février 2005
  Lien vers ce message 03 Décembre 2006, 16:49
Re, hier soir je devais dormir LOL

/*
**	Détermine si un membre fait partie d'un groupe
**		$groupe_id	=> Identifiant du groupe
**		$membre_id => Identifiant de l'utilisateur
**	Retourne True si Membre fait partie du groupe, 
**		      False s'il fait partie et 
**		     Null si le MOD n'est pas actif ou si Membre est un invité
*/
function is_groupe($groupe_id, $membre_id)
{
	global $bdd, $langue, $MOD;
	
	if($MOD['groupes'] && $membre_id != INVITE)
	{
		static $groupe;
		
		//Pour alléger on récupére une seul fois les informations par utilisateurs
		if($groupe === null || ! isset($groupe[$membre_id]))
		{	
			$sql = 'SELECT g_id FROM ' .  GROUPES_MEMBRES_TABLE . '
					WHERE gm_status <> ' . GROUPE_ATTENTE . ' AND u_id = \'' . $membre_id . '\''; 
			if (!$result = $bdd->requete($sql))
			{
				info($langue['er_titre'], sprintf($langue['er_select'], 'groupes_membres'), __LINE__, __FILE__, $sql);
			}
			
			// On place le résulta dans un tableau
			while( $row = $bdd->tableau($result) )
			{
				$groupe[$membre_id][] = $row['g_id'];
			} 
			$bdd->free($result);
		}
		
		$j = count($groupe[$membre_id]);
		for($i = 0; $i < $j; $i++)
		{	
			// On Parse le tableau à la recherche de groupe_id
			if($groupe[$membre_id][$i] == $groupe_id)
			{
				return true;
			}
		}
		return false;
	}
	// Le Mod n'est pas actif
	return null;
}


Voila :)

@++,
TCooL


TCooL TCooL
MonFSB, hébergement de son forum fsb gratuit ^^
Zoneur And PurPle développement ^^
Tous mes MOD dispo ici
 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 03 Décembre 2006, 16:59
Ha ha ha génioul !

Merci beaucoup je vais pouvoir continuer http://www.fire-soft-board.com/fsb/images/smileys/bigmouth.gif


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 04 Décembre 2006, 1:08
Comme je l'ai dis dans le 1er post je voudrais également restreindre
l'accès à un dossier, dossiers qui contiendra des fichiers à téléchargé et
également un fichier xlm. Je pourrais donner les liens vers ces fichiers via une
page php restreinte au groupe souhaité, mais le problème c'est que ces mêmes liens pourraient très rapidement être divulgués.



Je ne vois qu'une seul solution, c'est utiliser .htaccess et .htpasswd. Mais bien sur s'en mettre des liens de ce genre dans les pages
restreintes :

http://login:mdp@domaine.com/telechargement/fichier.xml




Et en plus que ce soit accessible via les session du groupe http://www.fire-soft-board.com/fsb/images/smileys/notgood.gif





J’arrête pas de me triturer le ghost, c’est surement possible, mais je ne sais même pas quoi chercher sur google !!

C'est très importent pour moi http://www.fire-soft-board.com/fsb/images/smileys/ahh.gif


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5456
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 04 Décembre 2006, 1:15
hello,
alors tout dépend la taille des fichiers si la taille est petite à moyenne : tu lit le fichier (à la limite tu le stockes dans un base de donnée) et puis tu l'imprimes en sortie php avec le bon header

/!\Cependant si le fichier est d'une taille considérable alors ben il te faudra utiliser un système de redirection mais dans ce cas il leur suffira d'analyser un peu le truc et ils finiront par trouver comment les choses se passe.

un autre truc pourrait consisté en regardant la page d'où provient la personne (donc si elle à cliquer sur un lien et si oui où se lien ce situait. et dès lors si c'est ok accepter le télchargement (donc via rêgle dans htaccess)


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 04 Décembre 2006, 21:44
hello,
alors tout dépend la taille des fichiers si la taille est petite à moyenne : tu lit le fichier (à la limite tu le stockes dans un base de donnée) et puis tu l'imprimes en sortie php avec le bon header

Pour la base de données on à que 25Mo donc nop pas possible. Une grande parties des fichiers sont petit (moins de 5 Mo).
"imprimes en sortie php avec le bon header" Je ne comprend pas, je vais faire quel recherche pour voir de quoi tu parle.

/!\Cependant si le fichier est d'une taille considérable alors ben il te faudra utiliser un système de redirection mais dans ce cas il leur suffira d'analyser un peu le truc et ils finiront par trouver comment les choses se passe.

J'ai vu des sites qui donne un login/MdP qui a une durée de validité relativement court pour accéder au téléchargement, mais ça doit être dur à mettre en place à mon niveau ...

un autre truc pourrait consisté en regardant la page d'où provient la personne (donc si elle à cliquer sur un lien et si oui où se lien ce situait. et dès lors si c'est ok accepter le télchargement (donc via rêgle dans htaccess)

J'ai cherché un peu et j'ai pu mettre en place cette solution, mais c'est hyper facile à contourné, donc il me faudra autre chose http://www.fire-soft-board.com/fsb/images/smileys/sado.gif


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5456
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 04 Décembre 2006, 22:16
5 mo alors :
http://be.php.net/readfile
regarde els exemple donné je epsne que c'est totu à fait compréhensible.


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 05 Décembre 2006, 18:57
Merci grummfy c'est parfait :)


Merci à vous deux c'est génial :D


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Volcan
Avatar de Spark
  • Messages : 1989
  • Inscrit : 24 Juin 2006
  Lien vers ce message 06 Décembre 2006, 19:02
Re ^^"

J'ai un petit souci pour la récupération des sessions à partir d'un autre serveur.


J'ai mis :

<?php

define('FORUM', TRUE);

//--------------------------
// On récupère les sessions du forum Début
//-------------
define('PAGE_CONNEXION', TRUE);

// Ici tu met le chemin depuis ton site vers ton forum
$racine = 'http://www.mondomaine.info/fsb/';

include($racine . 'demarrage.php');

// On démare la session
$membre = recuperer_session();

//On vérifie le groupe
/*
**   Détermine si un membre fait partie d'un groupe
**      $groupe_id   => Identifiant du groupe
**      $membre_id => Identifiant de l'utilisateur
**   Retourne True si Membre fait partie du groupe,
**            False s'il fait partie et
**           Null si le MOD n'est pas actif ou si Membre est un invité
*/
function is_groupe($groupe_id, $membre_id)
{
   global $bdd, $langue, $MOD;
   
   if($MOD['groupes'] && $membre_id != INVITE)
   {
      static $groupe;
      
      //Pour alléger on récupére une seul fois les informations par utilisateurs
      if($groupe === null || ! isset($groupe[$membre_id]))
      {   
         $sql = 'SELECT g_id FROM ' .  GROUPES_MEMBRES_TABLE . '
               WHERE gm_status <> ' . GROUPE_ATTENTE . ' AND u_id = \'' . $membre_id . '\'';
         if (!$result = $bdd->requete($sql))
         {
            info($langue['er_titre'], sprintf($langue['er_select'], 'groupes_membres'), __LINE__, __FILE__, $sql);
         }
         
         // On place le résulta dans un tableau
         while( $row = $bdd->tableau($result) )
         {
            $groupe[$membre_id][] = $row['g_id'];
         }
         $bdd->free($result);
      }
      
      $j = count($groupe[$membre_id]);
      for($i = 0; $i < $j; $i++)
      {   
         // On Parse le tableau à la recherche de groupe_id
         if($groupe[$membre_id][$i] == $groupe_id)
         {
            return true;
         }
      }
      return false;
   }
   // Le Mod n'est pas actif
   return null;
}


//-------------
// On récupère les sessions du forum Fin
//--------------------------

$is_droit = is_groupe(1, $membre['membre_id']);

if($is_droit)
	{
     echo 'Salut ' . $membre['membre_login'] . ', tu as le droit de voir la page.';
	}
else
{
     echo 'Salut ' . $membre['membre_login'] . ', tu n\'as pas le droit de voir la page.';
}


?>


Et ça donne :

Citation
-[interdit]-

Fatal error: Call to undefined function recuperer_session() in /home/m/o/n/mondomaine/www/download.php on line 16


Ligne 16 :
Citation
$membre = recuperer_session();


Merci d'avance pour votre aide :)


Mon site de jeux en réseau Hamachi :
http://www.jeux-reseau.fr
Le forum : http://forum.jeux-reseau.fr
http://img100.imageshack.us/img100/4097/voegelpc3jk2jx2kw4xg6.gif
 
Répondre


.