1

オンラインで公開するつもりはなく、非常に単純なログイン システムを自分用に開発しています。私のシナリオ:登録時に、ユーザーは自分のユーザー名を選択し、ログインに必要なクリック数を挿入すると、データベースに保存されます。ログイン中、ユーザーはまず自分のユーザー名をキー入力し、次にユーザーが onclick 関数で画像をクリックしてクリック数をカウントするページにリダイレクトされます。

問題 : login.php から「クリック数」を取得し、checkclick.php に記録されたデータベースのクリック数と比較するにはどうすればよいですか? 私はすでに何日もそれを行うための自分のアイデアを見つけるために最善を尽くしてきました. しかし、私は失敗しました。正直なところ、私はプログラミングが遅くて弱いので、ここで助けてもらえれば幸いです。友達は AJAX を使うように勧めてくれましたが、チュートリアルを読んでもよくわかりません。誰でも助けてもらえますか?私は感謝するでしょう。

私の質問を読んで助けてくれてありがとう。

login.php    

<?php
include("connection.php");
$username = $_SESSION["CID"];
$table1=mysql_query("select * from pic_a");
$table2=mysql_query("select * from pic_b");
$table3=mysql_query("select * from pic_c");

$tab1[0]=0;
$tab2[0]=0;
$tab3[0]=0;

$i=0;
while($row=mysql_fetch_assoc($table1))
{
    $tab1[$i]= $row["pic_link"];
    $i++;
}

$i=0;
while($row=mysql_fetch_assoc($table2))
{
    $tab2[$i]= $row["pic_link"];
    $i++;
}

$i=0;
while($row=mysql_fetch_assoc($table3))
{
    $tab3[$i]= $row["pic_link"];
    $i++;
}


$rand1=rand(0,9);
$rand2=rand(0,9);
$rand3=rand(0,9);


?>
<script type="text/javascript">
var count = 0;
function countClicks() {
count = count + 1;
document.getElementById("clicks").innerHTML = count;
}
</script>

<body>
<h1>login</h1>

    <form action = "" name = "allpass" method = "post" enctype = "multipart/form-data">

        <p style="font-size:20px">Username: <?php echo $username;?> </p>
        <p style="font-size:20px">Password:</p>
    <p><table border = 0>

    <td>
        <div STYLE=" height: 800px; width: 165px; font-size: 12px;">
    <table border="1">
         <tr id="bird" onclick="countClicks();">
            <td><img src="password\<?php echo $tab1[$rand1]; ?>" alt="" width="76" height="67"></td>
            <td>Bird</td>
         </tr>
         <tr id="car" onclick="countClicks();">
            <td><img src="password\<?php echo $tab2[$rand2]; ?>" alt="" width="76" height="67"></td>
            <td>Car</td>
         </tr>
         <tr id="computer" onclick="countClicks();">
            <td><img src="password\<?php echo $tab3[$rand3]; ?>" alt="" width="76" height="67"></td>
        </table>
        </div>
        </td>
        </table>
        <p id="clicks">0</p>
        <input type = "submit" style=" height: 25px; width: 75px" value = "Login" name = "submitbtn" />
</form></p>
</div>


</body>
</html>

checkclicks.php
<?php
    include("connection.php");


if(!isset($_GET["username"]) || !isset($_GET["clicks"]))
die("Error");
    $username = $_GET["username"];
    $jsClicks = $_GET["clicks"];
    $phpClicks = null;

$data = mysql_query("SELECT clicks FROM customerdetails WHERE customer_username='$username'");
while($row = mysql_fetch_array($data))
{
$phpClicks = $row["clicks"];
}
    if( $phpClicks == $clicks)
    {
    ?>
    <script type="text/javascript">
        alert("success");
        location = "welcome.php";
    </script>
<?php
} else {
?>
    <script type="text/javascript">
        alert("fail");
        location = "login.php";
    </script>

<?php
}
?>
4

2 に答える 2

0

最も簡単な解決策は、データベースからインポートするphp変数と同じJava変数を設定することだと思います。例えば:

function countClicks() {
var myclicks = <?php echo $value_from_database; ?>;
count = count + 1;
if(count >= myclicks){
window.location = "success.html";
}}
于 2013-01-07T23:17:04.533 に答える
0

1 つの解決策は、JQuery を使用して、$postを使用してデータをデータベースに投稿することです。以下のコードは、データを PHP ファイルに投稿して、名前と数を挿入します。

$(document).ready(function(){
   number = 0; 
   $("#count").click(function(){//id of image 
   ++number;
   $('#counter').val(number);
   });

  $("#submit").click(function(){
    name= $("input").val();//id of text field for name
    $.post("ClickInsert.php",
    {
      name:name,
      ClickCount:number
    },
    function(data,status){
      alert("Insert status: " + status);
    });
  });
});

mysql_非推奨の関数を 使用する代わりに、PDOを使用します。以下のコードは、新規ユーザー向けの INSERT です。

<?php
//dependant on your setup
$host= "localhost";
$username="XXX";
$password="YYY";
$database="ZZZ";
// connect to the database  
$name = $_POST["name"];
$ClickCount = $_POST["ClickCount"];

try {  

    $dbh = new PDO("mysql:host=$host;dbname=$database", $username, $password);  
    $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  
    //
    $stmt = $dbh->prepare("INSERT INTO `tablename` (`id`, `Name`, `ClickCount`) VALUES (NULL, ?, ?);");  
    $stmt->bindParam(1,$name);
    $stmt->bindParam(2,$ClickCount);
    $stmt->execute(); 
    echo "Welcome ". $name;
  }   
catch(PDOException $e) {  
    echo "Error .". $e->getMessage() ;// Remove or modify after testing 
    file_put_contents('PDOErrors.txt',date('[Y-m-d H:i:s]'). $e->getMessage()."\r\n", FILE_APPEND);  
}  
// close the connection
$dbh = null;
?>

コードはSELECTユーザーに変更できます

于 2013-01-08T20:21:36.790 に答える