2012-02-06 76 views
0

我使用下面的代碼,但問題是當我點擊提交頁面刷新沒有登錄函數處理,我沒有得到任何錯誤消息。PHP登錄函數不工作

<? 

include("connection.php"); 
include("suction.php");//function file 

session_start(); 

    if(@$_POST['login'] == 'Login'){ 
    $log = login($_POST['username'], $_POST['password']); 
    if($log == true){ 
     //login good 
     header("Location: home.php"); 
    }elseif($log == false){ 
     //username/password invalid 
     die("error"); 
    } 
    } 


    ?> 


    <form action="login.php" method="post" enctype="multipart/form-data"> 

    Username:<input name="username" type="text"/> <br /> 
    Password:<input name="password" type="password"/> 
    <input name="Login" value="Login" type="submit"/> 

    </form> 
+0

如果您刪除$ _POST ['登錄']的@,你會得到一些錯誤? – 2012-02-06 19:58:33

+0

@sergiomichels我刪除它,但就像其他時間它顯示我相同的頁面,但空白! – 2012-02-06 20:25:38

回答

2

你應該檢查$_POST['Login'] - 注意大寫字母L.理想的情況下你的表單應該改變在名稱中使用小寫l,但你需要任何一種方式來改變其中的一個。

備註:設置Location標題後,除非特殊情況,否則應始終在exitdie()之後。

+0

嘿,我按照你的建議,並作爲克里斯蒂安建議,但它沒有工作......當我點擊提交按鈕同一頁「login.php」刷新爲表單設置爲server_self,然後空白頁出現.. – 2012-02-06 20:24:49

+0

可能不相關,但刪除'enctype' - 沒有理由使用'multipart'。 – 2012-02-06 21:02:34

2

您正在檢查$_POST['login']是否存在。但是沒有這樣的領域。在您的表單中,您有一個名爲Login的字段 - 不是login

如果您沒有使用@前綴$_POST['login']抑制錯誤消息,PHP會通知您這一點。

只需將您的提交按鈕的name更改爲login即可。

+0

嘿!謝謝。我做到了。但它仍然給我同樣的問題,無論錯誤或正確的憑據,當我登錄它只是給了我相同的頁面,但空白... – 2012-02-06 20:16:37

+0

它給你同一頁,但空白?它顯示錶單還是空白頁? – kba 2012-02-06 20:22:52

+0

同一頁面「login.php」,但表單不再存在。 – 2012-02-06 20:23:43

1
enctype="multipart/form-data" 

這是怎麼回事? ithink你應該刪除它。 。在第一個參數

if(isset($_POST['username']) && isset($_POST['password'])) 

+0

我刪除它,但仍然沒有幫助的情況! – 2012-02-07 02:51:42

+0

login.php在哪裏?表單位於此頁面嗎?如果是這樣,請嘗試使用action =「<?php echo $ _SERVER [」PHP_SELF「]?>」 – tomexsans 2012-02-07 05:55:59

0

我會嘗試使用。如果這不起作用,請提供更多信息;像你的login()功能。