2013-02-27 161 views
0

首先,英語不是我的母語,它很晚,我從中午開始搜索。所以,請放縱。登錄表單:不允許重定向到允許的頁面

我有一個簡單的登錄表單有問題。那麼,這個登錄表單,就是這麼簡單,我想我不會有任何問題......

我做了什麼: 所以,我創建了一個網頁的index.php其中包含登錄表單。發送時,腳本驗證字段是否已填充,連接到數據庫,檢查數據庫中的數據,如果密碼和登錄正確,則啓動$ _SESSION並填充$ _SESSION ['login]。然後它將用戶重定向到帶有後臺內容的頁面,通過session_start和$ _SESSION ['login']的檢查。理論上,它會起作用。

但是沒有。

問題是什麼: 當我登錄表單中輸入的信息,並將其發送,同一頁面重新加載,並且不重定向我到後臺頁面。零誤差推出

我的代碼: 的index.php

<?php 
    include('functions.php'); 
    login(); 
?> 
<!DOCTYPE html> 
<head> 
... 
</head> 
<body> 

<div id="main"> 
<h2>Authentification</h2> 
<form name="iam" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" > 
    <label for="login" class="iconic comment"> Login <span class="required">* </span> 
    </label> 
    <input type="text" required="required" name="login" id="login"> 
    <label for="mdp" class="iconic comment"> Password <span class="required">* </span> 
    </label> 
    <input type="password" required="required" name="mdp" id="mdp"> 
    <input type="submit" name="Submit" value="Submit"> 
</form> 
</div> 
</body> </html> 

登錄()到的functions.php

<?php 
include_once('conf/connec.php'); 
$connect_db=connect(); 

function login() { 

     if(isset($_POST['Submit'])) { 

      if(!empty($_POST['login']) && !empty($_POST['mdp'])) { 

       $query = mysql_query("SELECT mdp, login FROM 2K13_id WHERE login = '".md5($_POST['login'])."'"); 

       if(mysql_num_rows($query) == 1) { 
        $user = mysql_fetch_object($query); 

        // On vérifie la concordance des mots de passe (en md5) 
        if(md5($_POST['mdp']) == $user->mdp) {  
         session_start(); 
         $_SESSION['login'] = $user->login; 
         header("Location:backoffice.php"); 

        } else { 
         echo 'Mauvais mot de passe pour cet utilisateur.'; 
        } 

       } else { 
        echo 'Ce login n\'existe pas dans notre base.'; 
       } 
      } else { 
       echo 'Vous devez remplir tous les champs !'; 
      } 
     } 
    } 

?> 

和每一個代碼前的一堆HTML聲明在我的backoffice.php

<?php 
session_start(); 
    if(!isset($_SESSION['login'])) { 
     die("NO PASARAN"); 
    } 

我真的不知道我爲什麼轉身:我檢查了所有的密碼和登錄,每個頭。 (爲了避免候選條件問題,頭,我甚至用髒JS列入

echo '<script>document.location = "backoffice.php"</script>'; 

嘗試我有點絕望,因此,如果你能幫助我,或只打開一盞燈就可能出錯/ PHP的錯誤,我將完全心存感激。

謝謝!

回答

1

嘗試關閉輸入標籤,取而代之的

<input type="text" required="required" name="login" id="login"> 
<label for="mdp" class="iconic comment"> Password <span class="required">* </span> 
</label> 
<input type="password" required="required" name="mdp" id="mdp"> 
<input type="submit" name="Submit" value="Submit"> 

<input type="text" required="required" name="login" id="login" /> 
<label for="mdp" class="iconic comment"> Password <span class="required">* </span> 
</label> 
<input type="password" required="required" name="mdp" id="mdp" /> 
<input type="submit" name="Submit" value="Submit" /> 

此外,檢查您是否正在輸入if頭重定向。您不能在它之前有任何html輸出,包括空白空間。和URL通常應該是絕對的,不是相對的,所以加http://...

+0

嗨@Marko,感謝您的時間和你的回答,我沒有收我的輸入標籤(_even如果不關閉這些是寫在HTML5_ 的新途徑) ,我檢查:「if」:它被輸入。我檢查了是否我沒有寫入包含一些空格,或者如果我在標題之前調用Html:nope ...所以,我不知道爲什麼我的文件沒有被啓動...但感謝這些命題! – Gaelle 2013-03-01 10:03:21

+0

和你嘗試絕對的網址? – 2013-03-01 10:06:00

+0

是的。正確的道路。不起作用。它可能來自我的主機,不允許標題的重定向? – Gaelle 2013-03-01 10:10:50