PHP初学者头痛的十四个问题
1.页面之间无法传递变量
get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到。当然也可以修改自动全局变量为开(php.ini改为register_globals = On);考虑到兼容性,还是强迫自己熟悉新的写法比较好。
2.Win32下apache2 用get方法传递中文参数会出错
例如:test.php?a=你好&b=你也好
传递参数是会导致一个内部错误
解决办法:"test.php?a=".urlencode(你好)."&b=".urlencode(你也好)
urlencode($myname)主要用于正确识别汉字 空格以及其他特殊字符。
3.win32下的session不能正常工作
php.ini默认的session.save_path = /tmp 这显然是linux下的配置,win32下php无法读写session文件导致session无法使用,把它改成一个绝对路径就可以了,例如session.save_path = c:windows emp ,一般这个工作在配置php在win的安装环境的时候就应该解决的。
4.显示错误信息
当php.ini的display_errors = On并且error_reporting = E_ALL时,将显示所有的错误和提示,调试的时候最好打开以便纠错。
5.更改php.ini后没有变化
一般要重启你的WEB SERVER(apache IIS)。
6.header already sent
这个错误通常会在你使用HEADER的时候出现,他可能是几种原因:
1,你在使用HEADER前print或者echo了
2.你当前文件前面有空行
3.你可能INCLUDE了一个文件,
4.该文件尾部有空行或 者输出也会出现这种错误。
7.include和require的区别
1.include 包含文件,如果该文件不存在,它会提示,但是它会继续往下执行。
2.require 包含文件,如果改文件不存在,会提示致命错误,并退出.
win32平台下它们都是先包含后执行。
8.isset()和empty()的区别
相同:两者都是测试变量用的.
不同:isset()是测试变量是否被赋值
empty()是测试一个已经被赋值的变量是否为空
如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示,如果一个变量被赋空值,$foo=""或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也
相关文档:
(1) 打开php的安全模式
php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),
同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,
但是默认的php.ini是没有打开安全模式的,我们把它打开:
safe_mode = on
(2) 用户组安全
当safe_mode打开时, ......
header()函数用来转向(redirect page)时,如果调用前有输出,比如echo或html标签,就会转向失败。
如果调用前有空行也会转向失败。
还有一个原因,就是注意你的php文件的字符编码。我遇到的情况是,当字符编码为UTF-8时,转向失败,改为ANSI时成功。具体原因不明,仅供参考。 ......
GyPSii利用XML-RPC,PHP里XML-RPC的相关应用示例很多,查查手册、GOOGLE一下就可以找到很多。GyPSii API里提供了一个操作类用来请求服务,并提供了一个请求函数,只要将此函数放进操作类里,就可以方便的使用了,函数如下:
function GyPSiiXMLRPC( $uri, $host, $pid, $body="" ) {
$this->addHeader( 'Content-T ......
<?php
/*
获取远程图片函数
*/
function GrabImage($url,$filename=""){
//若url为空返回false,无地址
if($url=="") return false;
//若$filename为空
if($filename=="") {
$ext=strrchr($url,"."); //获取"."加后缀
if($ext!=&qu ......
$_GET 变量用于收集来自 method="get" 的表单中的值。
$_GET 变量
$_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值。
$_GET 变量用于收集来自 method="get" 的表单中的值。从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个 ......