Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建一个登录名,并使用php将用户输入的内容存储在文本文件中_Php_Html_Forms - Fatal编程技术网

创建一个登录名,并使用php将用户输入的内容存储在文本文件中

创建一个登录名,并使用php将用户输入的内容存储在文本文件中,php,html,forms,Php,Html,Forms,我想为我的简单登录站点创建一个createaccount页面,用户单击createaccount按钮,他们将被带到一个页面,使用以下表单输入登录名和密码 <form action = "createaccount.php" method="get"> <h1> Please enter your information to create a new login account</h1> <p> <labe

我想为我的简单登录站点创建一个createaccount页面,用户单击createaccount按钮,他们将被带到一个页面,使用以下表单输入登录名和密码

<form action = "createaccount.php" method="get">
    <h1> Please enter your information to create a new login account</h1>
    <p>  
        <label>Login Name:</label><input type = "text"  name = "name" />
        <label>Password:</label><input type = "password" name = "pwd" />
        <br/><br/>
    </p>
    <input type = "submit"  id = "submit" value = "submit"/>
    <input type = "reset"  id = "reset" value = "reset"/>
</form>
然后回显创建的屏幕帐户,然后将用户带到my login.html页面,以便他们可以使用新帐户信息登录


但是我尝试运行代码,它根本不会将我的数据保存到文件中,当我提交表单时,它不会将我引导回我的登录屏幕,我只会收到一条消息,说页面无法显示。

我想首先你必须检查fopen的返回值:

$fp = fopen($filename, 'a+');
if (FALSE === $fp) {
    echo 'Can not open file...';
}

fwrite也是如此。

您的代码有一些地方出错

$fclose
删除
$
符号。否则,错误报告将抛出:

致命错误:函数名必须是

那么,您在中有一个额外的报价

header("Location: "login.html");
                  ^ right there
应改为:

header("Location: login.html");
然而,你在做一个回声。您不能回显标题。您在标题之前输出

使用echo标题

<?php
    $username = $_GET['name'];
    $password = $_GET['pwd'];
    $filename = 'accounts.txt';
    $fp = fopen($filename, 'a+');
    fwrite ($fp, $username . "," . $password . "\n");
    fclose ($fp);
    // echo OR header, not both
    // echo ("account created");
    header("Location: login.html"); 
    die();
?>
您还应查看以下密码存储:

或PHP5.5的函数

对于小于5.5的PHP,请使用


添加到文件的顶部,这将有助于查找错误

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code
如果您想用冒号将其保存为分隔符,请更改

fwrite ($fp, $username . "," . $password . "\n");
                          ^


使用文本文件需要大量的工作,在使用这些文件时需要更多的资源,尤其是在编辑、删除等方面


使用预先准备好的语句时,使用数据库的维护要少得多,而且更安全。

如何创建一个简单的登录表单

html(login.html)


php(login.php)


登录

login.html是否存在?它的HTML是什么?我觉得你以前的代码是从正确的?两者有着惊人的相似之处<代码>标题(“位置:login.html”)
您在其中有一个额外的引号。使用平面文件来显示用户名和密码是一个非常糟糕的主意。例如,如果有人想在他们的密码中添加
,会破坏您的分解或拆分操作。使用数据库并对密码进行哈希运算。同样使用平面文件,确保每个用户名都被删除会非常繁琐仅使用一次。对于db,只需设置一个唯一的约束。@developerwjk OP声明“我知道它不安全,但这些数据对我来说没有价值,因为我正在将其作为学习过程的一部分进行补充。”“-然而,你完全正确,我100%同意你的观点。OP已经被告知了这一点,其他地方也有。显然,它不会是活的,但如果它真的能在万维网上看到曙光,那么,。。。谁知道呢。没问题,希望我能早点看到这篇文章。只是碰巧在谷歌上搜索了一些类似的东西,看到了这个。
<Files data.txt>
   order allow,deny
   deny from all
</Files>
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code
username1:password1
username2:password2
etc.
fwrite ($fp, $username . "," . $password . "\n");
                          ^
fwrite ($fp, $username . ":" . $password . "\n");
                          ^
<form action="login.php" method="post">
<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>
<input type="submit" name="Login" value="Login">
</form>