Site intranet

Site intranet - PHP - Programmation

Marsh Posté le 12-08-2002 à 11:29:29    

Bonjour,
je débute totalement en php-mysql et j'aurais aimé developer un site intranet avec une gestion spécifique des utilisateurs (plusieurs niveaux d'acces tels que, l'admin, qui peut tout modifier, tout voir, tout effacer (GOD :pt1cable: ),la direction generale, qui voit tout, [...] et les autres qui ne voient que le reglement intérieur, les news ou autre)
le truc c'est qu'il faudrait pouvoir faire en sorte que la secretaire(mignonne mé un toutipeu conne !!lol) puisse simplement ouvrir son navigateur, se loguer, et poster un article dans une catégorie choisie....
je sais pas du tt par ou commencer, si vs avez qq idées je vous en serait reconnaissant  :jap:  
merki

Reply

Marsh Posté le 12-08-2002 à 11:29:29   

Reply

Marsh Posté le 12-08-2002 à 11:53:18    

j'en ai deja fait kkes uns...
si tu debute a fond, tu trouvera pas mal de chose sur des sites tels que www.phpdebutant.com
 
un serveur apache, php et mysql avec... poster les messages tu met soit un forum (agora, phpbb par exemple), ou plus betement un truc ressemblant a un serveur de news, yen a plein des deja fait partout


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
Reply

Marsh Posté le 12-08-2002 à 14:24:48    

mon premier probleme vient des diff niveaux d'utilisateurs...
-----------------------------------------------------------
par ex:
 TOTO
 TATA
 TATI
  ont le droit de voir X choses
 
 TUTU
 TUTI
  ont le droit de voir X+Y choses
 
 TÉTÉ
  a le droit de voir l'ensemble des choses
-----------------------------------------------------------
moi je ferais une table pour chaque niveau de "sécurité", mais comment faire lors du login, pour qu'avec des noms d'utilisateurs <> ont puisse voir la mm chose

Reply

Marsh Posté le 12-08-2002 à 15:11:47    

Tu fais unte table avec de tes membres avec un chiffre a coté par exemple 0 pour admin 1 pour la rh etc...
apres tu as ca :
Si la personne a un chifre <2 alors ca tu l'affiches
Si la personne a le chiffre 0 ca tu peux l afficher aussi
 
etc etc

Reply

Marsh Posté le 14-08-2002 à 10:04:45    

oki g a peu pres compris, mais comment je fait pour pouvoir afficher seulement certaines parties, comment faut il que j'organise mon script(dsl d'ê boulet, mé fo bien passer par la qqfois :s [:wouaf] )
merki

Reply

Marsh Posté le 14-08-2002 à 10:14:11    

Les includes

Reply

Marsh Posté le 14-08-2002 à 10:18:24    

