PHP方法总结

编程时间长了,大家见过很多函数功能吧,比如获取用户IP等等,现在我将常用的PHP函数做个总结,方便大家COPY和使用。 <?php //获取用户IP function getIp() { $ip = ""; if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknow')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif (getenv('REMOTE_ADD') && strcasecmp(getenv('REMOTE_ADD'), 'unknow')) { $ip = getenv('REMOTE_ADD'); } elseif (isset($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknow')) { $ip = $_SERVER['REMOTE_ADDR']; } return $ip; } //快速替换字符串 //$arrayName = array('h'=>'s','o'=>'t','l'=>'xx'); //echo strsReplace('hello',$arrayName); function strsReplace($str, $replaces) { $subject=$str; foreach ($replaces as $k => $v) $subject = str_replace($k, $v, $subject); return $subject; } //规范文件名 //$filename='"<>/\\\asda/.,psd|"'; //echo tripFilename($filename); function tripFilename($filename) { //$s=array("/","\\","?...

April 10, 2014 · 4 min · Me

彻底解决WP中文标签404错误

找到网站个目录下文件夹:wp-include文件夹下的class-wp.php,定位此代码段(V3.6在144行) 老高温馨提示:使用本教程前请备份数据库及相关文件if ( isset($_SERVER['PATH_INFO']) ) $pathinfo = $_SERVER['PATH_INFO']; else $pathinfo = ''; $pathinfo_array = explode('?', $pathinfo); $pathinfo = str_replace("%", "%25", $pathinfo_array[0]); $req_uri = $_SERVER['REQUEST_URI']; 修改为 if ( isset($_SERVER['PATH_INFO']) ) $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK"); else $pathinfo = ''; $pathinfo_array = explode('?', $pathinfo); $pathinfo = str_replace("%", "%25", $pathinfo_array[0]); $req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK"); 至此,wordpress已经学会读中文了。 还有一种解决方式,即给每一个标签都设置一个英文别名,这样设置的标签还是不能使用中文,可以使用下面的代码将所有的标签格式化: <?php header("Content-type: text/html; charset=utf-8"); // 修改:LAOGAO https://blog.phpgao.com/ define('MYSQL_HOSTNAME', 'localhost'); define('MYSQL_USERNAME', 'yourusername'); define('MYSQL_PASSWORD', 'yourpassword'); define('MYSQL_DATABASE', 'yourdatabase'); define('MYSQL_TABLEPRE', 'wp_'); // 表前缀 error_reporting(E_ALL); ini_set('display_errors', 'On'); $link = mysql_connect(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD); if (!...

March 19, 2014 · 1 min · Me

PHP教程

最近在线教程如雨后春笋,现在我把我看过的PHP教程分享给大家 韩顺平 PHP入门到精通 燕十八 PHP高手之路 参考文档 链接: http://pan.baidu.com/s/1kTgcxHP 密码: x00l

March 13, 2014 · 1 min · Me

使用debug_backtrace()做PHP调试

