I have been writing a script for my online game server, to fetch the user name from the db and check for its level.
The problem is that the code doesn't check for the level so any one at any level can vote and abuse my voting system.
NOTE: That voting system is based on time/date so you can only vote once every 12 hrs.
Form code:
<html>
<body>
<center>
Please Enter Your Character Name Below, <br /><br />
After You Vote Please Relogin And Your Cps Will be Added<br /><br />
<FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Character Name: <br /><br /> <input type="text" name='CharName'><br>
<br />
<input type="submit" name="button" value="Vote">
</form>
</center>
</body>
</html>
Vote code:
<html><center>
<?php
$user = 'test'; //dbuser
$pass = 'test'; //dbpass
$host = 'localhost'; //dbhost
$name = 'zf'; //dbname
$con = mysql_connect($host, $user, $pass);
mysql_select_db($name, $con);
$datetime = date('Y-m-d');
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_POST['button']))
{
$result1 = mysql_query("SELECT `level` FROM `cq_user` WHERE `name` = '$char_name'") or die(mysql_error());
while($row = mysql_fetch_array($result1))
{
}
error_reporting(E_ALL);
ini_set('display_errors', '1');
$char_name = $_POST['CharName'];
$result = mysql_query("SELECT name FROM cq_user WHERE name = '" . $char_name . "' AND UNIX_TIMESTAMP(lastvoted) <= UNIX_TIMESTAMP('" . date('Y-m-d H:i:s', strtotime('-12 Hours')) . "')") or die(mysql_error());
$result1 = mysql_query("SELECT `level` FROM `cq_user` WHERE `name` = '" . $char_name. "'") or die(mysql_error());
while($row = mysql_fetch_array($result1))
{
}
if (mysql_num_rows($result) == 0 && $row <= 119)
echo "This character does not exist, or you have entered the wrong name. Or you could be trying to cheat and have already voted. Or you are not level 120+.";
else
{
mysql_query("UPDATE `cq_user` SET `emoney` = `emoney` + 100000, `lastvoted`='" . date('Y-m-d H:i:s') . "' WHERE `name` = '" . $char_name . "'") or die(mysql_error());
mysql_query("UPDATE `cq_user` SET `ip` = '$ip' WHERE `name` = '$char_name'");
?>
<meta http-equiv="REFRESH" content="0;url=http://www.xtremetop100.com/in.php?site=1132303596"></HEAD>
<?php
}
}
?>
</html></center>
Thats my checker
if (mysql_num_rows($result) == 0 && $row <= 119)
That's the part where my Level checker should be working the <= 119!