PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Star rating setcookie problem


MADdaMAX
25.02.2008, 15:47:59
Hallo an alle,

ich versuche mich gerade an eiem Bewertungsscript.
Soweit funktioniert das Bewerten, jedoch möchte ich eine 24h sperre für den jeweiligen Bewerter einrichten.
Mein Problem ist nun das ich gerne ein cookie setzen würde, jedoch bin ich dann in meinem fall am Header schon vorbei (header allready send ...).

Im ersten Teil wird die werter.php includet und dort wird wiederum bewerter.php includet.
Hier mal meine Scripte:
if (isset($_GET["besterautohof"])&& in_array("detail",$_GET))
{
$result = mysql_query("SELECT * FROM bestahof WHERE id = ".$_GET["id"]);
if (mysql_num_rows($result))
{
$row = mysql_fetch_array($result);
if ($row["userpic"] != "")
{$image = '<img src="include/images/bestahof/'.$row["userpic"].'" border="0">';}

else
{$image = '';}
echo '
<table class="border" cellspacing="1" cellpadding="2" border="0" width="530">
<tr class="Chead" align="center">
<th width="32">A</th>
<th width="280">Auto-Rasthof</th>
<th width="108">Bewertungen</th>
<th width="108">Bewerten</th>
</tr><tr class="Cnorm">
<td align="center" rowspan="3" valign="top"><img src="include/images/icons/autobahn/'.$row["autobahn"].'"></td>
<td align="center"><strong>'.$row["autohof"].'</strong></td>
<td align="center"><strong>'.$row["klick"].'</strong> <font style="font-size:10px;">mal bewertet</font></td>
<td align="center">';
include "werter.php";//<---
echo ' </td>
</tr>
<tr class="Cnorm">
<td align="center" colspan="3">'.$image.'</td>
</tr>
<tr class="Cnorm">
<td colspan="3">'.bbcode ($row["txt"]).'</td>
</tr>
</table>';
}
else
{
echo '
<table class="border" cellspacing="1" cellpadding="4" border="0" width="530">
<tr class="Cnorm">
<td colspan="2" align="center">
Es ist f&uuml;r dieses Autohof keine Eingetragungen vorhanden.
</td>
</tr>
</table>';
}
}
Hier die werter.php (könnte ich eigentlich auch in die bewerter.php einfügen dient mir aber nur zur Darstellung):
if(isset($_GET["vote"]) && in_array("do",$_GET))
{
include "bewerter.php";
}
else
{
echo '
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td align="center">
<img src="include/images/icons/bewerter/rating1.gif" onClick="doVote(1,'.$_GET["id"].')" style="cursor:pointer"><img src="include/images/icons/bewerter/rating2.gif" onClick="doVote(2,'.$_GET["id"].')" style="cursor:pointer"><img src="include/images/icons/bewerter/rating3.gif" onClick="doVote(3,'.$_GET["id"].')" style="cursor:pointer"><img src="include/images/icons/bewerter/rating4.gif" onClick="doVote(4,'.$_GET["id"].')" style="cursor:pointer"><img src="include/images/icons/bewerter/rating5.gif" onClick="doVote(5,'.$_GET["id"].')" style="cursor:pointer">
<br><font style="font-size:9px">1=schlecht 5=supper</font>
</td>
</tr>
</table>';
}
Hier die bewerter.php:
$path = "include/images/icons/bewerter/";
$ip_chack = $_SERVER["REMOTE_ADDR"];
$time_check = time();

if (isset($_GET["vote"])&& in_array("do",$_GET))
{
$result = mysql_query("SELECT * FROM bestahof WHERE id ='".$_GET["id"]."'");
$row = mysql_fetch_array($result);

$note = $row["note"] + $_GET["note"];
$klick = $row["klick"] + 1;

$sqlUPD = "UPDATE bestahof SET ";
$sqlUPD.= " ip = '".$ip_chack."', ";
$sqlUPD.= " klick = '".$klick."', ";
$sqlUPD.= " note = '".$note."', ";
$sqlUPD.= " zeit = '".$time_check."'";
$sqlUPD.= " WHERE id = '".$row["id"]."'";

if (mysql_query($sqlUPD))
{
#setcookie('unique_cookie',true, time()+86400);
echo ' <img src="include/images/icons/bewerter/working.gif">
<meta http-equiv="refresh" content="3; URL=index.php?besterautohof=detail&id='.$row["id"].'">
';
}
}
else // if wenn die ip gleich des bewerters und die zeit nicht abgelaufen und für die id gevotet
{
if ($row["klick"] >0)
{$note = $row["note"]/$row["klick"];}
else {$note = $row["note"];}

if ($note >= 5) {$star = $path."5star.gif" ;}
if ($note <= 4.5) {$star = $path."45star.gif" ;}
if ($note <= 4) {$star = $path."4star.gif" ;}
if ($note <= 3.5) {$star = $path."35star.gif" ;}
if ($note <= 3) {$star = $path."3star.gif" ;}
if ($note <= 2.5) {$star = $path."25star.gif" ;}
if ($note <= 2) {$star = $path."2star.gif" ;}
if ($note <= 1.5) {$star = $path."15star.gif" ;}
if ($note <= 1) {$star = $path."1star.gif" ;}
if ($note <= 0.5) {$star = $path."05star.gif" ;}
if ($note <= 0) {$star = $path."00star.gif" ;}

echo '<img src="'.$star.'" alt="Durchschnittliche Bewertung: '.$note.'">';
}
Hier das JavaScript mit den get[] übergaben
<!--
function doVote(n1,did) {
document.location.href="index.php?besterautohof=detail&id=" + did + "&note="+n1+"&vote=do";
}
//-->

Ich bin leider total unerfahren in sachen cookie programieren und weis nun auch nicht mehr weiter. Die Problematik mit den cookies das man es abschalten und oder löschen kann, kenn ich aber das ist das kleinste Übel. Auch das mit den ip Problemen das die sich in kürzerer Zeit ändern (AOL und Modem an aus usw.) ist auch nicht so wild.

Ich hoffe das jemand mir bei diesem Problem netter Weise weiter helfen kann.
Danke jetzt schon für das lesen.
MfG MADdaMAX

|Coding
25.02.2008, 15:57:54
Hi!

Du musst das irgendwie so umstricken, dass die Funktion set_cookie aufgerufen wird bevor irgendeine Ausgabe stattfindet. Beispielsweise könntest Du die echo's rausnehmen und den Kram erst Mal in eine Variable schreiben, die Du dann nach der Funktion set_cookie ausgibst.

MADdaMAX
25.02.2008, 21:06:13
Danke für die Antwort

Ich hab mir über deine Antwort gedanken gemacht aber irgendwie fehlt mir der ansatz und ich weis auch nicht wie du das meinst.

MfG MADdaMAX