-1

私は PHP を学んでおり、簡単なログイン スクリプトを作成しましたが、問題は空白のページにリダイレクトされるだけです。ユーザー資格情報が正しい場合は index.php にリダイレクトすることを意図していますが、これは明らかにそうではありませんか? ユーザーが空白を入力するとエラーが返されるように、検証もあります。これは実行されていないようです。

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> 

logininc.php // 私の処理ページ

<?php

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

if(isset($_POST['login']))
{
//To ensure that none of the fields are blank when submitting the form if
if($user || $password != NULL)
    {
        $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=mysql_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
        {
            print ('<div id="error">Computer says no.</div>');

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

}
}



    ?>

index.php // 成功ページ

 <?php //module to check logins
 session_start();

 if(!isset($_SESSION["loggedIn"])){
     header("Location: login.php");
     exit;
 }
 Echo 'Congratulations <b>'.$_SESSION['user'].'</b> you successfully logged in!!<br />
         Your Password is: <b>'.$_SESSION['password'].'</b><br />
         <a href="login.php">Logout</a>';
 ?>
4

4 に答える 4

1

に変更if(isset($_POST['login']))するとどうなりif(isset($_POST['submit']))ますか?

于 2013-07-24T09:04:08.153 に答える
0

問題はif(isset($_POST['login']))

フォームに「ログイン」エントリを設定することはありません。

できるよ:

if(isset($_POSt["user"]) && isset($_POST["password"])) {
$user=$_POST['user']; 
$password=$_POST['password'];
//To ensure that none of the fields are blank when submitting the form if
if($user && $password) {
于 2013-07-24T09:03:45.943 に答える
0

まず、送信ボタンの名前は「送信」です。そして、「ログイン」が投稿されているかどうかを確認しています。

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

だったはずです:

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

あなたが書いた :

if($user || $password != NULL)
{

だったはずです:

if($user != NULL || $password != NULL)
{

mysqli および mysql コマンドを使用しましたが、これは適切な方法ではありません

$result=mysqli_query($sql);

    $row=mysql_fetch_array($result);

それ以外の

if($row['user'] == $user && $row['password'] == $password)
    {
//this code again check for condition which is already checked in the sql statement

次のように書くことをお勧めします。

if($row->num_rows==1)
    {

あなたが書いたindex.phpに

if(!isset($_SESSION["loggedIn"])){

だったはずです

if(!isset($_SESSION["loggedin"])){

セッションへの保存中に小文字のインデックスを保存したためです。

于 2013-07-24T10:12:52.987 に答える