0

ユーザーのIPアドレスが存在する場合はデータベースをチェックし、そうでない場合はフォームにサインアップするように提供し、ユーザーが存在する場合は「再生」ボタンを提供するページをコーディングしようとしています。

奇妙な理由で機能しません。DB にアカウントがありますが、それでも「再生」ボタンが表示されません。作成したフォームでサインアップも試みましたが、送信をクリックしてもページは何もしません。

<?php
    $con = mysqli_connect("localhost","root","","********");
    $ip = $_SERVER['REMOTE_ADDR'];

    // Check connection
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    //Checking DB Connection//
    $result = mysqli_query($con,"SELECT * FROM users WHERE ip='$ip'");

    while($row = mysqli_fetch_array($result)) {
        $rsname = $row['rsname'];
        $tokens = $row['tokens'];
    }

    if (mysqli_num_rows($result) > 0) {
        if ($tokens >= 1) {
            echo '<h2>Hello '.$rsname.'! Click The Button Below To Play!';
            echo '<a href="slots.php"><button>Play!</button></a>';
        }
        else {
            echo '<h2>Your Account "'.$rsname.'" Already Exists, But You Do Not Have Any Tokens.</h2><br />';
            echo '<h3>You Can Purchase More Token From "Got Your IP" In Game For 20k/Token.</h3>';
        }
    }
    else if (isset($_POST['rsname'])) {
        $sql="INSERT INTO users (rsname, ip)
        VALUES
        ('$_POST[rsname]','$_SERVER[REMOTE_ADDR]')";

        if (!mysqli_query($con,$sql)) {
            die('Error: ' . mysqli_error($con));
        }

        echo '<h2>Your account has been setup! Click the button below to play! </h2>';
        echo '<a href="slots.php"><button>Play!</button></a>';
    }
    else {
        echo '<h2>You Need To Register To Play RSLOTTO.</h2>';
        echo '<form id="form1" name="form1" method="post" action="play.php">';
        echo 'RuneScape Username:';
        echo '<input name="rsname" type="text" id="rsname" size="32" maxlength="40" />';
        echo '<input name="submit" type="button" value="submit" /></form>';
        echo 'We only ask for your username and not a password, because we tie your username to     your IP address so you don\'t need to enter a password. Safe as can be! :D';
    }

    mysqli_close($con);
?>
4

1 に答える 1

0

IP アドレスを使用してクライアントをチェックすることは、適切なシナリオではありません。ほとんどのユーザーは、動的に変化する IP アドレスを持っています。

ここでの良い解決策は、cookie期限切れにならないようにユーザー ブラウザーに設定することです。そのため、ユーザーが再度ページにアクセスしたときに、設定されている Cookie を確認できます。Cookie が存在する場合は、再生ボタンを表示するか、登録ページを表示します。このソリューションには多くの欠点もあります。しかし、私たちはそれで行く必要があります。ユーザーがブラウザの Cookie などを削除した場合、他に選択肢はありません。これは最善の解決策ではありませんが、これを試すことができます。

ユニークな訪問者を識別する方法については、このスレッドを参照してください: 「ユニークな」匿名ユーザーの検出

あなたの場合、forminput type="button" を使用しているため、送信されていません。

<input type="button" />ボタンはフォームを送信しません - デフォルトでは何もしません。これらは通常、AJAX アプリケーションの一部として JavaScript と組み合わせて使用​​されます。

<input type="submit">ボタンは、JavaScript で別の方法で指定しない限り、ユーザーがボタンをクリックしたときのフォームを送信します。

あなたの場合、

<input name="submit" type="button" value="submit" />

する必要があります

<input name="submit" type="submit" value="submit" />

したがって、フォームは次のようになります。

echo '<form id="form1" name="form1" method="post" action="play.php">';
echo 'RuneScape Username:';
echo '<input name="rsname" type="text" id="rsname" size="32" maxlength="40" />';
echo '<input name="submit" type="submit" value="submit" /></form>';

これがお役に立てば幸いです:)

于 2013-09-09T02:33:24.417 に答える