-
登录远程主机或者打开FTP连接工具
-
打开网站所在目录,找到以下文件 /uc_server/model 中找到admin.php
-
打开 /uc_server/model/admin.php这个文件
-
找到代码function adminbase() { parent::__construct(); this->cookie_status = 0; sid = this->cookie_status ? getgpc(‘sid’, ‘C’) :rawurlencode(getgpc(‘sid’, ‘R’)); this->sid = this->view->sid =this->sid_decode(sid) ?sid : ”;
-
将此部分代码 this->cookie_status = 0; 修改为 this->cookie_status = isset($_COOKIE[‘sid’]) ? 1 : 0;
-
代码修改完后的完整信息
function adminbase() { parent::__construct(); this->cookie_status = isset(_COOKIE[‘sid’]) ? 1 : 0; sid =this->cookie_status ? getgpc(‘sid’, ‘C’) :rawurlencode(getgpc(‘sid’, ‘R’)); this->sid =this->view->sid = this->sid_decode(sid) ? $sid : ”;
-
保存文件,登录后台更新网站即可
php及xdebug使用小结
php下搭配使用xdebug是十分好的组合,用于php的调试工作,下面分别介绍之:
1 WINDOWS下的安装
下载站点http://www.xdebug.org/
要确定使用一个跟你的PHP配合的版本才行,比如xdebug中的5。2系列版本是跟5.2
的php搭配的,5.3系列的跟5.3的PHP搭配的。目前的版本是2。1,然后你会发现
有相应的线程安全和非安全两个版本。如何知道下载哪个版本呢,可以将你跑
PHPINFO时的显示出来网页的源代码,COPY到
http://www.xdebug.org/find-binary.php中,然后提交,然后XDEBUG为告诉你
应该下载哪个版本了
将下载的文件放到d:\php\ext目录,重命名为php_xdebug.dll。
然后修改PHP。INI如下:
[Xdebug]
zend_extension=”D:\php\ext\php_xdebug.dll”
xdebug.profiler_output_dir=”D:\php53\xdebug”
xdebug.profiler_enable=On
xdebug.profiler_enable_trigger=1
xdebug.default_enable=On
xdebug.show_exception_trace=On
xdebug.show_local_vars=1
xdebug.max_nesting_level=50
xdebug.var_display_max_depth=6
xdebug.dump_once=On
xdebug.dump_globals=On
xdebug.dump_undefined=On
xdebug.dump.REQUEST=*
xdebug.dump.SERVER=REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT
xdebug.trace_output_dir=”D:\php53\xdebug”
注意要建立一个xdebug目录放调试输出的文件。
重新启动apache,在phpinfo中就可以看到有关XDEBUG的部分了
2 LINUX下的安装
tar -xzf xdebug-2.0.0RC3.gz
cd xdebug-2.0.0RC3
/usr/local/php/bin/phpize
./configure –enable-xdebug
cp modules/xdebug.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/
注:/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/不同的PHP版本路径不同,也不一定要放在该路径,可以在zend_extension_ts中自行指定xdebug.so所在位置。
3 使用,可以写个简单程序去看效果,比如:
php 模仿蜘蛛抓取内容并分析
header(“Content-Type:text/html;charset=gbk”);
message=_POST[‘message’];
contents = @file_get_contents(“message”);
if(contents==”Forbidden”){ch = curl_init();
timeout = 5;
curl_setopt (ch, CURLOPT_URL, “message”);
curl_setopt (ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt (ch, CURLOPT_USERAGENT, “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)”);
curl_setopt (ch, CURLOPT_CONNECTTIMEOUT, timeout);contents = curl_exec(ch);
curl_close(ch);
}
preg_match_all(“/<title(.*?)</title>/is”,contents,title);
preg_match_all(“/<meta(.*?)>/is”,contents,meta);
preg_match_all(“/<body(.*?)body>/is”,contents,body);
echo ‘title:’.strip_tags(title[0][0]).'<br><br>’;
for(i=0;i<count(meta[0]);i++){
if(preg_match(“/keywords/i”,meta[0][i])){
preg_match_all(“/content=”(.*?)”/is”,meta[0][i],keywords);
}
if(preg_match(“/description/i”,meta[0][i])){
preg_match_all(“/content=”(.*?)”/is”,meta[0][i],description);
}
}
echo ‘keywords:’.strip_tags(keywords[1][0]).'<br><br>’;
echo ‘description:’.strip_tags(description[1][0]).'<br><br>’;
echo ‘body:’.strip_tags(body[0][0]);
?>
ThinkPHP 3.2.3 bug 列表(2015-1-15)
下载TP 3.2.3,将本地的TP3.2.2升级。发现一些仍未修复和新的bug(欢迎交流,如需转载,请著名来自 default.fu@foxmail.com):
1)文件 ThinkPHP/Library/Behavior/TokenBuildBehavior.class.php 第47行:
原代码:tokenValue = tokenType(microtime(TRUE)) ;
应改为:tokenValue = is_callable(tokenType) ? $tokenType(microtime(TRUE)) : md5(microtime(TRUE));
否则会:执行报错!
2)文件:ThinkPHP/Library/Think/Upload/Driver/Bcs/requestcore.class.php 开头:
应该将开头的如下3行 namespace 注释掉,否则会报错重复定义!
- use Think\Upload\Driver\Bcs\BCS_RequestCore;
- use Think\Upload\Driver\Bcs\BCS_ResponseCore;
- use THink\Upload\Driver\Bcs\BCS_RequestCore_Exception;
3)文件:ThinkPHP/Library/Behavior/WriteHtmlCacheBehavior.class.php 应该将 只允HTTP头为 2xx 的时候才保存本地缓存
1筛选条件文件名不为空
2且HTTP头为2xx
应该改为如下:
- namespace Behavior;
- use Think\Storage;
- /**
- * 系统行为扩展:静态缓存写入
- */
- class WriteHtmlCacheBehavior
- {
- // 行为扩展的执行入口必须是run
- public function run(&$content)
- {
- //2014-11-28 修改 如果有HTTP 4xx 3xx 5xx 头部,禁止存储
- //2014-12-1 修改 对注入的网址 防止生成,例如 /game/lst/SortType/hot/-e8-90-8c-e5-85-94-e7-88-b1-e6-b6-88-e9-99-a4/-e8-bf-9b-e5-87-bb-e7-9a-84-e9-83-a8-e8-90-bd/-e9-a3-8e-e4-ba-91-e5-a4-a9-e4-b8-8b/index.shtml
- if (C(‘HTML_CACHE_ON’) && defined(‘HTML_FILE_NAME’)
- && !preg_match(‘/Status.*[345]{1}\d{2}/i’, implode(‘ ‘, headers_list()))
- && !preg_match(‘/(-[a-z0-9]{2}){3,}/i’,HTML_FILE_NAME)
- ) {
- //静态文件写入
- Storage::put(HTML_FILE_NAME, $content, ‘html’);
- }
- }
- }
4)文件:ThinkPHP/Library/Think/Storage/Driver/File.class.php 第45行:
原代码:mkdir($dir,0755,true);
应改为:mkdir($dir,0777,true);
否则会:在部分主机比如WIN VPS下会出现写入权限问题,写入失败。
原创by default.fu@foxmail.com
ThinkPHP使用技巧
1、让Runtime下的文件格式化:入口文件处:define(‘STRIP_RUNTIME_SPACE’,false);
{include file=”Public/header.html”}的话,那么header.html要放在Tpl下的Public文件夹下。
<if condition=”$_SESSION[‘disEdit’] eq 1″> 这个是可以的 |
24、分组模式配置:
因在开发中需要经常修改,从而要经常删除缓存,才能看到效果。 所以为了开发的方便,可以把缓存给去除。 1.找到\ThinkPHP\Common\convention.php和\ThinkPHP\Common\debug.php 2.打开这两个文件找到你想要的设置即可。 debug.php中 ‘TMPL_CACHE_ON’=>false, // 默认开启模板缓存 convention.php中’ TMPL_CACHE_ON’ => false, // 默认开启模板编译缓存 false 的话每次都重新编译模板 ‘ACTION_CACHE_ON’ => false, // 默认关闭Action 缓存 ‘HTML_CACHE_ON’ => false, // 默认关闭静态缓存 |
27、中文字符长度截取:{$vo[‘title’]|mb_substr=###,0,16,’UTF-8′},这是支持中文的,很好用。
如何解决DISCUZ! X3.1 通知翻页BUG问题
最近无忧主机小编遇一个discuz论坛的小bug,在运营DiscuzX3.1论坛的时候你会发现,是不是通知里面的帖子、点评、活动、悬赏、商品、提到我的、系统提醒里的翻页都是翻着就去了帖子里的对应页了?如果是正常的翻页的话,点击下一页还是这个栏目的内容而不是跳到帖子的内容页。这个问题是点击下一页的判断事件没有做好,所以只要增加对应的类型判断就可以解决这个问题啦!下面操作需要改代码,请大家做好文件备份:
需要修改文件路径:include/space/space_notice.php
需要修改的文件:space_notice.php
操作步骤:
1.把网站空间上面的space_notice.php文件通过FTP工具下载到本地,用高级记事本编辑修改,主要是防范文件编码格式问题;
2.打开文件后,找到代码:
multi = multi(count, perpage,page, “home.php?mod=space&do=do&isread=1″);
修改为:pageurls = “home.php?mod=space&do=do&view=view”;
if(!empty(type)){pageurls .= “&type=type”;
}multi = multi(count,perpage, page,pageurls);
3.代码修改完了以后,保存文件,上传到空间的指定目录下面,Discuz后台更新缓存即可。这里就是是定义了$pageurls类型属性,下面的if就是对这个类型进行判断,最后再调用即可解决这个问题了。
来源网站:http://www.51php.com/discuz/17497.html
Apache支持shtml实现include文件解析的配置方法
1. 确认加载include.so模块,将注释去掉:
LoadModule include_module libexec/apache2/mod_include.so
2. AddType部分去掉这两段注释:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
3. Directory目录权限里面找到
Options Indexes FollowSymLinks
增加Includes修改为:
Options Indexes FollowSymLinks Includes
4. 重新启动Apache,测试:
<!–#include file=”head.html”–>
Holle Word!,这是中间的内容
<!–#include file=”foot.html”–>
以下是其它网友的补充:
什么是SSI?
SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。
如何使你的Apache服务器支持SSI?
Apache默认是不支持SSI的,需要我们更改httpd.conf来进行配置。我这里以windows平台的Apache 2.0.x为例,打开conf目录下的httpd.conf文件,搜索“AddType text/html .shtml”,搜索结果:
# AddOutputFilter INCLUDES .shtml
把这两行前面的#去掉。
然后搜索“Options Indexes FollowSymLinks”
在搜索到的那一行后面添加“ Includes”
即将该行改变为 Options Indexes FollowSymLinks Includes
保存httpd.conf,重起apache即可。
到此我们就完成了对Apache SSI的设置。
ThinkPHP实现静态缓存和动态缓存
利用ThinkPHP既可以很容易实现页面静态化(静态缓存),又可以很容易实现动态缓存(文件缓存和memecache缓存等)
方法/步骤
-
弄清静态缓存和动态缓存的用途:
静态缓存:生成静态页面——缓存的是整个页面;
动态缓存:仅对数据库中的数据进行了缓存,即“通过动态缓存,不需要再读取数据库了,直接通过缓存文件来调取相应数据”;
-
第二步:静态缓存的实现,在config.php文件中作如下配置:
-
动态缓存的实现方式“文件缓存”(默认方式):
ThinkPHP的S()函数将“从数据库中获得的数据”缓存到“文件”中;
//S(‘缓存名称’,’缓存数据’,’缓存时间’)—缓存文件默认保存到“Runtime/Temp/”文件夹
存数据:S(‘index_list’,list,10); //list:是从数据库中读取的数据
读数据:S(‘index_list’); //直接从缓存文件读取,不再经过数据库
-
动态缓存的实现方式“memecache缓存”,需先安装Memcached
-
再开启memecache缓存,在config.php中作如下配置
-
其次通过S()函数实现“memecache缓存”:
ThinkPHP的S()函数将“从数据库中获得的数据”缓存到“内存”中;
存数据:S(‘index_list’,$list,10);
读数据:S(‘index_list’)
-
至此,你可以利用ThinkPHP实现静态缓存和动态缓存了
END
php转换\\u(UNICODE)字符串为汉字
<?php
test = ‘\u53c2\u8d5b\u56e2\u961f\u65b9\u6848\u540d\u79f0’; //庆重庆temp = explode(‘\u’,test); //拆分成数组rslt = array(); //保存结果的数组
array_shift(temp); //去掉第一个不含数据的
foreach(temp as k =>v) {
v = hexdec(v); //将16进制转换成十进制
rslt[] = ‘&#’ .v . ‘;’; //转换成html实体
}
rslt = implode(”,rslt); //组合结果数组成字符串
echo $rslt;
?>
Ajax+jQuery: $.post() 与 Access-Control-Allow-Origin.
写了个json数据接口,为了方便调试,html和js部分就直接在本地用浏览器打开调试
结果提示这个错误
XMLHttpRequest cannot load Origin “xxx” is not allowed by Access-Control-Allow-Origin.
查过是js的安全机制有关,默认不允许跨域调用
解决方法(PHP版)
在接口源码内声明
header(‘Access-Control-Allow-Origin: *’); //只允许特定的而另一个域名访问,把*替换成特定被允许的域名
或者..把html文件上传到服务器上。