Php高手带路--问题汇总解答_PHP教程

php中文网
发布: 2016-07-13 17:19:53
原创
1029人浏览过

1:为什么我得不到变量

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

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

  方法一:在PHP.ini中找到register_global,并把它设置为on.
  方法二:在接收网页最前面放上这个extract($_POST);extract($_GET);(注意extract($_SESSION)前必须要有Session_Start()).
  方法三:一个一个读取变量$a=$_GET["a"];$b=$_POST["b"]等,这种方法虽然麻烦,但比较安全.

  2:调试你的程序

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

  PHP代码:

    Ob_Start();
  Session_Start();
  Echo
"

"</FONT><FONT color=#007700>;<BR><BR>  Echo </FONT><FONT color=#dd0000>"本页得到的_GET变量有:"</FONT><FONT color=#007700>;<BR></FONT><FONT color=#0000bb>  Print_R</FONT><FONT color=#007700>(</FONT><FONT color=#0000bb>$_GET</FONT><FONT color=#007700>);<BR><BR>  Echo </FONT><FONT color=#dd0000>"本页得到的_POST变量有:"</FONT><FONT color=#007700>;<BR></FONT><FONT color=#0000bb>  Print_R</FONT><FONT color=#007700>(</FONT><FONT color=#0000bb>$_POST</FONT><FONT color=#007700>);<BR><BR>  Echo </FONT><FONT color=#dd0000>"本页得到的_COOKIE变量有:"</FONT><FONT color=#007700>;<BR></FONT><FONT color=#0000bb>  Print_R</FONT><FONT color=#007700>(</FONT><FONT color=#0000bb>$_COOKIE</FONT><FONT color=#007700>);<BR><BR>  Echo </FONT><FONT color=#dd0000>"本页得到的_SESSION变量有:"</FONT><FONT color=#007700>;<BR></FONT><FONT color=#0000bb>  Print_R</FONT><FONT color=#007700>(</FONT><FONT color=#0000bb>$_SESSION</FONT><FONT color=#007700>);<BR><BR>  Echo </FONT><FONT color=#dd0000>"
登录后复制
";
  ?>

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

  3:如何使用session

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

  为session付值很简单,如:

  PHP代码:

    Session_start();
  $Name = "这是一个Session例子";
  Session_Register("Name");//注意,不要写成:Session_Register("$Name");
  Echo $_SESSION["Name"];
  //之后$_SESSION["Name"]为"这是一个Session例子"
  ?>

  在php4.2之后,可以为session直接付值:

  PHP代码:

    Session_Start();
  $_SESSION["name"]="value";
  ?>

  取消session可以这样:

本新闻共5页,当前在第1页  1  2  3  4  5  

PHP代码:

    session_start();
  session_unset();
  session_destroy();
  ?>

  取消某个session变量在php4.2以上还有BUG.

  注意:

  1:在调用Session_Start()之前不能有任何输出.例如下面是错误的.
  ==========================================
  1行
  2行 3行 Session_Start();//之前在第一行已经有输出
  4行 .....
  5行 ?>
  ==========================================

  提示1:

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

  提示2:

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

  2:这是什么错误

  Warning: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....
因为你没有指定session文件的存放路径.

  解决方法:
  (1)在c盘建立文件夹tmp
  (2)打开php.ini,找到session.save_path,修改为session.save_path= "c:/tmp"


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

  PHP代码:

    $Var="hello php";//修改为$Var="     hello php";试试得到什么结果
  $post= "receive.php?Name=".$Var;
  header("location:$post");
  ?>

  receive.php的内容:

  PHP代码:

    Echo "

"</FONT><FONT color=#007700>;<BR>  Echo   </FONT><FONT color=#0000bb>$_GET</FONT><FONT color=#007700>[</FONT><FONT color=#dd0000>"Name"</FONT><FONT color=#007700>];<BR>  Echo </FONT><FONT color=#dd0000>"
登录后复制
";
  ?>

  正确的方法是:

  PHP代码:

    $Var="hello php";
  $post= "receive.php?Name=".urlencode($Var);
  header("location:$post");
  ?>

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

本新闻共5页,当前在第2页  1  2  3  4  5  

5:如何截取指定长度汉字而不会出现以"?>"结尾,超出部分以"..."代替

  一般来说,要截取的变量来自Mysql,首先要保证那个字段长度要足够长,一般为char(200),可以保持100个汉字,包括标点.

  PHP代码:

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/532617.htmlTechArticle1:为什么我得不到变量 我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值? 在PHP4.2以后的版本中register_global默认为off 若想...
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号