[英]Can't login on form?
我正在尝试登录一个我已拥有将数据保存到文本文件中的注册表的网站,然后在我的login.php页面上打开了PHP代码以打开文件,然后展开每一行,然后检查用户是否输入了匹配项登录时输入电子邮件和密码。我的问题是,我最终收到一条提示,指出“未定义索引:电子邮件”,然后说用户名或密码不正确,即使它们是正确的。 我是否需要声明变量或以某种方式使用isset来解决问题,或者我的代码有问题?
Login.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>
您正在发送用户名和密码
<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']
您的表单似乎没有将email
和userpass
字段发送到Login.php。 或至少没有这些名称。
确保正确指定<input>
标记的名称,如下所示:
<form method="post" action="Login.php">
<input type="text" name="email" />
<input type="password" name="userpass" />
<input type="submit" name="submitBtn" value="Submit" />
</form>
此外,你应该检查,如果email
和userpass
键正在评估他们(就像你与以前一样设置submitBtn
)。
if (isset($_POST['email']) && isset($_POST['userpass'])) {
// ...
}
哦,还有最后一件事。 请不要将密码保存在未加密的文本文件中。 使用bcrypt之类的东西,或者至少使用MD5或SHA1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.