0

簡単なPHPMySQLログインページを作成しようとしています。私はコードを読み続けていますが、何が間違っているのかわかりません。データベースでテストとして調べたばかりの電子メールとパスワードを使用してテストしているので、それが存在することがわかります。前のフォームで[送信]をクリックすると、同じページにリダイレクトされ、ログインしません(ヘッダーが機能すると、ヘッダーが$ _SESSION変数で変更されるため、これはわかります。登録ページが機能するため、これはわかりますが、登録後のログインではありません)。登録時に名前と名前を入力することにも注意してください。そのため、session_startの$_SESSION変数に名前を含めました。コードは次のとおりです(最初にフォーム、次にchecklogin.phpページ)。

<!--THIS IS THE FORM FROM THE PAGE SIGN_IN.PHP-->
<form method="post" target="checklogin.php">
   <label for="email">EMAIL/USERNAME:</label>
   <input type="text" name="email" id="email">
   <label for="password">PASSWORD:</label>
   <input type="password" name="password" id="password">
   <br />
   <input type="submit" value="Let's Play!">
</form>

そして、これはフォームが投稿するchecklogin.phpスクリプトです:

<?php
$mysqli = mysqli_connect("mysql_name","login_id","password", "db_name");
if (!$mysqli)
  {
  die('Could not connect: ' . mysqli_error($mysqli));
  }

// username and password sent from form
//NEVER Remove the mysql_real_escape_string. Else there could be an Sql-Injection!
$email=$mysqli->real_escape_string($_POST['email']);
$password=$mysqli->real_escape_string($_POST['password']);

$sql="SELECT * FROM tbl_name WHERE email='$email' and password='$password'";
$result = $mysqli->query($sql);

if(is_object($result) && $result->num_rows == 1){
  // Register variables and redirect to file "profile.php"
  session_start();
  $_SESSION['firstname']=$_POST['firstname'];
  $_SESSION['lastname']=$_POST['lastname'];
  $_SESSION['email']=$_POST['email'];
  $_SESSION['password']=$_POST['password'];
  redirect('profile.php');
} else {
  echo "Wrong Username or Password";
}

?>

私もheader('location:profile.php')でこれを試しましたが、同じ結果になりました。

4

2 に答える 2

4
<form method="post" action="checklogin.php">

このaction属性は、フォームが投稿される URL を指定するためのものです。target属性は、URL をロードする場所を指定するためのものです。

プロパティが欠落している場合、actionデフォルトで現在の URL に設定されます。これが、フォームを送信したときに同じページに移動する理由です。

于 2012-10-30T04:03:05.477 に答える
2
Change Your Form As:

    <form method="post" action="checklogin.php">
       <label for="email">EMAIL/USERNAME:</label>
       <input type="text" name="email" id="email">
       <label for="password">PASSWORD:</label>
       <input type="password" name="password" id="password">
       <br />
       <input type="submit" value="Let's Play!">
    </form>

 Checklogin.php as

    <?php
    $mysqli = mysqli_connect("mysql_name","login_id","password", "db_name");
    if (!$mysqli)
      {
      die('Could not connect: ' . mysqli_error($mysqli));
      }

    // username and password sent from form
    //NEVER Remove the mysql_real_escape_string. Else there could be an Sql-Injection!
    $email=$mysqli->real_escape_string($_POST['email']);
    $password=$mysqli->real_escape_string($_POST['password']);

    $sql="SELECT * FROM tbl_name WHERE email='$email' and password='$password'";
    $result = $mysqli->query($sql);

    if(is_object($result) && $result->num_rows == 1){
      // Register variables and redirect to file "profile.php"
      session_start();
      $_SESSION['firstname']=$_POST['firstname'];
      $_SESSION['lastname']=$_POST['lastname'];
      $_SESSION['email']=$_POST['email'];
      $_SESSION['password']=$_POST['password'];
      //redirect('profile.php');
      header('location:profile.php');

} else {
  echo "Wrong Username or Password";
}

?>
于 2012-10-30T04:14:45.290 に答える