如何修复PHP登录?

时间:2018-06-18 11:33:35

标签: php html login

我有一个index.php和一个单击提交按钮时打开的登录功能。现在无论何时点击按钮,用户都不会登录,因为没有任何事情发生,我无法弄清楚问题。

index.php的小片段:

Username:<br> <img src="/images/figure.png" alt="Icon" height="42" width="42>">
    <input type="text" name="username"><br>
    Passwort:<br> <img src="/images/Key_lock.png" alt="Icon" height="42" width="42>">
    <input type="password" name="passwort"><br>
    <input type="submit" login="loginfunc()" value="Login">  
</form> 

和我的loginfunc

<?php
session_start();
include 'globals.php';
if(empty($_POST["username"]) || empty($_POST["passwort"]))  
{  
    echo "Bitte tragen Sie ihr Passwort und Benutzername ein";
}  
else {  
       $query = "SELECT * FROM benutzer WHERE username = '$username'";  
       $result = mysqli_query($con, $query);  
       if(mysqli_num_rows($result) > 0)  
       {  
            while($row = mysqli_fetch_array($result))  
            {  
                 if(password_verify($passwort, $row["password"]))  
                 {      
                      session_start();
                      $_SESSION['username'] = $username;
                      header("Location:dashboard.php");     
                 }  
                 else  
                 {  
                    echo "Kevin";
                 }  
            }  
       }  
       else  
       {  

       }
}
?>

1 个答案:

答案 0 :(得分:1)

你永远不会向你的PHP代码发送数据(顺便说一句,这不是一个功能,基于你在这里发布的内容)。您在提交按钮上的login=loginfunc()不是有效的HTML,也没有做任何事情。此外,PHP是一种服务器端语言。你不能在这样的客户端上调用它。

您需要在action代码上设置form参数,如下所示:

<form method="POST" action="functions/loginfunc.php">

此外,您对SQL injection持开放态度。您需要使用预准备语句,而不是将变量连接到查询中。请参阅How can I prevent SQL injection in PHP?

您还有其他问题,例如两次调用session_start(),并从外观上看,一些未定义的变量($username$passwort,对于初学者而言)。

以上所有内容都是您不应该“推出自己的”登录/身份验证逻辑的原因;这很容易弄错。尽可能使用现有的库。

根据您的(现已删除)&#34;回答&#34; 进行编辑您似乎对HTML和PHP的工作原理有一些基本的误解。这条线

include_once("functions/loginfunc.php");

定义function;它只会导致loginfunc.php中的任何内容立即执行。无论如何,您无法直接从HTML调用PHP函数。而且,您的按钮上的login=loginfunc()属性也不会 - 或告诉浏览器执行任何操作。浏览器不会在代码中的某处找到名为login的内容;它只是忽略了这一点。

我对你的最好建议是:

  1. 尝试创建自己的登录功能。安全和正确地完成它是非常困难的。而且,坦率地说,这个问题清楚地表明你对HTML,PHP或其他相关问题的了解不够。请理解:我不是想侮辱你;我试图帮助你避免被可怕的黑客攻击。

  2. 在继续阅读之前,先阅读并学习一些基本的HTML和PHP教程。如果您不知道如何定义函数,则无法在PHP(或大多数其他语言)中执行任何有意义的操作。