Archief - PHP: Script wil cookie niet opslaan

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Cyberkid

Legacy Member
Heb volgend stuk script voor een poll, bestaat uit 2 pagina's poll.php waarop de gebruiker kan stemmen of als hij al gestemd heeft moet hij de resultaten zien, en dan poll_stemmen.php die het formulier bij het stemmen verwerkt en de vote opslaat in database. Nu wil'k kijken of de gebruiker al gestemd heeft door een cookie te maken, maar dit gebeurd niet.

poll.php
Code:
<?php
ob_start();
session_start();
include("cfg.inc.php");
$query = mysql_query("SELECT * FROM polls ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
$pollid = mysql_result($query,0,"id");
$vraag = mysql_result($query,0,"vraag");
$poll_cookie = "kljdoorslaar" . $pollid;
if(isset($_COOKIE[$poll_cookie])) {
	// antwoorden
	echo "<html><head><link href='../includes/style.css' type='text/css' rel='stylesheet'>";
	echo "</head><body'> ";
    $query = mysql_query("SELECT * FROM poll_opties WHERE pollid='" . $pollid . "' ORDER BY id ASC") or die(mysql_error());
    $totaal = 0;
    while ($var = mysql_fetch_object($query)) {
        $totaal = $totaal + $var->votes;
    }
    echo "<br /><br /><table width='600' align='center' cellspacing='0'>";
	echo "<tr><td width='300' align='left'><b> " . $vraag . "</b></td>";
	echo "<td width='250' align='left'> " . 	$totaal . " stemmen</td><td width='50'>&nbsp;</td></tr>";
    $query = mysql_query("SELECT * FROM poll_opties WHERE pollid='" . $pollid . "' ORDER BY id ASC") or die(mysql_error());
    while ($var = mysql_fetch_object($query)) {
        $percentage = (integer)(($var->votes / $totaal) * 100);
        echo "<tr><td align='left'>" . $var->optie . " </td>";
		echo "<td align='left'><img src='polllinks.jpg'><img src='poll.jpg' width='" . $percentage * 2 . "' height='15'><img src='pollrechts.jpg'> (" . $var->votes . " stemmen) </td>";
        echo "<td align='right'> " . $percentage . " % </td></tr>";
    }
	echo "</table>";
   
} else {
     // stemmen?
	echo "<html><head><link href='../includes/style.css' type='text/css' rel='stylesheet'>";
	echo "</head><body><br /><br />  ";	   
    echo "<form action=\"poll_stemmen.php\" method=\"POST\">";
	echo "<input type=\"hidden\" name=\"poll_cookie\" value=\"" . $poll_cookie . "\">";
    echo "<table width='600' align='center' cellspacing='0'>";
    echo "<tr><td align='left' colspan=\"2\"><b>" . $vraag . "</b></td></tr>";
    $query = mysql_query("SELECT * FROM poll_opties WHERE pollid='" . $pollid . "' ORDER BY id ASC") or die(mysql_error());
    while ($var = mysql_fetch_object($query)) {
        echo "<tr><td align='left'><input class=\"form\" type=\"radio\" name=\"vote\" value=\"" . $var->id . "\">&nbsp;" . $var->optie . "</td></tr>\n";
    }
    echo "<tr><td vAlign=right><input class=\"form\"  type=\"submit\" value=\"Stemmen!\" name=\"stemmen\"></form></td></tr></table>\n\n";
}
?>

poll_stemmen.php
Code:
<?php
include("cfg.inc.php");
ob_start();
session_start();
if($_POST['stemmen']) {
	$poll_cookie = $_POST['poll_cookie'];
	setcookie($poll_cookie, "gestemd", time()+5184000);   
	$query = mysql_query("SELECT * FROM poll_opties WHERE id='" . $_POST['vote'] . "'") or die(mysql_error());
    while ($var = mysql_fetch_object($query)) 
		{
        $aantal_stemmen = $var->votes + 1;
   		}    
    
    mysql_query("UPDATE poll_opties SET votes='" . $aantal_stemmen . "' WHERE id='" . $_POST['vote'] . "'") or die(mysql_error());

}
?>

Cyberkid

Legacy Member
wel dan is het toch goed zo ? de naam van de cookie verander telkens de poll van ID veranderd, anders kan je niet opnieuw stemmen bij een nieuwe poll, hij moet onthouden dat er gestemd geweest is dan 2 maand geldig blijven

Cyberkid

Legacy Member
opslaan in en db of iemand al gestemd heeft of niet :confused: dalijkt mij wel erg onwaarschijnlijk omdat ip's hier in belgie regelmatig veranderen ben je niet veel met een ip controle.

probleem van de cookie is opgelost
ob_start();
session_start(); moest voor de include komen :)

killgore

Legacy Member
je slaat in je cookie een uniek id op en via die id doe je aan db access ...

Dat is even effectief & properder.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan