Avatar billede m_bold Praktikant
17. november 2004 - 21:51 Der er 8 kommentarer og
1 løsning

cookie-problem

Jeg har et prolem med mine cookie (tror jeg). Jeg kan sagtens stemme flere gange i min afstemning, hvilket jeg naturlig ikke burde kunne. Jeg får fint udskrevet mine afstemningsresultater, når jeg har stemt, men næste gang jeg går ind på siden kan jeg stemme igen. Hvad er problemet?

ØVERST i index.php:
<?
function VoteNow() {

    if(!$_REQUEST[action]) {
        if($_REQUEST[action] == "vote") {
            $conn = mysql_connect ("xxxxxxx","xxxxxxx","xxxxxxx");
                mysql_select_db("boldsens_dk");
                mysql_query("UPDATE pollanswer SET hits = hits + 1 WHERE questionid = '$_REQUEST[questionid]' AND id = '$_REQUEST[id]'");
                mysql_close($conn);
                setcookie($cookieprefix."vote", "true", time()+999999999);
        }
    }
}
?>


Længere nede i index.php:
<?
  if(HaveVoted() != true) {
    echo VoteNow();
    echo ShowResults();
    } else {
    echo ShowPoll();
    }
   
    function HaveVoted() {
    global $cookieprefix;
    if($_COOKIE[$cookieprefix."vote"]) {
    return true;
    } else {
    return false;
    }
    }
?>
Avatar billede erikjacobsen Ekspert
17. november 2004 - 21:56 #1
Hvis du ellers har en variabel, der hedder $cookieprefix, skal du nok have en
  global $cookieprefix;
i din første funktion.
Avatar billede schaefner Juniormester
17. november 2004 - 21:57 #2
if(!$_REQUEST['action']) { ????

<?php
function VoteNow() {
    if($_REQUEST['action']) {
        if($_REQUEST['action'] == "vote") {
            $conn = mysql_connect ("xxxxxxx","xxxxxxx","xxxxxxx");
                mysql_select_db("boldsens_dk");
                mysql_query("UPDATE pollanswer SET hits = hits + 1 WHERE questionid = '$_REQUEST[questionid]' AND id = '$_REQUEST[id]'");
                mysql_close($conn);
                // Hvor får du i øvrigt $cookieprefix fra?
                setcookie($cookieprefix."vote", "true", time()+999999999);
        }
    }
}
?>
Avatar billede erikjacobsen Ekspert
17. november 2004 - 22:03 #3
Og ved at lægge 999.999.999 kommer du betænkeligt tæt på grænsen for et
unixtimestamp. Det går an endnu, men der er ikke langt tid til at det går
galt. Vælg et mindre tal, eller angiv en fast grænse, fx en gang i år 2030 ;)
Avatar billede m_bold Praktikant
17. november 2004 - 22:04 #4
Tja. Det er jo rigtig nok. Hvorfor havde jeg ikke set det? Nå smid et svar erikjacobsen...

Du skulle vel ikke lige vide hvordan jeg binder en bestemt skrifttype- og størrelse til noget php. Jeg har prøvet at binde det til tabellen, som det står i, men det giver ikke rigtig gevinst.

schefner: Ja jeg er også i tvivl om hvad den if-sætning gør. Jeg har fået meget hjælp af en anden fyr her på eksperten, meget af det var jeg ret uforstående overfor...
Avatar billede erikjacobsen Ekspert
17. november 2004 - 22:11 #5
Tak, men jeg samler slet ikke på point.

Det andet problem kan vi måske løse hvis du viser os din kode.
Avatar billede m_bold Praktikant
17. november 2004 - 22:22 #6
Ok. Så du hjælper bare for at være flink. Det må jeg nok sige.
Jeg vil bare gerne have det hele til at være arial str. 1...
Håber det her er nok:


          <table width="181" border="0" align="center" cellpadding="0" cellspacing="0">
            <tr>
              <td width="181"> <div align="center"><font size="1" face="Arial, Helvetica, sans-serif"><em>
                  <?
                      if(HaveVoted() != true) {
            echo VoteNow();
            echo ShowResults();
            } else {
            echo ShowPoll();
            }
           
            function HaveVoted() {
            global $cookieprefix;
            if($_COOKIE[$cookieprefix."vote"]) {
            return true;
            } else {
            return false;
            }
            }
           

