apache虚拟主机配置
apache虚拟主机配置ServerAdmin webmaster@example.com ——管理员邮箱(可以随便写一个)DocumentRoot “/home/phpok-com” ——网站目录ServerName example.com —— 要绑定的域名ServerAlias www.example.com ——要绑定的别名,如果有多个别名就用英文逗号隔开CustomLog logs/example.com_custom_log——用户日志格式(这一行也可以为空)ErrorLog logs/example.com_error_log ——错误日志(也可以为空)
步骤:1,修改httpd.conf把#Include conf/extra/httpd-vhosts.conf前面的#去掉,意思是让httpd.conf文件包 ...
密码函数
常用密码函数,加密,解密
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183<?php/** * 验证密码 * * @param string $plain ...
Ajax缓存解决办法
Ajax缓存解决办法
转载一篇文章,在做聊天室的过程中困惑我很久的一个问题.呵呵,太感谢作者了.原文如下:
项目有时要用一些Ajax的效果,因为比较简单,也就没有去用什么Ajax.net之类的东西,手写代码也就实现了。、
第二天,有人向我报告错误;说是只有第一次读取的值正常,后面的值都不正常;我调试了一下 ,确实有这样的问题,查出是因为AJAX缓存的问题:解决办法有如下几种:
1、在服务端加 header(“Cache-Control: no-cache, must-revalidate”);(如php中)
2、在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“If-Modified-Since”,”0”);
3、在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“Cache-Control”,”no-cache”);
4、在 Ajax 的 URL 参数后加上 “?fresh=” + Math.random(); //当然这里参数 fresh 可以任意取了
5、第五种方法和第四种类似,在 U ...
一种PHP文件加密的破解
一种php文件加密方法的破解
文件加密方式,变量混淆+字符串加密 文件原始内容 :文件加密方式,变量混淆+字符串加密文件原始内容 :
123456789101112131415$OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72'); $OO00O0000=164;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5}; $OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16}; $OOO0000O0.=$OOO0000O0{3}.$OOO000000{11 ...
PHP的命名空间
PHP的命名空间PHP的命名空间(namespace)是php5.3之后才有的。这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的。为什么php中要使用namespace?
假设如果不使用namespace,那么每个类在一个项目中的名字就必须是固定的。因为php在new的时候不管是调用autoload还是调用已加载过的类,都存在一个类名对应的文件。所以在没有namespace的时候,我们会想各种命名规则来区分不同的类,比如project1_school1_class1_Student或者project2_school_class_Student。
引入namespace之后就可以将这个有效规避了,一个namespace就相当于对应一个文件路径,查找这个类的时候,就会去对应的文件路径查找类定义文件了。namespace的定义和使用
定义12345678910namespace Myproject; //或者namespace Myproject {}; //使用: use Myproject/School; use Myproject ...
检测是否手机浏览
php自定义函数,判定是否是使用手机浏览网站
1234567891011121314151617181920212223242526272829303132333435363738394041424344/** * 判断是否为手机浏览 * * @access static * @return bool */function isMobile(){ // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) { return true; } //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 if (isset ($_SERVER['HTTP_VIA'])) { //找不到为flase,否则为true return stristr($_SERVER['HTTP_VIA'], "wap") ...
读取POST请求的主体
问题:想直接访问post请求的主体,而不仅是使用PHP解析之后放在$_POST中的数据例如,想处理一个web服务请求发送过来的xml文档
方案:从php://input流中读取
123$body = file_get_contents('php//input');
如果只需要访问提交的表单变量,使用自动全局数组$_POST会更合适,如果想得到一个更大的请求主体,可以通过fread()为块为单位进行读取
如果配置指令always_populate_raw_post_data设置为on,那么原始的post数据也会被保存到全局变量$HTTP_RAW_POST_DATA中
php://input流的文档
PHP获取IP地址,及地址的地理位置
获取用户ip地址,获取IP地址所在的地理位置
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970<?php/** * 获取ip地址 */function getIPAddress() { if (isset($_SERVER)) { if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; }else if (isset($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; ...
php检测不同的浏览器
问题:想基于用户所用浏览器的能力生成相应的内容
方案:更加get_browser()返回的对象来判断浏览器的能力
get_browser() 函数返回用户浏览器的性能。该函数通过查阅用户的 browscap.ini 文件,来测定用户浏览器的性能。若成功,则该函数返回包含用户浏览器信息的一个对象或一个数组,若失败,则返回 false。
get_browser(user_agent,return_array)user_agent:可选。规定 HTTP 用户代理的名称。默认是 $HTTP_USER_AGENT 的值。您可以通过设置 NULL 绕过该参数。return_array:可选。如果该参数设置为 true,本函数会返回一个数组而不是对象。
12345<?phpecho $_SERVER['HTTP_USER_AGENT'] . "<br /><br />";$browser = get_browser(null,true);print_r($browser);?>
get_browser()函数会检测环境变量 ...