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>

login() 进入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 !';
            }
        }
    }

?>

以及我backoffice.php中每个 html 声明之前的一堆代码:

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

我真的不知道我为什么要转身:我检查了所有密码和登录名,每个标题。(为了避免标题可能出现的问题,我什至尝试使用脏 js 包含

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

我有点绝望,所以如果你能帮助我或者只是打开一个可能的错误/php错误的灯,我会非常感激。

谢谢!

4

1 回答 1

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" />

Also, check to see if you are entering if with header redirect. You must not have any html output before it, including empty space. And url should normally be absolute, not relative, so add http://...

于 2013-02-27T22:30:48.927 回答