-5

私のログインページは、ログインフィールドの入力で index.php にリダイレクトされているようです。チェックを実行するはずなので、これは予期しないことです。また、ログイン フィールドを空白のままにすると、空白のページにリダイレクトされます。この結果に対処するための条件を設定したので、これもそうすべきではありません。見る

logininc.php

    <?php

require_once("assets/configs/db_config.php");
$user=$_POST['user']; 
$password=$_POST['password'];

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

//To ensure that none of the fields are blank when submitting the form if
if($user != NULL || $password != NULL)

// if(isset($_POST['user']) && isset($_POST['password'])) old code
    {
        $user = stripslashes($user);
        $password = stripslashes($password);
        $user = mysqli_real_escape_string($user);
        $password = mysqli_real_escape_string($password);

        $sql="SELECT * FROM $test_db WHERE user='$user' and password='$password'";
        $result=mysqli_query($sql);

        $row=mysqli_fetch_array($result);

        if($row['user'] == $user && $row['password'] == $password)
        {
            session_start();
            $_SESSION['user'] = $user;
            $_SESSION['password'] = $password;
            $_SESSION['loggedin'] = "true";
            header("location:index.php");
        }
        else
        {
            echo ('<div id="error">Computer says no.</div>');

        }
            echo ('<div id="error">Enter something!</div>');

}


}

login.php

 <form id="login-form" method="post" action="logininc.php"> <fieldset> 
  <legend>Login </legend> 
  <p>Please enter your username and password to access the administrator's panel</p>

   <label for="user"> <input type="text" name="user" placeholder="Type your username here" id="user" /></label> 
   <label for="password"> <input type="password" name="password" placeholder="Type your password here" id="password" /></label>
   <label for="submit"> <input type="submit" class="btn btn-primary"name="submit" id="submit" value="Login" /> </label> </fieldset> </form> 

お知らせ下さい。

4

5 に答える 5

0

コードの先頭でセッションを開始する必要があります。コードのどこからでもセッションを開始することはできません

のように始めます

<?php
 session_start();
 ...

次のようなコードを変更する必要がある場合$_POST['user']、 このページは再度エラーを報告します。$_POST['password']

if(isset($_POST['user'])&&isset($_POST['password']))
 {
    //proceed for login check
 }
 else{ 
    //error: all credentials not sent
 }
于 2013-07-24T11:41:49.567 に答える
0

拡張機能とは異なり、mysql_拡張mysqli機能を手続き型スタイルで使用する場合は、接続オブジェクトをすべての関数に渡す必要があります。

$con最初のパラメーターを想定して接続リソースを渡します。

mysqli_query($con, $sql);

あなたの中でもmysqli_real_escape_string($con, $string);

于 2013-07-24T11:35:56.637 に答える
0

この場合、タイプもチェックする必要があります。

if($row['user'] == $user && $row['password'] == $password)

代わりに使用してください:

if($row['user'] === $user && $row['password'] === $password)

空白のフィールドを残すと、空白のページにリダイレクトされるのはなぜですか? そのコードを試してください:

$a = ''; //string type
$b = array(); // array type
var_dump($a==$b); // you will get true;
var_dump($a===$b); // you will get false;
于 2013-07-24T11:50:19.643 に答える