2013-02-21 95 views
4

在同一頁上混合我有

$hello = 'Hello!'; 
$_POST['hello'] = '123'; 

如果我回聲$打招呼,而不是讓「你好!」我得到'123'。 我應該如何處理具有相同名稱的變量和$ _POST變量?

這纔是真正的問題的一個示例:

我有一個註冊表格,看起來像這樣(這裏的領域的縮小樣品)。 每個輸入字段都有一個標籤,標籤中的字符串變量與輸入名稱相同。

<form id="form1" action="post.php"> 
    <span class="label"><?=$fullname?></span> 
    //$fullname='Please enter your name'; 
    <input name="fullname" id="fullname" type="text"> 

    <span class="label"><?=$email?></span> 
    //$email='Please enter your email'; 
    <input name="email" id="email" type="text"> 

    <input name="button1" id="button1" type="submit"> 
</form> 

當我提交表單時,我將其發佈到同一頁面,並顯示用戶填寫的值。現在只有那個,而不是$ fullname顯示變量$ fullname的值,它顯示$ _POST ['fullname']的值。爲什麼會發生?

回答

3

這個問題可能與PHP的.ini文件中的register_globals有關。把它關掉,重新啓動php,它應該被修復。

試試這個在代碼執行的時間檢查一下設置:

echo ini_get("register_globals"); 
+0

它實際上已設置爲關閉。這是我檢查的第一件事。 – bikey77 2013-02-21 12:47:43

+3

嘗試添加ini_get方法以查看執行代碼時的值。 – Manuel 2013-02-21 12:49:45

+0

是的,它應該是register_globals。我知道沒有其他產生這種行爲, – 2013-02-21 12:52:14

1

您必須在表單聲明中設置method =「POST」屬性。並且可能你已經啓用了register_globals選項。

1

檢查php.iniregister_globals設置。這很可能是開啓的,你應該關閉它。

+0

它實際上設置爲關閉。這是我檢查的第一件事。 – bikey77 2013-02-21 12:50:47

1

那麼,如果register_superglobals是關閉的,那麼你正在做類似的腳本中的

foreach($_REQUEST as $key => $val) // or $_POST or $_GET 
    $$key = $val;