Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2011, 10h11   #1
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
Par défaut cacher info envoyées

Bonjour à tous,
bon, mon problème n'est pas simple et en plus, je ne vais pas pouvoir mettre beaucoup de code sachant que mon programme tient sur plusieurs fichiers et répertoires.
en gros, voilà ce qu'il fait (exemple à 2 balles):
Pour l'instant : x demande au service y un balai. Le service y prends en charge la demande, la traite, informe x qui note la prestation. Durant tout ce temps, le service de x peut voir la demande et où cela en est.
Tout ça marche très bien.
Ce que je veux : bin la même chose sauf que le service de x ne doit pas voir sa demande car cela sera des données confidentielles.
là où c'est compliqué, c'est que tout se fait sur une interface commune pour les utilisateurs du service de x.
je sais pas si je me suis bien fait comprendre.
en tout cas, merci pour l'aide apportée
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 10h52   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
en quoi c'est compliqué?

il suffit de rajouter un étage qui filtre les données confidentielles avant affichage. Enlever de l'information n'a jamais été compliqué.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 12h53   #3
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
donc, en visu actuellement (sur d'autres programmes similaires, là c'est une option qui m'est demandé):
x à demander à y
z à demander à y
w à demander à y
sur la même page.

je filtre avec quelle commande pour que x voit que la sienne et non pas les autres ? et pareil pour les autres.
J'ai du mal à voir comment ça marche les données "cachées" pour les uns et visible pour x ou y, le tout sur la même page.
merci encore
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h00   #4
Membre régulier
 
Avatar de daheda
 
Homme Dah Andri.
Développeur Web
Inscription : août 2006
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Dah Andri.
Localisation : Ile Maurice

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 79
Points : 77
Points : 77
Envoyer un message via Yahoo à daheda Envoyer un message via Skype™ à daheda
Bonjour,
Serait-il pas mieux d'utiliser les sessions pour les filtres... ?
x a sa propre session y aussi et ainsi de suite..

Bon dev
daheda est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/02/2011, 14h14   #5
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
tout à fait d'accord sur le fond. Pour l'instant, ils ont ce genre de méthode mais... par service (session ouverte via une carte et je récupère via un jeton le nom pour avoir son accès sécurisé).
je pense que je vais creuser plus de ce coté même si ça doit me donner plus de boulot.

Edit :
j'ai ce petit bout de code qui pourrait vous aider à m'aider
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
 
    $requete="SELECT chrono FROM teleagent WHERE agentid=$agent";
    ($donnee_agent=mysql_fetch_object(mysql_db_query(BASE,$requete))) || erreur(3);
 
    $id_agt=$donnee_agent->chrono;
    $requete="SELECT num_agt, nom_agt, pren_agt, serv_agt FROM agents WHERE num_agt=$id_agt";
    ($donnee_complete_agent=mysql_fetch_object(mysql_db_query(BASE2,$requete))) || erreur(3);
 
	$req_serv_agt="SELECT nom_serv FROM services WHERE cop_serv=$donnee_complete_agent->serv_agt";
       $resultat = mysql_db_query(BASE2,$req_serv_agt);
       $result_lib_serv=mysql_fetch_object($resultat);
 
    echo "<table border=0 width=100% cellpadding=8 cellspacing=0>";
    echo "<tr><td class='titre' colspan=2>Liste des demandes de maintenances en cours pour le service $result_lib_serv->nom_serv</td>";
    echo "</tr></table></form><br>";
?>
d'après vous, comment dois-je mettre la condition : Si ce n'est pas toi l'agent demandeur, alors on n'affiche rien ? sinon, on voit ta demande.
Merci d'avance.

num_agt : on fonctionne par numéro (je ne suis pas un N°)
cop_serv : numéro du service

Edit : Re à tous,
en fait, je touche le fond, je vois pas le jour sur ce programme (vu que je débute en php en plus...).
y'a pas quelqu'un qui aurait pitié ?
Merci d'avance
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 15h00   #6
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
Bonjour à tous,
Bon, je voudrais vous poser une question qui pourrais vous sembler déprimante
j'ai le code suivant qui me permet de m'identifier suivant le service ("grh_usr" - faites pas attention aux autres).
donc, si je suis inscrit, je vois toutes les demandes de tout ceux qui sont inscrit à ce service. Comme vous pouvait le voir dans mes posts précédents, je cherche à faire en sorte que je sois le seul à voir mes demandes et ainsi de suite pour mes collègues. Pourquoi ne pas inscrire les autres sous un nom personnel ???...car on est 250 et puis le code serait pas terrible.
vu que php est nouveau pour moi et que j'adapte un programme existant, quelle ligne faudrait il que je modifie pour avoir mon nom d'ouverture de session windows (qui est propre à chacun) plutôt qu'un nom de service commun ? je sais que je vous en demande beaucoup, en plus vous n'avez pas tout les fichiers.
Merci d'avance

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
 
<?php
    require "include/param.php";
    require "include/func.php";
 
    	// pour le nom !
    	if ($nom2 != "")
    	{
    	    $nom = $nom1.$nom2;
	}
     	else
     	{
     	    $nom = $nom1;
 	}
 
	// pour le prenom
	if ($prenom2 != "")
	{
    	    $prenom = $prenom1.'-'.$prenom2;
	}
     	else
     	{
     	    $prenom = $prenom1;
  	}
 
	// pour le numéro d'agent
      	$num_agt = $num;
 
 
    (mysql_select_db(BASE,$lien=mysql_connect(HOST,USER,PASSWD))) || erreur(2);
 
   if ($service=="GRH_ADM")
    {
 
	$requete="SELECT id FROM agent.agent WHERE chrono='".sprintf("%d",$num_agt)."' AND nom='$nom'";
	$donnee=mysql_fetch_object(mysql_db_query(BASE,$requete));
 
	if (empty($donnee->id))
	{
	    $requete="SELECT max(id)+1 maxx FROM agent.agent";
	    ($donnee=mysql_fetch_object(mysql_db_query(BASE,$requete))) || erreur(3);
	    $nouveau=(empty($donnee->maxx)) ? 1 : $donnee->maxx;
 
	    $requete="INSERT INTO agent.agent VALUES($nouveau,'$nom','$prenom',".sprintf("%d",$num_agt).",'1')";
	    (mysql_db_query(BASE,$requete)) || erreur(4);
	    $donnee->id=$nouveau;
	}
	setcookie("agent",$donnee->id);
	header("location: manager/cours.php");
	exit;
    }
    elseif ($service=="GRH_USR")
    {
	$requete="SELECT agentid FROM teleagent WHERE chrono='".sprintf("%d",$num_agt)."' AND nom='$nom'";
	$donnee=mysql_fetch_object(mysql_db_query(BASE,$requete));
 
	if (empty($donnee->agentid))
	{
	    $requete="SELECT max(agentid)+1 maxx FROM teleagent";
	    ($donnee=mysql_fetch_object(mysql_db_query(BASE,$requete))) || erreur(3);
	    $nouveau=(empty($donnee->maxx)) ? 1 : $donnee->maxx;
 
	    $requete="INSERT INTO teleagent VALUES($nouveau,'".sprintf("%d",$num_agt)."','1','$nom','$prenom','')";
	    (mysql_db_query(BASE,$requete)) || erreur(4);
	    $donnee->agentid=$nouveau;
	}
	setcookie("agent",$donnee->agentid);
	header("location:agt_dem/saisie.php");
    }
    elseif (substr($service,0,4)=="GRH_")
    {
	$requete="SELECT id FROM agent.agent WHERE chrono='".sprintf("%d",$num_agt)."' AND nom='$nom'";
	$donnee=mysql_fetch_object(mysql_db_query(BASE,$requete));
 
	if (empty($donnee->id))
	{
	    $requete="SELECT max(id)+1 maxx FROM agent.agent";
	    ($donnee=mysql_fetch_object(mysql_db_query(BASE,$requete))) || erreur(3);
	    $nouveau=(empty($donnee->maxx)) ? 1 : $donnee->maxx;
 
	    $requete="INSERT INTO agent.agent VALUES($nouveau,'$nom','$prenom','".sprintf("%d",$num_agt)."','1')";
	    (mysql_db_query(BASE,$requete)) || erreur(4);
	    $donnee->id=$nouveau;
	}
	setcookie("agent",$donnee->id);
	setcookie("type",intval(substr($service,4,2))-1);
	header("location:gest/cours.php");
    }
    elseif (ereg(",",$param[9]))
    {
	$requete="SELECT id FROM agent.agent WHERE chrono='".sprintf("%d",substr($param[7],0,5))."' AND nom='$param[5]'";
	$donnee=mysql_fetch_object(mysql_db_query(BASE,$requete));
 
	if (empty($donnee->id))
	{
	    $requete="SELECT max(id)+1 maxx FROM agent.agent";
	    ($donnee=mysql_fetch_object(mysql_db_query(BASE,$requete))) || erreur(3);
	    $nouveau=(empty($donnee->maxx)) ? 1 : $donnee->maxx;
 
	    $requete="INSERT INTO agent.agent VALUES($nouveau,'$param[5]','$param[6]','".sprintf("%d",substr($param[7],0,5))."','".substr($param[7],5,1)."')";
	    (mysql_db_query(BASE,$requete)) || erreur(4);
	    $donnee->id=$nouveau;
	}
	setcookie("agent",$donnee->id);
 
	$tab=explode(",",$param[8]);
	$url="gest/choix.php";
	for($i=0;$i<count($tab);$i++) $url.=(empty($i) ? "?" : "&")."tab[$i]=".substr($tab[$i],4,2);
	header("location:$url");
    }
    mysql_close($lien);
 
?>
@+ j'espère car je désespère...et ma direction va faire pareil ;-)

edit : ah oui, chez nous,nos ouverture de session sont de la forme : "nom_agent-numéro_agent" au cas où on puisse faire quelque chose avec "-numéro_agent" qui est unique.
edit2 : je dis des conneries, grh_usr peut faire des demandes au service grh...pas pareil que fait partie du service grh.

ou alors c'est peut-être ce bout de code là qu'il faut changer (je suis complètement paumé)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
 
 
     /*******************DEMANDES EN COURS*******************/
    echo "<tr><hr noshade width=640></tr><B><div align=center> - En cours - </div></B>";
    echo "<tr><hr noshade width=640></tr><BR>";
    $requete="SELECT num_d_rio,agt_d_rio,dat_d_rio,heur_d_rio,priorite_d_rio,reclam_d_rio,contact_d_rio,desc_d_rio,souh_d_rio,interv_d_rio";
    $requete.=" FROM dem_grh";
    $requete.=" WHERE ( etat_d_rio='NON_TRAITE' OR etat_d_rio='EN_COURS') AND (".$complete_req.")";
    $requete.=" ORDER BY dat_d_rio, heur_d_rio";
 
    ($resultat=mysql_db_query(BASE2,$requete)) || erreur(3);
 
    if (mysql_num_rows($resultat))
    {
        echo "<table align=center border=0 cellpadding=4 cellspacing=0><tr>";
	echo "<td class='entete' align=center>Num&eacute;ro</td>";
	echo "<td class='entete' align=center>Agent demandeur</td>";
	echo "<td class='entete' align=center nowrap>Date/Heure de l'appel</td>";
	echo "<td class='entete' align=center>Contact</td>";
	echo "<td class='entete' align=center>Description</td>";
	echo "<td class='entete' align=center>Remarque</td>";
	echo "<td class='entete' align=center colspan=2>Type de probleme</td></tr>";
 
        while ($donnee=mysql_fetch_object($resultat))
        {
 
        $requete_bis="SELECT num_agt, nom_agt, pren_agt, serv_agt FROM agents WHERE num_agt=$donnee->agt_d_rio";
            ($donnee_complete_agent=mysql_fetch_object(mysql_db_query(BASE2,$requete_bis))) || erreur(3);
 
	    echo "<td class='ligne",$numero%2,"' align=center>",$donnee->num_d_rio,"</td>";
	    echo "<td class='ligne",$numero%2,"' align=center>",$donnee_complete_agent->nom_agt,"-",$donnee->agt_d_rio,"</td>";
            echo "<td class='ligne",$numero%2,"' align=center nowrap>",arrange_date($donnee->dat_d_rio)," $donnee->heur_d_rio</td>";
 
            $id_agt=$donnee->contact_d_rio;
            $requete2="SELECT num_agt, nom_agt, pren_agt, serv_agt FROM agents WHERE num_agt=$id_agt";
            ($donnee_complete_contact=mysql_fetch_object(mysql_db_query(BASE2,$requete2))) || erreur(3);
            echo "<td class='ligne",$numero%2,"' align=center nowrap>",$donnee_complete_contact->nom_agt,"-",$donnee->contact_d_rio,"</td>";
 
            $desc_reduit=substr($donnee->desc_d_rio,0,20);
            $rem_reduit=substr($donnee->souh_d_rio,0,20);
            echo "<td class='ligne",$numero%2,"' align=center nowrap>",$desc_reduit,"...</td>";
	    echo "<td class='ligne",$numero%2,"' align=center nowrap>",$rem_reduit,"...</td>";
 
            $requete2="SELECT lib_typ_interv FROM typ_interv_grh WHERE num_typ_interv=$donnee->interv_d_rio";
            ($donnee_complete_interv=mysql_fetch_object(mysql_db_query(BASE2,$requete2))) || erreur(3);
	    echo "<td class='ligne",$numero%2,"' align=center>",$donnee_complete_interv->lib_typ_interv,"</td>";
            echo "<td class='ligne",$numero%2,"' align=center></td>";
	    echo "<td class='ligne",$numero%2,"' align=center><a href='visual.php?id=$donnee->num_d_rio' class='lien",$numero%2,"'><img src='../image/b_visu2.gif' border='0'></a></td></tr>";
 
	    $numero++;
	}
 
	echo "</table><br>";
    }
J'AI UNE IDEE !!! etonnant non ??? par contre je sais pas comment l'écrire.
à la fin du code 2 j'ai ça
Code :
1
2
 
echo "<td class='ligne",$numero%2,"' align=center><a href='visual.php?id=$donnee->num_d_rio' class='lien",$numero%2,"'><img src='../image/b_visu2.gif' border='0'></a></td></tr>";
c'est à dire, actuellement, je clique sur le bouton et hop je vois la fiche.
comment pourrais-je dire, si nom-numéro_agent (qui précede le bouton actuellement) n'est pas = à ta session actuelle, renvoi un message disant qu'il interdit l'accès ?
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 18h28   #7
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 548
Points : 2 548
Envoyer un message via Skype™ à rawsrc
Salut,

Bon j'ai parcouru rapidement ton code et je pense qu'il y a quelques soucis :
Si les question de sécurité et de confidentialité sont essentielles, il te faut commencer par supprimer toute utilisation de cookie. Il me semble que tu stockes $agentid (en clair en plus) dans un cookie et qu'ensuite tu le récupères pour filtrer des données ! Déjà là c'est mort c'est pas une brèche de sécurité que tu as mais un canyon. Tu devrais, comme te le sugères daheda, utiliser des sessions qui elles sont toujours individuelles et sécurisées vue qu'elles sont gérées par le serveur. L'id de chaque agent devrait être stocké dans sa session.

Ensuite, si tu ne veux afficher que des données spécifiques à un agent, il ne te reste plus qu'à filtrer en amont toutes tes requêtes d'extraction de données avec cet identifiant et ensuite remonter tes vues en conséquence.
En gros tu dois te débrouiller pour rajouter à toutes tes chaines SQL une truc du genre :
Code :
WHERE ... AND agentid = $idAgent
Bref rien de bien compliqué.
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/02/2011, 11h06   #8
Futur Membre du Club
 
Inscription : octobre 2009
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 49
Points : 16
Points : 16
Merci pour ta réponse Xysyo.

Nous avons un serveur de sécurité ici et la session qui est récupérée est en fait récupérée par la carte de connexion de l'agent. Elle récupére nom-numéro via un jeton secjava.

"Bref rien de bien compliqué. " heu ! je t'ai dit que je débutais ???? ;-)

EDIT : t'es un chef Xysyo
j'ai rajouté
Code :
1
2
$requete.=" WHERE ( etat_d_rio='NON_TRAITE' OR etat_d_rio='EN_COURS') AND (".$complete_req.") AND agt_d_rio=$id_agt";
comme tu m'as dit...et ça MARCHE !!!
c'est nickel.
Merci encore
t'es noté ;-)
kck61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h52.


 
 
 
 
Partenaires

Hébergement Web