本来没想在mac上搭建开发环境,但是我搜索php安装的时候。发现有mac安装就看一下麻不麻烦。然后发现自带php5,并且自带Apache,卧槽那还用啥虚拟机。
安装方法和官网还是有出入的。我大体看了一下配置,没有盲目修改。
sudo vim /private/etc/apache2/httpd.conf
将LoadModule php5_module libexec/apache2/libphp5.so注释去掉。另一个,没搜到。
Include /private/etc/apache2/other/*.conf这个里边有个php5 的conf,将下边的也插入进去了,所以不用添加。
项目的根目录是/Library/WebServer/Documents.
插入个<?php phpinfo(); ?>,成功。
重启apache, sudo apachectl restart
rewrite_module模块开启
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
AllowOverride All
Read more...
Archive for php
php跨库复制备份表
需要定时把一些数据表备份,并做数据统计。
Read more...
$dates=date('Ymd',time());
//player表的备份
$newtable = "PlayerLog" . $dates;
$sql = "CREATE TABLE ".$newtable." LIKE game_qd.Player";
$linelist = $logdb->exec($sql);
print_r($linelist);
echo "\n\r\n";
$sql2 = "INSERT INTO ".$newtable." SELECT * FROM game_qd.Player";
$linelist = $logdb->exec($sql2);
print_r($linelist);
echo "\n\r\n player done";
,主要的代码就两行。
还学会了left join的用法,当时没想到,是解决了判断一个备份表里有,另一个备份表里没有是计算差值时的问题。
$sql7 = "select a.PlayerID,a.Score,(a.Score-IFNULL(b.Score , 0)) as Scorecha from ".$formtable." as a left join ".$endtable." as b on a.PlayerID=b.PlayerID order BY Scorecha desc,Score desc limit ".$limitnum;
.
十一假期荒废了,只学了个thinkphp
十一假期这么长,本想着前段时间没有学习,这里给补上。半路接了个网站,要用php开发,寻思着学个框架吧,开发还快速,选择了貌似中国最好的php框架,边看thinkphp官网的文档,然后到论坛下载了一个blog,就开工了。文档很详细,学起来也简单,偷懒中写完了。1000rmb到手了。顺便用到PHP-ExcelReader,一起学习了
这样其实也不错,可以很快的将学到的东西用到实践中去,以后用php快速开发可以用thinkphp的这个框架了^_^。
本想着假期接着学习golang和erlang的,现在泡汤了。抽时间一点一点的看实在是不符合我的性格,像我看小说,不看则已,一看就必须看完它。
Read more...
wamp搭建环境不能ip访问的解决办法
apache在本机上访问正常,但是用ip访问为403禁止访问!
apache配置文件修改:
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride all
#
# Controls who can get stuff from this server.
#
# onlineoffline tag - don't remove
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from 127.0.0.1修改为Allow from all,没有查文档,搜索解决。
Read more...
PHP5 PDO使用
在wamp下的开发环境,查找资料有两种方法。使用query,使用prepare。看的代码是第二种,网上说第二种效率高,并且安全。
总结使用方法:
Read more...
$sth = $dbh->prepare('update db set zh_CN= :str where SN=:SN');
$sth->bindParam(':str',$str,PDO::PARAM_STR,12);
$sth->bindParam(':SN',$SN);
$sth->execute();
$sth->lastInsertId();
$sth->closeCursor();
源代码使用bindValue(),lastInsertId()返回id。
centos安装初体验,搭建apache-php-mysql
安装时没有安装桌面环境。
1.查看centos系统版本:命令lbs_release -a
2.mysql配置。
mysql从安装光盘中选择安装的。版本是5.0.77
修改/etc/my.cnf文件
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set=utf8 增加
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql] 增加
default-character-set=utf8 增加
没有密码登录时使用命令:mysql -u root
启动mysql服务:/etc/rc.d/init.d/mysqld start
设置密码
/usr/bin/mysqladmin -u root password '123456'
3.安装Apahce
# yum -y install httpd php php-mysql
安装php的扩展
#yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc
安装apache扩展
#yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
chkconfig httpd on [设置apache为自启动]
service httpd start [启动 httpd 服务]
apache配置出来的默认站点目录为/var/www/html/
4.测试
# vi /var/www/html/info.php
<?php
phpinfo();
?>
命令行下输入:firefox,打开浏览器。输入http://127.0.0.1,可以显示欢迎界面,加上info.php,可以显示php的环境信息。
Read more...
十个PHP高级应用技巧
收藏学习
PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成 HTML标记的CGI要高许多。下面介绍了十个PHP高级应用技巧。
1, 使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里。
这种方法把存储空间降到了接近四分之一(char(15) 的 15 个字节对整形的 4 个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点)。
2, 在验证 email 地址的时候使用 checkdnsrr() 函数验证域名是否存在。
这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数,这个函数基于 checkdnsrr(),用来验证 email 地址的合法性。对于那些认为自己的 email 地址是 [url=mailto:“joeuser@wwwphp.net]“joeuser@wwwphp.net[/url]” 而不是 [url=mailto:“joeuser@php.net]“joeuser@php.net[/url]” 的家伙们,这个方法可以很方便的抓住他们。
3, 如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本,考虑抛弃 mysql_* 系列函数改用改进版的 mysqli_* 系列函数。
一个很好的功能就是你可以使用预处理语句,如果你在维护一个数据库密集型站点,这个功能能够加快查询速度。一些评估分数。
4, 学会爱上三元运算符。
5, 如果你在项目中感觉到有可复用的部分,在你写下一行代码前先看看 PEAR 中是否已经有了。
很多 PHP 程序员都知道 PEAR 是一个很好的资源库,虽然还有很多程序员不知道。这个在线资源库包含了超过 400 个可以复用的程序片段,这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的,你总能找到帮你节省时间的 PEAR 包。(参见 PECL)
6, 用 highlight_file() 来自动的打印出格式化的很漂亮的源代码。
如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话,这个函数用起来非常的顺手。当然了,要小心不要意外的泄露出你的数据库连接信息和密码等。
7, 使用 error_reporting(0) 函数来防止用户看到潜在的敏感错误信息。
在理想情况下,发布服务器应该在 php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话,你没有自己的 php.ini 文件,那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。这就能够在出错的时候完全屏蔽敏感的 SQL 查询语句和路径名。
8, 在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress() 来显式的压缩/解压字符串。
这个 PHP 内置函数使用 gzip 算法,可以压缩普通文本达 90%。在我每次要读写 BLOB 类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。
9, 通过“引用”传递参数的方法从一个函数中得到多个返回值。
就像三元运算符一样,大部分受过正式编程训练的程序员都知道这个技巧。但是那些 HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问“在仅能使用一次 return 的情况下,从一个函数里返回多个值?”答案就是在变量前加上一个 “&” 符号,通过“引用”传递而非“值”传递。
10, 完全理解“魔术引号”和 SQL 注入的危险性。
我希望阅读到这里的开发者都已经很对 SQL 注入和了解了。不过我还是把这条列在这里,是因为这个确实有点难以理解。如果你还没有听说过这种说法,那么把今天剩下的时间都用来 Google、阅读吧。
Read more...
pdo_mysql 有端口连接(非3306端口)和持久连接
pdo_mysql 有端口连接(非3306端口)和持久连接
Read more...
true);
$db = new PDO ('mysql:host=localhost;port=3307;dbname=testdb',$user,$pwd,$opt);
pdo_mysql 有端口连接(非3306端口)和持久连接
利用“PHP彩蛋”进行敏感信息获取
关于“PHP彩蛋”的说法也许很多老PHPer已经都知道或听说了,好像是早在PHP4版本的时候就有彩蛋了,挺好玩儿的,可能近年来逐渐被人们遗忘了,其实彩蛋功能在PHP脚本引擎默认情况下是开启。
http://www.discuz.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
如上4个链接加红色的部分是PHP源码/ext/standard/info.h中定义的GUID值,如下图所示
点击查看原图
关于PHP彩蛋这个玩法已经被国外的某些Web漏洞扫描器(例如:HP WebInspect)所使用了,用其来探测被扫描的网站使用的是何种Web开发语言。其实在渗透测试过程中经常遇见某些网站难以辨别出使用了何种Web开发语言,因为有些网站采用动态脚本生成纯静态HTML页或者是采用URL重写实现伪静态页面,如果网站使用的是PHP开发的话,可以尝试使用彩蛋的探测法,在很多情况下可以一针见血的鉴定出来,因为默认情况下彩蛋的功能在php.ini中是开启的,当然如果不想让别人通过彩蛋的方式来获取网站的敏感信息的话,那就在php.ini中将expose_php = Off即可!
看完上面这些可能有些人会说既然php.ini中的expose_php = On,那么直接抓包看看http头信息不就OK了,可是某些大站点Web服务器的前面都是有反向代理服务器的,所以还不能完全依赖于捕获http头中的信息。
Read more...
PHP 几个测速 执行速度
记录群里:
Read more...
=1;$i--){
$t = $arr[$i];
}
$end = get_microtime();
echo 'for:'. sprintf("%s",($end - $start));
$start = get_microtime();
foreach ($arr as $t){
$f = $arr[$t];
}
$end = get_microtime();
echo '
foreach:'.sprintf("%s",($end - $start));
?>