Avatar billede -kick- Nybegynder
30. december 2004 - 06:13 Der er 17 kommentarer og
1 løsning

Søger hjælp til cookies.

Hejsa! Retter sagt godmorgen eksperter! :)

Hvordan laver men sådan man kun kan OPDATER én gang.
Altså sådan man kun kan opdater en gang om dagen, på min counter.

Her er koden:

<?php

include("db.php");
$hent = mysql_query("SELECT hits, email FROM hits WHERE email = '$email'");
$row = mysql_fetch_array($hent);
mysql_query("UPDATE hits SET hits=hits+1 WHERE email = '$email'");
//Indlæs en lokal JPEG-fil
$counter_img = imageCreateFromJPEG("billede.jpg");
//Indlæs en JPEG-fil fra en url
//Allokering af farven sort
$background = imagecolorallocate ($counter_img, 255, 0, 0);


$black = imageColorAllocate($counter_img,0,0,0);  //(0,0,0) er RGB koden for sort
//Lokalisering af farven sort
$black = imageColorExact($counter_img,0,0,0); //Returnerer -1 hvis farven ikke er allokeret

//Her vælges en indbygget font
$font = 2;
//Koordinaterne for det øverste venstre hjørne
$dest_x = 10;
$dest_y = 20;
//Påfør antallet af hits
imageString($counter_img, $font, $dest_x, $dest_y, "Hits: $row[hits]", $black);

//Først sender vi en header så browseren ved at den får et billede

//Derefter får vi GDLib til at sende billedet
imageJPEG($counter_img);
imageJPEG ($counter_img);
imagedestroy ($counter_img);

?>
Avatar billede morteeart Nybegynder
30. december 2004 - 06:26 #1
noget i stil med:

<?php

include("db.php");
$hent = mysql_query("SELECT hits, email FROM hits WHERE email = '$email'");
$row = mysql_fetch_array($hent);
if(!isset($_COOKIE['counter']))
{
mysql_query("UPDATE hits SET hits=hits+1 WHERE email = '$email'");
}
else
{
setcookie("counter", "", time() + 86400);
}
//Indlæs en lokal JPEG-fil
$counter_img = imageCreateFromJPEG("billede.jpg");
//Indlæs en JPEG-fil fra en url
//Allokering af farven sort
$background = imagecolorallocate ($counter_img, 255, 0, 0);

$black = imageColorAllocate($counter_img,0,0,0);  //(0,0,0) er RGB koden for sort
//Lokalisering af farven sort
$black = imageColorExact($counter_img,0,0,0); //Returnerer -1 hvis farven ikke er allokeret

//Her vælges en indbygget font
$font = 2;
//Koordinaterne for det øverste venstre hjørne
$dest_x = 10;
$dest_y = 20;
//Påfør antallet af hits
imageString($counter_img, $font, $dest_x, $dest_y, "Hits: $row[hits]", $black);

//Først sender vi en header så browseren ved at den får et billede

//Derefter får vi GDLib til at sende billedet
imageJPEG($counter_img);
imageJPEG ($counter_img);
imagedestroy ($counter_img);

?>

http://dk2.php.net/setcookie
Avatar billede morteeart Nybegynder
30. december 2004 - 06:27 #2
btw. en lille detajle, når du henter antallet af besøgende ud, henter du ikke den nuværende med.

Så du bør gøre sådan her:

<?php

include("db.php");

if(!isset($_COOKIE['counter']))
{
mysql_query("UPDATE hits SET hits=hits+1 WHERE email = '$email'");
}
else
{
setcookie("counter", "", time() + 86400);
}
$hent = mysql_query("SELECT hits, email FROM hits WHERE email = '$email'");
$row = mysql_fetch_array($hent);
//Indlæs en lokal JPEG-fil
$counter_img = imageCreateFromJPEG("billede.jpg");
//Indlæs en JPEG-fil fra en url
//Allokering af farven sort
$background = imagecolorallocate ($counter_img, 255, 0, 0);

$black = imageColorAllocate($counter_img,0,0,0);  //(0,0,0) er RGB koden for sort
//Lokalisering af farven sort
$black = imageColorExact($counter_img,0,0,0); //Returnerer -1 hvis farven ikke er allokeret

