Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';你不能在表单上登录吗?_Php_Text_Login - Fatal编程技术网

Php Can';你不能在表单上登录吗?

Php Can';你不能在表单上登录吗?,php,text,login,Php,Text,Login,我正在尝试登录我制作的一个网站,我有一个注册表,它将数据保存在一个文本文件中,然后我在login.PHP页面上有PHP代码打开文件,分解每一行,然后检查用户在登录时输入的匹配电子邮件和密码。我的问题是,我最后看到一个通知,上面写着“未定义索引:电子邮件”,然后它说用户名或密码不正确,即使它们是正确的。我是否需要声明变量或以某种方式使用isset来解决问题,或者我的代码是否有问题 Login.php: <?php if (isset($_POST['submitBtn'])){ $file

我正在尝试登录我制作的一个网站,我有一个注册表,它将数据保存在一个文本文件中,然后我在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";
}
}
} 
?>
登入表格:

<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>
试着改变

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

在输入名称中设置的是POST变量的名称

 name="username" will be $_POST['username']

您正在发送用户名和密码

  <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>
试着改变

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

在输入名称中设置的是POST变量的名称

 name="username" will be $_POST['username']

您的表单似乎没有将
电子邮件
userpass
字段发送到Login.php。或者至少不是那些名字

确保正确指定
标记的名称,如下所示:

<form method="post" action="Login.php">
   <input type="text" name="email" />
   <input type="password" name="userpass" />

   <input type="submit" name="submitBtn" value="Submit" />
</form>

哦,还有最后一件事。请不要将密码保存在未加密的文本文件中。使用类似于bcrypt或至少MD5或SHA1的内容。

您的表单似乎没有将
电子邮件
用户密码
字段发送到您的Login.php。或者至少不是那些名字

确保正确指定
标记的名称,如下所示:

<form method="post" action="Login.php">
   <input type="text" name="email" />
   <input type="password" name="userpass" />

   <input type="submit" name="submitBtn" value="Submit" />
</form>

哦,还有最后一件事。请不要将密码保存在未加密的文本文件中。使用bcrypt或至少MD5或SHA1之类的工具。

您需要学习如何处理错误消息。解决问题所需的一切都在错误消息中$_POST['email']未设置为anything我怀疑您的表单输入字段未正确创建,请向我们显示登录表单标记您需要了解如何处理错误消息。解决问题所需的一切都在错误消息中$_POST['email']未设置为anything我怀疑您的表单输入字段未正确创建,请向我们显示登录表单标记+1以获得大致正确的答案。您还添加了检查
在if条件下设置($\u POST['username'])
。事实上,他们也应该在if检查之前对使用的每个变量执行相同的操作echo out$email,$userpass,并查看它们是否包含您认为它们所做的操作。那么,您在提交的密码上使用md5()与文本文件中的密码进行比较的位置在哪里?在比较之前,请在发布的密码上尝试md5()。另外,请不要将md5用于密码哈希,这是不推荐的,还有许多更好的选项。请参见“是”,但在检查用户是否可以登录时,您必须将他们发送给您的内容添加到md5()。“password”与“password”的md5()散列不匹配,但md5($\u POST['password'])将+1表示大致正确的答案。您还添加了检查
在if条件下设置($\u POST['username'])
。事实上,他们也应该在if检查之前对使用的每个变量执行相同的操作echo out$email,$userpass,并查看它们是否包含您认为它们所做的操作。那么,您在提交的密码上使用md5()与文本文件中的密码进行比较的位置在哪里?在比较之前,请在发布的密码上尝试md5()。另外,请不要将md5用于密码哈希,这是不推荐的,还有许多更好的选项。请参见“是”,但在检查用户是否可以登录时,您必须将他们发送给您的内容添加到md5()。“password”与“password”的md5()散列不匹配,但md5($_POST['password'])将与之匹配。虽然您说至少,请不要推荐md5,但您最好说至少使用crypt(),这是一种推荐的密码散列方法,而不是建议不推荐的密码散列方法-尽管您说至少,请不要推荐md5您最好说至少使用crypt(),这是一种推荐的密码哈希方法,而不是建议不推荐的密码哈希方法-