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(你也好)
.............
【3】win32下的session不能正常工作
php.ini默认的session.save_path = /tmp
这显然是linux下的配置,win32下php无法读写session文件导致session无法使用
把它改成一个绝对路径就可以了,例如session.save_path = c:\windows\temp
【4】显示错误信息
当php.ini的display_errors = On并且error_reporting = E_ALL时,将显示所有的错误和提示,调试的时候最好打开以便纠错,如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示,解决办法是探测或者屏蔽
例如显示$foo,可以if(isset($foo)) echo $foo 或者echo @$foo
【5】Win32下mail()不能发送电子邮件
在linux下配置好的sendmail可以发送,在win32下需要调用smtp服务器来发送电子邮件
修改php.ini的SMTP = ip //ip是不带验证功能的smtp服务器(网上很难找到)
php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器
【6】初装的mysql如果没有设置密码,应该使用
update mysql.user set password="yourpassword" where user="root"
修改密码
【7】header already sent
这个错误通常会在你使用HEADER的时候出现,他可能是几种原因:1,你在使用HEADER前PRING或者ECHO了2.你当前文件前面有空行3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。!
【8】更改php.ini后没有变化
重新启动web server,比如IIS,Apache等等,然后才会应用最新的设置
【9】php在2003上面安装(ISAPI的安装方法恳请高手指教)
PHP4的php4isapi.dll好像和2003有些冲突,只能用CGI模式安装
步骤一,先www.php.net下在一个安装程序,我是装的是:php-4.2.3-installer.exe,你也可以去找最新的版本,在安装php-4.2.3-installer.exe之前保证你的IIS6.0启动了,并能够访问。 安装好以后,在默认网站-->应用程序配置
步骤二:点击 web服务扩展 -->新建web服务扩展.
步骤三: 扩展名-->php,然后添加
步骤四:找到php.exe的路径添加上去。
步骤五: 确定就可以了!
步骤六: 选择php的服务扩展,然后点击允许。
【10】
有时候sql语句不起作用,对数据库操作失败
最简便的调试方法,echo那句sql,看看变量的值能得到不
【11】include和require的区别
两者没有太大的区别,如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出
据我测试,win32平台下它们都是先包含后执行,所以被包含文件里最好不要再有include或require语句,这样会造成目录混乱。或许*nux下情况不同,暂时还没测试
如果一个文件不想被包含多次可以使用include_once或require_once## 读取,写入文档数据
function r($file_name) {
$filenum=@fopen($file_name,"r");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name));
@fclose($filenum);
return $file_data;
}
function w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method);
flock($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}
【12】isset()和empty()的区别
两者都是测试变量用的
但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空
如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示
如果一个变量被赋空值,$foo=""或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。
要注销一个变量,可以用 unset($foo)或者$foo=NULL
【13】mysql查询语句包含有关键字
php查询mysql的时候,有时候mysql表名或者列名会有关键字
这时候查询会有错误。例如表名是order,查询时候会出错
简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别
例如select * from `order`
【14】通过HTTP协议一次上传多个文件的方法
有两个思路,是同一个方法的两种实现。具体程序还需自己去设计
1,在form中设置多个文件输入框,用数组命名他们的名字,如下:
<form action="" method=post>
<input type=file name=usefile[]>
<input type=file name=usefile[]>
<input type=file name=usefile[]>
</form>
这样,在服务器端做以下测试
echo "<pre>";
print_r($_FILES);
echo "</pre>";
1,在form中设置多个文件输入框,但名字不同,如下:
<form action="" method=post>
<input type=file name=usefile_a>
<input type=file name=usefile_b>
<input type=file name=usefile_c>
</form>
在服务器端做同样测试:
echo "<pre>";
print_r($_FILES);
echo "</pre>";
posted at 13:55:43 on 02/18/04 by sadly - Category: PHP常见问题
[上一篇] [下一篇]
用户评论
百年孤独 wrote:
我想问一下:echo""中还要插入""怎么办?
我已经试用了'' 好像不行!
02/18/04 22:00:44
百年孤独 wrote:
请问斑竹
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
可以在哪里找到他的具体说明阿?
02/18/04 22:41:46
sadly wrote:
\" 就可以了
02/19/04 08:41:12
aaa wrote:
唉,写的很好,xltxlm那篇也很好,可是初学者一般都不看并且自己不翻手册,不上网搜,不找前面帖子,而直接提问,弄得论坛里面满眼望去都是低级问题,真是郁闷
02/20/04 04:28:25
事实 wrote:
我想不回帖都难。
redhat中默认php的全局变量是关闭的,我知道了。谢谢,我是菜鸟!
02/21/04 01:41:44
topin wrote:
真的要谢谢你,让我对session的配置又了解的更深了
02/22/04 00:50:02
mike wrote:
register_globals = on 在php.ini中已经设置了,而且apache也重起了,在phpinfo()还是关闭,郁闷ing........
02/22/04 21:16:21
veteran wrote:
受益非浅
02/25/04 13:13:49
秀津 wrote:
刚开始的时候我也是FAQ,多来几次就学会自己翻手册,找资料了;文章里列出来的东西有不少自己也从无数失败中总过,真是感慨
03/06/04 11:40:54
chro wrote:
我在2003 IIS6下装PHP很顺利呀,装过三台服务器了
03/08/04 20:35:03
zhs227 wrote:
在Win2003 Enterprise Edition下面用ISAPI方式安装php我没有遇见什么问题。我的php版本是4.3.2。感觉安装过程很顺利。
03/14/04 12:16:55
ILIKEPHP wrote:
header already sent
能对HEADER作个详细讲解就好了,
虽然看了不少关于它的文章但到现在还是一知半解。
在什么情况下用HEADER?
怎样正确使用?
03/14/04 14:58:39
cccc wrote:
又是一个把名字跟字符串弄混的人
abc是名字
"abc"是字符串
03/26/04 15:11:20
神龙 wrote:
请问下一oracle8数据库是个什么, 能干什么,我在好多地方看到他就是不了解,请解释一下
03/27/04 11:19:34
小黑龙 wrote:
恩,很不错。
不过能不能再给举几个比较好的例子呢?
不胜感激!
03/27/04 13:53:14
小黑龙 wrote:
恩,很不错。
不过能不能再给举几个比较好的例子呢?
不胜感激!
03/27/04 13:53:17
勇犀之弓 wrote:
感谢!正为问题所苦,偶然间发现贵站,感激不尽~
03/28/04 10:23:34
天堂之心 wrote:
里边的问题偶都曾经碰到过
在无数次失败之后终于解决。
今日偶然看到此帖,意识到交流的重要性!
今后决定多上论坛,多进行交流!
照顾新人,学习前辈!
呵呵
04/01/04 10:27:05
牛牛 wrote:
资料是需要经常整理的,感谢那些辛勤劳动的朋友!
04/03/04 12:59:55
xstart wrote:
session在iis下不能正常工作不只是一个文件路径的问题,php必须以isapi的形式安装,以cgi方式安装当在新的页面执行session_start的时候会重新创建一个新的session,而不能把以前的session带过来,所以session基本上不能起作用。这个问题当时折磨了我很久,网上一搜遇到同样问题的还真不少,回答一般是说路径问题,或者是需要设置成浏览器传递session的有关参数,或者用coocie,都没到点子上去,后来在php的官方网站上发现很早以前就有这个bug的提交,但一直没有得到修订,php各版本都有这个问题
如果大家有兴趣可以自己去试一下
04/09/04 23:18:57
阿本 wrote:
为什么在win32下的加密函数不能使用呢?返回的信息说,不支持win32啊。请求帮助。我是菜鸟,~!~
04/11/04 20:52:10
black wrote:
太感谢了
04/13/04 16:10:26
讨吃鬼 wrote:
老大。。。。。服了。。。
差点苦死我啊。。。鬼知道PHP这东西传个变量还要配置啊。。。我以前学过点ASP,那里会想到能有这种问题啊。。我瞅着我那三行半程序整整研究了一天半啊。。。变量就是不发过去。。。差点灰心。。。。唉。。。
多谢高人指点。。。
04/13/04 17:18:04
急死了 wrote:
我怎么用$_post传递变量还是不行啊。请问这个程序怎么不能传递变量,谢谢给我解答!!我都急死了,谢谢大虾了。
aa.htm
<form action="aa.php" method="post">
<input type=text name="db">
<input type=submit value="提交">
</form>
aa.php
<?
$db=$_post['db'];
echo '$db';
}
04/17/04 21:27:53
edifier wrote:
我是菜鸟,这是我编的程序,不过有很多错误,能告诉我错误是什么吗?~~
<?
session_start();
session_register("sess_var");
$sess_var = "Hello world!";
echo "The content of \$sess_var is $sess_var<br>";
?>
<a href = "page2.php">Next page</a>
错误是:
Warning: session_start(): open(/tmp\sess_1079d7974afa7bfca76980d1606b5124, O_RDWR) failed: No such file or directory (2) in E:\PHP and MySQL Web Development\chapter20\php25.tmp on line 3
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at E:\PHP and MySQL Web Development\chapter20\php25.tmp:3) in E:\PHP and MySQL Web Development\chapter20\php25.tmp on line 3
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at E:\PHP and MySQL Web Development\chapter20\php25.tmp:3) in E:\PHP and MySQL Web Development\chapter20\php25.tmp on line 3
04/20/04 16:41:25
karlos wrote:
thank you
04/20/04 19:43:26
随便说说 wrote:
百年孤独 wrote:
请问斑竹
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
可以在哪里找到他的具体说明阿?
02/18/04 22:41:46
就是刷新的意思,content='0;url=index.php'>";就是立刻刷新.0换成2就代表等2秒后刷新,URL表示刷新后要访问的网页
04/23/04 22:57:52
badly wrote:
高手就是高手呀!!!
佩服,佩服!!
我也看着那么点点程序研究了一天,
我开始就是没有想明白怎么以前能行的东西,现在就不行了呢,
原来如此!在此谢过高手了!!!
04/25/04 18:44:36
JIQIANGZHU wrote:
<form name="f1" enctype="multipart/form-data" action="imgsave.php" method="post">
在这种情况下,使用$_POST好像得不到参数阿,哪位朋友帮忙解决以下
05/11/04 17:59:40