2012-09-03 92 views
0

因此,我相對較新的PHP來自ASP。並將很多ASP代碼轉換爲PHP後,我遇到了一個問題,我的PHP代碼似乎無法找到我設置的隱藏變量。它在ASP中運行良好,只是想知道解決這個問題的最佳方法。PHP無法找到變量

形式開始:

<form name="LogIn" action="login.php" method="post"> 
        <td bgColor=#ffffff> 
         <table align="center" cellSpacing="2" cellPadding="2" border="0"> 
          <tr> 
           <td>&nbsp;</td> 
           <td align="right"><font color="#4d71a1">User name:</font>&nbsp;</td> 
           <td><input name="UserName" size="25" type="Text" autocomplete="OFF"></td> 
           <td>&nbsp;</td> 
          </tr> 
          <tr> 
           <td>&nbsp;</td> 
           <td align="right"><font color="#4d71a1">Password:</font>&nbsp;</td> 
           <td><input name="Password" size="25" type="Password" autocomplete="OFF"></td> 
           <td>&nbsp;</td> 
          </tr> 

PHP腳本:

<? 
if ($_POST["BtnPress"]=="Pressed") 
{ 

if ($_POST["Username"]=="*****" && $_POST["password"]=="*********") 
{ 

$_SESSION['AdminID']="1"; 
header("Location: "."index.php"); 
} 
    else 
{ 

print "<font color=#ff0000>Sorry you cannot access this part of the site.</font>"; 
} 

} 
?> 

,則表格的其餘部分:

<tr> 
           <td align="center" colspan="4"> 
            <input type="hidden" name="BtnPress" value="Pressed"> 
            <input type="Submit" value="Log In" class="mybutton" onclick="return CheckForm();"> 
           </td> 
          </tr> 
         </table> 


        </td> 
       </form> 

的PHP似乎無法找到變量BtnPress,它在我的翻譯ASP到PHP腳本的很多類似的問題。對不起,如果這是一個簡單的解決方案,但任何人都可以告訴我我哪裏出錯了?

+0

'var_dump'有助於看到變量的內容。做一個'var_dump($ _ POST);'看看這個頁面實際上正在接收什麼。 – Prasanth

+0

'CheckForm()'做什麼? –

+0

它只是一個JavaScript驗證腳本。 – Bohdi

回答

1

不要使用隱藏的輸入來測試表單是否被提交。

使用:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // processing of $_POST 
} 
4

你有name="Password"$_POST["password"]

Password!= password

關注你的情況。


<form name="LogIn" action="login.php" method="post"> 
        <td bgColor=#ffffff> 

這是無效的HTML。 A <td>元素不能是<form>的子元素。瀏覽器可能會以破壞HTML的方式錯誤恢復(例如,通過將表單移動到表格外)。做use a validator


而且這些東西不太可能成爲問題的原因,但很可能是其他問題的原因。

+1

有用信息+1 – Bohdi

0

的名稱提交按鈕應該是「BtnPressed」而不是隱藏字段 我會做的是將表單動作設置爲?id = submit或類似的東西,然後檢查「if $ _GET ['id'] ==」submit「然後處理數據。

<form action="login.php?do=submit"> 

.... <input ..... 

</form> 
<?php 
if($_GET['do'] == "submit"){ 

//process data 

} ?>