-2

我想创建一个有点像登录的脚本。在进入某个页面之前,他们必须正确回答一个问题。如果他们做对了,他们就会进入页面。例如“你妈妈叫什么名字?” 如果妈妈的名字是 Laurie,那么他们必须将其输入到文本框中并正确处理才能继续。

更新
我使用了奥利弗莫兰给我的脚本来完成这个。我添加了更多问题,因此目前每页只有一个问题。在回答完最后一个问题后,我将页面定位到他们登录的地方,因为我无法仅仅根据问题的答案弄清楚如何做到这一点。我很高兴将用户登录作为一个单独的功能。我已经获得了让他们登录的表单,而不是让未登录的用户访问这些页面。只要他们保持浏览器窗口打开,脚本就可以工作。

我使用了 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");
}
?>
4

2 回答 2

3

通常,服务器端语言用于此类事情。这是因为,如果您在 JavaScript 中进行密码检查,任何人都可以看到正确的密码(因为所有代码都可以通过查看页面的源代码获得)。

为了安全地执行此操作,您需要将答案提交到服务器并使用服务器端语言来检查答案。然后,服务器端脚本决定将什么响应返回给用户。

PHP 是一种非常流行的服务器端脚本语言。这是基础知识:

首先,我们需要一个login.html包含 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.

该脚本如下所示:

<!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.htmland script.php,放到wwwWAMP 的目录下。

祝你好运!

于 2012-12-27T19:33:56.617 回答
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>
于 2013-03-19T20:25:20.363 回答