【发布时间】:2013-09-09 01:35:00
【问题描述】:
我正在尝试编写一个页面来检查数据库是否存在用户 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);
?>
【问题讨论】:
-
好的,那么...哪里出错了?
-
无法使用 IP 地址识别客户端。 IP 地址经常变化。一些客户端可能还具有动态 IP,这些 IP 一直在变化,或者他们甚至可能使用代理。
-
@SverriM.Olsen 绝对正确。 IP 地址永远不是访客识别的可靠值。在很多情况下,IP 不是特定访问者独有的,甚至是单个访问者独有的。
-
我正在使用 ip 地址从那里开始脚本,我会添加更多我需要的东西。但是现在有人知道为什么它没有识别出我在数据库中有一个帐户吗?
-
您是否有机会使用您的 ISP 提供缓存代理? (如果是,
$_SERVER[REMOTE_ADDR]可能不是你想的那样)