IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

php obtenir le login de la session windows


Sujet :

Langage PHP

  1. #1
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 577
    Points : 1 989
    Points
    1 989
    Par défaut php obtenir le login de la session windows
    Bonjour à tous,
    j'aimerais pouvoir récupérer le login de connexion a windows des utilisateurs voici ce que je fais:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "nom : ".shell_exec("echo %username%")."<br>";
    echo "machine :".shell_exec("echo %COMPUTERNAME%");

    or cela me renvois :
    Nom : Capture.PNG
Affichages : 2700
Taille : 1,5 Ko
    ceci est le nom de l'ordinateur moi je veux le nom de la session si vous pouviez m'aidez cordialement.

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    En exécutant une requête niveau serveur tu n'obtiendras au mieux que le nom de la session du serveur

    Le déjà a déjà été traité il y a peu sur un sujet similaire (auquel j'ai apporté une solution) : http://www.developpez.net/forums/d14...ows-futur-sso/

    Attention, bien noté que pour des raisons de sécurité, ceci n'est envisageable que dans le cadre d'un environnement sécurisé (c'est à dire un intranet), à ne faire en aucun cas pour un site internet !

  3. #3
    Invité
    Invité(e)
    Par défaut
    C'est surement ce qu'il veut,ça n'a pas trop de lien avec le php c'est du batch
    www.batcher.fr
    tu peut voir toutes tes variable d'environnement avec la commande set, qu'est ce que tu veux dire par nom de la session ? c'est logiquement USERNAME

  4. #4
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 577
    Points : 1 989
    Points
    1 989
    Par défaut
    Merci de vos réponse à tous les deux , c'est en effet pour l'intranet de ma mairie ou je suis en stage pour permettre aux utilisateurs de pouvoir se logé sans rien faire,Spartacusply j'ai regarder ton lien en effet c'est se que j'essaye de faire une authentification par NTLM le code fonctionne pour chrome mais pas pour firefox j'ai un flag error , je voulais contourner le problème avec l'username ,voici le code en question que mon responsable à repris sur le net:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    <?php
     
    /* 
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
     
     
    /***********************************************************************
    
    
    *
    
     PHP NTLM GET LOGIN 
     Version 0.2.1
     <a href="http://www.secusquad.com/ntlm/" target="_blank">http://www.secusquad.com/ntlm/</a>                                      
     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();
     
    $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!"; // le problème est-ici pour firefox on rentre dans ce if à tous les coups
    					exit;
    				}
     
    				$retAuth = "NTLMSSP".chr(000).chr(002).chr(000).chr(000).chr(000).chr(000).chr(000).chr(000);
    				echo $retAuth64;
    				$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;
     
                                            //connexion à la base de données
                                            include '/administration/config.php';
     
                                            // vous vérifions si le nom d'utilisateur est présent dans la table dsit
                                            $sql = 'SELECT count(*) FROM dsit WHERE dsit_nom="'.$_SESSION['Login'].'"' ;
                                            $req = mysqli_query($connection,$sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysqli_error());//execute la requete $sql 
                                            $data = mysqli_fetch_array($req);
     
                                            mysqli_free_result($req);
                                            mysqli_close($connection);
     
                                            // si on obtient une r�ponse, alors l'utilisateur est un membre de la DSIT 
     
                                                if ($data[0] == 1) 
                                                {
                                                    header('Location: main.php');
                                                    exit();
                                                }
                                                // si on ne trouve aucune r�ponse, le visiteur s'est tromp� soit dans son login, soit dans son mot de passe
                                                elseif ($data[0] == 0) 
                                                    {
                                                    $erreur = 'Compte non reconnu.';
                                                }
                                                // sinon, alors la, il y a un gros probl�me :)
                                                else {
                                                $erreur = 'Prob�me dans la base de donn�es : plusieurs membres ont les m�mes identifiants de connexion.';
     
                                                }
                                    }
    				else{
    					echo "NT Login empty!";
    				}
     
     
    			}
    		}
     
    }
     
    ?>

    j'ai une questions cela veut-ils dire que le NTML est inutilisable pour firefox et que je dois trouver une alternative?

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    J'ai également répondu à cette question dans l'autre sujet : http://www.developpez.net/forums/d14...o/#post7785382

    A noter que pour firefox, celui-ci interdit l'authentification NTLM par défaut il faut aller changer un paramètre de conf (dans le about:config), pour que celui-ci l'autorise (https://www.google.fr/#q=ntlm%20firefox)

  6. #6
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 577
    Points : 1 989
    Points
    1 989
    Par défaut
    je te remercie Spartacusply ,en effet j'ai tester cela fonctionne je vais modifié le code pour afficher un formulaire si c'est firefox je m' est en résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WB12] Obtenir le nom de la session Windows
    Par afrodje dans le forum WebDev
    Réponses: 11
    Dernier message: 27/01/2011, 16h40
  2. Comment récupérer en PHPle login de la session windows
    Par l.laurent60 dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2010, 11h13
  3. Réponses: 3
    Dernier message: 19/09/2006, 13h29
  4. Récupération login session windows
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 26/08/2006, 10h28
  5. recupération login session windows
    Par aKill dans le forum C++Builder
    Réponses: 1
    Dernier message: 18/04/2006, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo