nom prenom utilisateur

nom prenom utilisateur - PHP - Programmation

Marsh Posté le 01-06-2011 à 10:30:10    

Bonjour à tous  :hello: ,
 
J'aurais besoin d'un petit coup de main... , j'aimerais afficher le nom et le prénom d'un utilisateur  
 
Est-il possible de récupérer les logs de la session Windows ou d'aller chercher dans l'active directory le nom et prénom de l'utilisateur qui c'est identifié sur l'ordinateur ?  
 
Merci de votre aide !


Message édité par quelu le 23-06-2011 à 14:34:35
Reply

Marsh Posté le 01-06-2011 à 10:30:10   

Reply

Marsh Posté le 01-06-2011 à 11:35:40    

oui avec le NTLM ( avec IE )


---------------

Reply

Marsh Posté le 01-06-2011 à 14:10:12    

merci flo850 mais pouvez vous développer votre réponse s'il vous plait ?

 


Message édité par quelu le 23-06-2011 à 14:32:56
Reply

Marsh Posté le 01-06-2011 à 14:50:25    

Si ton intranet est en PHP :
 
http://www.phpcs.com/code.aspx?ID=25272


---------------
*** [Feed-Back] AzOo ***
Reply

Marsh Posté le 06-06-2011 à 11:09:03    

bonjour,
merci de votre réponse rapide mais j'obtiens ces erreurs :  
 
Warning: session_start() [function.session-start]: Cannot send session cookie -
Warning: session_start() [function.session-start]: Cannot send session cache limiter  
Warning: Cannot modify header information  
Warning: Cannot modify header information  

Reply

Marsh Posté le 07-06-2011 à 11:31:49    

IL faut appeler session_start avant toute chose (avant de générer du code HTML en fait)
 
Essaie d'appeler cette fonction au tout début de ton code php


Message édité par Metatr0n le 07-06-2011 à 11:51:34

---------------
http://www.microcontest.com - Site de challenges de programmation : Cryptographie - Multimedia - Intelligence Artificielle - Réseaux - Algorithmique - Mathématiques
Reply

Marsh Posté le 07-06-2011 à 13:57:51    

j'ai pourtant placer ce code dans le header

Reply

Marsh Posté le 07-06-2011 à 14:02:30    

le fichier qui contient session_start(), est-il inclus par une autre page?


---------------
http://www.microcontest.com - Site de challenges de programmation : Cryptographie - Multimedia - Intelligence Artificielle - Réseaux - Algorithmique - Mathématiques
Reply

Marsh Posté le 07-06-2011 à 14:06:33    

oui il y a une page d'accueil avec un lien parmi d'autre qui redirige vers la page ou je veux afficher le bienvenu nom prénom

Reply

Marsh Posté le 07-06-2011 à 14:15:12    

D'accord mais je veux dire, as-tu écrit dans une autre page : include('ta_page.php') ?
Car dans ce cas, il faut faire attention que la page qui inclut celle qui contient le session_start() ne génère pas de code html avant l'inclusion. Si par contre ta page est visitée normalement (lien direct vers elle comme tu as l'air de le dire), je ne comprends pas trop pourquoi tu as cette erreur.
Ca me fait penser à un problème que j'ai rencontré, j'avais la même erreur à cause du fait que mon fichier de code était encodé en UTF8 avec BOM. Le BOM est une information qui est placée au début de ton fichier, sans que tu le vois. Hors le serveur considère ces caractères comme du texte, ce qui fait que tu génères bien de l'html avant ton appel à session_start. La solution dans ce cas est d'ouvrir ton fichier avec notepad++ par exemple, de cliquer sur encodage et convertir en utf8 sans BOM ou en ANSI comme tu veux. Mais je ne garantis pas que ce soit ça ton erreur.


---------------
http://www.microcontest.com - Site de challenges de programmation : Cryptographie - Multimedia - Intelligence Artificielle - Réseaux - Algorithmique - Mathématiques
Reply

Marsh Posté le 07-06-2011 à 14:15:12   

Reply

Marsh Posté le 07-06-2011 à 14:31:40    

merci pour cette réponse je vais essayer!!  
 
par contre si je met le code php avant le <html><body> code ... </body> </html>
 
la page ce charge sans problème mais le code a était pris en compte ?