问题? 今天迁站的时候PHP突然报错: is_readable() [function.is-readable]: open_basedir restriction in effect. File(D:\phpnow\vhosts\wordpress.com/wp-content/plugins/D:\phpnow\vhosts\wordpress.com\wp-content\plugins\crayon-syntax-highlighter/trans/crayon-syntax-highlighter-zh_CN.mo) is not within the allowed path(s): (D:\phpnow\vhosts\wordpress.com;C:\Windows\Temp;) in D:\phpnow\vhosts\wordpress.com\wp-includes\l10n.php on line 339 好吧,看来是crayon-syntax-highlighter插件出错了,下面我们就一起找找出错的地方吧。 如何解决 确定出错地点 根据出错提示我们找到了 D:\phpnow\vhosts\wordpress.com\wp-includes\l10n.php的第339行,代码如下: if ( !is_readable( $mofile ) ) return false; 这个$mofile哪里来的呢?把整个函数贴出来找找看! function load_textdomain( $domain, $mofile ) { global $l10n; $plugin_override = apply_filters( 'override_load_textdomain', false, $domain, $mofile ); if ( true == $plugin_override ) { return true; } do_action( 'load_textdomain', $domain, $mofile ); $mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain ); if ( !...

March 11, 2014 · 2 min · Me

PHP经典函数收集

PHP经典函数 sys_getloadavg() 这个函数返回当前系统的负载均值信息(当然 Windows 下不适用),详细文档可以翻阅 PHP的相关文档。文档中有段示例代码,基本上也就能看出它的用途了。 $load = sys_getloadavg(); if ($load[0] > 80) { header('HTTP/1.1 503 Too busy, try again later'); die('Server too busy. Please try again later.'); } //PS,如果“很不幸”你的 PHP 环境中没有这个函数,可以考虑使用下面这段代码 if (!function_exists('sys_getloadavg')) { function sys_getloadavg() { $loadavg_file = '/proc/loadavg'; if (file_exists($loadavg_file)) { return explode(chr(32),file_get_contents($loadavg_file)); } return array(0,0,0); } } debug_backtrace兄弟 使用请参考使用debug_backtrace()做PHP调试 get_browser() 该方法参考一个名叫browscap.ini的文件,该文件收录了各种浏览器信息,通过比对实现查找客户浏览器的功能。 两个使用方法: 1.下载最新的browscap.ini,放入PHP的安装目录或者C:\Windows文件夹下 下载地址 2.在PHP.INI文件中加入以下配置 [browscap] ;https://blog.phpgao.com/classic_code/ browscap = php_browscap.ini 3.使用代码如下 http://www.phpgao.com</a> print_r($browser); 返回结果如下...

March 10, 2014 · 2 min · Me

网站无法选择和复制文字

有些网站真是可恶,把右键屏蔽了不给复制,这样还不行(因为可以使用快捷键CTRL+C复制) 他们竟然不让我们选择文字。。。这样下来我们既不能复制,连源代码都不能看了。是可忍孰不可忍,既然这样,那我就不客气了! 找到病根是关键 原来是JS捣的鬼 纯html是无法实现屏蔽右键等功能的,所以很简单就能想到是js的问题,那么我们就找找到底是那些代码段使得我们无法使用邮件功能呢? 既然右键被禁止了,那我们如何才能看到网页的源代码呢? 其实很简单,PHP@老高建议你使用chrome浏览器打开你想要破解的网站,使用快捷键CTRL+U即可轻易查看网页的源代码!怎么样,很简单吧? 好了既然我们已经找到源代码,那就开始找那个害人的代码段吧! 代码一 这个是比较难找的代码,一般隐藏在网页的头部或者藏在某些引用的js文件中 <SCRIPT language=javascript type=text/javascript> <!-- document.oncontextmenu=new Function('event.returnValue=false;');//屏蔽右键 document.onselectstart=new Function('event.returnValue=false;');//屏蔽选择 --> </SCRIPT> 代码二 这个比较容易找到,直接找到标签,之后就是此句,与代码一异曲同工 <body oncontextmenu="self.event.returnValue=false" onselectstart="return false"> 解决方法 IE浏览器 使用IE的童鞋可以试试在浏览器的地址栏输入 javascript:alert(document.oncontextmenu=document.onselectstart="OK") 或者 javascript:alert(document.body.oncontextmenu=document.body.onselectstart="OK") 之后弹出对话框,点击确认即可!现在点击右键或者选择文字试试,是不是已经被破解了? 请注意!该方法可能已经失效,因为新一代浏览器对安全性有了很大的提高,所以在地址栏输入脚本可能会被禁止! 接下来就是将他删除掉即可: 在代码上点击右键:选择第二项Edit Attribute,将其属性删除,结果代码变成这样: 不用怀疑了,刚才限制的功能已经恢复啦! 其他浏览器 以chrome为例 首先,在被屏蔽的网站上点击F12,出现了如下图所示代码(注:老高@PHPer使用的是chrome v30,不同版本的界面留有不同) 当然,您的火眼金睛可能立即发现了蓝色标记的一行代码 <body oncontextmenu=”self.event.returnValue=false” onselectstart=”return false”> 接下来就是将他删除掉即可: 在代码上点击右键:选择第二项Edit Attribute,将其属性删除,不用怀疑了,限制的功能已经恢复啦! 终极方法 在浏览器中将以下代码存为书签,名为解锁,在被禁网址中点击一下解锁,即可解开~ javascript:(function() { function R(a){ona = "on"+a; if(window.addEventListener) window.addEventListener(a, function (e) { for(var n=e.originalTarget; n; n=n....

March 7, 2014 · 1 min · Me

开启phpMyAdmin的远程登录

phpMyAdmin一般只能本地登录,即地址为localhost,如果想管理如192.168.1.254(非本机IP)的mysql应该如何做到呢?其实很简单,phpMyAdmin已经实现,但是默认并没有开启此功能。 3步搞定 在phpMyAdmin目录下libraries目录中config.default.php文件并打开 找到此选项$cfg['AllowArbitraryServer'] = false; 将false改为true 补充: 如果登录的是本地服务器,那么登录的时候可以把服务器一栏留空。

March 5, 2014 · 1 min · Me

开发中经常用到的代码

[TOC] 短链接 http://surl.sinaapp.com/引入百度CDN公共库 地址:http://t.cn/zYDC8wj引入文件 <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script src="http://libs.baidu.com/bootstrap/2.0.4/js/bootstrap.min.js"></script> <link href="http://libs.baidu.com/bootstrap/2.0.4/css/bootstrap.min.css" rel="stylesheet"> <script src="http://libs.baidu.com/jquerytools/1.2.7/jquery.tools.min.js"></script> PHP //申明页面编码开启session并设置时区 session_start(); header("Content-Type: text/html; charset=UTF-8"); ini_set('date.timezone','Asia/Shanghai'); // //windows下这个页面执行时间还是在php.ini里控制,修改max_execution_time。 set_time_limit(0); //获取变量的整数值 intval('adasdasd'); //heredoc==双引号 $name=MyName; echo <<<EOT My name is "$name". I am printing some $foo->foo. Now, I am printing some {$foo->bar[1]}. This should print a capital 'A': \x41 EOT; /* 以上例程会输出: My name is "MyName". I am printing some Foo. Now, I am printing some Bar2. This should print a capital 'A': A */ //Nowdoc==单引号 echo <<<'EOT' My name is "$name"....

March 3, 2014 · 4 min · Me

PHP_cURL初始化和执行方法

这个是采集基础,最好熟悉一下 $ch = curl_init(); # 设定url和把结果返回,是否返回头部 curl_setopt($ch, CURLOPT_URL, 'http://www.baidu.com/'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($this->ch, CURLOPT_HEADER, 1); # cookie文件设定 curl_setopt($this->ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($this->ch, CURLOPT_COOKIEFILE, $cookie_file); # 额外头部 curl_setopt($this->ch, CURLOPT_HTTPHEADER, array('User-Agent: Mozilla/5.0')); # 设定post curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $poststring); # 连接、执行过期时间 curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($this->ch, CURLOPT_TIMEOUT, 30); # 是否跟随301 302 curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($this->ch, CURLOPT_MAXREDIRS, 10); # refer curl_setopt($this->ch, CURLOPT_REFERER, $refer); # http版本和端口重用设置 curl_setopt($this->ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($this->ch, CURLOPT_FORBID_REUSE, 1); # 支持https curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0); # 如果需要进行毫秒超时,需要增加: curl_setopt($this->ch, CURLOPT_NOSIGNAL, 1); # 执行 $response = curl_exec($ch); if(curl_errno($ch)){ curl_error($ch); exit(); } curl_close($ch);

March 2, 2014 · 1 min · Me

jQuery平滑分栏标签切换特效

此代码简洁明了,层次清晰,有不错的兼容性,很适合作为企业首页的图片轮播! 实例在这: http://www.gayadesign.com/scripts/tabbed/原理很简单: 使用TabbedContent.init()检测鼠标是否mouseover,然后调用slideContent滚动下面的内容! <span style="color: #ff0000;">(注意类名的使用,可以在js文件中更改!)</span> 下载链接:...

March 1, 2014 · 1 min · Me