cette source me permet de savoir qui vient sur mon site à l'université. c'est la methode la plus fiable que j'ai trouvé, (bien + fiable que le smbstatus).
Source / Exemple :
<?
/* CETTE SOURCE NE MARCHE QUE SUR UN SERVEUR UNIX
- ( comme 67 % des serveurs Web )
- ET UN CLIENT WINDOWS DIRECTEMENT CONNECTE AU SITE.
*
- si malheureusement le serveur est sous windows il existe une commande.
- si vous la voulais je pe la recherché
- ceci marche tres bien sur un réseaux local
*
// on recupere l'Ip du visiteur
$ip = $REMOTE_ADDR ;
// on execute une commande netbios qui
// interroge la machine pour recuperer le login
// Looking up status of 102.210.49.181
// nomDeMachine <00> - M <ACTIVE>
// Groupe/Domaine <00> - <GROUP> M <ACTIVE>
// nomDeMachine <03> - M <ACTIVE>
// nomDeMachine <20> - M <ACTIVE>
// nomDeMachine$ <03> - M <ACTIVE>
// Groupe/Domaine <1e> - <GROUP> M <ACTIVE>
// LOGIN <03> - M <ACTIVE>
// on doit faire une recherche sur les <03>
// ensuite il peut y avoir des $ qui de balade ==> on les vire !!
$sortie = exec("nmblookup -S -A $ip | grep \"<03>\" | grep -v '\\$' " , $retour, $i);
// au final il reste 0, 1 ou 2 lignes
if (count($retour)==0) // si 0 ==> machine éteinte ( peu probable )
echo "eteinte.<br>\n";
else
if (count($retour)==1) // si 1 ==> machine pas sous WINDOWS ou derriere un proxy
echo "allumé mais pas loggé.<br>\n";
else
{ // dans le cas ou tout ce passe bien
ereg("(.+)<03>.*",$sortie, $tmp);
$sortie = trim( $tmp[1] );
echo "$sortie<br>\n";
}
?>
Conclusion :
CETTE SOURCE NE MARCHE QUE SUR UN SERVEUR UNIX
( comme 67 % des serveurs Web )
ET UN CLIENT WINDOWS DIRECTEMENT CONNECTE AU SITE.
si malheureusement le serveur est sous windows il existe une commande.
si vous la voulais je pe la recherché
ceci marche tres bien sur un réseaux local
24 avril 2006 à 16:54
function NT_user($ip) {
if(PHP_OS 'Linux' OR PHP_SHLIB_SUFFIX 'so'){
// Avec PHP sous Linux, et Samba
$netbios = "nmblookup -A ".$ip;
}else{
// Avec PHP sous Windows
$netbios = "nbtstat -A ".$ip;
}
exec ($netbios,$result);
foreach ($result as $ligne)
{
if (strpos($ligne,"<03>")){
$nom = strtok($ligne," ");
$user[] = $nom;
}
}
$user_NT = @array_pop($user);
echo strtolower($user_NT);
}
C'est ni mieux, ni moins bien, mais juste une autre méthode...@+
27 févr. 2005 à 11:39
ça marche au poil
Génial ceci me permet de simplifier considérablement un de mes programmes.
Merci
4 mars 2004 à 16:45
A priori "nbstat -a" ne renvoie pas le nom de l'utilisateur connecté si la mchine est sous windows xp... cela ne renvoie que le nom de machine...
::Max::
3 févr. 2004 à 08:25
29 janv. 2004 à 23:44
exec ne fonctionne QUE SI php a ete compile sans la fonction --autosave (ou un nom du genre je me souviens plus tres bien ;-p )
tout autant que ` (l'anti-quote : altgr+touche 7)
sinon TRES TRES bien pensé le fait de faire ceci
bravo 10/10
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.