分类 PHP 下的文章

Thinkphp U 方法加密传参

<?php  
/**  
 * 简单对称加密算法之加密  
 * @param String $string 需要加密的字串  
 * @param String $skey 加密EKY  
 * @author Anyon Zou <zoujingli@qq.com>  
 * @date 2013-08-13 19:30  
 * @update 2014-10-10 10:10  
 * @return String  
 */  
function encode($string = '', $skey = 'yourkey') {  
    $strArr = str_split(base64_encode($string));  
    $strCount = count($strArr);  
    foreach (str_split($skey) as $key => $value)  
        $key < $strCount && $strArr[$key].=$value;  
    return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr));  
}  
/**  
 * 简单对称加密算法之解密  
 * @param String $string 需要解密的字串  
 * @param String $skey 解密KEY  
 * @author Anyon Zou <zoujingli@qq.com>  
 * @date 2013-08-13 19:30  
 * @update 2014-10-10 10:10  
 * @return String  
 */  
function decode($string = '', $skey = 'yourkey') {  
    $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);  
    $strCount = count($strArr);  
    foreach (str_split($skey) as $key => $value)  
        $key <= $strCount && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];  
    return base64_decode(join('', $strArr));  
}  

/**  
将以上两个函数放在Common下的function.php公共函数中。  
用法:常用语get传参  
    前端:<a href="<{:U('Index/view',array('id'=>encode($data['id']),'name'=>encode($data['title'])))}>"><{$data.title}></a>  
    后台:view方法中:$id = decode(trim(I("get.id")));即可还原  
    view模板中:<font color="red"><{$Think.get.name|decode}></font>  
**/  

/*建议将key自行修改,尽量不要太长,不然url很长,适当即可,加密性能很好,亲测*/  

对于数字字段的加减,可以直接使用 setInc() 与 setDec() 方法

Thinkphp中的setInc、setDec方法.jpg

ThinkPHP 内置了对统计数据(数字字段)的更新方法:

setInc():将数字字段值增加 setDec():将数字字段值减少

栗子

  $User = M("User"); // 实例化User对象
  $User->where('id=5')->setInc('score',3); // 用户的积分加3
  $User->where('id=5')->setInc('score'); // 用户的积分加1
  $User->where('id=5')->setDec('score',5); // 用户的积分减5
  $User->where('id=5')->setDec('score'); // 用户的积分减1

PHP获取来路URL信息

1、获取当前的域名:

$_SERVER['SERVER_NAME'];

2、获取来源网址,即点击来到本页的上页网址

$_SERVER["HTTP_REFERER"];

3、获取当前域名的后缀

$_SERVER['REQUEST_URI'];

4、获取当前域名

$_SERVER['HTTP_HOST'];

5、获取当前文件的物理路径

dirname(FILE);

6、获取当前文件的上一级物理路径

dirname(FILE)."/../";

7、得到当前页面地址

$_SERVER['PHP_SELF'];

8、这个可以得到带参数的地址

$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"];

PHP反转字符串函数strrev()函数的用法

定义和用法 strrev() 函数反转字符串。

语法 strrev(string)

参数 描述 string 必需。规定要反转的字符串。

例子

代码如下:

<?php 
echo strrev("Hello World!"); 
?> 

输出:

!dlroW olleH

1、file_put_contents换行

> Linux \n     //双引号才对
> Windows \r\n  
> MacOS \r

2、file_put_contents追加

> FILE_APPEND

3、file_put_contents打印数组

$arr=array();

str=varexport(arr,TRUE);

file_put_contents(‘./test.text’,$str,FILE_APPEND);

有时候一个海报看腻了,我们还需要更换新的。但是当很多人都看的时候,很快就腻了,这时我们就可以让大家获取不一样的海报,来保护用户的新鲜感,所以说这个运营人必备。 newcode.jpg 栗子:

$input = array("./Public/images/1.jpg","./Public/images/2.jpg","./Public/images/3.jpg","./Public/images/4.jpg","./Public/images/5.jpg");  //存入数组

$im_src = imagecreatefrompng($path_info['qrcode']);  //qrcode路径

// 合成二维码(二维码大小282*282)
$rand_keys = array_rand($input);//使用array_rand函数从数组中随机抽出一个单元

$im_dst = imagecreatefromjpeg($input[$rand_keys]);

imagecopyresized( $im_dst, $im_src,200, 410, 0, 0,250,250, 490, 490);

一点都不难吧!

PHP域名自动跳转代码 默认浏览器打开代码——业界:域名防红

以下代码是否失效,还得各位看官自行测试,本人只是抱以学习的目的来记录这些代码。

此前看到很多人的网站都会使用调用默认浏览器打开网址,有幸找到此源码并做优化优化说明:把固定链接改成访问链接并调用手机默认浏览器打开当前访问的链接

第一种:

代码加在php头部或者独立页面

<?php
$conf['qqjump']=1;
if(strpos($_SERVER['HTTP_USER_AGENT'], 'QQ/')!==false && $conf['qqjump']==1){
$a='http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    echo '<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>请使用浏览器打开</title>
  <script src="https://open.mobile.qq.com/sdk/qqapi.js?_bid=152"></script>
  <script type="text/javascript"> mqq.ui.openUrl({ target: 2,url: "'.$a.'"}); </script>
 </head>
 <body>请使用浏览器打开</body>
</html>';
exit;
} 
?>

