我想创建一个有点像登录的脚本。在进入某个页面之前,他们必须正确回答问题。如果他们做对了,那么他们就会进入页面。例如“你妈妈叫什么名字?”如果妈妈的名字是Laurie,那么他们必须将其输入文本框并正确地继续进行。
更新
我使用了oliver moran给我的脚本来完成这个。我添加了更多问题,因此每页目前有一个问题。在最后一个问题得到解答之后,我将页面定位到他们登录的地方,因为我无法根据问题的答案弄清楚如何做到这一点。我可以将用户登录为单独的功能。我已经获得了让他们登录的表单,并且不允许未登录的用户访问这些页面。只要他们保持浏览器窗口打开,脚本就会起作用。
我使用了Oliver Moran使用会话的链接,你可以在我的代码中看到我使用会话。但这并没有解决让他们登录的问题。
我现在想知道如何在用户登录后设置cookie,这样他们就可以离开浏览器窗口并返回并仍然登录。我搜索了这个网站的答案,但是找不到一个有道理的。这是我的登录代码
<?php
session_start();
$username=$_POST['username'];
$password=$_POST['password'];
if ($username&&$password) {
$connect = mysql_connect("127.0.0.1","root","") or die('Couldn\'t Connect to Database');
mysql_select_db ("login") or die('Couldn\'t find database');
$query = mysql_query("SELECT * FROM members WHERE username='$username'");
$numrows = mysql_num_rows($query);
if ($numrows !=0) {
while($rows = mysql_fetch_assoc($query)){
$dbusername = $rows['username'];
$dbpassword = $rows['password'];
}
if ($username==$dbusername&&$password==$dbpassword) {
echo "Login Successful. <a href='home.php'>Click here for the members area</a>";
$_SESSION['username'] = $dbusername;
}
else{
echo "Incorrect Password";
}
}
else{
die("Incorrect Username and Password");
}
}
else{
die("Please enter something in the boxes");
}
?>
答案 0 :(得分:3)
通常,服务器端语言用于此类事情。这是因为,如果您在JavaScript中进行密码检查,任何人都可以看到正确的密码(因为通过查看页面的源代码可以获得所有代码)。
为了安全地执行此操作,您需要将答案提交给服务器并使用服务器端语言来检查答案。然后,服务器端脚本决定将哪些响应返回给用户。
PHP是一种非常流行的服务器端脚本语言。这是基础知识:
首先我们需要一个包含HTML表单的登录页面(login.html
),如下所示:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
<title>Login</title>
</head>
<body>
<form action="script.php" method="post">
<label>Enter your mom's name: <input type="text" name="mom" /></label>
<input type="submit" value="Submit" />
</form>
</body>
</html>
这里的重要部分是形式。提交表单后,数据将发送到名为script.php
的PHP脚本。
该脚本如下所示:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
<title>Check login</title>
</head>
<body>
<?php
$mom = $_REQUEST['mom'];
$correct_answer = "Barbie";
if (!isset($mom) || $mom != $correct_answer) {
// nothing was submited or the name was incorrect
echo '<p>That\'s the wrong answer. <a href="login.html">Try again.</a></p>';
} else {
echo '<p>Welcome! That\'s the right answer.</p>';
}
?>
</body>
</html>
这是一个相当简单的脚本。它检查提交给'妈妈'的内容。如果没有提交任何内容或者答案错误,则会显示“再试一次”消息。否则,会显示“欢迎”消息。
PHP逻辑(以及正确的答案)在Web浏览器中不可见。只会从服务器发送“再试一次”或“欢迎”消息。
这是在服务器端使用HTML表单的基础知识。我建议你阅读使用PHP的内容。这是一种简单有趣的语言(如果不优雅,在我看来)。您可以在这里学习基础知识:
要测试代码,您需要一台Web服务器。您可以从这里下载并安装带有PHP和MySQL(数据库)的完整Web服务器:
通过它,您可以在自己的计算机上开发测试服务器端代码。要测试上面的示例,请将上面的代码复制到两个名为login.html
和script.php
的文件中,并将它们放入WAMP的www
目录中。
答案 1 :(得分:0)
这是我设法提出的。在页面顶部,在<!DOCTYPE html>
<?php
//Check for existance of cookie from right answer
if(isset($_COOKIE['parents'])){
header("Location:q1.html");//Move on to next question
}
//Checks answer
if(array_key_exists("dad", $_POST) && array_key_exists('mom', $_POST)){
$dad = $_POST["dad"];
$mom = $_POST["mom"];
$dcorrect = array("Dad", "dad");
$mcorrect = array("Mom", "mom");
if(in_array($dad, $dcorrect) && in_array($mom, $mcorrect)){
setcookie('parents', '1' ,time()+60*60*24);
header("Location: index.html");
}else{
$wrong="<div class='error'>Wrong answer</div>";
}
}
?>
使用此HTML
<form action="index.html" method="post">
<label>Enter your father's name:</label>
<input required autocomplete="off" type="text" name="dad" placeholder="Bill">
<label>Enter your mother's name:</label>
<input required autocomplete="off" type="text" name="mom" placeholder="Billette">
<input type="submit" value="Press me when you think you are right" />
<?php echo $wrong; ?>
</form>