-2

ログインに似たスクリプトを作成したいと思います。特定のページに移動する前に、質問に正しく答える必要があります。正しく理解できたら、そのページに進みます。たとえば、「お母さんの名前は?」母親の名前がローリーの場合は、これをテキストボックスに入力して、続行する必要があります。

更新
これを達成するために、オリバー・モランから提供されたスクリプトを使用しました。質問を追加したので、現在、ページごとに 1 つの質問があります。最後の質問に回答した後、質問の回答だけではどうすればよいのかわからなかったので、ユーザーがログインする場所をターゲットにしたページを作成しました。また、ユーザーを別の機能としてログインさせても問題ありません。ログインするためのフォームを取得し、ログインしていないユーザーがこれらのページにアクセスできないようにしました。そして、ブラウザ ウィンドウを開いたままにしておく限り、スクリプトは機能します。

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>

ここで重要なのはフォームです。フォームが送信されると、データは。というPHPスクリプトに送信され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>

これはかなり単純なスクリプトです。'mom'に送信されたものをチェックします。何も送信されなかった場合、または間違った回答だった場合は、「再試行」メッセージが表示されます。それ以外の場合は、「ようこそ」メッセージが表示されます。

PHPロジック(および正解)は、Webブラウザーに表示されません。「再試行」または「ようこそ」メッセージのみがサーバーから送信されます。

これは、サーバー側でHTMLフォームを操作するための基本です。PHPの使用についてよく読んでおくことをお勧めします。それは簡単で楽しい言語です(私の意見では、エレガントでない場合)。ここで基本を学ぶことができます:

コードをテストするには、Webサーバーが必要です。PHPとMySQL(データベース)を備えた本格的なWebサーバーをここからダウンロードしてインストールできます。

これにより、自分のマシンでサーバー側のコードをテストで開発できます。上記の例をテストするには、上記のコードをとという2つのファイルにコピーし、login.htmlそれらscript.phpwwwWAMPのディレクトリに配置します。

幸運を!

于 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 に答える