Ho fatto uno script per un giochino idiota di quelli che si trovano in rete... il codice è questo:
<?php
// Connection with database
$db_host = 'localhost';
$db_name = '*********';
$db_user = '**********';
$db_pass = '********';
$dbcon = mysql_connect($db_host, $db_user, $db_pass);
// Verifica della connessione e selezione del database
if (!$dbcon)
{
die('Errore connessione : ' . mysql_error());
}
$db_select = mysql_select_db($db_name, $dbcon);
if (!$db_select)
{
die ('Errore selezione database : ' . mysql_error());
}
if (isset($_COOKIE['z3rolabs_soul']))
{
echo ('
<div align="center">
<p class="title"><strong>Tu possiedi una sola anima e, tuo malgrado, è stata già rubata da: ' . $_COOKIE['z3rolabs_soul_user'].'</strong> </p>
<p class="title"><img src="images/Satan.jpg" alt=""></p>
</div>');
}
else
{
$query = "SELECT * FROM soul WHERE username='$_GET[user]'";
$result = mysql_query($query, $dbcon);
$row = mysql_fetch_array($result);
if ($row['ban'] == "1")
{
echo ('<div align="center" class="title">Utente bannato</div>');
}
else
{
$souls = $row['souls']+1;
$ip = $_SERVER['REMOTE_ADDR'];
$query = "UPDATE soul SET souls = $souls WHERE username = '$_GET[user]' LIMIT 1";
$result = mysql_query($query, $dbcon);
setcookie("z3rolabs_soul","$souls",time()+365*24*60*60);
setcookie("z3rolabs_soul_user","$_GET[user]",time()+365*24*60*60);
echo ('
<div align="center">
<p class="title"><strong>' . $row['username'] . ' Ha rubato la tua anima!</strong> </p>
<p class="title"><img src="images/Satan.jpg" alt=""></p>
</div>');
}
}
if ($action == "register")
{
if ($send == "true")
{
if (trim($user_name == ""))
{
echo ('<div align="center" class="title">I campi devono essere riempiti! <br> Clicca <a href="soul.php?action=register">Qui</a></div>');
}
else
{
$user_name = htmlspecialchars($user_name);
if (!get_magic_quotes_gpc())
{
$user_name = addslashes($_POST['user_name']);
}
else
{
$user_name = $_POST['user_name'];
}
$query = "SELECT username from soul WHERE username = '$user_name'";
$risultato = mysql_query($query);
$num_righe = mysql_num_rows($risultato);
if($num_righe)
{
echo ('<div align="center" class="title">Questo username è già stato inserito.<br> Clicca <a href="soul.php?action=register">Qui</a></div>');
exit;
}
$query = "INSERT INTO soul (username) VALUES ('$user_name')";
if (mysql_query($query, $dbcon))
{
echo ('<div align="center" class="title">Grazie per esserti registrato!<br>Il link per cominciare a rubare anime è questo: http://z3rolabs.altervista.org/soul.php?user='.$user_name.'</a></div>');
exit;
}
}
}
else
{
echo ('<div align="center" class="title">
<form name="form1" method="post" action="soul.php?action=register&send=true">
Username:
<input name="user_name" type="text" maxlength="32">
<input type="submit" name="Submit" value="invia">
<br>
</form>
</div>');
}
}
if ($action == "top")
{
$query = "SELECT * from soul ORDER BY souls DESC LIMIT 0,10";
$result = mysql_query($query, $dbcon);
echo ('<div align="center">
<span class="title"><p>Classifica Top 10:</p></span>
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr class="title">
<th scope="col">Posizione</th>
<th scope="col"> </th>
<th scope="col">Username</th>
<th scope="col"> </th>
<th scope="col"># Anime </th>
</tr>');
$posizione = 1;
while ($row = mysql_fetch_array($result))
{
echo "
<tr class=\"text\">
<th scope=\"col\">$posizione</th>
<th scope=\"col\"> </th>
<th scope=\"col\">$row[username]</th>
<th scope=\"col\"> </th>
<th scope=\"col\">$row[souls]</th>
</tr>";
$posizione = $posizione + 1;
}
echo ('</table></div>');
}
?>
per renderlo più sicuro avevo pensato di fare un controllo dell'ip... ovvero quando "un'anima viene rubata" io salvo l'ip (in un campo VARCHAR)... se uno cancella i cookie prova a farsi rubare l'anima nuovamente subentra il controllo dell'ip se l'ip dell'utente risulta uguale all'ultimo inserito nel database l'inserimento non è valido e l'utente viene bannato di conseguenza.
Per fare tutto questo ho aggiunto le seguenti righe di codice (questo è il primo Else che si incontra, dopo la verifica dell'esistenza del cookie):
else
{
$query = "SELECT * FROM soul WHERE username='$_GET[user]'";
$result = mysql_query($query, $dbcon);
$row = mysql_fetch_array($result);
$ip = $_SERVER['REMOTE_ADDR'];
if ($row['ban'] == "1")
{
echo ('<div align="center" class="title">Utente bannato</div>');
exit;
}
if ($row['ip'] == "$ip")
{
echo ('<div align="center" class="title">Odio i cheater... Utente bannato...</div>');
$query = "UPDATE soul SET ban = 1 WHERE username = '$_GET[user]' LIMIT 1";
$result = mysql_query($query, $dbcon);
exit;
}
else
{
$souls = $row['souls']+1;
$ip = $_SERVER['REMOTE_ADDR'];
$query = "UPDATE soul SET souls = $souls, ip = $ip WHERE username = '$_GET[user]' LIMIT 1";
$result = mysql_query($query, $dbcon);
setcookie("z3rolabs_soul","$souls",time()+365*24*60*60);
setcookie("z3rolabs_soul_user","$_GET[user]",time()+365*24*60*60);
echo ('
<div align="center">
<p class="title"><strong>' . $row['username'] . ' Ha rubato la tua anima!</strong> </p>
<p class="title"><img src="images/Satan.jpg" alt=""></p>
</div>');
}
}
non riesco a capire perchè non funziona lo script; in particolare:
1- Non viene aggiornato l'ip
2- Non viene aggiornato $souls
sapete aiutarmi?
Grazie
p.s buon anno nuovo a tutti ;)