php怎么获取当前登陆的用户名?要具体的详细代码。求助!谢谢!

php怎么获取当前登陆的用户名?要具体的详细代码。求助!谢谢!,第1张

一般用会话(SESSION)来判断是否登录,以及登录用户名等信息。

//登录页面

<?php

session_start()

if($_POST['user']==$user && $_POST['pwd']=$pwd){

    //如果登录成功,生成对应的会话值。

    $_SESSION['logined']=1   //判断是否已经登录的依据。

    $_SESSION['user']=$user  //记录当前登录用户。

}else{

    echo "登录失败,不记录SESSION值"

}

?>

//另一个页面

<?php

session_start()

//检测是否登录

if(isset($_SESSION['logined']) && $_SESSION['logined']){

   //$_SESSION['logined']有设置,并且值为真,表示已经登录

   echo "当前登录用户是: ".$_SESSION['user']

}

?>

SESSION是代表会话值,他的生存时间是浏览器打开的周期,就是说浏览器一旦关闭,会话值就会消失。并且会话值有个个特点就是,在会话值生命周期内,同一个域名的页面能够访问该域名产生的会话值,例如,百度知道页面产生的会话值,那么在新打开的百度百科页面也能访问。

<?php$host = "17.18.122.12"

$user = "administrator@abc.com"

$pswd = "@#$%edcR"

$conn = ldap_connect($host) or die("Could not connect!" )

if($conn){//设置参数

ldap_set_option ( $conn, LDAP_OPT_PROTOCOL_VERSION, 3

)

ldap_set_option ( $conn, LDAP_OPT_REFERRALS, 0 )// Binding to ldap

server

$bd = ldap_bind($conn, $user, $pswd) or die ("Could not

bind")

echo "ldap_bind success"

}

else{

echo "Unable to connect to

AD server"

}

?>

本文所述php实例可以完成获取局域网所有用户的电脑IP和主机名、及mac地址的功能,对于php程序设计人员有一定的参考借鉴价值。完整代码如下:

<?php

$bIp

=

gethostbyname($_ENV['COMPUTERNAME'])

//获取本机的局域网IP

echo

"本机IP:",$bIp,"\n"

echo

"本机主机名:",gethostbyaddr($bIp),"\n\n\n"

//gethostbyaddr

函数可以根据局域网IP获取主机名

//默认网关IP

list($ipd1,$ipd2,$ipd3)

=

explode('.',$bIp)

$mask

=

$ipd1

.

"."

.

$ipd2

.

"."

.

$ipd3

exec('arp

-a',$aIp)

//获取局域网中的其他IP

foreach(

$aIp

as

$ipv)

{

if(strpos($ipv,'接口')

!==

false)

{//一下显示的IP是否是当前局域网中的

而不是其他的类型

可以在cmd下试一下命令

$bool

=

false

preg_match('/(?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))/',$ipv,$arr)

if(strcmp($arr[0],$bIp)

==

0)

{

$bool

=

true

}

}

else

{

if($bool)

{

$str

=

preg_replace('/\s+/',

'|',

$ipv)

$sArr

=

explode('|',$str)

if($sArr[1]

==

'Internet'

||

empty($sArr[1]))

{

continue

}

//去除默认网关

if(strcmp($mask

.

".1",

$sArr[1])

==

0)

{

continue

}

//去除同网关下255的IP

if(strcmp($mask

.

".255",

$sArr[1])

==

0)

{

continue

}

//去除组播IP

list($cIp)

=

explode('.',

$sArr[1])

if($cIp

>=

224

&&

$cIp

<=

239)

{

continue

}

echo

"IP地址:|",$sArr[1],"|\n"

echo

"MAC地址:",$sArr[2],"\n"

echo

"主机名:",gethostbyaddr($sArr[1]),"\n"

echo

"\n\n"

}

}

}

该程序是在cli模式下运行的,在浏览器上应该也可以

php获取局域网中的用户ip功能就完成了,主要用到的是php的exec函数

和window的arp

-a

命令

其中获取本机IP:gethostbyname($_ENV['COMPUTERNAME'])

有别于以往的写法,感兴趣的朋友可以继续深入研究一下。

获取主机名函数:gethostbyaddr(IPd)

这个函数功能也很强大。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/62191.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-28
下一篇2023-02-28

发表评论

登录后才能评论

评论列表(0条)

    保存