//Her vælges en indbygget font
$font = 2;
//Koordinaterne for det øverste venstre hjørne
$dest_x = 10;
$dest_y = 20;
//Påfør antallet af hits
imageString($counter_img, $font, $dest_x, $dest_y, "Hits: $row[hits]", $black);

//Først sender vi en header så browseren ved at den får et billede

//Derefter får vi GDLib til at sende billedet
imageJPEG($counter_img);
imageJPEG ($counter_img);
imagedestroy ($counter_img);

?>

Altså først hente antallet efter en evt. opdatering.
Avatar billede -kick- Nybegynder
30. december 2004 - 06:31 #3
Man kan stadig bare opdater siden også give 1 hits.
Avatar billede morteeart Nybegynder
30. december 2004 - 06:33 #4
doh, når man er til LAN sover man for lidt

ret denne del:

if(!isset($_COOKIE['counter']))
{
mysql_query("UPDATE hits SET hits=hits+1 WHERE email = '$email'");+
setcookie("counter", "", time() + 86400);
}
Avatar billede -kick- Nybegynder
30. december 2004 - 06:36 #5
virker dog hellere ikke.
Avatar billede morteeart Nybegynder
30. december 2004 - 06:38 #6
virker ikke virker ikke,kommer der fejl, ^^ (et + for meget)
eller opdaterer den stadig bare indholdet ?

Og du har ikke slået cookies fra vel ?
Avatar billede morteeart Nybegynder
30. december 2004 - 06:43 #7
hmm, counter kan måske være et reserveret ord.
Lavede denne test på localhost:

<?

if(!isset($_COOKIE['encounter']))
{
echo "hej";
setcookie("encounter", "hej", time() + 86400);
}
?>

Og den virkede fint.
Avatar billede -kick- Nybegynder
30. december 2004 - 06:44 #8
Den opdatere stadig væk
og nej, jeg har ikke slået cookies fra.
Avatar billede -kick- Nybegynder
30. december 2004 - 06:45 #9
Nej, beklager, det virker desværre hellere ikke!
Avatar billede -kick- Nybegynder
30. december 2004 - 06:45 #10
Min kode ser således ud nu:

<?php

include("db.php");

if(!isset($_COOKIE['encounter']))
{
mysql_query("UPDATE hits SET hits=hits+1 WHERE email = '$email'");+
setcookie("encounter", "", time() + 86400);
}
$hent = mysql_query("SELECT hits, email FROM hits WHERE email = '$email'");
$row = mysql_fetch_array($hent);
//Indlæs en lokal JPEG-fil
$counter_img = imageCreateFromJPEG("billede.jpg");
//Indlæs en JPEG-fil fra en url
//Allokering af farven sort
$background = imagecolorallocate ($counter_img, 255, 0, 0);

$black = imageColorAllocate($counter_img,0,0,0);  //(0,0,0) er RGB koden for sort
//Lokalisering af farven sort
$black = imageColorExact($counter_img,0,0,0); //Returnerer -1 hvis farven ikke er allokeret

//Her vælges en indbygget font
$font = 2;
//Koordinaterne for det øverste venstre hjørne
$dest_x = 10;
$dest_y = 20;
//Påfør antallet af hits
imageString($counter_img, $font, $dest_x, $dest_y, "Hits: $row[hits]", $black);

//Først sender vi en header så browseren ved at den får et billede

//Derefter får vi GDLib til at sende billedet
imageJPEG($counter_img);
imageJPEG ($counter_img);
imagedestroy ($counter_img);

?>
Avatar billede morteeart Nybegynder
30. december 2004 - 06:48 #11
hmm, meget underligt.

prøv at skrive:

echo "<pre>";
print_r($_COOKIE);
echo "</pre>";

og så se hvad den retunrer, husk at trykke opdater for at checke for ændringer.
Skriv gerne resultatet herind.
Avatar billede -kick- Nybegynder
30. december 2004 - 06:48 #12
Nå, hopper i kanen! :)
Tjek din karma, og vi ses imorgen!
Avatar billede -kick- Nybegynder
30. december 2004 - 07:16 #13
Kunne du fikse det dude?
Avatar billede -kick- Nybegynder
30. december 2004 - 07:21 #14
Array
(
    [cookie] => 041230
)



