php

位置:IT落伍者 >> php >> 浏览文章

Php高手带路--问题汇总解答(一)


发布日期:2020年01月23日
 
Php高手带路--问题汇总解答(一)

:为什么我得不到变量

我在一网页向另一网页POST数据name为什么输出$name时却得不到任何值?

在PHP以后的版本中reGISter_global默认为off若想取得从另一页面提交的变量:

方法一:在PHPini中找到register_global并把它设置为on

方法二:在接收网页最前面放上这个extract($_POST);extract($_GET);(注意extract($_SESSION)前必须要有Session_Start())

方法三:一个一个读取变量$a=$_GET[a];$b=$_POST[b]等这种方法虽然麻烦但比较安全

调试你的程序

在运行时必须知道某个变量为何值我是这样做的建立一文件debugphp其内容如下:

PHP代码:

<?PHP

Ob_Start();

Session_Start();

Echo <pre>;

Echo 本页得到的_GET变量有:;

Print_R($_GET);

Echo 本页得到的_POST变量有:;

Print_R($_POST);

Echo 本页得到的_COOKIE变量有:;

Print_R($_COOKIE);

Echo 本页得到的_SESSION变量有:;

Print_R($_SESSION);

Echo </pre>;

?>

然后在phpini中设置include_path = c:/php并将debugphp放在此文件夹以后就可以在每个网页里包含此文件查看得到的变量名和值

如何使用session

凡是与session有关的之前必须调用函数session_start();

为session付值很简单如:

PHP代码:

<?php

Session_start();

$Name = 这是一个Session例子;

Session_Register(Name);//注意不要写成Session_Register($Name);

Echo $_SESSION[Name];

//之后$_SESSION[Name]为这是一个Session例子

?>

在php之后可以为session直接付值:

PHP代码:

<?PHP

Session_Start();

$_SESSION[name]=value;

?>

取消session可以这样:

PHP代码:

<?php

session_start();

session_unset();

session_destroy();

?>

取消某个session变量在php以上还有BUG

注意:

:在调用Session_Start()之前不能有任何输出例如下面是错误的

==========================================

行 Session_Start();//之前在第一行已经有输出

行 ?>

==========================================

提示:

凡是出现 headers already sent 就是Session_Start()之前向浏览器输出信息去掉输出就正常(COOKIE也会出现这种错误错误原因一样)

提示:

如果你的Session_Start()放在循环语句里并且很难确定之前哪里向浏览器输出信息可以用下面这种方法:

行 <?PHP Ob_Start(); ?>

这里是你的程序

:这是什么错误

Warning: session_start(): open(/tmp\sess_daabcecacccdaf O_RDWR) failed:

因为你没有指定session文件的存放路径

解决方法:

()在c盘建立文件夹tmp

()打开phpini找到sessionsave_path修改为sessionsave_path= c:/tmp

:为什么我向另一网页传送变量时只得到前半部分以空格开头的则全部丢失

PHP代码:

<?php

$Var=hello php;//修改为$Var= hello php;试试得到什么结果

$post= receivephp?Name=$Var;

header(location:$post);

?>

receivephp的内容:

PHP代码:

<?PHP

Echo <pre>;

Echo $_GET[Name];

Echo </pre>;

?>

正确的方法是:

PHP代码:

<?php

$Var=hello php;

$post= receivephp?Name=urlencode($Var);

header(location:$post);

?>

在接收页面你不需要使用Urldecode()变量会自动编码

:我怎么知道系统默认支持什么函数

PHP代码:

<?php

$arr = get_defined_functions();

Function php() {

}

echo <pre>;

Echo 这里显示系统所支持的所有函数和自定以函数php\n;

print_r($arr);

echo </pre>;

?>

:如何比较两个日期相差几天

PHP代码:

<?PHP

$Date_=;//也可以是:$Date_= ::;

$Date_=;

$d=strtotime($Date_);

$d=strtotime($Date_);

$Days=round(($d$d)//);

Echo 偶已经奋斗了 $Days 天^_^;

?>

               

上一篇:PHP网络编程: 顶部及底部公用文件的设计[1]

下一篇:PHP网络编程:帖子列表页面设计[2]