Tengo este formulario:
Código PHP:
<form action="votar.php" method="post" id="VotoForm" style="display: none;">
<table <tr><td>
Cuenta:</td><td> <input type="text" name="cuenta" size="10" id="l2_acc"></td></tr><tr><td>
Personaje:</td><td> <input type="text" name="user" size="10" id="l2_char"><br></td></tr><tr><td colspan="2"><center>
<br><input type="submit" id="submit" name="cooki" value="Obtener puntos" class="submit" type="submit">
</center>
</td></tr>
</table>
</form>
Código PHP:
<?php
define('mySQL_hostname', 'host'); //database IP
define('mySQL_database', 'base_de_datos'); //database name
define('mySQL_username', 'root'); //database user
define('mySQL_password', 'pass'); //database password
$db_link = mysql_pconnect( mySQL_hostname, mySQL_username, mySQL_password )
or die( 'Error connecting to mysql<br><br>'.mysql_error() );
$db_select = mysql_select_db( mySQL_database, $db_link )
or die( 'Error connecting to Database<br><br>'.mysql_error() );
$user = $_POST["user"];
$cuenta = $_POST["cuenta"];
$ip = getenv("REMOTE_ADDR");
$fecha =time();
$vototime = mysql_query("SELECT `vototime` FROM `characters` WHERE `char_name` = '$user' and `account_name` = '$cuenta'") or die(mysql_error());
$query_row= mysql_fetch_array($vototime);
$vototimequeda = mysql_query( "SELECT `vototimequeda` FROM `characters` WHERE `char_name` = '$user' and `account_name` = '$cuenta'" )or die(mysql_error());
$query_row2= mysql_fetch_array($vototimequeda);
$ipvote = mysql_query( "SELECT `ipvote` FROM `characters` WHERE `vototime` > $fecha AND `ipvote` = '$ip'" )or die(mysql_error());
$query_row3= mysql_fetch_array($ipvote);
$tiempo =time();
if ($query_row['vototime'] > $tiempo){echo "Votaste antes de que se acabara el tiempo, prueba el $query_row2[vototimequeda]"; mysql_close(); }
elseif ($ip == $query_row3['ipvote']){echo "Votaste antes de que se acabara el tiempo."; mysql_close(); }
else {
$db_add = mysql_query( "UPDATE `characters` SET `vote` = vote+2 WHERE `char_name` = '$user' and `account_name` = '$cuenta'" );
$db_add2 = mysql_query( "UPDATE `characters` SET `ipvote` = '$ip' WHERE `account_name` = '$cuenta'" );
$db_add3 = mysql_query( "UPDATE `characters` SET `vototimenow` = UNIX_TIMESTAMP() WHERE `account_name` = '$cuenta'" );
$db_add4 = mysql_query( "UPDATE `characters` SET `vototime` = UNIX_TIMESTAMP()+60 WHERE `account_name` = '$cuenta'" );
$db_add5 = mysql_query( "UPDATE `characters` SET `vototimequeda` = now()+ interval 6 hour WHERE `account_name` = '$cuenta'" )
or die( 'Error: '.mysql_error() );
echo "Puntos adquiridos')";
}
?>
En el formulario introducen los datos tales como nombre de usuario y personaje al que van a ir destinados unos puntos.
También coloca el tiempo en el que le dieron al botón y en otra columna el tiempo +60 segundos, entonces si intentan enviar el formulario antes de esos 60 segundos, revisa si existe algún otro personaje con la misma ip o si el tiempo actual aún no ha llegado a superar al tiempo +60, y en ese caso no deja votar.
El problema es que cuando lo conecto a la base de datos que está en Windows, no hay nada erroneo pero si lo conecto al servidor en Linux siempre me da los puntos, es decir no revisa el primer if ( $query_row['vototime'] > $tiempo ) y siempre da los votos aunque el tiempo que se guardó sea mayor al actual.
No tengo ni idea que es lo que puede estar mal, pues en Linux también guarda todos los datos y lo unico que hace es dejar votar siempre por el contrario en windows la única diferencia es que si revisa el tiempo.
He revisado las tablas en ambos servidores, es la misma, no cambia absolutamente nada.
Desde ya, gracias.