Vous n'êtes pas identifié(e).
Pages :: 1
aujourd'hui est un grand jour... (enfin pour moi)
apres des mois a aborder les codes "des autres", a suivre des manuels et des tutos, a bidouiller des codes deja écrits.... je me suis mis a écrire mon premier code moi meme
(ouais bon je sais, c'est comme un enfant qui est fier de son premier chateau de sable mais bon...)
par contre j'ai un "parse error" et j'ai besoin que qqn regarde mon code (débile et basique) pour le corriger...
> j'ai une page "contact.php" avec un formulaire pour entrer le pseudo et le password. cette page remplit aussi les variables de session, puis envoit vers une page "prive.php"
> dans cette page "prive.php", je veux que le menu de navigation s'affiche différemment si on est simple utilisateur ou si on est administrateur. la différence est qu'un des champs de la base de donnée donne un chiffre 3 pour admin et 2 pour utilisateur > ces valeurs sont répercutées dans les variables de session.
donc voici le code que je pensais placer sur la page "prive.php". et c'est la que j'ai un "parse error" en ligne 4 :?:
function menuprive($_SESSION['MM_Username'],$_SESSION['MM_IdUser'],$_SESSION['MM_UserGroup'])
{
if (empty($_SESSION['MM_Username']))
{header("Location: acces.php"); }
else
{if (empty($_SESSION['MM_IdUser']))
{header("Location: acces.php"); }
else
{if ($_SESSION['MM_UserGroup']==2)
{//afficher menu membre
include "admin/menu1.php";
}
elseif ($_SESSION['MM_UserGroup']==3)
{//afficher menu membre + admin
include "admin/menu1.php";
include "admin/menu2.php";
}
else {header("Location: acces.php"); }
}
}
}
?>
<?php
echo "test de menu";
menuprive($_SESSION['MM_Username'],$_SESSION['MM_IdUser'],$_SESSION['MM_UserGroup']);
?>
Hors ligne
Bonsoir,
Je ne suis pas un grand manitou mais je regarde à droite et à gauche...et il se trouve que je teste actuellement PHPEdit. Le copier/coller de ton code et l'analyse de PHPEdit conduit à l'erreur en précisant le type d'erreur : -->syntaxe error unexpect'[', expecting')'
J'ai mis les parenthèses de la fonction à zéro et j'ai repris en respectant à 100% les propositions de syntaxes ; au bout même erreur !
Tout ça pour rien ?
J'ai testé cette solution qui ne donne pas, sur PHPEdit, d'erreur ;
$a = $_SESSION[MM_Username];
$b = $_SESSION[MM_IdUser] ;
$c = $_SESSION[MM_UserGroup] ;
function menuprive($a,$b,$c) {}
Allez savoir !
Je vais suivre ton problème car ça use les yeux de ne pas comprendre.
Hors ligne
enlève les paramètres dans ta fonction et tu n'auras plus de parse error
attention :
le header ne fonctionnera pas
a++
Hors ligne
@himron,
$_SESSION est un tableau qui fait partie des variables $GLOBALS de PHP, les utiliser en arguments d'une fonction constitue donc, fondamentalement un contresens.
D'autre part, invoquer la fonction header() au sein d'une fonction suppose, a minima, une méconnaissance du fonctionnement de PHP voire de HTTP.
Enfin, voire surtout, a quoi bon faire une fonction de ce menu privé ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
merci pour vos réponses
@zad34 : t'as tappé dans le mille. en mettant $a,$b,$c dans la fonction et $a=$session ensuite, ca marche.
@pierrot et maljuna : le header focntionne et me sert simplement a rediriger les utilisateurs n'entrant pas dans les conditions (login) vers le formulaire d'identification. maintenant si vous connaissez mieux...
@Maljuna : je n'ai jamais caché ma "méconnaissance" de php. mais merci de me le rappeller et d'enfoncer le clou. juste pour info, si j'etais un expert, je ne serais pas ici pour demander de l'aide et des avis.
probleme résolu, le code fonctionne maintenant. merci.
Hors ligne
Je sens comme une amère rancœur dans tes propos ou je me trompe ?
Ne pas accepter les critiques et/ou les observations n'est immanquablement pas le meilleur moyen de progresser.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
disons plutot que j'apprécie hautement les conseils constructifs contenant des propositions d'aide, ou des corrections concretes
et tres peu les commentaires negatifs qui ne proposent rien pour m'aider a me corriger. critiquer est facile. mais critiquer sans aider ne sert en rien la progression.
si je poste ici c'est justement pour recevoir des critiques... ET de l'aide. sinon comment progresser ?
stp relis ton post et cherches y les commentaires constructifs avant de parler de "rancoeur".
et relis mes deux posts, je pense que tu y verras plusieurs phrases qui montrent que j'accepte la critique quand elle propose de l'aide et me permet de progresser en meme temps.
bon, pour ma part, fin de la discussion sur ce theme, on n'est pas ici pour cela.
parlons plutot "codes".
mon code actuel est :
function loginout($a,$b,$c)
{
$a=$_SESSION['MM_Username'];
$b=$_SESSION['MM_IdUser'];
$c=$_SESSION['MM_UserGroup'];
if (empty($_SESSION['MM_Username']))
{echo '<a href="acces.php">acces privé</a>'; }
else
{if (empty($_SESSION['MM_IdUser']))
{echo '<a href="acces.php">acces privé</a>'; }
else
{if ($_SESSION['MM_UserGroup']==2) // membre + admin
{echo '<a href="prive.php">panneau privé</a> | <a href="logout.php">LOGOUT</a>';}
elseif ($_SESSION['MM_UserGroup']==3) // admin seul
{echo '<a href="prive.php">panneau privé</a> | <a href="logout.php">LOGOUT</a>' ;}
else {echo '<a href="acces.php">acces privé</a>'; }
}
}
}
?>
(oui, j'utilise le meme fragment pour diverses utilisations et affichages dynamiques sur mon site)
et a l'emplacement d'affichage, je place
ca marche tres bien quand les variables de session existent et sont remplies. ou quand ces variables existaient et ont été vidées. mais je viens de faire le test, quand les var session n'ont pas encore été créées et utilisées, ca indique des "erreurs variables indéfinies".
puis je dire que ces var session existent (en début de page) meme si elles ne sont pas remplies ?
Hors ligne
Tu utilises la fonction isSet() dans ta fonction, je suppose donc que tu la maitrise.
Il faut donc faire de même avec les variables d'entrées de ta fonction loginout().
On ne récupère jamais des paramètres sans les contrôler.
Hors ligne
Au risque de me répéter, le tableau $_SESSION fait partie des $_GLOBALS de PHP, il a donc une portée globale sur l'ensemble du script, fonctions comprises.
Si tant soit est qu'il puisse être pertinent de tenter de faire ce que tu fais via une fonction plutôt que par include, le passage d'arguments à la fonction est vain, voire contre-productif, le tableau $_SESSION y étant parfaitement accessible en lecture et en écriture..
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Je suppose que ce n'est pas le cas dans son application mais je serais tenté de dire que cela dépend MK.
J'ai pour ma part développé des classes de connexion prenant des paramètres et ce afin de laisser libre l'utilisation d'un quelconque système de stockage pour les sessions.
Alors certes les 99% des classes de session utilisent les sessions PHP mais cela permet d'avoir du traitement en plus sans contraintes de les réécrire à chaque fois.
Hors ligne
bon ok apparemment je m'y prend mal.
je reprend depuis le début ce que j'ai voulu faire avec ce code.
1. j'ai un formulaire de login ou l'utilisateur entre son pseudo et son pw. avec ca, la page va comparer avec la base de donnée, vérifie, et place dans des variables de session le pseudo, l'id primaire, et le no de groupe de l'utilisateur (visiteur, utilisateur, webmaster...).
2. je veux que sur les pages du site, j'aie des affichages variables.
- soit c'est un visiteur non connecté et il empeche l'acces a la page (et renvoi vers le formulaire le login)
- soit il permet de lire la page (et affiche soit un menu utilisateur, soit un menu admin en focntion)
ou alors
- soit c'ets un visiteur et j'ai un certain affichage (dont un lien vers la page de login)
- soit c'ets un utilisateur connecté et j'ai d'autres liens (dont un lien vers un logout)
la procedure d'analyse est la meme, juste l'affichage est différent.
ca c'est ce que je veux faire. les variables de session ne correspondent pas a ce que j'ai besoin (ou manquent de sécurité ?). ok. j'utilise d'autres variables alors ? l'intéret des variables de session, c'est qu'il suffit de quitter l'explorer pour les effacer. c'est pour ca que j'ai préférer les utiliser.
si vous connaissez une meilleure facon de faire ceci, je suis ouvert a des exemples. la j'ai juste utilisé des trucs que je commence a connaitre avec mes modestes connaissances. (mais svp restez basique dans vos explications sinon je ne vous comprendrai pas )
Hors ligne
Ce que te reprochais MK c'est qu'on peut atteindre les variables de sessions où que l'on soit dans le script (fonction, class, ect).
Donc il est inutile de les passer en paramètre d'une fonction puisque que dans la fonction tu y as accès.
Hors ligne
Ce que te reprochais MK
Je ne reproche rien, je fais observer en rappelant quelques fondamentaux.
Je ne reproche sur ce site que les manquements à la charte, ce qui n'est pas le cas ici.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
@XTG : il me semblait pourtant que je dois annoncer que je vais les utiliser non ? (je dois me tromper si je vous lis bien). ok donc je n'annonce pas les var session dans les parametres.
donc je met simplement qqch comme un truc du genre ...
ok ca a l'air de marcher.
Dernière modification par himron (08-02-2011 10:28:36)
Hors ligne
>>if (!isset($_SESSION)) {session_start();}
nan
seulement ca session_start();
a++
Hors ligne
Pages :: 1