Reply

Marsh Posté le 07-06-2011 à 14:33:20    

oui oui le code php est pris en compte même si tu le mets avant <html>...


Message édité par Metatr0n le 08-06-2011 à 15:42:28

---------------
http://www.microcontest.com - Site de challenges de programmation : Cryptographie - Multimedia - Intelligence Artificielle - Réseaux - Algorithmique - Mathématiques
Reply

Marsh Posté le 07-06-2011 à 14:44:20    

donc je suppose que sa marche mais rien n'est affiché


Message édité par quelu le 07-06-2011 à 14:44:32
Reply

Marsh Posté le 07-06-2011 à 15:02:45    

j'obtiens:

 

NTLM Flag error!


Message édité par quelu le 07-06-2011 à 15:04:38
Reply

Marsh Posté le 07-06-2011 à 15:10:50    

Il y a plus simple :
 
Si ton site est hébergé sur IIS, dans les options de sécurité, tu décoches authentification anonyme, et tu coches l’authentification windows intégrée, et normalement, si l'utilisateur à les droits d'accès au pages web, tu auras le login dans $_SERVER

Reply

Marsh Posté le 07-06-2011 à 15:16:35    

j'ai reussi grace a un autre code a afficher le login Windows mais est -il possible d'aller chercher le nom et prénom dans l'active directory ?
 
 
voici le code :
 
http://www.commentcamarche.net/for [...] p-via-ntlm

Reply

Marsh Posté le 08-06-2011 à 09:04:51    

Bonjour ,

 

j'ai de nouveau un problème :(

 

Le bienvenue $user ce trouve sur une page avec un formulaire .
je récupère les données ( nom , achat etc ) dans la page d'après.

 

cependant si je laisse le script du log il ne récupère plus mes variables achat dans la page "d'après".
je dois alors effacer le script d'affichage du login , supprimer les cookies et sa fonctionne pour récupérer les variables.

 

Que faire ?

 

merci

 