dakor, v essayer!
mais si on fait plusieurs includes de fichiers html diff, ça va donner koi?(les fichiers html servant à donner une apparence au site web

Reply

Marsh Posté le 14-08-2002 à 10:21:06    

:heink:  
 
Une adresse : http://www.phpdebutant.com
 
Manges déjà leur tutoriaux (ils sont clairs et compréhensible et pas longs), puis reviens nous voir dans quelques jours (une fois que tu auras tout bien assimilé).
 
 :hello:

Reply

Marsh Posté le 14-08-2002 à 10:37:08    

erf, je suis censé bosser donc si je lis tt les tuts et kil ya la moitié ki ne me concernent pas, je perds mon temps .. enfin, bon, ça ne peut être ke bénéfique :s

Reply

Marsh Posté le 14-08-2002 à 10:39:43    

Vu ta question précédente, je crois que ce sera tout benef  :D

Reply

Marsh Posté le 14-08-2002 à 10:39:43   

Reply

Marsh Posté le 14-08-2002 à 14:33:39    

Code :
  1. <?php
  2. function test_auth($auth)
  3. {
  4.   if($auth==a){
  5.      echo " en administrateur";
  6.     }
  7.  
  8.   elseif($auth==b){
  9.         echo " en direction generale";
  10.      } 
  11.  
  12.   elseif($auth==c){
  13.            echo " en responsable de service";
  14.      } 
  15.   elseif($auth==d){
  16.         echo " en direction";
  17.      } 
  18.   elseif($auth==e){
  19.         echo " en qqn d'autres'";
  20.      } 
  21. }
  22. ?>


 
ce genre de code c tt faux, ou ya un chti peu de bon?

Reply

Marsh Posté le 14-08-2002 à 14:43:04    

Non, ce genre de code est très intéressant dans le cas d'un site multilangue par exemple Mais ya mieux :
 
tu fais un tableau :
 
$info = array("php is good !","c'est cool le php","php ist gut","me gusta mucho el php !" );
 
$langue = // 0 (0 = anglais, 1 = français, 2 =allemand, 3 =espagnol)
 
echo $info[$langue];
 
c'est + mieux...  ;)  
 
Toi pour ton problème, c'est plutôt des includes qu'il te faut :
 
Par exemple, le haut de ta page avec <html><head> etc...
 
ensuite un tableau (ou mieux des css) avec à gauche les propositions et à droite le résultat.
 
Genre :
 
ton tableau, et à droite include"page de droite".$no_de_page.


Message édité par LexTuhor le 14-08-2002 à 14:43:38
Reply

Marsh Posté le 14-08-2002 à 16:56:48    

des fois ya des trucs ki me depassent (svt mm)

Code :
  1. session_start();
  2.     session_register('login');
  3.    
  4.     echo 'Vous etes bien logué';
  5. //test_auth($auth);
  6.  $rqst = "select auth from tbl_user where login='$login'";
  7.   $auth = mysql_query($rqst) or die ('Erreur SQL !<br>'.$rqst.'<br>'.mysql_error());
  8.  $tablo = mysql_fetch_array;
  9. echo ' ...'.$tablo[$auth].'...';


 
la valeur "$auth. " dans la base est e type enum, on a donc le choix entre a,b,c,d, ou e .
Pour les tests, chaque login renvoi une valeur différente de $auth. quand je me le login "admin", cela devrait retourner, a ? et bien non, cela retourne q


Message édité par dpro le 19-08-2002 à 09:42:29
Reply

Marsh Posté le 19-08-2002 à 10:08:55    

help pliz :jap:

Reply

Marsh Posté le 19-08-2002 à 12:32:29    

dpro a écrit a écrit :

des fois ya des trucs ki me depassent (svt mm)

Code :
  1. session_start();
  2.     session_register('login');
  3.    
  4.     echo 'Vous etes bien logué';
  5. //test_auth($auth);
  6.  $rqst = "select auth from tbl_user where login='$login'";
  7.   $auth = mysql_query($rqst) or die ('Erreur SQL !<br>'.$rqst.'<br>'.mysql_error());
  8.  $tablo = mysql_fetch_array;
  9. echo ' ...'.$tablo[$auth].'...';


 
la valeur "$auth. " dans la base est e type enum, on a donc le choix entre a,b,c,d, ou e .
Pour les tests, chaque login renvoi une valeur différente de $auth. quand je me le login "admin", cela devrait retourner, a ? et bien non, cela retourne q
 




 
t'as un pb il me semble dans la lecture des résultats de la requete :
 

Code :
  1. echo ' ...'.$tablo[auth].'...';


---------------
Mon blog
Reply

Marsh Posté le 19-08-2002 à 14:10:03    

peut-etre, mais si y avait un réel prob, cela ne marcherait pas, et afficherait un msg d'erreur; et là, non! php renvoi une valeur fantaisiste ..... (q) c'est étonnant, non?

Reply

Marsh Posté le 19-08-2002 à 14:46:27    

Code :
  1. session_start();
  2.    session_register('login');
  3.    
  4.    echo 'Vous etes bien logué';
  5. //test_auth($auth);  
  6. $rqst = "select auth from tbl_user where login='$login'";
  7.   $auth = mysql_query($rqst) or die ('Erreur SQL !<br>'.$rqst.'<br>'.mysql_error());
  8. $tablo = mysql_fetch_array($auth);
  9. echo ' ...'.$tablo['auth'].'...';

 

Reply

Marsh Posté le 19-08-2002 à 14:47:10    

ok, je@nb, mais maintenant il ne me renvoi que l'auth ayant l'id 1 (a), c'est plus logique, mais il devrait en renvoyer un different à chaque login
 
tbl_user :
+----+---------------+-------+------+------+
| id  |   pseudo        | login   | pwd | auth  |
+----+---------------+-------+------+------+
| 1   |admin              |admin   |dpro     |a     |
+----+---------------+-------+------+------+  
| 2   |direction gene   |dg        |dg      |b      |
+----+---------------+-------+------+------+  
| 3   |direction           |d        |d      |c         |
+----+---------------+-------+------+------+  
| 4   |resp de service  |rds      |rds     |d       |
+----+---------------+-------+------+------+  
| 5   |autres              |a        |a        |e       |
+----+---------------+-------+------+------+


Message édité par dpro le 19-08-2002 à 15:40:40
Reply

Marsh Posté le 21-08-2002 à 10:20:38    

Code :
  1. <?php
  2. /////////////////////////////////////////////////////////////////////////////////////
  3. function test_auth()
  4. {
  5. $rqst = "select auth from tbl_user where login='$login'";
  6. $auth = mysql_query($rqst) or die ('Erreur SQL !<br>'.$rqst.'<br>'.mysql_error());
  7. $tablo = mysql_fetch_array($auth);
  8. }
  9. /////////////////////////////////////////////////////////////////////////////////////
  10. test_auth();
  11. echo $tablo[auth];
  12. switch($tablo[auth])
  13. {
  14.  case "a":
  15.   echo " en administrateur.<br>";
  16.  //break;
  17.  case "b":
  18.   echo" en direction generale.<br>";
  19.  //break;
  20.  case "c":
  21.   echo" en responsable de service.<br>";
  22.  //break;
  23.  case "d":
  24.   echo" en direction.<br>";
  25.  //break;
  26.  case "e":
  27.   echo" en qqn d'autre.<br>";
  28.  //break;  
  29.  default :
  30.   echo" aucune authentification.<br>";
  31. }
  32. ?>


ça devrait marcher ce code, et pourtant, non, help

Reply

Marsh Posté le 21-08-2002 à 11:46:30    

[:yoyoz] [:yoyoz]  
 :up:

Reply

Marsh Posté le 21-08-2002 à 11:54:10    

enleve les commentaires des breaks...

Reply

Marsh Posté le 21-08-2002 à 11:57:44    

Le mieu est de faire comme dans NT :
 
Une table contenant les utilisateurs
Une table contenant les groupes
Une table contenant la liste des éléments du site
Une table contenant le lien entre groupe et élément, avec un type d'action à chaque fois.
 
Règles :
Utilisateur appartient à un groupe
A un groupe et un élément donné il y a un type de droit (1 lire,2 ajouter,3 supprimer, 4 mettre à jour) S'il n'y a pas de ligne renseignée pour l'élement, alors l'utilisateur n'a aucun droit sur l'élément.
 
Mais bon courage pour mettre en place, c'est assez lourd ;)

Reply

Marsh Posté le 21-08-2002 à 12:13:25    

dsl black_lord, ça ne marche pas, il me retourne la valeur par défaut (aucune identification)
MagicBuzz>C sur ke c une tres bonne idée, mais bon, chuis à ma 3eme semaine de php-mysql :pt1cable:  
Pour joindre des tables c'est JOIN ou INNERJOIN, arf, si tu ty conné bien, tu pourré mayday pliz

Reply

Marsh Posté le 21-08-2002 à 12:16:40    

Pour faire des jointures, oublie tes cours de merde qui ne sont là que pour t'embrouiller la tête.
 
Exemple de jointure :
 
SELECT USER.NAME, GROUP.NAME
FROM USER, GROUP
WHERE USER.GROUP_ID = GROUP.ID
ORDER BY GROUP.NAME, USER.NAME
 
=> Comme tu vois, j'énumère la liste des tables participant à la jointure, puis je ne fait qu'une égalité sur les champs Primary Key et Foreign Key. C'est bien plus lisible et ça change rien aux perfs.
 
(pour info, cette requête va chercher les utilisateurs dans la base et affiche leur nom et leur groupe, triés par groupe et sous-triés par nom d'utilisateur.

Reply

Marsh Posté le 21-08-2002 à 14:44:00    

on fait comment pr fixer une foreign key?

Reply

Marsh Posté le 21-08-2002 à 14:51:28    

euh...
 
chais pu faire ça, moi je fait ça direct dans SQL Server via les outils d'admin.
 
sinon, au pire, si elle est pas défini physiquement dans la base, ça change pas grand chose aux perfs, c'est surtout au niveau des contraintes de cohérence que ça pose problème.

Reply

Marsh Posté le 21-08-2002 à 15:25:43    

arf, si t pa tro OQP, esske tu pourrais m'écrire le début du code pcke là, chuis planté !
je comprends bien ce que tu eut faire, mais je ne vois pas du tt kmt je peut le mettre en place pr que cela fonctionne....
arf

Reply

Marsh Posté le 21-08-2002 à 15:52:34    

Désolé, mais j'y connais que dalle en PHP :)
 
Je peux t'écrire les requêtes SQL que tu veux, mais pour le PHP, demande à qq1 d'autre :)

Reply

Marsh Posté le 21-08-2002 à 15:56:27    

bah c dejà ça .....
le php j'éssairais d'en faire mon affaire si j'ai déjà le support mysql....

Reply

Marsh Posté le 21-08-2002 à 16:22:24    

dpro, fait moi un backup de cette table avec les insert de données, v tester ce bout de script ché moi, car je ne vois pas ce ki bug;
 
 
met error_reporting('E_ALL';); o début du script pour voir les erreurs

Reply

Marsh Posté le 21-08-2002 à 18:02:04    

oulà la table user? bah, je l'ai redessinée un peu plu  haut, tu veut ke je fasse un dump ou qqch de la base?
 
met error_reporting('E_ALL';);  
 
oui mais il ne retourne pas d'erreurs??atten j'essaie

Reply

Marsh Posté le 21-08-2002 à 18:14:40    

si on trouve pas, oué fait moi un dump de la table car je ne connais pas sa structure

Reply

Marsh Posté le 23-08-2002 à 09:38:19    

dsl pr le retard je bossais pas jeudi ....
voici donc le dump de la base "intranet"
 

Code :
  1. # phpMyAdmin MySQL-Dump
  2. # version 2.2.6
  3. # http://phpwizard.net/phpMyAdmin/
  4. # http://www.phpmyadmin.net/ (download page)
  5. #
  6. # Serveur: localhost
  7. # Généré le : Vendredi 23 Août 2002 à 09:37
  8. # Version du serveur: 3.23.49
  9. # Version de PHP: 4.2.0
  10. # Base de données: `intranet`
  11. # --------------------------------------------------------
  12. #
  13. # Structure de la table `tbl_user`
  14. #
  15. CREATE TABLE tbl_user (
  16.   id int(11) NOT NULL auto_increment,
  17.   pseudo varchar(50) NOT NULL default '',
  18.   login varchar(8) NOT NULL default '',
  19.   pwd varchar(8) NOT NULL default '',
  20.   auth enum('a','b','c','d','e') NOT NULL default 'e',
  21.   PRIMARY KEY  (id),
  22.   UNIQUE KEY id (id),
  23.   KEY ID_2 (id)
  24. ) TYPE=MyISAM;
  25. #
  26. # Contenu de la table `tbl_user`
  27. #
  28. INSERT INTO tbl_user VALUES (2, 'direction generale', 'dg', 'dg', 'b');
  29. INSERT INTO tbl_user VALUES (1, 'admin', 'admin', 'dpro', 'a');
  30. INSERT INTO tbl_user VALUES (3, 'direction', 'd', 'd', 'c');
  31. INSERT INTO tbl_user VALUES (4, 'responsable de service', 'rds', 'rds', 'd');
  32. INSERT INTO tbl_user VALUES (5, 'autres', 'a', 'a', 'e');

Reply

Marsh Posté le 23-08-2002 à 12:43:26    

je teste ça après avoir mangé

Reply

Marsh Posté le 23-08-2002 à 15:19:11    

ok c cool de ta part

Reply

Marsh Posté le 23-08-2002 à 15:53:03    

Code :
  1. <?php
  2. /////////////////////////////////////////////////////////////////////////////////////
  3. function test_auth()
  4. { global $tablo;
  5. $rqst = "select auth from tbl_user where login='".$_GET['login']."'";
  6. $auth = mysql_query($rqst) or die ('Erreur SQL !<br>'.$rqst.'<br>'.mysql_error());
  7. $tablo = mysql_fetch_array($auth);
  8. }
  9. /////////////////////////////////////////////////////////////////////////////////////
  10. test_auth();
  11. echo $tablo['auth'];
  12. switch($tablo['auth'])
  13. {
  14.  case "a":
  15.   echo " en administrateur.<br>";
  16.  break;
  17.  case "b":
  18.   echo" en direction generale.<br>";
  19.  break;
  20.  case "c":
  21.   echo" en responsable de service.<br>";
  22.  break;
  23.  case "d":
  24.   echo" en direction.<br>";
  25.  break;
  26.  case "e":
  27.   echo" en qqn d'autre.<br>";
  28.  break;
  29.  default :
  30.   echo" aucune authentification.<br>";
  31. }
  32. ?>


 
 
Bon en fait, il faut mettre global o tablo sinon il n'est pas sépcifié dans le script mais seulement dans la fonction.
Sinon fo mettre les break donc.
G mis $_GET['login'] car g passé les login en url pour tester. Met $_POST['login'] si c en formulaire ou $_SESSION['login'] si tutilise les sessions ..
 
Sinon regarde la table c chelou, qd tu met directeur il te dit responsable de service et inversement  ;)