function ShowResults() {

########## POLL QUESTION ##########

$kode .= "<table>\n";
$conn = mysql_connect ("xxxxx","xxxxxxx","xxxxxxx");
mysql_select_db("boldsens_dk");
$result = mysql_query("select * from pollquestion WHERE start <= now() AND end >= now()");
while ($row = mysql_fetch_array($result)) {
$kode .= "<tr><td colspan=\"2\">" . htmlentities($row["question"]) . "</td></tr>\n";

$questionid = $row["questionid"];
}

########## SUM OF POLLANSWERS ##########

$result = mysql_query("select sum(hits) as hits from pollanswer where questionid = '$questionid'");
while ($row = mysql_fetch_array($result)) {
  $sum = $row["hits"];
 

}

$result = mysql_query("select * from pollanswer WHERE questionid = '$questionid'");
while ($row = mysql_fetch_array($result)) {
  $percent = 0;
  if($row["hits"] > 0) {
    $percent = ($row["hits"] * 100) / $sum;
  }
    $kode .= "<tr><td>" . htmlentities($row["answer"]) . "</td>";
    $kode .= '<td><img src="hl.jpg" style="width: ' . $percent . 'px; height: 13px; border: 0px;" alt=""></td>';
    $kode .= "<td>" . round($percent , 1). "%</td></tr>\n";
   
}
  $kode .= "<td><tr><td colspan=\"2\">$sum stemme(r) i alt</td></tr>\n";
mysql_close($conn);

$kode .= "</table>\n";

########## VOTE ##########
// INDSÆTTES I BUNDEN AF POLL.PHP

if($_REQUEST[action] == "vote") {
$conn = mysql_connect ("xxxxx","xxxxxxxx","xxxxxxxx");
  mysql_select_db("boldsens_dk");
  mysql_query("UPDATE pollanswer SET hits = hits + 1 WHERE questionid = '$_REQUEST[questionid]' AND id = '$_REQUEST[id]'");
  mysql_close($conn);
}
return $kode;
}

function ShowPoll() {
    ########## POLL QUESTION ##########
   
    $kode .=  "<form action=\"index.php?action=vote\" method=\"post\">\n";
    $kode .= "<table>\n";
   
    $conn = mysql_connect("xxxxxxxx", "xxxxxxxx", "xxxxxxxx");
    mysql_select_db("boldsens_dk");
    $result = mysql_query("select * from pollquestion WHERE start <= now() AND end >= now()");
   
    while ($row = mysql_fetch_array($result)) {
    $kode .= "<tr><td>" . htmlentities($row[question]) . "</td></tr>\n";
   
    $questionid = $row[questionid];
    }
?>
                  </em></font></div></td>
            </tr>
          </table>
          <font size="1" face="Arial, Helvetica, sans-serif"><br>
          </font></div>
      </div>
      <div align="center"></div>
      <table width="181" cellspacing="0">
        <tr>
          <td> <font size="1" face="Arial, Helvetica, sans-serif">
            <?
    ########## POLL ANSWERS ##########
   
    $result = mysql_query("select * from pollanswer WHERE questionid = '$questionid'");
    while ($row = mysql_fetch_array($result)) {
    $kode .= "<tr><td><input type=\"radio\" name=\"id\" value=\"" . $row["id"] . "\">" . $row["answer"]."</td></tr>\n";
    }
    $kode .= "<tr><td><input type=\"hidden\" name=\"questionid\" value=\"$questionid\">\n";
?>
            </font> <div align="center"> <font size="1" face="Arial, Helvetica, sans-serif">
              <?
    $kode .= "<br>";
    $kode .= "<input type=\"submit\" value=\"Stem\"></td></tr>\n";
    $kode .= "</table>\n";
    $kode .= "</form>\n";

    return $kode;
}
?>
              </font></div></td>
        </tr>
      </table>
      <hr>
Avatar billede erikjacobsen Ekspert
17. november 2004 - 22:25 #7
Så vist jeg husker <font> skal du have den inde i alle <td>-er.
Men der er lidt "sidste årtusinde" over den. Har du hørt om stylesheets/CSS ?
Avatar billede m_bold Praktikant
17. november 2004 - 22:27 #8
hehe. Ja, det har jeg. Jeg bruger dem også nogle steder, men det er min første side, så jeg er stadig grøn...
Avatar billede m_bold Praktikant
17. november 2004 - 22:58 #9
In that case snupper jeg selv pointsene - men tak for hjælpen.
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