2016-08-15 179 views
0

您好,欢迎所有这个主题的读者!我知道这听起来很愚蠢,但我想用一些简单的注册和登录表单。这不是一个网站所以它不应该是安全的,我不希望名称和密码永远持续。我也想指定我是初学者,我只知道php的基础知识。首先,我开始写html登录表单,然后登录php以检查是否有任何cookie。后来注册。 下面是代码:PHP Cookies注册和登录表格

<?php 
setcookie($usr,$pwd,time() + (86400 * 30),'/'); 
setcookie($pwd,$usr,time() + (86400 * 30),'/'); 
If(isset($_POST['submitForm'])) { 
    $usr = $_POST['usr']; 
    $pwd = $_POST['pwd']; 

    If(isset($_COOKIE[$usr]) && isset($_COOKIE[$pwd])) { 

    } 
    else { 
     die('User has not been registered or wrong username or password.'); 
    } 
} 
?> 

正如你可以看到我尝试接取$ PWD是代表“密码”与代表“用户名”的$ USR变量,无论使用的cookie。

下面是HTML代码:

<form method="POST" action="logged.php" style="text-align: center;"> 

<h1>Log In Page of Forum</h1> 

<input type="text" name="usr" placeholder="Username"> 

<br/><br/> 
<input type="password" name="pwd" placeholder="Password"> 

<br/><br/> 
<input type="submit" name="submitForm" value="Log in"> 

<br/> 
</form> 

是。 PHP在文件中。

被飞出的错误是:

Notice: Undefined variable: usr in logged.php on line 2 

Notice: Undefined variable: pwd in logged.php on line 2 

Notice: Undefined variable: pwd in logged.php on line 3 

Notice: Undefined variable: usr in logged.php on line 3 

但文本仍然显示:

User has not been registered or wrong username or password. 

我这样做是为了更好地了解PHP的,而不是在认真做事使用。

有人可以告诉我我的代码有什么问题吗?我提前谢谢你。 ;)

回答

0

您的Cookie调用错误。您应该为Cookie使用FIXED名称。您正在使用用户提供的(随机)用户名。

这会工作:

setcookie('user', $user, ....); 

产生user=fred作为cookie($_COOKIE['user'] => 'fred'),而不是

setcookie($usr, $pwd, ...) 

你有,产生fred=hunter42

因为您不知道用户的用户名是什么,所以您有想要在$ _COOKIE中使用哪个键来检索其用户名。 $_COOKIE['ok what is the username?']

+0

另外,你不能使用一个变量创建一个cookie,直到你使用它之后2行才创建一个变量 – RiggsFolly

+0

糟糕!我从早期的教程(具有固定名称的东西)知道这一点,但我只是想尝试,我甚至认为它也可以与变量一起工作。谢谢Marc B,你救了我的学习。 ;) –