2

我目前正在制作注册和登录页面。我的第一页询问您是否要创建帐户或登录。我们要做的是从用户输入信息的表单中获取信息,并将其放入文本文件中。我已经大致完成了这个工作。我知道出于安全原因这不是好的做法,但这是课堂作业,我必须将信息放入文本文件中。我有进入文本文件的信息,但是我无法将发布的用户名与数据库内的所有用户名进行比较。这是我的 newaccount.html 页面的代码,以及表单提交到的 register.php 文件。

新帐户.html

<html>
<head>
</head>
<body>

<h3>Hello new user! Choose a user name and password ^_^</h3><br>

<form action = "register.php" method = "POST" >
Username: <input type = "text" name = "username"><br><br>
Password: <input type = "password" name = "pass"><br>
<input type = "submit" value = "Create Account" name = "submit"><br>
</form>
<form method = "LINK" action = "Proj2_practice.html">
<input type = "submit" value = "Home Page" name = "submit2">
</form>

</body>  
</html>

注册.php

<?php

$username = $_POST['username'];
$password = $_POST['pass'];

$userAndPass = $username.",".$password;

$userNames = 'usernames.txt'." ";
$passwords = 'passwords.txt'." ";

$fh_users = fopen($userNames, 'a+')or die("sorry, we couldnt open the file");
$fh_passwords = fopen($passwords, 'a+')or die("sorry, we couldnt open the file");

fwrite($fh_users, $username." ");
fwrite($fh_passwords, $password." ");

$allUserNames = fread($fh_users, filesize('usernames.txt'));

echo $allUserNames;

?>

用户名和密码被正确发送到文本文件,在代码末尾,它没有回显变量。截至目前,文本文件中没有任何信息,我不知道这是否是没有回显的原因。我的方法在这里正确吗?我在这里要做的是将每个名称和密码发送到用户名和密码文本文件。然后,我计划

用它们之间的空格来分解每个文本文件,这就是为什么我在将它们写入文本文件后添加一个,然后通过它们各自的数组元素比较用户名和密码。我是否像我想的那样过于复杂了?请与我分享您的意见,我只是想变得更好^_^

先感谢您!

4

2 回答 2

3

如果您使用“a+”标志打开文件,它会将文件指针放在文件末尾。因此,当您阅读时,您将一无所获,因为您已经在文件的末尾。

在阅读之前回到文件的开头

fseek ($fh_users, 0);

或关闭并使用标志“r”再次打开它

$fh_users = fopen($userNames, 'r')

或者干脆做

$dataString = file_get_contents($userNames);

或者

$dataArray = file($userNames);
于 2012-11-30T16:25:32.430 回答
0

如果这是一个课堂作业,我可以建议一种方法和解决方案吗?

如果这样的事情不起作用,请尝试降低您尝试做的事情的复杂性并逐步构建。你自己说你的文件是空的;如果它是空的,您将无法从中读取,因此您的第一个问题是弄清楚如何正确写入文件并从中读取内容。忘记所有其他任务,首先专注于它。

现在,如果你打开一个资源(比如一个文件),当你不再需要它时,你必须再次关闭它。所以你肯定需要一个 fopen / fclose 对开始。

$username = "Penguin";
$userNames = 'usernames.txt'; // Why did you have a space after this?
$fh_users = fopen($userNames, 'a+');
fwrite($fh_users, $username." ");
fclose($userNames);

我还没有对此进行测试,但此时,您应该有一个包含“企鹅”的文件。如果您多次运行代码,您应该会看到文件内容增长。

如果您想从该文件中读回内容,请意识到有一个文件指针决定您要读取或写入的位置。您可以通过将文件指针移到前面的方式再次打开文件(这样您就可以阅读所需的内容),也可以使用fseek或将其显式移回前面rewind

一旦你完成了这些写作和阅读工作,然后添加代码来处理你的表单等等。

于 2012-11-30T16:52:35.920 回答