0

我正在尝试编写一个页面来检查数据库是否存在用户 IP 地址,如果不存在,它会提供他们以表格形式注册,如果用户确实存在,那么它会提供一个“播放”按钮。

由于某些奇怪的原因它不起作用,我在数据库中有一个帐户,但它仍然不会提供“播放”按钮。我也试过用我制作的表格注册,但是当我点击提交时页面没有做任何事情。

<?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左右,那么我们别无选择。这不是最佳解决方案,但您可以尝试一下。

请查看此线程以了解如何识别唯一访问者:检测“唯一”匿名用户

在您的情况下,form没有提交,因为您使用的是输入类型 =“按钮”。

<input type="button" />按钮不会提交表单 - 默认情况下它们不做任何事情。它们通常与 JavaScript 结合使用,作为 AJAX 应用程序的一部分。

<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 回答