2013-02-27 168 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