我尝试编写一个检查数据库的页面,如果用户的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);
?>
答案 0 :(得分:0)
使用IP地址检查客户端不是一个好方案。大多数用户将拥有动态变化的IP地址。
这里一个很好的解决方案是在用户浏览器中设置一个不会过期的cookie
。因此,当用户再次访问您的页面时,您可以检查已设置的Cookie。如果cookie存在,则显示播放按钮或注册页面。这个解决方案也有许多垮台。但我们需要坚持下去。如果用户删除浏览器cookie,那么我们别无选择。这不是最好的解决方案,但你可以试试这个。
请查看此主题,了解如何识别唯一身份访问者:Detecting a "unique" anonymous user
在您的情况下,form
未提交,因为您使用的是输入类型=“按钮”。
<input type="button" />
按钮不会提交表单 - 默认情况下它们不会执行任何操作。它们通常与JavaScript一起用作AJAX应用程序的一部分。
<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>';
希望这可以帮助你:)