Cookies?
vanw - 24/01/2006 12:53 (laatste wijziging 24/01/2006 12:53)
PHP interesse
Hoi,
Ik ben bezig met een profielen site, Lukt al aardig goed! Maar ik heb nu een klein probleempje met Cookies.
Ik heb nu een rating systeem, van hier, Op zich werkt hij goed. Alleen je kan op 2 manieren op de profielen bekijken:
http://www.happyprofile.nl/?p=Webmaster_Jorn
of
http://www.happ...aster_Jorn
Het vreemde is als je een cijfer geeft dat hij hem onthoud via de onderste link. Tik je de bovenste link weer in dan kan je op nieuw stemmen terwijl er toch echt 10 minuten tijd tussen moet zitten.
Ik hoop dat iemand weet wat ik er aan kan doen. Dit is het script nu:
<?
//mysql database gevens, deze veranderen.
mysql_connect("localhost","jornhoe_happy","***");
mysql_select_db("jornhoe_happy");
//gegevens uit de database ophalen
$result = mysql_query("SELECT * FROM rating WHERE naam = '".$_GET['naam']."'");
$row = mysql_fetch_array($result);
$cookie = "gestemd" . $_GET['naam'];
$cookieSET = $_COOKIE[$cookie];
//als er gestemd is
if (isset($_POST['cijfer'])) {
//het aantal stemmen met 1 verhogen en het cijfer dat gegeven word optellen bij de rest
mysql_query("UPDATE rating SET aantal=aantal+1, cijfer=cijfer+" . $cijfer . " WHERE naam = '".$_GET['naam']."'") or die(mysql_error());
//cookie voor een maand zetten
Setcookie($cookie, "gestemd".$_GET['naam'], Time()+600);
header("location:?mainsite=profiel/profiel.php&naam=" . $_GET['naam'] . "");
}
?>
<html>
<head><title>Rating</title></head>
<body>
Rate: <? echo $row['naam']; ?><br>
<?
if ($row['aantal'] >= 1) {
echo "Er ";
if ($row['aantal'] < 2){
echo "heeft <b>" . $row['aantal'] . "</b> persoon gestemd";
} elseif ($row['aantal'] >= 2) {
echo "hebben <b>" . $row['aantal'] . "</b> personen gestemd";
}
}
?>
<table>
<?
//kijken of de cookie al gezet is of niet
if(!isset($cookieSET)) {
?>
<tr>
<td>
<form method="post" action="?mainsite=profiel/profiel.php&naam=<? echo $_GET['naam']; ?>">
<select name="cijfer" onchange="javascript:this.form.submit();">
<option value="">Cijfer:</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</form>
</td>
</tr>
<?
}
?>
<tr>
<td>
<?
//is er nog geen cijfer gegeven
if ($row['aantal'] < 1) {
echo "Er is nog geen cijfer gegeven";
} else {
//is er wel al een cijfer geven
// het gemiddelde berekennen door het totaal te delen door het aantal
$total = $row['cijfer'] / $row['aantal'];
$total = round($total,1);
echo "Aantal sterren:";
//uitrekennen hoeveel sterren het artikel, script of wat dan ook krijgt
if ($total <= 2.5) {
echo "<img src=\"profiel/images_rating/1.gif\">";
} elseif ($total <= 3.5) {
echo "<img src=\"profiel/images_rating/1h.gif\">";
} elseif ($total <= 4.5) {
echo "<img src=\"profiel/images_rating/2.gif\">";
} elseif ($total <= 5.5) {
echo "<img src=\"profiel/images_rating/2h.gif\">";
} elseif ($total <= 6.5) {
echo "<img src=\"profiel/images_rating/3.gif\">";
} elseif ($total <= 7.5) {
echo "<img src=\"profiel/images_rating/3h.gif\">";
} elseif ($total <= 8.5) {
echo "<img src=\"profiel/images_rating/4.gif\">";
} elseif ($total <= 9.5) {
echo "<img src=\"profiel/images_rating/4h.gif\">";
} elseif ($total <= 10.5) {
echo "<img src=\"profiel/images_rating/5.gif\">";
}
}
?>
</td>
</tr>
</table>
</body>
</html>
<?
//mysql database gevens, deze veranderen.
//gegevens uit de database ophalen
$result = mysql_query ( "SELECT * FROM rating WHERE naam = '" . $_GET [ 'naam' ] . "'" ) ; $cookie = "gestemd" . $_GET [ 'naam' ] ;
$cookieSET = $_COOKIE [ $cookie ] ;
//als er gestemd is
if ( isset ( $_POST [ 'cijfer' ] ) ) { //het aantal stemmen met 1 verhogen en het cijfer dat gegeven word optellen bij de rest
mysql_query ( "UPDATE rating SET aantal=aantal+1, cijfer=cijfer+" . $cijfer . " WHERE naam = '" . $_GET [ 'naam' ] . "'" ) or
die ( mysql_error ( ) ) ; //cookie voor een maand zetten
header ( "location:?mainsite=profiel/profiel.php&naam=" . $_GET [ 'naam' ] . "" ) ;
}
?>
<html>
<head><title>Rating</title></head>
<body>
Rate:
<? echo $row [ 'naam' ] ; ?> <br>
<?
if ( $row [ 'aantal' ] >= 1 ) {
if ( $row [ 'aantal' ] < 2 ) {
echo "heeft <b>" . $row [ 'aantal' ] . "</b> persoon gestemd" ; } elseif ( $row [ 'aantal' ] >= 2 ) {
echo "hebben <b>" . $row [ 'aantal' ] . "</b> personen gestemd" ; }
}
?>
<table>
<?
//kijken of de cookie al gezet is of niet
?>
<tr>
<td>
<form method="post" action="?mainsite=profiel/profiel.php&naam=
<? echo $_GET [ 'naam' ] ; ?> ">
<select name="cijfer" onchange="javascript:this.form.submit();">
<option value="">Cijfer:</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</form>
</td>
</tr>
<?
}
?>
<tr>
<td>
<?
//is er nog geen cijfer gegeven
if ( $row [ 'aantal' ] < 1 ) {
echo "Er is nog geen cijfer gegeven" ; } else {
//is er wel al een cijfer geven
// het gemiddelde berekennen door het totaal te delen door het aantal
$total = $row [ 'cijfer' ] / $row [ 'aantal' ] ;
$total = round ( $total , 1 ) ; //uitrekennen hoeveel sterren het artikel, script of wat dan ook krijgt
if ( $total <= 2.5 ) {
echo "<img src=\" profiel/images_rating/1.gif\" >" ; } elseif ( $total <= 3.5 ) {
echo "<img src=\" profiel/images_rating/1h.gif\" >" ; } elseif ( $total <= 4.5 ) {
echo "<img src=\" profiel/images_rating/2.gif\" >" ; } elseif ( $total <= 5.5 ) {
echo "<img src=\" profiel/images_rating/2h.gif\" >" ; } elseif ( $total <= 6.5 ) {
echo "<img src=\" profiel/images_rating/3.gif\" >" ; } elseif ( $total <= 7.5 ) {
echo "<img src=\" profiel/images_rating/3h.gif\" >" ; } elseif ( $total <= 8.5 ) {
echo "<img src=\" profiel/images_rating/4.gif\" >" ; } elseif ( $total <= 9.5 ) {
echo "<img src=\" profiel/images_rating/4h.gif\" >" ; } elseif ( $total <= 10.5 ) {
echo "<img src=\" profiel/images_rating/5.gif\" >" ; }
}
?>
</td>
</tr>
</table>
</body>
</html>
Alvast bedankt ik hoor graag de reacties!
10 antwoorden
Gesponsorde links
Thomas - 24/01/2006 12:56
Moderator
Aan setcookie() een parameter "/" toevoegen, anders ben je cookies per directory aan het setten...
Zie ook de cookie tutorial .
vanw - 24/01/2006 13:45
PHP interesse
Ik heb dit ervan gemaakt:
Setcookie($cookie, "gestemd".$_GET['naam'], Time()+600, "/");
En hij slaat het op alleen op: http://www.happ...hp&naa m=Webmaster_Jorn
Net zoals net, en bij ?p=Webmaster_Jorn
doet hij dat niet.
Heb ik iets over het hoofd gezien?
vanw - 24/01/2006 14:36
PHP interesse
Hoebedoel je dit precies ?
Setcookie($cookie, "gestemd".$_GET['naam'], Time()+600, "/$_GET['naam']");
Setcookie ( $cookie , "gestemd" . $_GET [ 'naam' ] , Time ( ) + 600 , "/$_GET ['naam']" ) ;
Als ik het niet goed heb, zou je dat even in het regeltje kunnen toe passen want volgens mij doe ik het fout.
Thomas - 24/01/2006 14:55
Moderator
Ik zie geen $_GET['naam'] in ?p=Webmaster_Jorn, jij wel?
vanw - 24/01/2006 15:30
PHP interesse
?p= staat geinclude icm met home.php. Dit is het script:
<?
$query2 = mysql_fetch_array(mysql_query("SELECT gebruikersnaam FROM leden WHERE gebruikersnaam='".$_GET['p']."' LIMIT 0,1"));
if (empty($query2['gebruikersnaam'])) {
if (isset($_GET['p'])){
echo "Dit profiel bestaat niet of niet meer.";
}
include 'home1.php';
}else {
include 'http://www.happyprofile.nl/profiel/profiel.php?naam='.$_GET['p'].'&id=1';
}
?>
<?
if ( empty ( $query2 [ 'gebruikersnaam' ] ) ) { echo "Dit profiel bestaat niet of niet meer." ; }
include 'home1.php' ;
} else {
include 'http://www.happyprofile.nl/profiel/profiel.php?naam=' . $_GET [ 'p' ] . '&id=1' ;
}
?>
Dus p= wordt omgezet naar naam=
Thomas - 24/01/2006 17:00
Moderator
De userid's pakken, in plaats van van die BrEeZaH-namen, dan heb je dat soort problemen niet.
Gesponsorde links
Dit onderwerp is gesloten .