该代码会在调用默认浏览器的同时跳转到你点击的链接,适合做域名跳转

第二种:

找一个没有拦截的域名,然后解析到网站,上传一个index.php的文件,以下是文件源码(源码附件下载即可)。

<?php
$conf['qqjump']=1;
if(strpos($_SERVER['HTTP_USER_AGENT'], 'QQ/')!==false && $conf['qqjump']==1){
  $a='http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    echo '<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>请使用浏览器打开</title>
  <script src="https://open.mobile.qq.com/sdk/qqapi.js?_bid=152"></script>
  <script type="text/javascript"> mqq.ui.openUrl({ target: 2,url: "http://www.penhot.com"}); </script>
 </head>
 <body>请使用浏览器打开<p><a href=".$a.">点击载入当前网站</a></p></body>
</html>';
exit;
}
?>
<html>
<head>
<title>防拦截跳转</title>
</head>
<body>请使用浏览器打开<h1><a href="http://www.lrlvr.cn">点击进入</a></h1>
</body>
</html>

以上代码直接写成php文件,上传空间,把我的两个链接修改成自己的链接即可,以后直接可以发未拦截的域名就行了

微信H5支付,微信公众号以外浏览器唤起微信支付,页面,控制器,模型已经写好,换掉信息即可

public function notify(){
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
libxml_disable_entity_loader(true);
$arr= json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
if($arr['return_code']=='SUCCESS'){
$oid = $arr['out_trade_no'];
$da = Db::name('Order')->where('order_num',$oid)->find();
if($da['isfalse']==0){
Db::name('Order')->where('order_num',$oid)->update(['isfalse'=>1,'status'=>1]);
}
}
}

百度下载:传送门 资源密码:74ge

PHP模拟微信浏览器打开微信链接

微信浏览器的HTTP_USER_AGENT

在iPhone下,返回

Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2

在Android下,返回

Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255

不难发现微信浏览器为 MicroMessenger ,并且有版本号,也可以判断手机类型为iPhone还是Android

  1. get 方式 function get($url, $referer, $cookie) { $header = array(); $header[] = 'Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, /'; $header[] = 'Connection: Keep-Alive'; $header[] = 'Accept-Language: zh-cn'; $header[] = 'Cache-Control: no-cache'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2'); curl_setopt($ch, CURLOPT_REFERER, $referer); curl_setopt($ch, CURLOPT_COOKIE, $cookie); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $result = curl_exec($ch); curl_close($ch); return $result; }

    echo get('微信端网址','',''); 
  2. post方式

    function post($url, $data, $referer, $cookie) { 
    $header = array(); 
    $header[] = 'Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*'; 
    $header[] = 'Connection: Keep-Alive'; 
    $header[] = 'Accept-Language: zh-cn'; 
    $header[] = 'Cache-Control: no-cache'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255'); 
    curl_setopt($ch, CURLOPT_REFERER, $referer); 
    curl_setopt($ch, CURLOPT_COOKIE, $cookie); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    $result = curl_exec($ch); 
    curl_close($ch); 
    return $result; 
    }     
    
    echo post('微信端网址','','','');   
  3. 防盗链

    if(strpos($_SERVER["HTTP_USER_AGENT"],"MicroMessenger")){
    echo "Welcome to wechat word"; }
    else {
    echo "http/1.1 401 Unauthorized";}

PHP随机生成数字字母组合的几种方法

第一种

function getRandomString($len, $chars=null)
{
    if (is_null($chars)){
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    }  
    mt_srand(10000000*(double)microtime());
    for ($i = 0, $str = '', $lc = strlen($chars)-1; $i < $len; $i++){
        $str .= $chars[mt_rand(0, $lc)];  
    }
    return $str;
}

第二种 function makepassword( $length = 8 )
{
// 密码字符集,可任意添加你需要的字符
$chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r', 's',
't', 'u', 'v', 'w', 'x', 'y','z', 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!',
'@','#', '$', '%', '^', '&', '*', '(', ')', '-', '
',
'[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',',
'.', ';', ':', '/', '?', '|');
// 在 $chars 中随机取 $length 个数组元素键名
$keys = array_rand($chars, $length);
$password = '';
for($i = 0; $i < $length; $i++)
{
// 将 $length 个数组元素连接成字符串
$password .= $chars[$keys[$i]];
}
return $password;
}

随机生成 2 位 字母和数字组合 只需调用函数 并传参2即可。 echo getRandomString(2); 如果仅仅是生成小写字母你可以使用类似方法 echo chr(mt_rand(65, 90); 大写字母 echo chr(mt_rand(97, 122));

phpmyadmin误删pma,提示#1146 - 'xxx' doesn't exist解决办法

工作原因,管理mysql我经常用phpmyadmin,昨晚看到数据库下面有个pma文件夹,下面竟然有许多不是网站用到的数据表,所以犯贱了一次,全部delet了,接下来就苦逼了,提示#1146 - 'pma****' doesn't exist,什么操作都无法进行。

找了度娘,度娘告诉我重启数据库就可以解决,可是试过依然不行啊!呜呜·····

没办法,只有先down下来数据,本地看下数据有无损失。

哦耶 数据本地正常打开。于是直接恢复了下刚刚做好的备份,接下来就一切正常了。