Fonction PHP

mrh Messages postés 54 Statut Membre -  
Scalpweb Messages postés 1483 Statut Membre -
Bonjour,
J'aimerais connaitre la fonction PHP qui permet de récupérer la valeur du nom de l'utilisateur windows qui se connecte à mon site intranet?!
Configuration: Windows 2000
Firefox 2.0.0.11

23 réponses

  • 1
  • 2
  1. Scalpweb Messages postés 1483 Statut Membre 43
     
    Elle n'existe pas...

    Ce n'est pas possible directement.
    0
  2. mrh Messages postés 54 Statut Membre
     
    Dans ce cas , comment faire pour récupérer le nom de l'utilisateur windows!?
    0
  3. reltak Messages postés 262 Statut Membre 41
     
    Bonjour,

    Laisse-moi te dire que ce n'est pas simple...

    Il y a une explication avec le code source suivant :

    https://codes-sources.commentcamarche.net/

    Mais même pour le développeur que je suis, c'est pas tout à fait clair alors...

    Reltak.
    0
  4. mrh Messages postés 54 Statut Membre
     
    J'avais déja essayer ce code j'obtient ceci:

    Notice: A session had already been started - ignoring session_start() in c:\www_intranet_new\test.php on line 19

    Notice: Undefined index: Authorization in c:\www_intranet_new\test.php on line 26

    Warning: Cannot modify header information - headers already sent by (output started at c:\www_intranet_new\test.php:19) in c:\www_intranet_new\test.php on line 27

    Warning: Cannot modify header information - headers already sent by (output started at c:\www_intranet_new\test.php:19) in c:\www_intranet_new\test.php on line 28
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Scalpweb Messages postés 1483 Statut Membre 43
     
    alors apparemment il y a un souci avec les sessions.

    Appel tu ta page par un include ?
    0
  7. mrh Messages postés 54 Statut Membre
     
    J'accede à la page avec un lien :<div align="center" ><a href="./test.php" >ici</a></div>
    0
  8. Scalpweb Messages postés 1483 Statut Membre 43
     
    Marque nous les 19 premières lignes stp...
    0
  9. mrh Messages postés 54 Statut Membre
     
    Les 19 lignes sont du commentaire et l'ouverture session :

    <?php

    /***********************************************************************

    ************************************************************************
    *
    * PHP NTLM GET LOGIN
    * Version 0.2.1
    * http://www.secusquad.com/ntlm/
    * Copyright (c) 2004 Nicolas GOLLET ( Nicolas (dot) gollet (at) secusquad (dot) com )
    * Copyright (c) 2004 Flextronics Saint-Etienne
    *
    * This program is free software. You can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License.
    *
    ***********************************************************************/

    session_start();
    0
  10. Scalpweb Messages postés 1483 Statut Membre 43
     
    Bon... les 30èmes finalement...
    0
  11. mrh Messages postés 54 Statut Membre
     
    -18
    session_start();

    $headers = apache_request_headers(); // Récupération des l'entêtes client

    if (@$_SERVER['HTTP_VIA'] != NULL){ // nous verifions si un proxy est utilisé : parceque l'identification par ntlm ne peut pas passer par un proxy
    echo "Proxy bypass!";
    }
    elseif($headers['Authorization'] == NULL){ //si l'entete autorisation est inexistante
    header( "HTTP/1.0 401 Unauthorized" ); //envoi au client le mode d'identification
    header( "WWW-Authenticate: NTLM" ); //dans notre cas le NTLM
    exit; //on quitte

    }
    -31
    0
  12. Scalpweb Messages postés 1483 Statut Membre 43
     
    C'est bizarre...

    Tu es sur que c'ets vraiment la début de ta page ? cette page ne vient pas en compléter une autre ou quoi que ce soit ?
    0
  13. mrh Messages postés 54 Statut Membre
     
    J'accede a cette page a partir d'une autre , mais c'est tout.
    0
  14. Scalpweb Messages postés 1483 Statut Membre 43
     
    Et si tu la lances directement ?
    0
  15. mrh Messages postés 54 Statut Membre
     
    Ca me lance le meme message qu'avant -_- :

    Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\test\index.php on line 23

    Notice: Undefined index: Authorization in c:\program files\easyphp1-8\www\test\index.php on line 30

    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\test\index.php:5) in c:\program files\easyphp1-8\www\test\index.php on line 31

    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\test\index.php:5) in c:\program files\easyphp1-8\www\test\index.php on line 32
    0
  16. Scalpweb Messages postés 1483 Statut Membre 43
     
    Essayes de virer tes commentaires au départ, juste pour voire...

    Et ta page commence tout de suite par le <?php, on est d'accord ?
    0
  17. mrh Messages postés 54 Statut Membre
     
    J'ai enlever les com. du début et fait en sorte qu'il n'y ait que du php cela me donne:

    Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\test\index.php on line 4

    Notice: Undefined index: Authorization in c:\program files\easyphp1-8\www\test\index.php on line 11

    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\test\index.php:2) in c:\program files\easyphp1-8\www\test\index.php on line 12

    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\test\index.php:2) in c:\program files\easyphp1-8\www\test\index.php on line 13

    En fait rien a bouger excepté le n° de ligne.
    0
  18. Scalpweb Messages postés 1483 Statut Membre 43
     
    C'ets fou...

    Dsl mais, stp, mets moi le code en entier.
    0
  19. mrh Messages postés 54 Statut Membre
     
    C'est exactement le code de ce lien :

    https://codes-sources.commentcamarche.net/

    le code :
    <?php

    session_start();

    $headers = apache_request_headers(); // Récupération des l'entêtes client

    if (@$_SERVER['HTTP_VIA'] != NULL){ // nous verifions si un proxy est utilisé : parceque l'identification par ntlm ne peut pas passer par un proxy
    echo "Proxy bypass!";
    }
    elseif($headers['Authorization'] == NULL){ //si l'entete autorisation est inexistante
    header( "HTTP/1.0 401 Unauthorized" ); //envoi au client le mode d'identification
    header( "WWW-Authenticate: NTLM" ); //dans notre cas le NTLM
    exit; //on quitte

    }

    if(isset($headers['Authorization'])) //dans le cas d'une authorisation (identification)
    {
    if(substr($headers['Authorization'],0,5) == 'NTLM '){ // on vérifit que le client soit en NTLM

    $chaine=$headers['Authorization'];
    $chaine=substr($chaine, 5); // recuperation du base64-encoded type1 message
    $chained64=base64_decode($chaine); // decodage base64 dans $chained64

    if(ord($chained64{8}) == 1){
    // |_ byte signifiant l'etape du processus d'identification (etape 3)

    // verification du drapeau NTLM "0xb2" à l'offset 13 dans le message type-1-message (comp ie 5.5+) :
    if (ord($chained64[13]) != 178){
    echo "NTLM Flag error!";
    exit;
    }

    $retAuth = "NTLMSSP".chr(000).chr(002).chr(000).chr(000).chr(000).chr(000).chr(000).chr(000);
    $retAuth .= chr(000).chr(040).chr(000).chr(000).chr(000).chr(001).chr(130).chr(000).chr(000);
    $retAuth .= chr(000).chr(002).chr(002).chr(002).chr(000).chr(000).chr(000).chr(000).chr(000);
    $retAuth .= chr(000).chr(000).chr(000).chr(000).chr(000).chr(000).chr(000);

    $retAuth64 =base64_encode($retAuth); // encode en base64
    $retAuth64 = trim($retAuth64); // enleve les espaces de debut et de fin
    header( "HTTP/1.0 401 Unauthorized" ); // envoi le nouveau header
    header( "WWW-Authenticate: NTLM $retAuth64" ); // avec l'identification supplémentaire
    exit;

    }

    else if(ord($chained64{8}) == 3){
    // |_ byte signifiant l'etape du processus d'identification (etape 5)

    // on recupere le domaine
    $lenght_domain = (ord($chained64[31])*256 + ord($chained64[30])); // longueur du domain
    $offset_domain = (ord($chained64[33])*256 + ord($chained64[32])); // position du domain.
    $domain = str_replace("\0","",substr($chained64, $offset_domain, $lenght_domain)); // decoupage du du domain

    //le login
    $lenght_login = (ord($chained64[39])*256 + ord($chained64[38])); // longueur du login.
    $offset_login = (ord($chained64[41])*256 + ord($chained64[40])); // position du login.
    $login = str_replace("\0","",substr($chained64, $offset_login, $lenght_login)); // decoupage du login

    if ( $login != NULL){
    // stockage des données dans des variable de session
    $_SESSION['Login']=$login;
    header("Location: newpage.php");
    exit;
    }
    else{
    echo "NT Login empty!";
    }

    }
    }

    }

    ?>
    ?>
    0
  20. Scalpweb Messages postés 1483 Statut Membre 43
     
    Commence par mettre en commentaire tout les lignes echo, puis enlèves le deuxième ?> en bas.
    0
  21. mrh Messages postés 54 Statut Membre
     
    Cela ne change rien , toujour les même erreurs a l'écran.
    0
    1. Scalpweb Messages postés 1483 Statut Membre 43
       
      Je ne sais vraiment pas quoi te dire...

      L'erreur suivante :

      Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\test\index.php on line 4 


      Veut dire que les sessions sont déjà ouvertes... En gros, qu'un session_start existe déjà. Alors deux solution : soit la page est un include d'une autre qui a déjà un session_start, mais tu me dis que non, soit la page s'apelle elle même mais je ne vois rien de tel...

      Je suis perdu.
      0
  • 1
  • 2