0

私が作成したサイトにログインしようとしています。データをテキスト ファイルに保存する登録フォームがあります。次に、login.php ページに PHP コードがあり、ファイルを各行で展開して開き、ユーザーが入力した一致を確認します。ログイン時のメールアドレスとパスワード。問題を解決するには、変数を宣言するか、何らかの方法で isset を使用する必要がありますか?それともコードに何か問題がありますか?

ログイン.php:

<?php
if (isset($_POST['submitBtn'])){
$file = explode( "PHP_EOL", file_get_contents( "users.txt" ));

foreach( $file as $line ) {
list( $fname, $lname, $email, $userpass) = explode( "||", $line );

if( $_POST['email'] == $email && $_POST['userpass'] == $userpass ) {
// User authenticated correctly
echo "You've successfully logged in!";
echo "<br>";
echo '<a href="home.php">Member\'s Only Site!</a>';
} else {
// User did not authenticate
echo "Invalid Username or Password";
}
}
} 
?>

Regform.php

else {
    $userpass = md5($pass1);
    $fp = fopen("Text_Database\users.txt", "a");
    $savestring = $fname . "||" . $lname . "||" . $email . "||" . $userpass . "||" .PHP_EOL;
    fwrite($fp, $savestring);
    fclose($fp);
    echo 'You have successfully registered!';   
    }
   }
 ?>

ログインフォーム:

<form action="" method="post" name="loginform">
    <table width="100%">
      <tr><td>Username:</td><td> <input class="text" name="username" type="text"  /></td></tr>
      <tr><td>Password:</td><td> <input class="text" name="password" type="password" /></td></tr>
      <tr><td colspan="2" align="center"><input class="text" type="submit" name="submitBtn" value="Login" /></td></tr>
    </table>  
  </form>
4

2 に答える 2

3

ユーザー名とパスワードを送信しています

  <tr><td>Username:</td><td> <input class="text" name="username" type="text"  /></td></tr>
  <tr><td>Password:</td><td> <input class="text" name="password" type="password" /></td></tr>

しかし、あなたはメールをチェックしています

$_POST['email']

変更してみる

if( $_POST['email'] == $email && $_POST['userpass'] == $userpass ) {

if( $_POST['username'] == $email && $_POST['password'] == $userpass ) {

入力の名前に設定したものが POST 変数の名前になります。

 name="username" will be $_POST['username']
于 2013-08-01T12:34:50.340 に答える