Erreur dans la fonction necessite_priv($priv)

16 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

en voulant créer une nouvelle page avec acces uniquement aux revendeurs, j'ai utilisé la fonction necessite_priv($priv) de fonctions.php.

On passe donc en parametre le niveau de privilege a voir.

Hors en regardant bien cette fonction, il n'y a nul part "$priv" à l'interieur, elle regarde juste si l'utilisateur est admin ou redacteur.

Il faut docn la modifier légarement et remplacer:

function necessite_priv($priv) {

/* Cette fonction vérifie si l'utilisateur a les privilèges de $priv.  Si non affiche

 * l'écran informant que les privilèges sont insuffisants et arrête le traitement */


	global $wwwroot;


	if ( vb($_SESSION['utilisateur']['priv']) != "admin" ) { 


		if ( vb($_SESSION['utilisateur']['priv']) != "redac" ) {


		?>

		<html>

		<head>

		<title>Privil&egrave;ges Non accord&eacute;s</title>

		</head>

		<style>

		h1 { font-family: Tahoma, Arial, sans-serif; font-size: 13px; font-weight: bold; color: #CC0000; }

		</style>


		<body bgcolor=#ffffff link=#0000ff vlink=#000099 alink=#ff0000>


		<h1 align=center>Vous n'avez pas les autorisations n&eacute;cessaires pour acc&eacute;der &agrave; l'administration du site.

		<p></p>Ins&eacute;rer votre identifiant et votre mot de passe.

		<a href="<?=$wwwroot?>/index.php">Cliquez ici pour revenir &agrave; la boutique</a>


		</h1>

		</body>

		</html> <?

		die;

		}

	}

}
Par:
function necessite_priv($priv) {

/* Cette fonction v&eacute;rifie si l'utilisateur a les privil&egrave;ges de $priv.  Si non affiche

 * l'&eacute;cran informant que les privil&egrave;ges sont insuffisants et arr&ecirc;te le traitement */


	global $wwwroot;


	if ( vb($_SESSION['utilisateur']['priv']) != "admin" ) { 


		if ( vb($_SESSION['utilisateur']['priv']) != "redac" ) {


			if ( vb($_SESSION['utilisateur']['priv']) != $priv )

				?>

				<html>

				<head>

				<title>Privil&egrave;ges Non accord&eacute;s</title>

				</head>

				<style>

				h1 { font-family: Tahoma, Arial, sans-serif; font-size: 13px; font-weight: bold; color: #CC0000; }

				</style>


				<body bgcolor=#ffffff link=#0000ff vlink=#000099 alink=#ff0000>


				<h1 align=center>Vous n'avez pas les autorisations n&eacute;cessaires pour acc&eacute;der &agrave; l'administration du site.

				<p></p>Ins&eacute;rer votre identifiant et votre mot de passe.

				<a href="<?=$wwwroot?>/index.php">Cliquez ici pour revenir &agrave; la boutique</a>


				</h1>

				</body>

				</html> <?

				die;

			}

		}

	}

}

Willy

PS on peut faire plus propre en mettant que l'utilisetaur n'est pas addmin && il n'est pas redac && il n'est pas $priv.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Il y a une autre erreur plus bas dans fonctions.php dans la fonction calcul_nbprod_parcat($catid) qui calcul le nombre de prduit par catégorie.

En fait Peel prend en compte tous les produit, même ceux qui sont en etat attente, donc on peut avoir un comptage faux au niveau du catalogue.

Il faut remplacer:

function calcul_nbprod_parcat($catid) {


$sqlCount = "SELECT COUNT(*) FROM peel_produits p, peel_produits_categories pc WHERE p.id = pc.produit_id AND pc.categorie_id = '".intval($catid)."'";


$resCount = mysql_query($sqlCount);


$Count = mysql_fetch_row($resCount);


return $Count[0];


}
Par:
function calcul_nbprod_parcat($catid) {


$sqlCount = "SELECT COUNT(*) FROM peel_produits p, peel_produits_categories pc WHERE p.id = pc.produit_id AND pc.categorie_id = '".intval($catid)."' AND p.etat=1";


$resCount = mysql_query($sqlCount);


$Count = mysql_fetch_row($resCount);


return $Count[0];


}

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

sans te vexer, je ne trouve pas la différence entre tes deux derniers extraits de code.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

sans te vexer, je ne trouve pas la différence entre tes deux derniers extraits de code.

Regarde bien :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

ok mea culpa :AND p.etat=1";

cela dit tu devrait peut etre plus expliqué l'erreur :) (je me trouve des excuses)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Pas de soucis.

L'erreur est décrite en haut, avant le code :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

en effet, je crois bien avoir été plus fatiqué que ce que je pensais lorsque j'ai répondu hier soir.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

en voulant créer une nouvelle page avec acces uniquement aux revendeurs, j'ai utilisé la fonction necessite_priv($priv) de fonctions.php.

On passe donc en parametre le niveau de privilege a voir.

Hors en regardant bien cette fonction, il n'y a nul part "$priv" à l'interieur, elle regarde juste si l'utilisateur est admin ou redacteur.

a quoi sert ceci alors ?

function a_priv($priv) {

/* Renvoie true si l'utilisateur de la session a le privilège $priv */

return $_SESSION['utilisateur']['priv'] == $priv;

}

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

a quoi sert ceci alors ?

function a_priv($priv) {

/* Renvoie true si l'utilisateur de la session a le privilège $priv */

return $_SESSION['utilisateur']['priv'] == $priv;

}

Comme tu dois le savoir, a savoir si l'utilisateur loggué a les droits "$priv", mais contrairement à la fonction "necessite_priv", ça ne le renvoit pas à la page de logging s'il n'a pas ce privilège...

De plus si on est "admin" ou "redac", on ne passera pas au dessus de se droit "$priv" dans la fonction "a_priv".

Pour info ma correction portait juste sur cette fonction "necessite_priv" qui a comme parametre "$priv" et qui annonce :

/* Cette fonction v&eacute;rifie si l'utilisateur a les privil&egrave;ges de $priv.  Si non affiche

* l'&eacute;cran informant que les privil&egrave;ges sont insuffisants et arr&ecirc;te le traitement */

Ce que la fonction ne faisait pas en standard.

J'espère avoir répondu à ta question (dont tu connais la réponse je suis certain ;) ;) ).

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

oui merci :P ;) ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

J'ai réussit le test ? ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

pfff pas question de test ! non

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

heu juste une question c'est dans fonctions.php de quelle version?

Parce que je n'ai pas sur ma version 3.1, quand je cherche dans fonctions.php!!

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Sur la 3.2 ca y est.

Regarde les pages qui necessitent un certain privilège genre administrer/index.php, cette fonction est appelée tout en haut.

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

oui normalement c'est dans le fichier fonctions.php en haut du fichier me semble t il.

de plus je pense que cela concerne toutes les versions

mais il y a quelque chose qui me chifonne tout de meme

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Sur la 3.2 ca y est.

Regarde les pages qui necessitent un certain privilège genre administrer/index.php, cette fonction est appelée tout en haut.

Willy

Effectivement elle y est!!!

Bizzare le moteur de recherche de Dream ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping