很多入门的朋友被全局变量搞的很糊涂,可以参考以下的说明:
CODE |
决定是否将 EGPCS(Environment,GET,POST,Cookie,Server)变量注册为全局变量。例如,如果 register_globals = on,那么 URL http://www.example.com/test.php?id=3 将产生 $id。或者从 $_SERVER[‘DOCUMENT_ROOT’] 得来 $DOCUMENT_ROOT。如果不想用户数据把全局域弄乱的话可以将此选项关闭。自 PHP 4.2.0 开始,本指令默认为 off。推荐使用 PHP 的预定义变量来替代,例如超全局变量:$_ENV,$_GET,$_POST,$_COOKIE 和 $_SERVER。 小额借贷系统网站源码怎么使用,ubuntu桌面流畅吗,大型网站爬虫实践,php。document,迈点seolzw |
自己用在计数器中,在linux下日ip8万没有发现清零的现象
CODE |
|
===> Client does not support authentication protocol
好多朋友升级了mysql为4.10以上会发生此错误,php4.x下phpmyadmin之类的程序连接不上数据库,是因为mysql4.10以上改变了用户密码验证协议,php的连接模块也需要更换新的,php5默认就是这种新的连接模块…
不想更换可以这样:
CODE |
# SET PASSWORD FOR ‘some_user’@’some_host’ = OLD_PASSWORD(‘newpwd’); |
官方说明文档:
CODE |
Client does not support authentication protocol shell> mysql To solve this problem, you should use one of the following approaches: Upgrade all client programs to use a 4.1.1 or newer client library. When connecting to the server with a pre-4.1 client program, use an account that still has a pre-4.1-style password. Reset the password to pre-4.1 style for each user that needs to use a pre-4.1 client program. This can be done using the SET PASSWORD statement and the OLD_PASSWORD() function: mysql> SET PASSWORD FOR Alternatively, use UPDATE and FLUSH PRIVILEGES: mysql> UPDATE mysql.user SET Password = OLD_PASSWORD(‘newpwd’) Substitute the password you want to use for “newpwd” in the preceding examples. MySQL cannot tell you what the original password was, so you’ll need to pick a new one. Tell the server to use the older password hashing algorithm: Start mysqld with the –old-passwords option. Assign an old-format password to each account that has had its password updated to the longer 4.1 format. You can identify these accounts with the following query: mysql> SELECT Host, User, Password FROM mysql.user For each account record displayed by the query, use the Host and User values and assign a password using the OLD_PASSWORD() function and either SET PASSWORD or UPDATE, as described earlier. |
===> 如果在数字前面强制加0
格式化数字的位数,未满位的加前导0
CODE |
<?php $num = 12; $var = sprintf("%09d", $num); |
===> 取得当前脚本的路径
请不要用 $_SERVER[‘PHP_SELF’]取路径,$_SERVER[‘PHP_SELF’]取出来的在某些情况下是错误的.也不要用$_SERVER[‘SERVER_NAME’],$_SERVER[‘SERVER_NAME’]取得的主机名不包含端口号,而且有时候取得的是服务器名,非你的虚拟主机名.
脚本路径:
CODE |
地址栏信息:
CODE |
===> url传递参数需要这样编码
与 HTML 实体相匹配的变量。像 &、© 和 £ 都将被浏览器解析,并使用实际实体替代所期待的变量名。解决办法是使用 & 代替 & 作为分隔符。使用 htmlentities(urlencode($data)) 对你的 URL 进行编码。
CODE |
接受页面直接使用,不需要解码.
===> 数据存入MySQL需要注意
入库:
CODE |
出库:
CODE |
===> 返回MySQL数据库上一步 INSERT 操作产生的 ID
mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 link_identifier,则使用上一个打开的连接。
CODE |
===> 如何解决表单出错返回从填的时候以前填写的东西全部消失
因为使用了session,可以用session_cache_limiter强制数据流从新生效.
CODE |
<?php // session start |
===> 如何一劳永逸的解决Cannot send session cache limiter – headers already sent 这种错误
当用header()转向或者session_start()之前有输出,会有Cannot send session cache limiter – headers already sent的错误,可以用ob_start(),这样会在页面全部执行完毕才输出.
CODE |
===> 如何表单填写错误时返回后以前填写的内容消失?
当使用session后会出现这种情况,我们可以使用session_cache_limiter();强制生效.
CODE |
===> 判断邮件地址是否合法!
判断邮件地址是否合法!
CODE |
<?php if(!ereg("^[-a-zA-Z0-9_\.]+\@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,3}$",$mail_from)){ |
===> 数组存储到MySQL数据库
数组存储到mysql中要用serialize() 产生一个可存储的值
CODE |
出库时
CODE |
===> 取来源页面地址
如果是通过调用,取到的只是filename.php,而非来源页面.这时候可以用js来取.
CODE |
===> 实现任意文件的下载
用header可以实现任意文件的下载,而不是打开,比如txt和图片等.自己找一下Content-type,根据相应的类型替换就可以了.
CODE |
<?php // We'll be outputting a gif |
===> 为什么 $foo[bar] 错了?[摘自php手册]
应该始终在用字符串表示的数组索引上加上引号。例如用 $foo[‘bar’] 而不是 $foo[bar]。但是为什么 $foo[bar] 错了呢?你可能在老的脚本中见过如下语法:
CODE |
<?php $foo[bar] = 'enemy'; echo $foo[bar]; // etc |
这样是错的,但可以正常运行。那么为什么错了呢?原因是此代码中有一个未定义的常量(bar)而不是字符串(’bar’-注意引号),而 PHP 可能会在以后定义此常量,不幸的是你的代码中有同样的名字。它能运行,是因为 PHP 自动将裸字符串(没有引号的字符串且不对应于任何已知符号)转换成一个其值为该裸字符串的正常字符串。例如,如果没有常量定义为 bar,PHP 将把它替代为 ‘bar’ 并使用之。
注: 这并不意味着总是给键名加上引号。用不着给键名为常量 或 变量 的加上引号,否则会使 PHP 不能解析它们。
===> 刚写了一个用MySQL保存图片和取出图片的例子
方法并不可取,因为保存图片的数据量是很大的,对宝贵的数据库资源太浪费,可以将图片存储到目录中,用数据库存储路径和文件名.
Database table:
CODE |
CREATE TABLE `image_table` ( |
上传图片存储到MySQL:
CODE |
<?php // pic_database_upload.php By Bleakwind mysql_connect($Host,$User,$Password) or die(“Could not connect:” . mysql_error()); if(!empty($_FILES[‘image’][‘name’])){ |
从数据库中取出图片.
注意:
1.可能具体应用你还要分配一个字段来存储图片类型,这样下面的header( “content-type: image/gif”);这句的gif用相应的类型替换掉.
2.如果想取出多个图片可以将下面的文件存成一个文件,在另外的文件遍历ID后调用此文件输出.
CODE |
<?php // pic_database_output.php By Bleakwind mysql_connect($Host,$User,$Password) or die(“Could not connect:” . mysql_error()); $sql = “SELECT * FROM `image_table` WHERE `id`=” . $id; |