创建注册和登录页面

时间:2012-11-30 16:19:15

标签: php authentication login registration

我目前正在制作注册和登录页面。我的第一页询问您是否要创建帐户或登录。我们要做的是从用户输入信息的表单中获取信息,并将其放入文本文件中。我粗略地工作了。我知道出于安全原因这不是好习惯,但这是课程的分配,我必须将信息放入文本文件中。我将信息传入文本文件,但是我将发布的用户名与数据库中的所有用户名进行比较时遇到问题。这是我的newaccount.html页面的代码,以及表单提交的register.php文件。

newaccount.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>

register.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;

?>

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

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

提前谢谢!

2 个答案:

答案 0 :(得分:3)

如果使用“a +”标志打开文件,它会将文件指针放在文件的末尾。因此,当你正在阅读时,你将不会得到任何东西,因为你已经在文件的末尾。

在阅读

之前回到文件的开头
fseek ($fh_users, 0);

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

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

或只是做

$dataString = file_get_contents($userNames);

$dataArray = file($userNames);

答案 1 :(得分: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);

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

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

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