php怎么看地址,php如何获取客户端信息?
代码入下,只做参考
class userPCInfo{
//获取客户端浏览器
public static function get_client_browser(){
$sys = $_SERVER['HTTP_USER_AGENT']; //获取用户代理字符串
if (stripos($sys, "Firefox/") > 0) {
preg_match("/Firefox\/([^;)]+)+/i", $sys, $b);
$exp[0] = "Firefox";
$exp[1] = $b[1]; //获取火狐浏览器的版本号
} elseif (stripos($sys, "Maxthon") > 0) {
preg_match("/Maxthon\/([\d\.]+)/", $sys, $aoyou);
$exp[0] = "傲游";
$exp[1] = $aoyou[1];
} elseif (stripos($sys, "MSIE") > 0) {
preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie);
$exp[0] = "IE";
$exp[1] = $ie[1]; //获取IE的版本号
} elseif (stripos($sys, "OPR") > 0) {
preg_match("/OPR\/([\d\.]+)/", $sys, $opera);
$exp[0] = "Opera";
$exp[1] = $opera[1];
} elseif(stripos($sys, "Edge") > 0) {
//win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配
preg_match("/Edge\/([\d\.]+)/", $sys, $Edge);
$exp[0] = "Edge";
$exp[1] = $Edge[1];
} elseif (stripos($sys, "Chrome") > 0) {
preg_match("/Chrome\/([\d\.]+)/", $sys, $google);
$exp[0] = "Chrome";
$exp[1] = $google[1]; //获取google chrome的版本号
} elseif(stripos($sys,'rv:')>0 && stripos($sys,'Gecko')>0){
preg_match("/rv:([\d\.]+)/", $sys, $IE);
$exp[0] = "IE";
$exp[1] = $IE[1];
}else {
$exp[0] = "未知浏览器";
$exp[1] = "";
}
return $exp;
}
//获取客户端操作系统
public static function get_client_os(){
$agent = $_SERVER['HTTP_USER_AGENT'];
$os = false;
if (preg_match('/win/i', $agent) && strpos($agent, '95')){
$os = 'Windows 95';
}else if (preg_match('/win 9x/i', $agent) && strpos($agent, '4.90')){
$os = 'Windows ME';
}else if (preg_match('/win/i', $agent) && preg_match('/98/i', $agent)){
$os = 'Windows 98';
}else if (preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent)){
$os = 'Windows Vista';
}else if (preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent)){
$os = 'Windows 7';
}else if (preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent)){
$os = 'Windows 8';
}else if(preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent)){
$os = 'Windows 10';#添加win10判断
}else if (preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent)){
$os = 'Windows XP';
}else if (preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent)){
$os = 'Windows 2000';
}else if (preg_match('/win/i', $agent) && preg_match('/nt/i', $agent)){
$os = 'Windows NT';
}else if (preg_match('/win/i', $agent) && preg_match('/32/i', $agent)){
$os = 'Windows 32';
}else if (preg_match('/linux/i', $agent)){
$os = 'Linux';
}else if (preg_match('/unix/i', $agent)){
$os = 'Unix';
}else if (preg_match('/sun/i', $agent) && preg_match('/os/i', $agent)){
$os = 'SunOS';
}else if (preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent)){
$os = 'IBM OS/2';
}else if (preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent)){
$os = 'Macintosh';
}else if (preg_match('/PowerPC/i', $agent)){
$os = 'PowerPC';
}else if (preg_match('/AIX/i', $agent)){
$os = 'AIX';
}else if (preg_match('/HPUX/i', $agent)){
$os = 'HPUX';
}else if (preg_match('/NetBSD/i', $agent)){
$os = 'NetBSD';
}else if (preg_match('/BSD/i', $agent)){
$os = 'BSD';
}else if (preg_match('/OSF1/i', $agent)){
$os = 'OSF1';
}else if (preg_match('/IRIX/i', $agent)){
$os = 'IRIX';
}else if (preg_match('/FreeBSD/i', $agent)){
$os = 'FreeBSD';
}else if (preg_match('/teleport/i', $agent)){
$os = 'teleport';
}else if (preg_match('/flashget/i', $agent)){
$os = 'flashget';
}else if (preg_match('/webzip/i', $agent)){
$os = 'webzip';
}else if (preg_match('/offline/i', $agent)){
$os = 'offline';
}else{
$os = '未知操作系统';
}
return $os;
}
//获取ip地址
public static function get_ip() {
//判断服务器是否允许$_SERVER
if (isset($_SERVER)) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$realip = $_SERVER['REMOTE_ADDR'];
}
} else {
//不允许就使用getenv获取
if (getenv("HTTP_X_FORWARDED_FOR")) {
$realip = getenv("HTTP_X_FORWARDED_FOR");
} elseif (getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
} else {
$realip = getenv("REMOTE_ADDR");
}
}
return $realip;
}
//获取当前ip所在城市
public static function GetIpLookup($ip = ''){
if(empty($ip)){
return '请输入IP地址';
}
$test= 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
$res = @file_get_contents($test);
return $res;
}
}
indexphp怎么打开?
首先你需要搭建一个PHP环境,建议使用phpstudy,99%的PHP程序员都用这个。中文软件,安装流程一直下一步就行。
安装好后,把index.php放到开发目录,然后直接在地址栏打赏localhost就可以直接访问index.php(默认访问index.php)
引用和传址的区别?
实参(被调)、行参(主调)
函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
--传值:
是把实参的值赋值给行参,相当于复制一块同样的空间那么对行参的修改,不会影响实参的值
--传地址:
是传值的一种特殊方式,只是他传递的是地址,不是普通的如int那么传地址以后,实参和行参都指向同一个对象--传引用:
真正的以地址的方式传递参数
传递以后,行参和实参都是同一个对象,只是他们名字不同而已对行参的修改将影响实参的值
即传址时只需在函数调用时在参数的前面加上"&"号即可。将函数外部的值的内存地址传递给内部的参数,在函数内部的所有操作都会改变函数外部参数的值。
值传递(passl-by-value): 压栈的是参数的副本。任何的修改是在副本上作用,没有作用在原来的变量上。
过程中:被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
传指针(pointer): 压栈的是指针变量的副本。当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。
引用传递(pass-by-reference):压栈的是引用的副本。由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作。
过程中:被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。
所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重新开辟一个完全相同的内存空间。
所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。如果对目标对象进行修改,内存中的数据也会改变。
php判断ip地址是否正确的代码?
想要正确的使用正则表达式来判断 IP 地址正确与否,重点就是如何使用正则表达式来表示 IP 中的 4 个数字,保证它们的取值范围在 0~255 之间。
如下所示:
([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5])
有了上面的正则表达式,定义好4组数正则表达式
((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))
至此正则表达式就是定义好了,将它放到代码中来验证一下,代码如下所示:
function validateip($ip){
$preg="/^((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))/";
preg_match($preg,$ip,$matches);
if(!empty($matches)) return 1;
return 0;
}
$arr_ip = [
这里放入要检查IP,用","分隔多个IP
];
foreach ($arr_ip as $value) {
if(validateip($value)){
echo $value.' 是正确的 IP 地址';
}else{
echo $value.' 不是正确的 IP 地址';
}
}
?>
indexphp能打开?
你双击等于没经过apache处理,PHP是服务器端语言,所以双击直接打开不可能。只能经过localhost访问。