ved
echo "<pre>";
print_r($_COOKIE);
echo "</pre>";
Avatar billede cmau Nybegynder
30. december 2004 - 11:41 #15
Hmm mit bud:

<?php

include("db.php");
$hent = mysql_query("SELECT hits, email FROM hits WHERE email = '$email'");
$row = mysql_fetch_array($hent);


if(!isset($_COOKIE["webgeek_counter"])) {

mysql_query("UPDATE hits SET hits=hits+1 WHERE email = '$email'");

setcookie("webgeek_counter", 1, time()86400);
}


//Indlæs en lokal JPEG-fil
$counter_img = imageCreateFromJPEG("billede.jpg");
//Indlæs en JPEG-fil fra en url
//Allokering af farven sort
$background = imagecolorallocate ($counter_img, 255, 0, 0);


$black = imageColorAllocate($counter_img,0,0,0);  //(0,0,0) er RGB koden for sort
//Lokalisering af farven sort
$black = imageColorExact($counter_img,0,0,0); //Returnerer -1 hvis farven ikke er allokeret

//Her vælges en indbygget font
$font = 2;
//Koordinaterne for det øverste venstre hjørne
$dest_x = 10;
$dest_y = 20;
//Påfør antallet af hits
imageString($counter_img, $font, $dest_x, $dest_y, "Hits: $row[hits]", $black);

//Først sender vi en header så browseren ved at den får et billede

//Derefter får vi GDLib til at sende billedet
imageJPEG($counter_img);
imageJPEG ($counter_img);
imagedestroy ($counter_img);

?>


Forklaring:

if(!isset($_COOKIE["webgeek_counter"])) { //Hvis cookien webgeek_counter ikke er sat så gør den følgende:

mysql_query("UPDATE hits SET hits=hits+1 WHERE email = '$email'"); //Giver et hit mere

setcookie("webgeek_counter", 1, time()86400); //Og sætter cookien webgeek_counter, så man ikke kan få et hit igen, de næste 24 timer
}
Avatar billede cmau Nybegynder
30. december 2004 - 17:34 #16
Prøv nedenstående, men husk at før noget med cookies må der ikke udskrives html/htmltags eller tekst. Ikke engang et mellem rum. Php koden skal være det første:

<?php
include("db.php");
$hent = mysql_query("SELECT hits, email FROM hits WHERE email = '$email'");
$row = mysql_fetch_array($hent);

if(!isset($_COOKIE["webgeekcounter"])) {

setcookie("webgeekcounter", 1, time()+86400);

mysql_query("UPDATE hits SET hits=hits+1 WHERE email = '$email'");
}

//Indlæs en lokal JPEG-fil
$counter_img = imageCreateFromJPEG("billede.jpg");
//Indlæs en JPEG-fil fra en url
//Allokering af farven sort
$background = imagecolorallocate ($counter_img, 255, 0, 0);


$black = imageColorAllocate($counter_img,0,0,0);  //(0,0,0) er RGB koden for sort
//Lokalisering af farven sort
$black = imageColorExact($counter_img,0,0,0); //Returnerer -1 hvis farven ikke er allokeret

//Her vælges en indbygget font
$font = 2;
//Koordinaterne for det øverste venstre hjørne
$dest_x = 10;
$dest_y = 20;
//Påfør antallet af hits
imageString($counter_img, $font, $dest_x, $dest_y, "Hits: $row[hits]", $black);

//Først sender vi en header så browseren ved at den får et billede

//Derefter får vi GDLib til at sende billedet
imageJPEG($counter_img);
imageJPEG ($counter_img);
imagedestroy ($counter_img);

?>
Avatar billede morteeart Nybegynder
31. december 2004 - 15:35 #17
cmau
time()86400 = time * 86400 = meget mere end 1 døgn :)
eller er der jo ingen forskel udover navnet på cookien vel ?

+ en MEGET VIGTIG FEJl, er stadig ikke rettet i cmau's kode.

$hent = mysql_query("SELECT hits, email FROM hits WHERE email = '$email'");
$row = mysql_fetch_array($hent);

skal være EFTER update !, eller henter den et hit for lidt.

Godt nytår :)
Avatar billede morteeart Nybegynder
31. december 2004 - 15:37 #18
og problemet med header fejl, kan nemt fixes med ob_start()  :P
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