求网页php的phpstorm自定义代码块预约代码

7199次阅读
微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章。
一、准备阶段
公众号一个,微网站一个
二、绑定域名
先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
备注:登录后可在“开发者中心”查看对应的接口权限。&
//curl获取请求文本内容
function get_curl_contents($url, $method ='GET', $data = array()) {
if ($method == 'POST') {
//使用crul模拟
$ch = curl_init();
//禁用https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//允许请求以文件流的形式返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch); //执行发送
curl_close($ch);
if (ini_get('allow_fopen_url') == '1') {
$result = file_get_contents($url);
//使用crul模拟
$ch = curl_init();
//允许请求以文件流的形式返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
//禁用https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch); //执行发送
curl_close($ch);
//获取微信公从号access_token
function wx_get_token() {
$AppID = '';//AppID(应用ID)
$AppSecret = 'sdfasdfsdf';//AppSecret(应用密钥)
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$AppID.'&secret='.$AppS
$res = get_curl_contents($url);
$res = json_decode($res, true);
//这里应该把access_token缓存起来,至于要怎么缓存就看各位了,有效期是7200s
return $res['access_token'];
//获取微信公从号ticket
function wx_get_jsapi_ticket() {
$url = sprintf("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi", wx_get_token());
$res = get_curl_contents($url);
$res = json_decode($res, true);
//这里应该把access_token缓存起来,至于要怎么缓存就看各位了,有效期是7200s
return $res['ticket'];
$wx = array();
//生成签名的时间戳
$wx['timestamp'] = time();
//生成签名的随机串
$wx['noncestr'] = 'Wm3WZYTPz0wzccnW';
//jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。
$wx['jsapi_ticket'] = wx_get_jsapi_ticket();
//分享的地址,注意:这里是指当前网页的URL,不包含#及其后面部分,曾经的我就在这里被坑了,所以小伙伴们要小心了
$wx['url'] = 'http://www.baidu.com';
$string = sprintf("jsapi_ticket=%s&noncestr=%s&timestamp=%s&url=%s", $wx['jsapi_ticket'], $wx['noncestr'], $wx['timestamp'], $wx['url']);
//生成签名
$wx['signature'] = sha1($string);
签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
签名用的url必须是调用JS接口页面的完整URL。
出于安全考虑,开发者必须在服务器端实现签名的逻辑。
四、视图显示
在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js
通过config接口注入权限验证配置
//通过config接口注入权限验证配置
wx.config({
debug : false,
appId : 'AppID',
timestamp : '&?php echo $wx["timestamp"];?&',
nonceStr : '&?php echo $wx["noncestr"];?&',
signature : '&?php echo $wx["signature"];?&',
jsApiList : ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo']
wx.ready(function(){
s_title = '分享标题',
// 分享标题
s_link = '分享链接',
// 分享链接
s_desc = '分享描述',
//分享描述
s_imgUrl = '分享图片'; // 分享图标
wx.onMenuShareTimeline({
title: s_title, // 分享标题
link: s_link, // 分享链接
imgUrl: s_imgUrl, // 分享图标
success: function () { },
cancel: function () { }
//发送给好友
wx.onMenuShareAppMessage({
title: s_title, // 分享标题
desc: s_desc, // 分享描述
link: s_link, // 分享链接
imgUrl: s_imgUrl, // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {},
cancel: function () {}
wx.onMenuShareQQ({
title: s_title, // 分享标题
desc: s_desc, // 分享描述
link: s_link, // 分享链接
imgUrl: s_imgUrl, // 分享图标
success: function () { },
cancel: function () { }
//腾讯微博
wx.onMenuShareWeibo({
title: s_title, // 分享标题
desc: s_desc, // 分享描述
link: s_link, // 分享链接
imgUrl: s_imgUrl, // 分享图标
success: function () { },
cancel: function () { }
五、大功告成
基本上的流程就是这样了,比较麻烦的一点就是生成签名那一块,注意一点就行了。
版权属于:
文章链接:
转载时必须以链接形式注明原始出处及本声明。
如果您觉得本文对您有所帮助,请小额赞助一下,我会优先回答您在使用过程中出现的问题,
如有疑问或遇到技术问题,请加官方QQ群: &&discuz 自定义HTML模板DIY支持PHP代码解析 - PHP与MYSQL|经验与学习 - 索罗自习笔录
496 次浏览
DiscuzX的DIY模块使用起来确实很爽,很多功能都有了,但是对于的内容来说还是无法直接使用封装得太狠了点。
DIY模块,在编辑之后数据存放于common_block表之中,在模板文件htm里以{block/bid}的形式存在,当实际运行显示时通过函数调用数据并显示出来,和显示帖子的原理类似。
最终的函数位于/source/function/function_block.中的,function block_display_batch($bid)。
我们来修改这个文件,让自定义HTML模块DIY可以使用PHP代码。
#suxiaojack 这里是重头戏阿!要让PHP语句执行,HTML语句输出.
function block_display_batch($bid) {
#echo block_fetch_content($bid);
sx_block_display_batch($bid);
处理之后的效果:
可以在展示类,自定义HTML的模块中,书写PHP代码块
[html]htmlcode[/html]
[]code[/php]
注意:使用eval函数处理所以不支持流程的混合书写!!所以尽量全部用php处理。
特别注意:
1、变量由于是在eval函数中故而需要\$varname的形式书写,即正常的书写前添加\
2、索引字符串,正常情况书写为$var['thestr'],在eval中既是已经在串中写为\$var[thestr]即可
function sx_block_display_batch($bid)
global $_G;
if($_G[‘block’][$bid][‘blockclass’]==”html_html”) #只处理自定义HTML模块
$cache_code=$mixed_code=block_fetch_content($bid);
#$mixed_code=preg_replace(“/\”/”,”\\\””,$mixed_code);
#变’号
$mixed_code=preg_replace(“/\’/”,”\\\'”,$mixed_code);
#获取内部html
$mixed_code=preg_replace(“/\[html\](.*)\[\/html\]/is”,”echo(‘\\1′);”,$mixed_code);
#获取内部php
$mixed_code=preg_replace(“/\[php\](.*)\[\/php\]/is”,”eval(‘\\1′);”,$mixed_code);
$html_code_arr=preg_split(“/&e(.*);&/is”,$mixed_code);
if(count($html_code_arr)==2){
#分割正确,输出特殊的东东。
$mixed_code=preg_replace(“/(.*)&e(.*);&(.*)/is”,”e\\2;”,$mixed_code);
echo $html_code_arr[0].”&”;
eval($mixed_code);
echo “&“.$html_code_arr[1];
#不能处理,则原封不动输出
echo $cache_
echo block_fetch_content($bid);
这样修改之后,可以DIY试试了!添加展示类,静态展示类,自定义HTML。
[html]Cool Thing:&BR&[/html]
\$sql="select * from ".DB::table("common_block");
\$query=DB::query(\$sql);
while(\$row=DB::fetch(\$query))
echo("\$row[blockclass]&BR/&");
看看效果吧!
上面的代码,还是不爽, 修正了一下,基本上很方便书写了,不再继续修改.
#支持流程中混合处理,原理:把所有内容看作一个不分割的phpcode
#不支持[php]=\$var[/php]输出,要用echo("\$var")来输出。
#修正语句错误时,DIY失效问题。
function sxx_block_display_batch($bid)
$mixed_code=block_fetch_content($bid);
#手动取类型,全局的有时候不好用。
$sql="select blockclass from ".DB::table("common_block")." where bid=$bid";
$query=DB::query($sql);
if($row=DB::fetch($query))
$blockclass=$row['blockclass'];
echo ("no block id:$bid,Please check your database.");
echo ($mixed_code);
$blockclass=="html_html" #只处理自定义HTML模块
&& ($_GET['diy']!="yes") #支持DIY当语句错误时可以修改
#不用[html][/html]了html直接写
$mixed_code=preg_replace("/\[html\]|\[\/html\]/i","",$mixed_code);
$phpmark1=”/?”; #可以采取两种书写方式 /? phpcode ?/ 或者 [php] phpcode [/php]
$phpmark1end=”?/”;
$phpmark2=”[php]”;
$phpmark2end=”[/php]”;
$phpmark= (stripos($mixed_code,$phpmark1,0) ? $phpmark1:$phpmark2);
$phpmarkend = ( stripos($mixed_code,$phpmark1,0) ? $phpmark1end:$phpmark2end ) ;
$phpmarkslen= ( stripos($mixed_code,$phpmark1,0) ? 2:5 );
$phpmarkelen= ( stripos($mixed_code,$phpmark1,0) ? 2:6 );
$mixed_cool=””;
$epos=stripos($mixed_code,$phpmark,$spos);
if($epos!==false)
//有头部HTML?
$html_code=substr($mixed_code,$spos,$epos-$spos);
$mixed_cool.=”echo(‘$html_code’);”;
//获取PHP代码
$spos=$epos+$
$epos=stripos($mixed_code,$phpmarkend,$spos);
if($epos!==false)
$php_code=substr($mixed_code,$spos,$epos-$spos);
$spos=$epos+$
$mixed_cool.=$php_
echo(“error!no php_end_mark.”);
echo($mixed_code);
//有尾部HTML?
$html_code=substr($mixed_code,$spos);
$mixed_cool.=”echo(‘$html_code’);”;
}while($epos!==false);
eval($mixed_cool);
echo($mixed_code);
测试代码:
Cool Thing:&BR&
\$sql="select * from ".DB::table("common_block");
\$query=DB::query(\$sql);
while(\$row=DB::fetch(\$query))
echo("\$row[blockclass]");
Cool Thing Is It?
没有个人说明
2018年六月
11121314151617
18192021222324
252627282930php 设置浏览网页时验证 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 13时,
php&设置浏览网页时验证
代码片段(1)
1.&[代码]php 设置浏览网页时验证&&&&
if (($_SERVER['PHP_AUTH_USER'] != 'specialuser') || ($_SERVER['PHP_AUTH_PW'] != 'secretpassword')) {
header('WWW-Authenticate: Basic Realm="Secret Stash"');
header('HTTP/1.0 401 Unauthorized');
print('You must provide the proper credentials!');
echo 'ok';
开源中国-程序员在线工具:
相关的代码(851)
1回/3263阅
1回/1496阅
0回/1181阅
0回/2036阅
2楼:ACHAW 发表于
多谢分享!!!
3楼:莫问出处丶 发表于
开源从代码分享开始
冥想_的其它代码PHP 页面编码声明方法详解(header或meta)
转载 &更新时间:日 16:47:35 & 作者:
PHP 页面编码声明与用header或meta实现PHP页面编码的区别
php的header来定义一个php页面为utf编码或GBK编码 php页面为utf编码 header("Content-type: text/ charset=utf-8"); php页面为gbk编码 header("Content-type: text/ charset=gb2312"); php页面为big5编码 header("Content-type: text/ charset=big5"); 通常情况以上代码放在php页面的首页 用header或meta实现PHP页面编码的区别一、页面编码 1. 使用 &META http-equiv="content-type" content="text/ charset=xxx"& 标签设置页面编码 这个标签的作用是声明客户端的浏览器用什么字符集编码显示该页面,xxx可以为GB2312,GBK,UTF-8(和MySQL不同,MySQL是 UTF8)等等。因此,大部分页面可以采用这种方式来告诉浏览器显示这个页面的时候采用什么编码,这样才不会造成编码错误而产生乱码。但是有的时候我们会 发现有了这句还是不行,不管xxx是哪一种,浏览器采用的始终都是一种编码,这个情况我后面会谈到。 请注意,&meta&是属于html信息的,仅仅是一个声明,它起作用表明服务器已经把HTML信息传到了浏览器。 2. header("content-type:text/ charset=xxx"); 这个函数header()的作用是把括号里面的信息发到http标头。 如果括号里面的内容为文中所说那样,那作用和&META&标签基本相同,大家对照第一个看发现字符都差不多的。但是不同的是如果有这段 函数,浏览器就会永远采用你所要求的xxx编码,绝对不会不听话,因此这个函数是很有用的。为什么会这样呢?那就得说说HTTPS标头和HTML信息的差 别了: https标头是服务器以HTTP协议传送HTML信息到浏览器前所送出的字串。 因为meta标签是属于html信息的,所以header()发送的内容先到达浏览器,通俗点就是header()的优先级高于meta(不知道可 不可以这样讲)。加入一个php页面既有header("content-type:text/ charset=xxx"),又有&META http-equiv="content-type" content="text/ charset=xxx"&,浏览器就只认前者http标头而不认meta了。当然这个函数只能在php页面内使用。 同样也留有一个问题,为什么前者就绝对起作用,而后者有时候就不行呢?这就是接下来要谈的Apache的原因了。 3. AddDefaultCharset Apache 根目录的 conf 文件夹里,有整个Apache的配置文档httpd.conf。 用文本编辑器打开httpd.conf,第708行(不同版本可能不同)有AddDefaultCharset xxx,xxx为编码名称。这行代码的意思:设置整个服务器内的网页文件https标头里的字符集为你默认的xxx字符集。有这行,就相当于给每个文件都 加了一行header("content-type:text/ charset=xxx")。这下就明白为什么明明meta设置了是utf-8,可浏览器始终采用gb2312的原因。 如果网页里有header("content-type:text/ charset=xxx"),就把默认的字符集改为你设置的字符集,所以这个函数永远有用。如果把AddDefaultCharset xxx前面加个“#”,注释掉这句,而且页面里不含header("content-type…"),那这个时候就轮到meta标签起作用了。 总结: 来个排序 header("content-type:text/ charset=xxx") AddDefaultCharset xxx &META http-equiv="content-type" content="text/ charset=xxx"& 如果你是web程序员,给你的每个页面都加个header("content-type:text/ charset=xxx"),保证它在任何服务器都能正确显示,可移植性强。 至于那句AddDefaultCharset xxx,要不要注释就仁者见仁了。反正我是注释掉了,不过我写页子也要写header(),便于放到服务器上能正常显示。 二、数据库编码 PHP 程序在查询数据库之前,首先执行 mysql_query(“SET NAMES xxxx”);其中 xxxx 是你网页的编码(charset=xxxx),如果网页中 charset=utf8,则 xxxx=utf8,如果网页中 charset=gb2312,则xxxx=gb2312,几乎所有WEB程序,都有一段连接数据库的公共代码,放在一个文件里,在这文件里,加入 mysql_query(“set names”)就可以了。 SET NAMES 显示客户端发送的 SQL 语句中使用什么字符集。因此,SET NAMES 'utf-8'语句告诉服务器“将来从这个客户端传来的信息采用字符集utf-8”。它还为服务器发送回客户端的结果指定了字符集。(例如,如果你使用一 个SELECT语句,它表示列值使用了什么字符集。) PHP页面编码统一 MySQL数据库编码、html页面编码、PHP或html文件本身编码要全部一致。   1、MySQL数据库编码:建立数据库时指定编码(如gbk_chinese_ci),建立数据表、建立字段、插入数据时不要指定编码,会自动继承数据库的编码。 数据库连接时,也有编码,可以在连接完数据库后,执行 mysql_query('SET NAMES gbk');//将gbk换成你的编码,如utf8。   2、html页面的编码,指的是这一行的设置: &meta http-equiv="Content-Type" content="text/ charset=gbk" /&   3、PHP或html文件本身的编码:用editplus打开php文件或html文件,另存时,选择的编码,如果数据库和页面编码是gbk,则这儿的编码选择ansi;如果数据库和页面编码是utf-8,则这儿也选择utf-8。   4、另外要注意的是,Javascript或Flash中传递的数据是utf-8编码,如果数据库和页面编码是gbk,要进行转码,然后写入数据库。 iconv('utf-8', 'gbk', $content); 5、在PHP程序中,可以加上一行,来指定PHP源程序的编码: header('Content-type: text/ charset=gbk');
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 php获取网页源代码 的文章

 

随机推荐