( je suis stagiaire qu'est ce que ISS ?)


Message édité par quelu le 08-06-2011 à 09:06:08
Reply

Marsh Posté le 08-06-2011 à 09:43:57    

C'est la station spatiale internationale.

 

IIS, c'est un serveur HTTP. L'équivalent d'Apache par Microsoft.
L'avantage est qu'il gère nativement l'authentification via le compte windows avec internet explorer.

 

edit : peux-tu décrire plus précisément ton problème de variables non récupérées ?


Message édité par Paulp le 08-06-2011 à 09:48:05
Reply

Marsh Posté le 08-06-2011 à 09:55:12    

lol.

 

J'ai demandé , l'entreprise n'utilise pas et ne connait pas IIS.

 

et bien il y a un formulaire sur la page ou je veux afficher le bienvenue et lorsqu'on clique sur envoyer , je récupère les $_POST[' '] , je les écrits dans un fichier texte et les affiches dans un tableau sur une page sécurisé par mot de passe .

 

donc si j'utilise le script NTLM les $_POST[' '] sont vide et si je ne l'utilise pas les $_POST[' '] sont bien récupéré mais il me manque le nom..

 

Il n'y a pas une histoire de session ?

 

merci de votre aide


Message édité par quelu le 08-06-2011 à 09:55:24
Reply

Marsh Posté le 08-06-2011 à 10:07:59    

Les données sont bien présentes dans le formulaire ? Ce sont des champs de quel type (text/select/checkbox ou hidden) ?
 
Le NTLM est activé uniquement pour le premier formulaire ou bien pour sa cible aussi ?

Reply

Marsh Posté le 08-06-2011 à 10:26:24    

oui les donnees sont bien présentes.
 
 
si je fais un echo $user; dans la partit <html>  </html> ou dans le formulaire rien ne s'affiche. Donc impossible de récupérer le $_POST['user'] .
 
Comment activé le NTLM pour le formulaire et sa cible ?
 
merci


Message édité par quelu le 17-06-2011 à 09:38:51
Reply

Marsh Posté le 08-06-2011 à 10:37:34    

Dans le formulaire, où tu mets en place NTLM, tu n'arrives pas à afficher $user ? Es-tu sur de récupérer le login ? N'y a-t-il pas un conflit de nommage avec une autre variable $user dans le code ?

 

Je ne pense pas qu'il soit bien d'activer NTLM pour la cible.

 

PS : ton HTML est affreux : on met les balises et les noms d'attributs en minuscules, et les valeurs d'attributs entre guillemets (double quotes)
Il faut aussi fermer la balise input :
<input type="text" name="cinema" onkeyup="..." onchange="..." />


Message édité par Paulp le 08-06-2011 à 10:38:26
Reply

Marsh Posté le 08-06-2011 à 11:54:23    

merci du conseil pour le HTML j'ai tous modifié c'est clair que c'est plus jolie.

 

pour le NTLM je ne peux pas le placer dans le formulaire , il faut a tout pris le placer avant le <html> sinon j'obtient

 


Warning: Cannot modify header information pour les lignes

 

header('HTTP1.0 401 Unauthorized');
header($ntlm);

 

si je met ces deux lignes en commentaire j'ai :

 

Sorry NTLM auth failed

 

edit : quand je met le script avant le <html> j'ai quand meme l'erreur  :

 

Warning: Cannot modify header information pour les lignes

 

header('HTTP1.0 401 Unauthorized');
header($ntlm);

 

mais le $user s'affiche et je met les deux lignes en commentaire et cela fonctionne toujours.


Message édité par quelu le 08-06-2011 à 11:59:44
Reply

Marsh Posté le 08-06-2011 à 12:09:36    

J'ai rien compris.
 
Tu en es où ?
 
Poste le code le plus simple reproduisant ton problème (deux fichiers .php : un avec le formulaire, un avec l'affichage des données du formulaire).

Reply

Marsh Posté le 08-06-2011 à 15:20:32    

lol ben moi non plus je n'y comprend rien.
 


Message édité par quelu le 17-06-2011 à 09:39:34
Reply

Marsh Posté le 08-06-2011 à 15:26:29    

- Où se passe l'authentification NTLM ?
- Le code HTML est affreux. Utilise du css, des ul & li au lieu de mettre les puces à la main, ...
- utilise des balises code [ code=php] [ /code] (sans les espaces) =>

Code :
  1. <body>
  2. <?php
  3. $total=$_POST['total'];
  4. if ($total<5)
  5. {
  6. echo " Votre commande est vide et ne sera pas prise en compte";
  7. }
  8. else
  9. {
  10. echo "Merci votre commande a été prise en compte !";
  11. $source = "commandes.txt";
  12. $nom = "";
  13. $cinema=$_POST['cinema'];
  14. $piscineenfant=$_POST['piscineenfant'];
  15. if ($zooenfant>0) {
  16. fwrite($fichier, "$nom;" );
  17. fwrite($fichier, "$zooenfant place(s) de zoo enfant;" );
  18. fwrite($fichier, "$zooenf €;" );
  19. fwrite($fichier, "$remarque.\r\n" );
  20. }
  21. }
  22. ?>
  23.  
  24. </body>


Message édité par Paulp le 08-06-2011 à 15:26:58
Reply

Marsh Posté le 08-06-2011 à 15:40:59    

désolé pour le html , j'essaie d'abord de faire fonctionner la chose et je met en page ensuite.

 

pour l'autentification NTML

Code :
  1. <?php
  2. /*
  3. Le code source qui suit est disponible sur la toile, l'auteur ne s'est pas authentifier dans les lignes de commentaires.
  4. Ce code focntionne parfaitement. il faut que tu places un require_once('ntlm.php'); dans la première ligne.
  5. Ensuite la variable de session user te permet de faire les contrôle qui vont bien tout au long de la session.
  6. */
  7.  
  8. //header('WWW-Authenticate: NTLM '); En activant cette ligne on peut saisir le login que l'on veut pour tester les accès aux différentes pages - outil de développement -
  9.  
  10.  
  11. define('_NTLM_AUTH_FAILED',1);
  12. define('_NTLM_PROXY',2);
  13.  
  14. function getInfosFromNTLM() {
  15.  
  16. if (!empty($_SERVER['HTTP_VIA'])) {
  17. return _NTLM_PROXY;
  18. }
  19.  
  20. $auth = isset($header['Authorization']) ? $header['Authorization'] : null;
  21.  
  22. if (is_null($auth)) {
  23. return unAuthorized();
  24. }
  25.  
  26. if ($auth && (substr($auth,0,4) == 'NTLM')) {
  27.  
  28. $c64 = base64_decode(substr($auth,5));
  29. $state = ord($c64{8});
  30.  
  31. switch ($state) {
  32.  
  33. case 1:
  34. $chrs = array(0,2,0,0,0,0,0,0,0,40,0,0,0,1,130,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0);
  35. $ret = "NTLMSSP";
  36. foreach ($chrs as $chr) {
  37. $ret .= chr($chr);
  38. }
  39. return unAuthorized(trim(base64_encode($ret)));
  40. break;
  41.  
  42. case 3:
  43. $l = ord($c64{31}) * 256 + ord($c64{30});
  44. $o = ord($c64{33}) * 256 + ord($c64{32});
  45. $domain = str_replace("\0","",substr($c64,$o,$l));
  46.  
  47. $l = ord($c64{39}) * 256 + ord($c64{38});
  48. $o = ord($c64{41}) * 256 + ord($c64{40});
  49. $user = str_replace("\0","",substr($c64,$o,$l));
  50. echo "Bienvenue $user";
  51. return array('domain'=>$domain,'user'=>$user);
  52.  
  53. break;
  54.  
  55. }
  56.  
  57. }
  58. }
  59.  
  60. function unAuthorized($msg=null) {
  61. $ntlm = 'WWW-Authenticate: NTLM';
  62. if ($msg) {
  63. $ntlm .= ' '.$msg;
  64. }
  65. header('HTTP1.0 401 Unauthorized');
  66. header($ntlm);
  67.  
  68. return _NTLM_AUTH_FAILED;
  69. }
  70.  
  71. // identification
  72. $infos = getInfosFromNTLM();
  73. switch ($infos) {
  74. case _NTLM_PROXY:
  75. die('No proxy for ntlm');
  76. case _NTLM_AUTH_FAILED:
  77. die('Sorry NTLM auth failed');
  78. default:
  79. //$_SERVER['REMOTE_USER'] = strtolower($infos['user']) ;
  80. $_SESSION['user'] = strtolower($infos['user']) ;
  81. //print_r($infos);
  82. break;
  83. }
  84. // Voila ça me récupère bien les utilisateurs... Si vous voulez faire de la compatibilité avec d'autres scripts qui utilisent la variable serveur faites :
  85. $_SERVER['REMOTE_USER'] = $infos['user'];
  86.  
  87. //header('HTTP/1.1 401 Unauthorized');
  88. //header('Authenticate: NTLM '); // cette ligne permet d'éviter le rappel de login et cloture parfaitement l'opération. Ainsi les fonction POST sont remises en fonction.
  89.  
  90. /*
  91. Ensuite tu peux suivre les visites dans un fichier txt
  92.  
  93. // suivi des visites
  94.  
  95. setlocale(LC_TIME, 'fr', 'fr_FR', 'fr_FR.ISO8859-1');
  96. $fichier = 'suivi.txt';
  97. $contenu = $REMOTE_ADDR.chr(9).chr(9) ; // adresse IP du client
  98. $domaine = gethostbyaddr($_SERVER['REMOTE_ADDR']) ;
  99. $contenu = $contenu . substr($domaine, 0, strpos($domaine,"." ) ).chr(9).chr(9) ; // nom du poste client
  100. $contenu = $contenu . $_SESSION['user'].chr(9).chr(9) ; //login du client
  101. if (strlen($_SESSION['user']) < 8 ) // tabulation pour la mise en page dans le fichier txt
  102. $contenu = $contenu .chr(9) ;
  103. $contenu = $contenu . strftime("%A %d %B %Y" ).chr(9).chr(9) ; // date format fr
  104. $contenu = $contenu . date("H:i:s" ).chr(10) ; // heure
  105.  
  106. if ($_SESSION['user'] != "xxx" ) { // n'enregistre pas les essais du webmaster
  107. $handle = fopen($fichier, 'a') ; // ouverture du fichier txt
  108. fputs($handle, $contenu) ; // écriture des données
  109. fclose($handle) ; // fermeture du fichier
  110. */
  111.  
  112. ?>
  113. <html>
  114. <body>

 

merci de ton aide !


Message édité par quelu le 08-06-2011 à 15:55:09
Reply

Marsh Posté le 08-06-2011 à 15:52:57    

Ce code est présent dans quel fichier ?

Reply

Marsh Posté le 08-06-2011 à 15:56:25    

Il est présent dans le fichier


Message édité par quelu le 17-06-2011 à 09:40:06
Reply

Marsh Posté le 08-06-2011 à 16:13:16    

OK
 
Et là, tu as quel résultat quand tu soumets le formulaire ?
Est-ce que tu as une version accessible en ligne pour tester ?

Reply

Marsh Posté le 08-06-2011 à 16:24:19    

lorsque je soumet le formulaire j'ai la page : la commande est vide. j'ai essayer avec le méthode get , on vois bien les variables  envoyer dans la barre d'adresse mais elles sont vides.

 

si je fais un echo $user; dans le formulaire rien ne se passe. Je crois que le script doit empêcher l'exécution du body mais je ne vois pas pourquoi :'(

 

Pas de version en ligne désolé , c'est de l'intranet.


Message édité par quelu le 08-06-2011 à 16:24:44
Reply

Marsh Posté le 08-06-2011 à 17:34:11    

Installe firebug et regarde ce qui se passe dans l'onglet réseau.
 

Reply

Marsh Posté le 09-06-2011 à 09:23:04    

Sur le reseaux , c'est IE qui est utilisé .

 

J'ai essayer sur Firefox , il ma demander mes log session avant d'ouvrir la page du formulaire , il a bien affiché mon nom et ma commande a bien fonctionner .En revanche toujours impossible de récupéré le $user dans le formulaire afin de l'envoyer au fichier txt.

 

firebug n'a rien signalé

 

Un problème de navigateur ?


Message édité par quelu le 09-06-2011 à 10:29:05
Reply

Marsh Posté le 09-06-2011 à 10:29:16    

Tu n'as pas l'user dans la session ?
 
dans $_SERVER, ce n'est pas la peine, cette variable est remise à zéro à chaque nouvelle requête.
 
Enlève le @ devant session_start et partout en général : ça te masque les erreurs. Il vaut mieux les afficher en debug ... En production, tu peux ensuite créer ton handler personnalisé ou les masquer si tu préfères ...
essaye un print_r($_SESSION) à la fin de la page de formulaire, et un au début de la cible (juste après le session_start).

Reply

Marsh Posté le 09-06-2011 à 10:43:25    

j'ai toujours cette erreur qui reviens :

 

Warning: Cannot modify header information

 

pour les lignes :

 

header('HTTP1.0 401 Unauthorized');
header($ntlm);
header('HTTP/1.1 401 Unauthorized');
header('Authenticate: NTLM ');

 

et firebug affiche 1 request pour Get ticket.php

 

//header('Authenticate: NTLM '); // cette ligne permet d'éviter le rappel de login et cloture parfaitement l'opération. Ainsi les fonction POST sont remises en fonction.

 

c'est exactement ce qu'il me faut mais cela ne fonctionne pas

 

print_r($_SESSION) n'affiche rien a la fin du formulaire


Message édité par quelu le 09-06-2011 à 10:45:08
Reply

Marsh Posté le 10-06-2011 à 09:29:23    

Remets le code de la page en l'état actuel

Reply

Marsh Posté le 10-06-2011 à 09:48:39    

http://www.commentcamarche.net/for [...] s-nt-logon
 
voila enfaite le NTML bloque les POST sous IE , donc le NTLM est inutilisable dans mon cas

Reply

Marsh Posté le 10-06-2011 à 09:59:52    

Je préfère mille fois utiliser du logiciel libre, mais vu le besoin, je te conseille vivement de reconsidérer IIS ...
Faire une authentification compte windows / IE / IIS, ça se fait tout seul ...

Reply

Marsh Posté le 10-06-2011 à 10:08:09    

comment ca se passe pour IIS ?

Reply

Marsh Posté le 10-06-2011 à 10:20:36    

Tu installes IIS sur un serveur windows, tu installes l'extension fastcgi, tu installes PHP, et tu coches dans la configuration du site 'Authentification windows integrée'.
 
Si tu t'orientes vers ce choix, envoie moi un mp avec ton mail, je te ferai parvenir une doc

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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