Reply

Marsh Posté le 23-08-2002 à 16:04:10    

[:prosterne]  Merci o grand maitre Jedi  [:prosterne2][:j3dimaster] :)  :)

Reply

Marsh Posté le 23-08-2002 à 16:04:29    

:D  :D

Reply

Marsh Posté le 23-08-2002 à 16:06:09    

G pas trop compris le fctionnmt de _post mais je l'ai mis et ça marche, idem pour _sessions

Reply

Marsh Posté le 23-08-2002 à 16:19:09    

Citation :

Sinon regarde la table c chelou, qd tu met directeur il te dit responsable de service et inversement  


 
OUUUPSS chtite erreur d'innatention de ma part dans un ancien message il fallait mettre

Code :
  1. case "c":
  2.   echo" en direction.<br>";
  3. break;
  4. case "d":
  5.   echo" en responsable de service.<br>";
  6. break;

 
 
au lieu de  

Code :
  1. case "c":
  2.   echo" en responsable de service.<br>";
  3. break;
  4.  
  5. case "d":
  6.   echo" en direction.<br>";
  7. break;


 
voili, donc ça marche comme sur des roulettes !!
maintenant, passons, aux choses sérieuses : les cookies d'ailleurs, les cookies, sont mieux & + simples d'utilisation que les sessions, non?
 
 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed