找到配置文件WxPay.Config.php,只需要配置下面四项
2、redirect_uri参数错误
登陆公众管理后台-点击开发者中心-找到网页帐号点击修改,写自己域名,保存生效。
3、页面URL未注册
登陆公众微信后台-微信支付-开发配置,支付授权目录路径一直到最后一个斜杠
4、样例页面
jsapi.php jsApi支付
解决办法:
1.在创建文本编辑器时增加session_id的传递
<script>
var editor;
KindEditor.ready(function(K) {
editor = K.create('textarea[name="content"]', {
allowFileManager : true,
extraFileUploadParams:{
'PHPSESSID' : "<?=session_id()?>"
}
});
</script>
<textarea name="content" style="width:800px;height:400px;visibility:hidden;">KindEditor</textarea>
2.upload_json.php文件增加session初始化
$session=isset($_POST['PHPSESSID'])?$_POST['PHPSESSID']:'';
if($session){//重新设置cookie,解决使用Flash上传图片时cookie丢失的问题
session_id($session);
session_start();
}else{
session_start();
}
这里记录下常用header的信息
<?php
header('HTTP/1.1 200 OK'); // ok 正常访问
header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存在
header('HTTP/1.1 301 Moved Permanently'); //设置地址被永久的重定向 301
header('Location: http://www.ruonu.com/'); //跳转到一个新的地址
header('Refresh: 10; url=http://www.ruonu.com/'); //延迟转向 也就是隔几秒跳转
header('X-Powered-By: PHP/7.0.0'); //修改 X-Powered-By信息
header('Content-language: en'); //文档语言
header('Content-Length: 1234'); //设置内容长度
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); //告诉浏览器最后一次修改时间
header('HTTP/1.1 304 Not Modified'); //告诉浏览器文档内容没有发生改变
###内容类型###
header('Content-Type: text/html; charset=utf-8'); //网页编码
header('Content-Type: text/plain'); //纯文本格式
header('Content-Type: image/jpeg'); //JPG、JPEG
header('Content-Type: application/zip'); // ZIP文件
header('Content-Type: application/pdf'); // PDF文件
header('Content-Type: audio/mpeg'); // 音频文件
header('Content-type: text/css'); //css文件
header('Content-type: text/javascript'); //js文件
header('Content-type: application/json'); //json
header('Content-type: application/pdf'); //pdf
header('Content-type: text/xml'); //xml
header('Content-Type: application/x-shockw**e-flash'); //Flash动画
######
###声明一个下载的文件###
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="ITblog.zip"');
header('Content-Transfer-Encoding: binary');
readfile('test.zip');
######
###对当前文档禁用缓存###
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
######
###显示一个需要验证的登陆对话框###
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
######
###声明一个需要下载的xls文件###
header('Content-Disposition: attachment; filename=ithhc.xlsx');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: '.filesize('./test.xls'));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
readfile('./test.xls');
######
?>
PHP自身没有多线程的,可以借助扩展实现。但是curl_multi* 函数实现了多线程访问网站数据的功能。
步骤总结如下:
第一步:调用curl_multi_init
第二步:循环调用curl_multi_add_handle
这一步需要注意的是,curl_multi_add_handle的第二个参数是由curl_init而来的子handle。
第三步:持续调用curl_multi_exec
第四步:根据需要循环调用curl_multi_getcontent获取结果
第五步:调用curl_multi_remove_handle,并为每个字handle调用curl_close
第六步:调用curl_multi_close
代码如下 | 复制代码 |
<?php while ($active and $mrc == CURLM_OK) { foreach ($url_arr as $i => $url) { foreach($res as $k=>$v){ runTime($t); |
提供两个内置的方法,可以在项目中直接使用,很方便
/**
* 记住密码/清空密码
*
* @param $phone
* @param $pwd
* @param $name
*/
public function SeTpassword($phone, $pwd , $name, $type){
if($type == 1) {
$data = array(
'phone' => $phone,
'pwd' => $pwd
);
$key = base64_encode(json_encode($data));
setcookie($name, $key, time() + 3600 * 24 * 7, '/', '', '', true);
}else{
setcookie($name,'' , time() - 3600 * 24 * 30, '/', '', '', true);
}
}
/**
* 得到保存的密码
* @param $name
* @return mixed
*/
public function GetPassword($name){
$info = array();
if(!isset($_COOKIE[$name])){
$data['errorCode'] = 1;
}else{
if($_COOKIE[$name] == ''){
$data['errorCode'] = 1;
}else{
$key = json_decode(base64_decode($_COOKIE[$name], true),true);
if(!is_array($key)){
$data['errorCode'] = 1;
}else{
$data['errorCode'] = 0;
$info['phone'] = $key['phone'];
$info['pwd'] = $key['pwd'];
$info['type'] = 1;
}
}
}
if($data['errorCode'] == 1){
$info['phone'] = '';
$info['pwd'] = '';
$info['type'] = 0;
}
return $info;
}