Hey ppl!
Well, there's this rating script, originally designed to work with no database, by just generating another file which stores IP's which have already voted.
You insert this tage
<? include("http://www.yoursite.com/rate/rate.php"); ?>
in a .html, turn it into a .php and done... it should work!
The point is, every time one tries to vote, the message "You ahve already voted" comes up, which is no true...
Below, there's the code of rate.php, which besides the stars pictures, it's the only thing needed to make the script work.
Could anyone please help me finding the error in this code?
Thank you so much!
Miss Death
<?
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);
/****** PHP RATING SYSTEM v1.5 ******
Copyright 2003, Cgixp Team
You have to leave the copyright.
If you have any problem just let us know.
E-mail: mali75850@yahoo.com
Website: http://www.cgixp.tk
*******************************************/
$ficdest=explode(".",basename($PHP_SELF));
$ficdest=$ficdest[0].".dat";
if(file_exists($ficdest)) {
$compteur=fopen($ficdest, "r");
$old_stats=file($ficdest);
$stats=explode("|", $old_stats[0]);
fclose($compteur);
$new_count=$stats[0];
if ($stats[3] != $REMOTE_ADDR) {
$new_count +=1;
}
$ip_hit=$REMOTE_ADDR;
$compteur=fopen($ficdest, "w");
fputs($compteur, "$new_count|$stats[1]|$stats[2]|$ip_hit|$stats[4]");
fclose($compteur);
}
else {
$nouveau_compteur=fopen($ficdest, "w");
fputs($nouveau_compteur, "1|||$REMOTE_ADDR|");
fclose($nouveau_compteur);
}
if (!empty($envoi)) {
$vote=fopen($ficdest, "r");
$old_stats=file($ficdest);
$stats=explode("|", $old_stats[0]);
fclose($vote);
$nbr_votes=$stats[1];
$moy_votes=$stats[2];
if ($stats[4] != $REMOTE_ADDR) {
$nbr_votes +=1;
$moy_votes=((($stats[1]*$stats[2])+$note)/$nbr_votes);
}
else { echo "<font face=Verdana size=2 color=red>You have already voted</font>"; }
$ip_vote=$REMOTE_ADDR;
$vote=fopen($ficdest, "w");
$new_stats=fputs($vote, "$new_count|$nbr_votes|$moy_votes|$stats[3]|$ip_vote");
fclose($vote);
}
print ("<form method=post>");
$old_stats=file($ficdest);
$stats=explode("|", $old_stats[0]);
if ($stats[2] == 5)
{
$star = "images/5star.gif" ;
}
if ($stats[2]>=1)
{
$star = "images/1star.gif" ;
}
if ($stats[2]>=1.5)
{
$star = "images/15star.gif" ;
}
if ($stats[2]>=2)
{
$star = "images/2star.gif" ;
}
if ($stats[2]>=2.5)
{
$star = "images/25star.gif" ;
}
if ($stats[2]>=3)
{
$star = "images/3star.gif" ;
}
if ($stats[2]>=3.5)
{
$star = "images/35star.gif" ;
}
if ($stats[2] >= 4)
{
$star = "images/4star.gif" ;
}
if ($stats[2] >= 4.5)
{
$star = "images/45star.gif" ;
}
if ($stats[2] >= 5)
{
$star = "images/5star.gif" ;
}
if ($stats[2]<=0)
{
$star = "images/00star.gif" ;
}
print ("<font size=1 face=Verdana color=#FFBA00>Avaliado: <img src=\"$star\" alt=\"Average rating: $stats[2]\"> $stats[1] votos</font>");
print (" <select name=note>");
for ($i=1; $i<=5; $i++) {
print ("<option value=$i>$i");
}
print (" <input type=hidden name=envoi value=1><input type=submit value=Vote>");
print ("</select></form></font>");
?>