2012-12-27 30 views
0

我正在嘗試運行一個小的PHP腳本。當我嘗試運行這個小PHP線時出現錯誤: < ?PHP print $ firstname;?>在html代碼中。根據我的教程指南,value元素中的這一行應該確保即使在刷新瀏覽器之後,我仍然將任何輸入文本輸入到文本字段中,但它不會!會出現以下錯誤消息:嘗試保留在瀏覽器刷新後輸入到PHP表單文本字段中的值時出錯

說明:未定義變量:姓在C:\瓦帕\ WWW \頁面\ basicForm.php 第27行調用堆棧#TimeMemoryFunctionLocation 10.0007366504 {主}( ).. \ basicForm .PHP:0 「NAME =」 姓「>

爲什麼

,代碼:

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
     <?PHP 
     if (!empty($_POST)) { 
      $firstname = $_POST['firstname']; 
      $surname = $_POST['surname']; 
      print($firstname); 
      print($surname); 
     } 
     else { 

     } print('welcomes'); 
    ?> 
</head> 
<body> 
<Form name ="form1" Method ="POST" Action ="basicForm.php"> 
    <label> 


    <INPUT TYPE = 'TEXT' Name ='firstname' VALUE="<?PHP print $firstname ; ?>"> 
    </label> 

    <p> 
     <label> 
      <INPUT TYPE="TEXT" VALUE="<?PHP print($surname); ?>" NAME="surname"> 
     </label> 

    <p> 
     <Input Type = "Submit" Name = "Submit1" Value = "Login"> 
</FORM> 


</body> 
</html> 

回答

0

所有需要分配初始值,如下

$firstname = ''; 
$surname = ''; 

依賴未初始化變量的默認值是 在包括一個文件到另一個其使用 相同的變量名的情況下,成問題的。這也是一個主要的安全隱患, register_globals打開。如果 處理未初始化的變量,則會發出E_NOTICE級別錯誤,但不會在 將元素追加到未初始化的數組中。 isset()語言 結構可用於檢測變量是否已被初始化爲 。

詳細瞭解更多:PHP: "Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset"

+0

是的工作原理 - 我剛剛聲明瞭變量,就像你在HTML代碼執行前的PHP代碼中所說的那樣。 Thanks.p.s我希望我的教程指南能夠更好地告訴我。開採你我可以發現我的錯誤我猜。 –

0

$surname沒有被設置爲第一:

<INPUT TYPE="TEXT" VALUE="<?PHP print($surname); 

它纔剛剛在頂部設置如果$_POST是不是空的。

+0

是的好點,我將在PHP代碼開頭聲明變量在腳本頂部 –

0

如果$_POST變量爲空,則不會創建$surname。有幾種方法可以解決這個問題。

1,要預定義變量:

$firstname = ''; 
$surname = ''; 
if (!empty($_POST)) { 
    $firstname = $_POST['firstname']; 
    $surname = $_POST['surname']; 
}else { 

} 

2,使用三元語法:

$firstname = isset($_POST['firstname']) ? $_POST['firstname'] : ''; 
$surname = isset($_POST['surname']) ? $_POST['surname'] : ''; 

雙方將確保您的變量打印前創建的。

+0

謝謝,我會嘗試你提供的這個代碼 –

0

根據我的教程指導此行中元素的值應該確保我一直輸入到文本字段的任何輸入文本即使我刷新瀏覽器

看來你誤解了你的教程。
服務器端技術不能幫助,直到你真的發送一些東西到服務器。
所以,你似乎只是在提交之前輸入你的值和刷新你的頁面。雖然有些瀏覽器可能會保留輸入的值,但服務器端PHP與它無關。

如果您使用已存在於服務器上的值填充表單的另一個故事 - 這種填充表單將會持續刷新。

+0

啊,是的,好點。我懂了。 –

相關問題