webForumDet fria alternativet

Hjälp med kod

PHPur PHP

6 svar · 214 visningar · startad av noratx

Medlem sedan feb. 200193 inlägg
Frågan#1

Hejsan!

Jag har ett litet problem med ett poll script..

Det är så, att pollscriptet skriver till en fil som heter votes.dat

Nu är det som så, att den skriver i detta formatet (Eller SKA skriva så iaf)
1|1|192.0.0.1
Den fösta siffran står för svaret "Ja"
Andra står för "Nej" och ni förstår nog säkert att det andra är en IP adress.. ;)
Det är så, att min VÄGRAR att skriva in "Nej siffran" och jag hajjar fan inte varför.. Mycket irriterade.. x(

Så här ser koden ut:

<?php
/*
///////////////////////////////////////////////////////////////////////// 
Installation: 
1. Copy this file in the directory of your choice (must be accessible to reading and writing.
2. Create a blank file called votes.dat
3. Create a file called data.dat which contains the choices of your poll (1 line per choice)
4. Choose an image for the graphical display of the results
5. Insert the poll wherever you want in a PHP page with the line
<? require("poll.php"); ?> 
/////////////////////////////////////////////////////////////////////// */ 

/* Path to data.dat */ 
$data="data.dat"; 

/* Path to votes.dat */ 
$votes="votes.dat"; 

/* Path to the image file */ 
$path_img="blue.jpg"; 

/* Name of your poll */ 

$poll_name="Skulle du vilja höra på Sagan om ringen om jag sände den på radio över internet?"; 

/////////////////////////////// 
// NOTHING TO CHANGE BELOW // 
/////////////////////////////// 

$dataf=file("data.dat"); 

if ($go !=1) { 
     
     
     echo "<center><i>$poll_name</i></center><br>\n"; 
     echo "<form method=post>"; 
     for ($i=0; $i<=count($dataf)-1; $i++) { 
         echo "<center><input type=radio name=\"rösta\" value=\"$i\"> $dataf[$i]<br></center>\n"; 
     } 
     echo "<input type=hidden name=go value=1>"; 
     echo "<p><center><input type=submit value=Vote>"; 
     echo "</form>"; 
     echo "<a href='poll.php?result=1&go=1' target='new'>Resultat</a></center>"; 
} 

else { 
     
     $file_votes=fopen($votes, "r"); 
     $line_votes=fgets($file_votes, 255); 
     $single_vote=explode("&#0124;", $line_votes); 
     fclose($file_votes); 
     
     if ($result!=1) { 
         
         
         $file_votes=file($votes, "r"); 
         if ($REMOTE_ADDR == $file_votes[1]) { 
             echo "<center><font color=red>Du har redan röstat!</font></center>"; 
             exit; 
         } 
         
         $ficdest=fopen($votes, "w"); 
         for ($i=0; $i<=count($dataf)-1; $i++) { 
             if ($i == $vote) { 
                 $single_vote[$i]+=1; 
             } 
             fputs($ficdest, "$single_vote[$i]&#0124;"); 
         } 
         fclose($ficdest); 
         $ficdest=fopen($votes, "a"); 
         fputs($ficdest, "\n$REMOTE_ADDR"); 
         fclose($ficdest); 
         $result=1; 
     } 
     
     if ($result==1) { 
         
         
         echo "<table cellpadding=10>"; 
         echo "<tr><td align=center><font face=Verdana size=2>"; 
         echo "<i>Choice</i></font>"; 
         echo "</td><td align=center><font face=Verdana size=2>"; 
         echo "<i>%</i></font></td>"; 
         echo "<td align=center><font face=Verdana size=2>"; 
         echo "<i>Votes</i></font></td></tr>"; 
         for ($i=0; $i<=count($dataf)-1; $i++) { 
             $tot_votes+=$single_vote[$i]; 
         } 
         for ($i=0; $i<=count($dataf)-1; $i++) { 
             $stat[$i]=$single_vote[$i]/$tot_votes*100; 
             echo "<tr><td><li><font face=Verdana size=2>"; 
             echo "$dataf[$i]</font></td><td align=left><font face=Verdana size=2>"; 
             echo "<img src=\"$path_img\" height=10 width=$stat[$i] align=middle>&nbsp;"; 
             printf("%.1f", "$stat[$i]"); 
             echo "%</font></td><td align=center><font face=Verdana size=2>"; 
             echo "$single_vote[$i]</font>"; 
             echo "</td></tr>"; 
         } 
         echo "</table><p>"; 
         echo "<center>Total: $tot_votes votes</center>"; 
     } 
} 

?>

Kan någon kanske ändra i koden åt mig så att den skriver in den andra siffran åxå?
Visst är det väll kul att alla svar blir possitiva, men ändå...
Dessutom, så sparar den bara senaste IP numret som röstade...
Om jag röstar, å sen någon annan efter mig, så kan jag rösta om sedan igen...
Går det att göra som så att den skriver IP numrena till en egen fil och kollar av dom där så att man inte kan fuska?
Skulle någon kunna lägga in det i koden åxå? Eller åtmisntonne berätta VART i koden man skall lägga in det så kan jag ju givetvis slänga in det själv...
Jag vet inte hur pass det går med både kakor och IP check.. Saken är ju den, att jag byter ju inte fråga med jämna mellanrum..
Så det kan ju hända att kakan har tex. 5 dagar kvar innan den slutar att gälla... så personen kan tackvare det inte rösta... Eller går det att komma runt på någet sätt??

Mycket tacksam för hjälp!
//noratx

Medlem sedan mars 200121 inlägg
#2

if (!$p)	{

$p = index;
		}

	include("incs/top.inc");
	include("pages/$p/lala.inc");

	include("incs/bottom.inc");
Medlem sedan feb. 200193 inlägg
#3

Nu förstår jag inte alls...
SKa det där läggas i botten av allt ihopa eller?

Och vad gör det?
vad jag kan se så inkluderar den bara massa filer till koden..
Den verkar ju inte skriva till någon fil....

//noratx

Medlem sedan aug. 20002 975 inlägg
#4

Hej noratx

Anledningen att skriptet inte fungerar är att du har bytt namn på ett fält i ditt <form>.

byt ut:

echo "<center><input type=radio name=\"rösta\" value=\"$i\"> $dataf[$i]<br></center>\n";

mot:

echo "<center><input type=radio name=\"vote\" value=\"$i\"> $dataf[$i]<br></center>\n";

så ska det fungera.

I filen votes lagras data i formatet:
1|1|
192.0.0.1

där ip-numret är från den senaste röstande. M.a.o. om någon röstar emellan kan man rösta igen.

------------------
Funktion är vackert

Medlem sedan feb. 200193 inlägg
#5

tjenare matte!
Tack för hjälpen, men, det där med IP'n och ´votes.dat visste jag ju redan...
Du har ingen lösning på även det problemet då?

Nåväl, tack för hjälpen iallafall.. =)

Medlem sedan aug. 20002 975 inlägg
#6

Vill man ha en något sånär hyfsat hinder för dubbelröstning får du lov att använda cookies.
Men låt det du har idag stå kvar. Det hindrar att man dubbelröstar genom att klicka på uppdatera.

------------------
Funktion är vackert

Medlem sedan sep. 20013 inlägg
#7

Kolla på http://www.phpwizard.net/projects/phpPolls/, det är ett enkelt och bra pollscript.

//Jed

[Redigerat av jed den 30 sep 2001]

131 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)