floor函数和ceil函数互相搭配起来可以使php 处理的数据更加真实可靠。 一、先来看floor函数: 语法: float floor ( float value ) 说明: 返回不大于 value 的下一个整数,将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。 floor() 例子 1 1 2 3 4 <?php echo floor(1.6); // will output "1" echo floor(-1.6); // will output "-2" ?> floor() 例子 2 1 2 3 4 5 6 7 8 <?php echo(floor(0.60)); echo(floor(0.40)); echo(floor(5)); echo(floor(5.1)); echo(floor(-5.1)); echo(floor(-5.9)) ?> 输出: 0 0 5 5 -6 -6 二、ceil函数: 语法: float ceil ( float value ) 说明: 返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。 […]
View DetailsUUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台 会提供生成UUID的API。UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以 下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相 同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。关于 UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。 在ColdFusion中可以用CreateUUID()函数很简单的生成UUID,其格式为:xxxxxxxx-xxxx-xxxx- xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12) <?php function guid(){ if (function_exists('com_create_guid')){ return com_create_guid(); }else{ mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up. $charid = strtoupper(md5(uniqid(rand(), true))); $hyphen = chr(45);// "-" $uuid = chr(123)// "{" .substr($charid, 0, 8).$hyphen .substr($charid, 8, 4).$hyphen .substr($charid,12, 4).$hyphen .substr($charid,16, 4).$hyphen .substr($charid,20,12) .chr(125);// "}" return $uuid; } } echo guid(); ?> from:https://blog.csdn.net/qq3559727/article/details/51752478
View Details//获取浏览器 function getBrowse() { global $_SERVER; $Agent = $_SERVER['HTTP_USER_AGENT']; $browseinfo="; if(ereg('Mozilla', $Agent) && !ereg('MSIE', $Agent)){ $browseinfo = 'Netscape Navigator'; } if(ereg('Opera', $Agent)) { $browseinfo = 'Opera'; } if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){ $browseinfo = 'Internet Explorer'; } if(ereg('Chrome', $Agent)){ $browseinfo="Chrome"; } if(ereg('Safari', $Agent)){ $browseinfo="Safari"; } if(ereg('Firefox', $Agent)){ $browseinfo="Firefox"; } return $browseinfo; } //获取ip function getIP () { global $_SERVER; if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } else if (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } else if (getenv('REMOTE_ADDR')) { $ip = getenv('REMOTE_ADDR'); } else { $ip = $_SERVER['REMOTE_ADDR']; } […]
View Detailscookie 常用于识别用户。 什么是 Cookie? cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。 如何创建 cookie? setcookie() 函数用于设置 cookie。 注释:setcookie() 函数必须位于 <html> 标签之前。 语法
1 |
setcookie(name, value, expire, path, domain); |
例子 在下面的例子中,我们将创建名为 "user" 的 cookie,把为它赋值 "Alex Porter"。我们也规定了此 cookie 在一小时后过期:
1 2 3 4 5 6 7 8 9 |
<?php setcookie("user", "Alex Porter", time()+3600); ?> <html> <body> </body> </html> |
注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用 setrawcookie() 取而代之)。 如何取回 Cookie 的值? PHP 的 $_COOKIE 变量用于取回 cookie 的值。 在下面的例子中,我们取回了名为 "user" 的 cookie 的值,并把它显示在了页面上:
1 2 3 4 5 6 7 |
<?php // Print a cookie echo $_COOKIE["user"]; // A way to view all cookies print_r($_COOKIE); ?> |
在下面的例子中,我们使用 isset() 函数来确认是否已设置了 cookie:
1 2 3 4 5 6 7 8 9 10 11 12 |
<html> <body> <?php if (isset($_COOKIE["user"])) echo "Welcome " . $_COOKIE["user"] . "!<br />"; else echo "Welcome guest!<br />"; ?> </body> </html> |
如何删除 cookie? 当删除 cookie 时,您应当使过期日期变更为过去的时间点。 删除的例子:
1 2 3 4 |
<?php // set the expiration date to one hour ago setcookie("user", "", time()-3600); ?> |
如果浏览器不支持 cookie 该怎么办? 如果您的应用程序涉及不支持 cookie 的浏览器,您就不得不采取其他方法在应用程序中从一张页面向另一张页面传递信息。一种方式是从表单传递数据(有关表单和用户输入的内容,稍早前我们已经在本教程中介绍过了)。 下面的表单在用户单击提交按钮时向 "welcome.php" 提交了用户输入:
1 2 3 4 5 6 7 8 9 10 11 |
<html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html> |
取回 "welcome.php" 中的值,就像这样:
1 2 3 4 5 6 7 8 |
<html> <body> Welcome <?php echo $_POST["name"]; ?>.<br /> You are <?php echo $_POST["age"]; ?> years old. </body> </html> |
from:http://www.w3school.com.cn/php/php_cookies.asp
View Details
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/** * 获取当前页面完整URL地址 * * @author 52php.cnblogs.com */ function http_get_page_url() { global $_G; if (empty($_G['pageUrl'])) { $protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; $phpSelf = $_SERVER['PHP_SELF'] ? string_safe_replace($_SERVER['PHP_SELF']) : string_safe_replace($_SERVER['SCRIPT_NAME']); $pathInfo = isset($_SERVER['PATH_INFO']) ? string_safe_replace($_SERVER['PATH_INFO']) : ''; $relateUrl = isset($_SERVER['REQUEST_URI']) ? string_safe_replace($_SERVER['REQUEST_URI']) : $phpSelf . (isset($_SERVER['QUERY_STRING']) ? '?' . string_safe_replace($_SERVER['QUERY_STRING']) : $pathInfo); $_G['pageUrl'] = trim($protocal . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '') . $relateUrl, '/'); } // 删除 backUrl 参数 $_G['pageUrl'] = preg_replace('/&backUrl=[^&]+/', '', $_G['pageUrl']); return $_G['pageUrl']; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/** * 安全过滤函数 * * @param string $string * @return string */ function string_safe_replace($string) { $string = str_replace('%20', '', $string); $string = str_replace('%27', '', $string); $string = str_replace('%2527', '', $string); $string = str_replace('*', '', $string); $string = str_replace('"', '"', $string); $string = str_replace("'", '', $string); $string = str_replace('"', '', $string); $string = str_replace(';', '', $string); $string = str_replace('<', '<', $string); $string = str_replace('>', '>', $string); $string = str_replace("{", '', $string); $string = str_replace('}', '', $string); $string = str_replace('\\', '', $string); return $string; } |
from:https://www.cnblogs.com/52php/p/5669711.html
View Details本文实例讲述了php获取当前url地址的方法。分享给大家供大家参考,具体如下: js 获取: 1 2 top.location.href //顶级窗口的地址 this.location.href //当前窗口的地址 php获取当前url地址: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #测试网址: http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo$_SERVER['HTTP_HOST']."<br>"; #localhost //获取网页地址 echo$_SERVER['PHP_SELF']."<br>"; #/blog/testurl.php //获取网址参数 echo$_SERVER["QUERY_STRING"]."<br>"; #id=5 //获取用户代理 echo$_SERVER['HTTP_REFERER']."<br>"; //获取完整的url echo’http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo’http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; #http://localhost/blog/testurl.php?id=5 //包含端口号的完整url echo’http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; #http://localhost:80/blog/testurl.php?id=5 //只取路径 $url=’http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; echodirname($url); #http://localhost/blog from:http://www.jb51.net/article/102577.htm
View Details概述 Notification API是浏览器的通知接口,用于在用户的桌面(而不是网页上)显示通知信息,桌面电脑和手机都适用,比如通知用户收到了一封Email。具体的实现形式由浏览器自行部署,对于手机来说,一般显示在顶部的通知栏。 如果网页代码调用这个API,浏览器会询问用户是否接受。只有在用户同意的情况下,通知信息才会显示。 下面的代码用于检查浏览器是否支持这个API。
1 2 3 4 5 |
if (window.Notification) { // 支持 } else { // 不支持 } |
目前,Chrome和Firefox在桌面端部署了这个API,Firefox和Blackberry在手机端部署了这个API。
1 2 3 4 5 |
if(window.Notification && Notification.permission !== "denied") { Notification.requestPermission(function(status) { var n = new Notification('通知标题', { body: '这里是通知内容!' }); }); } |
上面代码检查当前浏览器是否支持Notification对象,并且当前用户准许使用该对象,然后调用Notification.requestPermission方法,向用户弹出一条通知。 Notification对象的属性和方法 Notification.permission Notification.permission属性,用于读取用户给予的权限,它是一个只读属性,它有三种状态。 default:用户还没有做出任何许可,因此不会弹出通知。 granted:用户明确同意接收通知。 denied:用户明确拒绝接收通知。 Notification.requestPermission() Notification.requestPermission方法用于让用户做出选择,到底是否接收通知。它的参数是一个回调函数,该函数可以接收用户授权状态作为参数。
1 2 3 4 5 6 7 |
Notification.requestPermission(function (status) { if (status === "granted") { var n = new Notification("Hi!"); } else { alert("Hi!"); } }); |
上面代码表示,如果用户拒绝接收通知,可以用alert方法代替。 Notification实例对象 Notification构造函数 Notification对象作为构造函数使用时,用来生成一条通知。
1 |
var notification = new Notification(title, options); |
Notification构造函数的title属性是必须的,用来指定通知的标题,格式为字符串。options属性是可选的,格式为一个对象,用来设定各种设置。该对象的属性如下: dir:文字方向,可能的值为auto、ltr(从左到右)和rtl(从右到左),一般是继承浏览器的设置。 lang:使用的语种,比如en-US、zh-CN。 body:通知内容,格式为字符串,用来进一步说明通知的目的。。 tag:通知的ID,格式为字符串。一组相同tag的通知,不会同时显示,只会在用户关闭前一个通知后,在原位置显示。 icon:图表的URL,用来显示在通知上。 上面这些属性,都是可读写的。 下面是一个生成Notification实例对象的例子。
1 2 3 4 5 6 |
var notification = new Notification('收到新邮件', { body: '您总共有3封未读邮件。' }); notification.title // "收到新邮件" notification.body // "您总共有3封未读邮件。" |
实例对象的事件 Notification实例会触发以下事件。 show:通知显示给用户时触发。 click:用户点击通知时触发。 close:用户关闭通知时触发。 error:通知出错时触发(大多数发生在通知无法正确显示时)。 这些事件有对应的onshow、onclick、onclose、onerror方法,用来指定相应的回调函数。addEventListener方法也可以用来为这些事件指定回调函数。
1 2 3 |
notification.onshow = function() { console.log('Notification shown'); }; |
close方法 Notification实例的close方法用于关闭通知。
1 2 3 4 5 6 7 8 9 |
var n = new Notification("Hi!"); // 手动关闭 n.close(); // 自动关闭 n.onshow = function () { setTimeout(n.close.bind(n), 5000); } |
上面代码说明,并不能从通知的close事件,判断它是否为用户手动关闭。 本篇源自 《阮一峰老师的javascript篇》小篇只是在这里传播一下,绝无抄袭之意,多谢关注~ from:https://blog.csdn.net/u010081689/article/details/51004681
View DetailscURL 是一个利用 URL 语法规定来传输文件和数据的工具,支持很多协议,如 HTTP、FTP、TELNET 等。最爽的是,PHP 也支持 cURL 库。使用 PHP 的 cURL 库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容. 在我们写 SOA 服务化项目的时候, 总是要定义许多 API 接口为功能提供服务, 那么这个时候 cURL 就发挥了它巨大的作用. 这里分享一下自己封装的 cURL 方法
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 |
/** * @param $url 请求网址 * @param bool $params 请求参数 * @param int $ispost 请求方式 * @param int $https https协议 * @return bool|mixed */ public static function curl($url, $params = false, $ispost = 0, $https = 0) { $httpInfo = array(); $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if ($https) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在 } if ($ispost) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_URL, $url); } else { if ($params) { if (is_array($params)) { $params = http_build_query($params); } curl_setopt($ch, CURLOPT_URL, $url . '?' . $params); } else { curl_setopt($ch, CURLOPT_URL, $url); } } $response = curl_exec($ch); if ($response === FALSE) { //echo "cURL Error: " . curl_error($ch); return false; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $httpInfo = array_merge($httpInfo, curl_getinfo($ch)); curl_close($ch); return $response; } |
使用方法
1 2 3 4 |
// 发送请求 $result = self::curl('网址', '参数', true); // 收到的数据需要转化一下 $json = json_decode($result); |
from:https://laravel-china.org/articles/2768/easy-to-use-curl-class
View Details一、如果没有使用代理服务器, REMOTE_ADDR = 客户端IP HTTP_X_FORWARDED_FOR = 没数值或不显示
1 |
$ip = $_SERVER['REMOTE_ADDR']; |
二、使用透明代理, REMOTE_ADDR = 最后一个代理服务器 IP HTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类似:221.5.252.160, 203.98.182.163, 203.129.72.215) 这类代理还会将客户真实ip发送到请求对象,无法隐藏真实ip。
1 |
$ip = $_SERVER['HTTP_X_FORWARDED_FOR']; |
三、使用普通匿名代理服务器, REMOTE_ADDR = 最后一个代理服务器 IP HTTP_X_FORWARDED_FOR = 代理服务器 IP (经过多个代理服务器时,这个值类似:203.98.182.163, 203.98.182.163, 203.129.72.215) 这样就隐藏了客户端的真实ip,但服务器会知道客户端是通过代理服务器去访问的。 四、使用欺骗性代理服务器, REMOTE_ADDR = 代理服务器 IP HTTP_X_FORWARDED_FOR = 随机的 IP(经过多个代理服务器时,这个值类似:220.4.251.159, 203.98.182.163, 203.129.72.215) 服务器可以识别到时通过代理服务器访问的,但发送给目标服务器的是虚假ip。 五、使用高匿名代理, REMOTE_ADDR = 代理服务器 IP HTTP_X_FORWARDED_FOR = 没数值或不显示 使用这种代理时,不同浏览器不同设备会返回不同的ip头信息,因此PHP使用$_SERVER["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 获取的值可能是空值也可能是“unknown”值。 PHP获取ip代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public function ip() { //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } $res = preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : ''; echo $res; //dump(phpinfo());//所有PHP配置信息 } |
from:https://www.cnblogs.com/rendd/p/6183094.html
View Details不能包含用户的帐户名,不能包含用户姓名中超过两个连续字符的部分 至少有六个字符长 包含以下四类字符中的三类字符: 英文大写字母(A 到 Z) 英文小写字母(a 到 z) 10 个基本数字(0 到 9) 非字母字符(例如 !、$、#、%)
View Details