收藏本页 | 网站地图 | 投稿指南
 
 
当前位置:首页 >> 学院首页 >> 程序开发 >>

PHP问题汇总解答(转)

放大字体  缩小字体  At: 2007-11-12 10:48  By: 年华 原创
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代码: 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>";   ?>   然后在php.ini中设置:include_path = "c:/php",并将debug.php放在此文件夹,以后就可以在每个网页里包含此文件,查看得到的变量名和值.   3:如何使用session   凡是与session有关的,之前必须调用函数session_start();   为session付值很简单,如:   PHP代码:   <?php   Session_start();   $Name = "这是一个Session例子";   Session_Register("Name");//注意,不要写成:Session_Register("$Name");   Echo $_SESSION["Name"];   //之后$_SESSION["Name"]为"这是一个Session例子"   ?>   在php4.2之后,可以为session直接付值:   PHP代码: PHP   <?PHP   Session_Start();   $_SESSION["name"]="value";   ?> 取消session可以这样: PHP代码:   <?php   session_start();   session_unset();   session_destroy();   ?>   取消某个session变量在php4.2以上还有BUG.   注意:   1:在调用Session_Start()之前不能有任何输出.例如下面是错误的.   ==========================================   1行   2行 PHP 3行 Session_Start();//之前在第一行已经有输出   4行 .....   5行 ?>   ==========================================   提示1:   凡是出现" ........headers already sent.......... ",就是Session_Start()之前向浏览器输出信息.去掉输出就正常,(COOKIE也会出现这种错误,错误原因一样)   提示2:   如果你的Session_Start()放在循环语句里,并且很难确定之前哪里向浏览器输出信息,可以用下面这种方法:   1行 <?PHP Ob_Start(); ?>   ........这里是你的程序......   2:这是什么错误   Warning: session_start(): open(/tmp\sess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:.... 因为你没有指定session文件的存放路径.   解决方法:   (1)在c盘建立文件夹tmp   (2)打开php.ini,找到session.save_path,修改为session.save_path= "c:/tmp"   4:为什么我向另一网页传送变量时,只得到前半部分,以空格开头的则全部丢失   PHP代码:   <?php   $Var="hello php";//修改为$Var="    hello php";试试得到什么结果   $post= "receive.php?Name=".$Var;   header("location:$post");   ?>   receive.php的内容:   PHP代码: PHP   <?PHP   Echo "<pre>";   Echo  $_GET["Name"];   Echo "</pre>";   ?>   正确的方法是:   PHP代码:   <?php   $Var="hello php";   $post= "receive.php?Name=".urlencode($Var);   header("location:$post");   ?>5:如何截取指定长度汉字而不会出现以"?>"结尾,超出部分以"..."代替   一般来说,要截取的变量来自Mysql,首先要保证那个字段长度要足够长,一般为char(200),可以保持100个汉字,包括标点.   PHP代码: PHP   <?PHP   $str="这个字符好长呀,^_^";   $Short_Str=showShort($str,4);//截取前面4个汉字,结果为:这个字符...   Echo  "$Short_Str";   Function csubstr($str,$start,$len)   {   $strlen=strlen($str);   $clen=0;   for($i=0;$i<$strlen;$i++,$clen++)   {   if ($clen>=$start+$len)   break;   if(ord(substr($str,$i,1))>0xa0)   {   if ($clen>=$start)   $tmpstr.=substr($str,$i,2);   $i++;   }   else   {   if ($clen>=$start)   $tmpstr.=substr($str,$i,1);   }   }   return $tmpstr;   }   Function showShort($str,$len)   {   $tempstr = csubstr($str,0,$len);   if ($str<>$tempstr)   $tempstr .= "..."; //要以什么结尾,修改这里就可以.   return $tempstr;   }   6:规范你的SQL语句   在表格,字段前面加上"`",这样就不会因为误用关键字而出现错误,当然我并不推荐你使用关键字.   例如   $Sql="INSERT INTO `xltxlm` (`author`, `title`, `id`, `content`, `date`) VALUES ('xltxlm', 'use`', 1, 'criterion your sql string ', '2003-07-11 00:00:00')"   "`"怎么输入? 在TAB键上面.   7:如何使Html/PHP格式的字符串不被解释,而是照原样显示   PHP代码: PHP   <?PHP   $str="<h1>PHP</h1>";   Echo "被解释过的: ".$str."<br>经过处理的:";   Echo  htmlentities(nl2br($str));   ?>   8:怎么在函数里取得函数外的变量值   PHP代码: PHP   <?PHP   $a="PHP";   foo();   Function foo()   {    global $a;//删除这里看看是什么结果    Echo "$a";   }   ?> 9:我怎么知道系统默认支持什么函数   PHP代码:   <?php   $arr = get_defined_functions();   Function php() {   }   echo  "<pre>";   Echo  "这里显示系统所支持的所有函数,和自定以函数php\n";   print_r($arr);   echo  "</pre>";   ?>    10:如何比较两个日期相差几天   PHP代码:   <?PHP   $Date_1="2003-7-15";//也可以是:$Date_1="2003-7-15 23:29:14";   $Date_2="1982-10-1";   $d1=strtotime($Date_1);   $d2=strtotime($Date_2);   $Days=round(($d1-$d2)/3600/24);   Echo  "偶已经奋斗了 $Days 天^_^";   ?>   11:为什么我升级PHP后,原来的程序出现满屏的 Notice: Undefined variable:   这是警告的意思,由于变量未定义引起的.   打开php.ini,找到最下面的error_reporting,修改为error_reporting = E_ALL & ~E_NOTICE   对于Parse error错误   error_reporting(0)无法关闭.   如果你想关闭任何错误提示,打开php.ini,找到display_errors,设置为display_errors = Off.以后任何错误都不会提示.   那什么是error_reporting?   12:我想在每个文件最前,最后面都加上一文件.但一个一个添加很麻烦   1:打开php.ini文件   设置 include_path= "c:"   2:写两个文件   auto_prepend_file.php 和 auto_append_file.php 保存在c盘,他们将自动依附在每个php文件的头部和尾部.   3:在php.ini中找到:   Automatically add files before or after any PHP document.   auto_prepend_file = auto_prepend_file.php;依附在头部   auto_append_file = auto_append_file.php;依附在尾部   以后你每个php文件就相当于   PHP代码:   <?php   Include "auto_prepend_file.php" ;   .......//这里是你的程序   Include "auto_append_file.php";   ?>   13:如何利用PHP上传文件   PHP代码:   <html><head>   <title>上载文件表单</title></head>   <body>   <form enctype="multipart/form-data" action="" method="post">   请选择文件: <br>   <input name="upload_file" type="file"><br>   <input type="submit" value="上传文件">   </form>   </body>   </html>
 






         









 
Google
论坛精华  
 
 
  ©2005-2008 站长吧 Master8.NET All Rights Reserved 陕ICP备05010609号