【问题标题】:PHP post sendingPHP 邮件发送
【发布时间】:2016-02-03 10:08:13
【问题描述】:

我有一个简单的帖子表单,可以将数据从一个页面发送到另一个页面,但是当我按下提交时,process.php 说没有输入用户名和密码。我觉得我错过了一些愚蠢明显的东西。我在这里做错了什么?

登录.php

 <form action="login_process.php" method="POST"> 
        <h1>Login page</h1>
        <input name="username" type="text"><br>  
        <input name="password" type="password"><br>  
        <input type="submit" value="Log in">  
 </form> 

login_process.php

    var_dump($_POST['username']);
    echo '<br>';
    if (!isset($_POST['username']) || !isset($_POST['password'])) {  
       echo 'U heeft geen gebruikersnaam of wachtwoord ingevoerd!'.'<br>';  
       echo 'username', $_POST['username']; 
       echo '<br>password', $_POST['password'];
       exit;  
    } else {
       $sql = "SELECT `username`,`password` FROM `users` WHERE `username` = '"  . $_POST['username'] . "' AND `password` = '" . $_POST['password'] . "'";
       echo 'Gebruikersnaam en wachtwoord goed ingevoerd.';
    }

【问题讨论】:

  • 我刚刚测试过,它可以工作,你确定文件在同一个目录吗?
  • var_dump($_POST) 返回什么?
  • SamSwift웃 是的,我刚刚下载并仔细检查了它,它们在同一个目录中。 Daan var_dump 给了我 ''NULL''
  • @SemAbraham,而不是重定位,使用#作为表单操作并在Login.php页面上使用isset($_POST) { var_dump($_POST); }来检查是否正在设置值,然后您可以查看是否有问题在服务器上,或在表单上
  • 好吧,它确实转储了用户名并通过了。所以..他们没有与表格一起发送?这就是它转储的内容: array(2) { ["username"]=> string(5) "admin" ["password"]=> string(5) "admin" }

标签: php html


【解决方案1】:

我认为这就是你需要的 -

if ($_POST['username']=="" || $_POST['password']==""){
   echo 'U heeft geen gebruikersnaam of wachtwoord ingevoerd!'.'<br>';  
   echo 'username', $_POST['username']; 
   echo '<br>password', $_POST['password'];
   exit;  
} else {
   $sql = "SELECT `username`,`password` FROM `users` WHERE `username` = '"  . $_POST['username'] . "' AND `password` = '" . $_POST['password'] . "'";
   echo 'Gebruikersnaam en wachtwoord goed ingevoerd.';
}

但是你的代码会有很多安全问题,因为有人可以通过在用户名和密码中插入编程逻辑来尝试破解你的应用程序。

最好的办法是—— 1. 使用 strip_tags($input) - 这将从输入中删除标签,因为用户名或密码不应该有标签; 2.不要像上面那样在数据库中存储用户名密码,使用加密形式的文本。

【讨论】:

  • 加密可以像这样应用 -
  • 我的 login_process 页面目前只有这个: if(isset($_POST)) { var_dump($_POST);并且它仍然转储NULL。所以我不确定这是怎么回事,而且我也知道密码存储是错误的,但我想在实施任何安全措施之前先让它工作。
  • 你能不能在你的 php 文件的顶部做这个并告诉我你得到了什么结果 - echo $_POST['username'] ; echo $_POST['password'];
  • 并告诉我结果,将其粘贴到页面顶部- echo $_REQUEST['username'] ; echo $_REQUEST['password']
【解决方案2】:

好的!很多困惑完全来自我的身边。我的根目录中有一个 .htaccess 文件,它显然阻止了所有 POST 数据。我删除了 .htaccess 文件进行测试,POST 数据被整齐地提供给 login_process.php。

查看这篇文章了解更多信息: Seems like POST values are lost when .htaccess RewriteRule used. GET values are OK. How to fix?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多