Php 通过管理页面创建新的登录帐户-表单数据保存到文本文件
正如您可能猜到的,我对学习PHP还不熟悉,有一项任务是创建一个页面,通过在表单字段中输入用户名和密码可以创建新的用户帐户,然后需要将其保存在文本文档中 我花了几个小时试图弄明白这一点,并尝试了我所看到的关于其他问题的建议。正如我之前提到的,我对这一点非常陌生,需要保持基本的东西Php 通过管理页面创建新的登录帐户-表单数据保存到文本文件,php,Php,正如您可能猜到的,我对学习PHP还不熟悉,有一项任务是创建一个页面,通过在表单字段中输入用户名和密码可以创建新的用户帐户,然后需要将其保存在文本文档中 我花了几个小时试图弄明白这一点,并尝试了我所看到的关于其他问题的建议。正如我之前提到的,我对这一点非常陌生,需要保持基本的东西 <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $newUsername = trim(htmlspecialchars($_POST["newuser
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$newUsername = trim(htmlspecialchars($_POST["newuser"]));
$newPassword = trim(htmlspecialchars($_POST["newpwd"]));
$file = "user_accounts.txt";
$openfile = fopen($file, "a") or die("Unable to open file");
if($newUsername || $newPassword == ""){
echo '<script language="javascript">';
echo 'alert("Error: Please complete all fields")';
echo '</script>';}
else{
fwrite ($openfile, "$newUsername \n $newPassword \n");
fclose($openfile);}
}
?>
表单字段的名称分别为user
和pwd
。但是,在PHP代码中,您正在查找newuser
和newpwd
尝试使用var\u dump($\u POST)在PHP代码中使用code>来帮助调试像这样的小错误。:-) 这是:
if($newUsername || $newPassword == ""){
解析为:
if($newUsername || ($newPassword == "")){
^-- ^--
归结起来就是
if (true/false || true/false)
如果填写了用户名,您将获得
if (true || whatever)
最后声称有错误
你想要
if (($newUsername == "") || ($newPassword == "")) {
相反,表单中输入的名称转换为POST数组中的变量名称
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$newUsername = trim(htmlspecialchars($_POST["user"]));
$newPassword = trim(htmlspecialchars($_POST["pwd"]));
$file = "user_accounts.txt";
$openfile = fopen($file, "a") or die("Unable to open file");
//note how these have changed - each condition is separated by ()
if(($newUsername == "") || ($newPassword == "")){
echo '<script language="javascript">';
echo 'alert("Error: Please complete all fields")';
echo '</script>';
} else {
fwrite ($openfile, "$newUsername \n $newPassword \n");
fclose($openfile);
}
}
?>
$\u POST[“newuser”]和$\u POST[“user”]以及$\u POST[“newpwd”]和$\u POST[“pwd”]在php代码中。代码的问题是:
如果($newUsername | |$newPassword==“”)
对于$newUsername
另外,您的输入表单元素名称不匹配
$\u POST[“newuser”]
与name=“user”
不匹配
$\u POST[“newpwd”]
与name=“pwd”
不匹配
测试:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$newUsername = trim(htmlspecialchars($_POST["newuser"]));
$newPassword = trim(htmlspecialchars($_POST["newpwd"]));
$file = "user_accounts.txt";
$openfile = fopen($file, "a") or die("Unable to open file");
if($newUsername == "" || $newPassword == ""){
echo '<script language="javascript">';
echo 'alert("Error: Please complete all fields")';
echo '</script>';}
else{
fwrite ($openfile, "$newUsername \n $newPassword \n");
fclose($openfile);}
}
?>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
Username: <input type="text" name="newuser"><br>
Password: <input type="password" name="newpwd"><br>
<input type="submit">
</form>
到
因为它在用户名的末尾和文件本身中每个密码的开头(和结尾)添加了一个空格(测试时),这可能会对字符匹配产生影响
fwrite ($openfile, "$newUsername \n $newPassword \n");
^ ^
另一件事是,使用这种类型的系统被认为是不安全的,除非您将其正确地隐藏在公共领域之外和/或使用.htaccess
使用DB更安全。我遇到的问题是,它只是不断抛出错误,即使表单字段不是空的。$var | |$var==”
不会像您想象的那样:它不是:(我试图确保它们不是空的。有更好的方法吗?你需要检查它们是否都不是空的$newUsername==“”| |$newPassword==“”
@charlotterose23你这里有很多很好的答案…你在表单中使用了什么测试数据?任何奇怪的字符…多字节或非UTF-8?htmlspecialchars()
如果字符集不稳定,将返回一个空白结果。啊,谢谢。我发现了这一点,并对其进行了更改,但在实时版本中没有。不过它仍然不起作用:(我也不确定var_dump的作用是什么?@charlotterose23var_dump
将为您传递的内容提供纯文本表示。$\u POST
是一个数组,因此它将向您显示所有数组键、数据类型和值的列表。这有助于检查是否按您的预期方式工作。谢谢。我(谢谢。我已经更改了我的代码,但由于某些原因它无法工作。即使代码不是空的,仍然会给我错误!!@charlotterose23-哪个错误?无法打开文件,或者错误:请填写所有字段?哦,是的,它工作了!而不是if($newUsername==“”)| |($newPassword==“”))){我使用了if($newUsername==“”| |$newPassword==“”){ D:谢谢你!非常欢迎。你看我的脚注了吗?@夏洛特洛斯23。当你测试的时候做了。不确定你是否想要它。还考虑点击白色的复选标记,直到它变成绿色,在我的答案旁边被标记为被解决。这样,它将不会保持未回答。(这也是一种表示感谢的方式);@charlotterose23干杯,谢谢。我刚刚进入文件,注意到了空格,并对其进行了更改,但也感谢您指出。现在要找到这个复选标记……萝莉知道它非常不安全——这是一个大学作业,这就是我被要求做的!
fwrite ($openfile, "$newUsername \n $newPassword \n");
fwrite ($openfile, "$newUsername\n$newPassword \n");
fwrite ($openfile, "$newUsername \n $newPassword \n");
^ ^