Avatar billede jetsetter Nybegynder
27. februar 2005 - 12:31 Der er 9 kommentarer

Script til rating site

Jeg har fundet et script til at lave ratings på min side.. men kan ikke få det til at virke følgende kommer:

Warning: fopen(index.dat): failed to open stream: Permission denied in /hsphere/local/home/lassefar/artvillage.dk/betting/rate.php on line 29

Warning: fputs(): supplied argument is not a valid stream resource in /hsphere/local/home/lassefar/artvillage.dk/betting/rate.php on line 30

Warning: fclose(): supplied argument is not a valid stream resource in /hsphere/local/home/lassefar/artvillage.dk/betting/rate.php on line 31


Warning: file(): Unable to access index.dat in /hsphere/local/home/lassefar/artvillage.dk/betting/rate.php on line 53

Warning: file(index.dat): failed to open stream: No such file or directory in /hsphere/local/home/lassefar/artvillage.dk/betting/rate.php on line 53




------


Har nogen en ide om hvad dette betyder??

eller er der en som har et script som virker til at lave en rating side+?


Lasse
Avatar billede Slettet bruger
27. februar 2005 - 13:23 #1
Den første fejl betyder, at den bruger, som dit PHP-script kører som ikke har lov til at åbne filen index.dat.

Hvilke rettigheder, det er galt med kommer lidt an på, hvilke andre parametre, du giver til fopen.

Muligvis kan det klares ved at lave filen selv (bare som en tom fil) og sætte rettighederne på den til noget passende.

Hvis det ikke er nok, er du nødt til at vise din kode.
Avatar billede jetsetter Nybegynder
27. februar 2005 - 13:28 #2
Der er ingen fil der hedder index.dat .... prøver ilge at lave en tom en....
Avatar billede jetsetter Nybegynder
27. februar 2005 - 13:31 #3
nu får jeg følgende:

Warning: fopen(index.dat): failed to open stream: Permission denied in /hsphere/local/home/lassefar/artvillage.dk/betting/rate.php on line 24

Warning: fputs(): supplied argument is not a valid stream resource in /hsphere/local/home/lassefar/artvillage.dk/betting/rate.php on line 25

Warning: fclose(): supplied argument is not a valid stream resource in /hsphere/local/home/lassefar/artvillage.dk/betting/rate.php on line 26


?
Avatar billede jetsetter Nybegynder
27. februar 2005 - 13:34 #4
permission skulle bare lige sættes... nu virker det!!!

Tak
nu skal jeg bare se om jeg kan bruge det samme script flere gange på samme side??

Las
Avatar billede jetsetter Nybegynder
27. februar 2005 - 13:41 #5
Det kan jeg umiddelbart ikke...

Scriptet består af:

rate.php (selve koden)
index.dat
index.php (med følgende reference til koden: <? include("rate.php"); ?>
Image (bibliotek med billeder)

Har prøvet at have <? include("rate.php"); ?> to gange på en side, men den refere til den samme rate...

Nogen ideer til hvordan jeg kan lave mange ratnigs på samme side med dette scrip...+?

Der må være en smarere måde end at lave x antal enkelt side og sætte dem i frames på en side... virker kloset...

lAsse

http://artvillage.dk/betting/
Avatar billede Slettet bruger
27. februar 2005 - 15:35 #6
Uden at se koden, har jeg ikke en chance for at hjælpe dig, med at få den rettet til, så den passer dit formål. Det eneste, jeg så ville kunne gøre, var at lave et helt nyt script til dig, og det gider jeg helt ærligt ikke.

Når det så er sagt, så vil den smarteste måde at lave den slags på være med en database.
Avatar billede jetsetter Nybegynder
27. februar 2005 - 15:39 #7
her er rate.php koden.

<?
extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);


$ip = getenv(REMOTE_ADDR);
    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] != $ip) {
        $new_count +=1;
    }
    $ip_hit=$ip;
    $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|||$ip|");
    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] != $ip) {
        $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=$ip;
    $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 ("<table bordercolor=#99999 cellspacing=0 border=0><td width=50% cellspacing=none cellpadding=none align=middle valign=middle border=1><font size=1 face=Verdana color=#999999>Rating: <img src=\"$star\" alt=\"Average rating: $stats[2]\">  $stats[1] Ratings</td><tr></font>");
echo"<td align=middle valign=middle><input type=radio name=note value=5><font face=arial size=2 color=#99999>Excellent";
echo"<input type=radio name=note value=4>Very Good";
echo"<input type=radio name=note value=3>Good";
echo"<input type=radio name=note value=2>Fine";
echo"<input type=radio name=note value=1>Bad";
print ("<input type=hidden name=envoi value=1>  <input type=submit value=Rate style=background:#ffcc00;border-width:1;Border-color:#ffcc00;></table></form></font></td>");

?>
Avatar billede jetsetter Nybegynder
27. februar 2005 - 15:40 #8
her er koden som indsættes på siden:


<? $ficdest="index".".dat"; include("rate.php"); ?>
Avatar billede Slettet bruger
27. februar 2005 - 16:16 #9
Der er så mange ting galt med det script, så jeg knap nok ved, hvor jeg skal starte, men lad mig starte med det værste:

Det hiver fuldstændigt ukritisk alle variable ud fra POST og GET data og placerer dem i det globale scope. Da dette sker efter at dit egentlige script allerede er startet og måske har oprettet variable selv, er dette et sikkerhedshul uden lige.

Næste fejl er, at filen bliver åbnet for læsning med fopen, læst med file og derefter lukket igen. Da file-funktionen netop ikke benytter sig af det handle fra fopen, er det komplet overflødigt at åbne den først. Det viser altså, at personen, der har lavet scriptet ikke har det mindste forstand på PHPs funktioner til filbehandling og ikke engang har taget sig tid til at læse manualen.

Så ser scriptet ud til at det er meningen, at man kun skal kunne stemme en gang, men det gemmer kun IP for den sidste, der har stemt, så lige så snart en anden har stemt, vil man kunne stemme igen.

Scriptet er desværre så dårligt, at det vil skulle skrives helt om, for at kunne bruges fornuftigt. Jeg vil anbefale dig at finde et andet script. Som tidligere nævnt, vil det bedste være et, der benytter sig af en database i stedet for en tekstfil, men hvis du ikke har adgang til at bruge en database, kan tekstfiler også benyttes.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester