[php] Windows username te verkrijgen?

Pagina: 1
Acties:

  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Hi,

Ik zit met het volgende probleem. Ik ben bezig met een intranetsite, waarop users hun gegevens in kunnen vullen. Deze site schrijf ik in php, en er hangt een MySQL database aan.

Maar wat ik wil voorkomen is dat gebruikers een verkeerde gebruikersnaam invullen. Ze moeten hun username invullen die ze ook bij hun windows-login op het domein gebruiken. Nou heb ik die username via het login-script dat bij iedereen draait wel in het register staan, maar daar kan php niks mee.

Mijn vraag is dus of het uberhaupt wel mogelijk is dat ik die username kan gebruiken, aangezien php server-side werkt. :)

Wat ik al ergens vond tijdens mijn zoektocht, was het volgende stukje code:

PHP:
1
2
3
$network = new COM("WScript.Network");
$computername = $network->ComputerName;
$username = $network->UserName;

Maar dat geeft "IUSR_computernaam" weer, en niet de nt-username.

Ik ben de vraag vaak tegen gekomen, maar het antwoord nog nooit. Kan iemand me op weg helpen?

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Dat gaat niet werken... IE & mozilla versturen geen Windows usernames via HTTP. Je zou het nog kunnen proberen via een OCX.

[ Voor 0% gewijzigd door kvdveer op 11-10-2002 11:40 . Reden: correctie ]

Localhost, sweet localhost


  • reskobon
  • Registratie: November 2001
  • Laatst online: 14-08 22:26
Nee ik dacht namelijk dat je alleen de kompjoeternaam op kon vragen van de server en dan moet dat ook nog eens een unix bak zijn. Windows ondersteunt dit helaas niet. Misschien is er wel een javascriptje voor die die naam ophaalt aangezien dat wel client side werkt.

Leeg


  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
kvdveer schreef op 11 oktober 2002 @ 11:40:
Dat gaat niet werken... IE & mozilla versturen geen Windows usernames via HTTP. Je zou het nog kunnen proberen via een OCX.
Maar een registersleutel dan? Want dat "WScript.Network" haalt ook client informatie op.
reskobon schreef op 11 oktober 2002 @ 11:40:
Nee ik dacht namelijk dat je alleen de kompjoeternaam op kon vragen van de server en dan moet dat ook nog eens een unix bak zijn. Windows ondersteunt dit helaas niet. Misschien is er wel een javascriptje voor die die naam ophaalt aangezien dat wel client side werkt.
Als ik maar een registersleutel op kan halen vind ik het al zat. :)

Verwijderd

misschien kan je dat makkelijker doen met een VBScript? Daar heb ik verder geen verstand van :)

  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Verwijderd schreef op 11 oktober 2002 @ 13:02:
misschien kan je dat makkelijker doen met een VBScript? Daar heb ik verder geen verstand van :)
Hmmm ja, ik ook niet echt.

Maar ik weet wel hoe ik daarmee een register sleutel uit moet lezen. Dus nou heb ik het volgende .vbs bestandje aangemaakt:

code:
1
2
3
4
5
6
sub GetUserName()

user = System.PrivateProfileString("", _
    "HKEY_CURRENT_USER\Login\", "UserName")

end sub

Dit bestandje moet dus ongemerkt gedraaid worden, en de variabele 'user' doorgeven aan het php programma.

Ehhrm... is dat uberhaupt mogelijk?

Verwijderd

Volgens mij wel. via system() of exec ofzo? Cronjobje misschien.

Verwijderd

NTLM

> There is a great demand for NTLM authentication among Windows PHP
> users because that lets user login in Web applications without having
> to enter their credentials again after already having done so in the
> Windows logon. That is why I asked if was that the orginal poster
> could be asking.
>
zie verder
http://www.phpbuilder.com/mail/php-general/2002082/0780.php

  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Whoehaa! :D

Ik ben dr uit, dit stukje code:
PHP:
1
2
$network = new COM("WScript.Network");
$usernaam = $network->UserName;

werkt blijkbaar toch goed. Ik heb mijn bestanden nu in een andere map gezet (in die van het intranet) en nu werkt het wel.

Ik weet eerlijk gezegd niet hoe :X, maar het werkt wel. :D :P

Verwijderd

Hoi Breadfan,

ik wil ook graag het NT login naam gebruiken, voor een intranet, ik heb
een apache webserver, met PHP meegecompileerd, draaiend op het FreeBSD 4.x
OS. Deze is aangesloten op hetzelfde netwerk als waar gebruikers met een
NT login gebruik van maken.

Het stukje code wat jij als oplossing gaf in je laatste postings

<?
$network = new COM("WScript.Network");
$usernaam = $network->UserName;
?>

geeft bij mij geen enkel resultaat terug.

Zijn er nog bepaalde handelingen die ik moet verichten, dus bijvoorbeeld
iets naar het register zetten, want dat heb ik nog niet gedaan. Maar ik
kan niet duidelijk uitmaken in de posting, of jij dat wel gedaan hebt. Ik
zie in de code ook geen verwijzing naar het register.

Als je me wat verder op weg zou kunnen helpen graag, alvast bedankt dan!

Verwijderd

Hallo

Ik wil ook gewoon de computernaam zien van mensen die mn site bezoeken.
Ik heb uw stukje code gebropeerd, maar ik krijg deze foutmelding in mijn pagina:

Fatal error: Cannot instantiate non-existent class: com in .... on line ...

Iemand een idee hoe dit komt?

PS ik werk met Clarkconnect 1.2.
apache 1.3.27

  • jvreuls
  • Registratie: Januari 2002
  • Laatst online: 31-07 13:13
Is vrij logisch dat die code niet werkt bij jouw, aangezien:
COM functies zijn alleen bruikbaar in de Windows versie van PHP.
Je zult dan ook Windows op de server moeten draaien.

Circuits Online


Verwijderd

jvreuls schreef op 23 januari 2003 @ 17:10:
Is vrij logisch dat die code niet werkt bij jouw, aangezien:

[...]

Je zult dan ook Windows op de server moeten draaien.
Ah, ok, thx!!

Zijn er ook linux varianten voor dit commando?

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Verwijderd schreef op 23 januari 2003 @ 17:15:
[...]


Ah, ok, thx!!

Zijn er ook linux varianten voor dit commando?
Lijkt me sowieso niet dat je de WScript engine op een linuxbak aan de praat krijgt...

Verwijderd

voor de search:
Mocht je IIS gebruiken zet dan anonymous access uit voor een file en dan kan je (intern?) de namen met domein van NT netwerk opvragen met $REMOTE_USER...
Pagina: 1