最令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(你同意卡塔尔(قطر‎ 

   …………. 

   【3】win32下的session不可能健康工作 

   php.ini默认的session.save_path = /tmp 

   那明摆着是Linux下的计划,win32下php不可能读写session文件招致session无法利用,把它改成一个相对路线就可以了,比如session.save_path = c:Windows emp 

   【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服务器(英特网很难找到State of Qatar 

   php发送邮件的最佳解决措施是用socket直接发送到对方email服务器而不用转账服务器。 

   【6】初装的MySQL若无设置密码,应该使用update mysql.user set password=”yourpassword” where user=”root” 纠正密码 

   【7】header already sent 

   那一个指鹿为马日常会在你使用HEADE昂Cora的时候现身,他大概是三种原因:1,你在使用HEADERAV4前PEscortING可能ECHO了2.您眼下文件前边有空行3.你大概INCLUDE了一个文书,该公文尾部有空行大概输出也会产出这种错误。! 

   【8】改善php.ini后不曾变化 

   重新启航Web server,比方IIS,Apache等等,然后才会使用新型的安装。 

   【9】php在二零零四方面安装(ISAPI的装置格局恳请高手指教) 

   PHP4的php4isapi.dll好像和二〇〇〇某个冲突,只可以用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(State of Qatar是测量试验贰个早已被赋值的变量是或不是为空。 

   要是叁个变量没被赋值就引述在php里是被允许的,但会有notice提示,假诺多个变量被赋空值,$foo=””恐怕$foo=0恐怕 $foo=false,那么empty($fooState of Qatar重返真,isset($fooState of Qatar也回到真,就是说赋空值不会打消二个变量。 

   要撤消一个变量,能够用 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>”; 

   2、在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); 

发表评论

电子邮件地址不会被公开。 必填项已用*标注