2013-08-25 89 views
0

這太可笑了。我的問題是根據標題。嘗試到var_dumpprint_r $ _POST超全局產生一個空數組。表單數據未發送至POST

看看我的表格:

<form method="post" action="" class="login"> 
    <fieldset> 
     <dl> 
      <dt><label for="loginEmail">Email</label></dt> 
      <dd><input type="email" id="loginEmail" name="loginEmail" maxLength="32" /></dd> 

      <dt><label for="loginPassword">Password</label></dt> 
      <dd><input type="password" id="loginPassword" name="loginPassword" maxlength="64" /></dd> 

      <dt></dt> 
      <dd><input type="submit" value="submit" class="button" /></dd> 
     </dl> 
    </fieldset> 
</form> 

我看不出有什麼不妥的地方。 name屬性是完好無損的,我發佈到同一頁面,但POST仍然是空的。值得注意的是,我在另一個頁面上使用了類似語法的另一個表單。

例如:

if (!empty($_POST)) { 
    echo '42'; 
} 

不運行。

任何想法?

+0

我假設'action =「」'不是它實際出現在代碼中的方式,對吧? – Dave

+1

你發佈的只是一個表單。它的處理程序在哪裏?另外,如果你正在使用'if(isset ...提交「,那麼你也需要命名你的提交按鈕,如果這是問題所在。 –

+0

您的處理程序可以查看'<?php $ loginEmail = $ _ POST ['loginEmail']; echo $ loginEmail; ?>或者讓事情變得簡單,'foreach($ _POST as $ variable => $ value){'將輸出從POST變量中獲取的所有值。 –

回答

-1

您的形式指向無處..如果你希望它是同一個頁面,然後指定,

<form action="{$_SERVER['SCRIPT_NAME']}"> 

將呈現相同的頁面,但送的參數。如果你有一個處理程序腳本,那麼指定相對的url。

+0

http://stackoverflow.com/a/280076/1700963我建議使用'SCRIPT_NAME'而不是'PHP_SELF' – Class

1

嘗試打印出超全球的$_SERVER。除此之外,它包含REQUEST_METHOD的鍵值應該幫助你...

順便說一句,一個空的行爲屬性實際上是完全正確的。我已經看到,即使稍微老一些的瀏覽器也能夠保持一致。

另外,我曾經寫過一個小片段這對於調試是非常有幫助的...只是插入它在你的PHP代碼頂部:

function on_shutdown(){ 
    echo "<!--\n"; 
    echo "\n\tHeaders Sent:"; 
     $file = $line = null; 
     headers_sent($file, $line); 
     echo "\n\t\t$file: $line"; 
    echo "\n\tLast Error:"; 
     if(function_exists('error_get_last') && error_get_last()) 
      foreach(error_get_last() as $k=>$v) 
       echo "\n\t\t$k: $v"; 
     elseif($php_errormsg) 
      echo "\n\t\tError: $php_errormsg"; 
     else echo "\n\t\tnone"; 
    echo "\n\tIncluded Files:"; 
     echo "\n\t\t".implode("\n\t\t", get_included_files()); 
    echo "\n-->"; 
} 
register_shutdown_function('on_shutdown'); 
while(ob_get_level())ob_end_clean(); 
ob_implicit_flush(true); 
0

我們知道有一個叫DEFAULT

根據W3C:

行動= URI [CT] 該屬性指定表單處理劑。未定義HTTP URI以外的值的用戶代理行爲。來源:http://www.w3.org/TR/html401/interact/forms.html

現在回到這一點。你的代碼運行巨大的,如果兩個都是同一頁上:

<form method="post" action="" class="login"> 
    <fieldset> 
     <dl> 
      <dt><label for="loginEmail">Email</label></dt> 
      <dd><input type="email" id="loginEmail" name="loginEmail" maxLength="32" /></dd> 

      <dt><label for="loginPassword">Password</label></dt> 
      <dd><input type="password" id="loginPassword" name="loginPassword" maxlength="64" /></dd> 

      <dt></dt> 
      <dd><input type="submit" value="submit" class="button" /></dd> 
     </dl> 
    </fieldset> 
</form> 

<?php 
if (!empty($_POST)) { 
    echo '42'; 
} 
    ?> 

和輸出填充值,並提出申請後,我得到的輸出爲:

42 

,當我改變了PHP代碼:

<?php 
if (!empty($_POST)) { 
    var_dump($_POST); 
} 
     ?> 

我得到的輸出:

array (size=2) 
'loginEmail' => string '[email protected]' (length=11) 
'loginPassword' => string 'qwerty' (length=6) 

清理緩存並重新啓動您的網絡服務器。希望它現在能工作:)