PHP MySQL和表单,没有任何反应

时间:2013-09-09 01:35:00

标签: php html mysql

我尝试编写一个检查数据库的页面,如果用户的IP地址存在,如果没有它提供他们在表单中注册,如果用户确实存在则提供" play&# 34;按钮。

由于某些奇怪的原因它无法正常工作,我在数据库中有一个帐户,但仍然无法提供"播放"按钮。我还尝试使用我已制作的表单进行注册,但是当我点击提交时,该页面并没有做任何事情。

<?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);
?>

1 个答案:

答案 0 :(得分:0)

使用IP地址检查客户端不是一个好方案。大多数用户将拥有动态变化的IP地址。

这里一个很好的解决方案是在用户浏览器中设置一个不会过期的cookie。因此,当用户再次访问您的页面时,您可以检查已设置的Cookie。如果cookie存在,则显示播放按钮或注册页面。这个解决方案也有许多垮台。但我们需要坚持下去。如果用户删除浏览器cookie,那么我们别无选择。这不是最好的解决方案,但你可以试试这个。

请查看此主题,了解如何识别唯一身份访问者:Detecting a "unique" anonymous user

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

<input type="button" />按钮不会提交表单 - 默认情况下它们不会执行任何操作。它们通常与JavaScript一起用作AJAX应用程序的一部分。

除非您使用JavaScript另行指定,否则

<input type="submit">按钮将提交用户点击它们时所使用的表单。

在你的情况下,

<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>';

希望这可以帮助你:)