Avatar billede -kenner- Nybegynder
13. maj 2005 - 14:17 Der er 13 kommentarer og
2 løsninger

Unik besøgstæller med session

Hej eksperter,

Jeg sidder og skal lave en unik besøgstæller, og har fået foreslået sessions fordi det skulle være det mest unikke, så længe at man holder sig på samme side.

Jeg har i forvejen lavet en besøgstæller, men den er ikke unik. Som i kan se, så er det lavet som en funktion, og jeg vil godt hvis det kan blive ved med at fungere som en funktion, fordi der skal tælles for hver enkelt side. Siderne tæller hver for sig,uafhængig af hinanden.

NB! Siderne skal tælle uafhængig af hinanden, så den session den får i funktionen, skal være unik, så der også bliver talt, hvis samme bruger kommer forbi en af de andre sider.

Mvh Kenneth Dambo

Min nuværende kode:

function counter($taller){
$titel[Home] = "1";
$titel[Mig] = "2";
$titel[Familie] = "3";
$titel[Venner] = "4";
$titel[Galleri] = "5";
$titel[Karate] = "6";
$titel[Ansoegninger] = "7";
$titel[Kontakt] = "8";

$besoeg = mysql_query ("SELECT * FROM besoeg WHERE id =$titel[$taller]") or die (mysql_error());
$row = mysql_fetch_array($besoeg);
$antal = $row['antal'] + 1;
//ændre til det nye besøgstal
mysql_query("UPDATE besoeg SET antal='$antal' WHERE id=$titel[$taller]") or die (mysql_error());

$nyt_antal = $row['antal'] + 1;

if ($titel[$taller] == $titel[Home]){
    echo "Besøg: $nyt_antal";
    } else{
echo "Visninger: $nyt_antal";
    }
}
Avatar billede olebole Juniormester
13. maj 2005 - 18:10 #1
<ole>

Hvad mener du med 'unik'? Når bowseren lukkes, dør session'en. Hvis jeg således går ind på en side - lukker browseren - åbner et nyt browservindue og besøger siden igen, tælles jeg to gange. Er det mon meningen, for det er vel ikke særlig unikt?  :)

/mvh
</bole>
Avatar billede -kenner- Nybegynder
13. maj 2005 - 18:54 #2
Ja, men browsere kan jo sættes til at afvise cookies.. hmm..

Kan man tvinge en browser til at tage imod cookies?
Avatar billede coderdk Praktikant
13. maj 2005 - 19:57 #3
Nej, du kan ikke tvinge en browser til at tage cookies, hvis den er sat til ikke at acceptere dem. Du kunne checke på IP-adressen, og kun lade en IP tæller som unik én gang om dagen?
Avatar billede -kenner- Nybegynder
13. maj 2005 - 21:14 #4
Nu har jeg ikke alt for meget plads i min database, så vi helts ikke have den fyldt med IP-adresser, men hvor mange er det, som har sat sin browser til ikke at modtage cookies? Er det ikke noget med at IE ikke tager imod dem fra standard?
Avatar billede coderdk Praktikant
13. maj 2005 - 21:26 #5
Alle browsere tager imod dem som standard, så vidt jeg ved - Det er kun underlige mennesker der ikke gider bruge specielt funktionelle sites, der slår det fra ;)
Jeg bruger sessions og cookies, hvis folk har slået det fra, er det deres egen skyld ;)
Avatar billede -kenner- Nybegynder
13. maj 2005 - 22:31 #6
OKay, men det jeg ville opnå, var at tælleren bliver så unik som muligt.. Om det så er session eller cookies eller en kombination ved jeg ikke..
Avatar billede coderdk Praktikant
13. maj 2005 - 22:33 #7
Tjah hvis jeg skulle vælge, ville jeg bruge en cookie som udløber ved midnat :) Så er folk unikke en gang om dagen - Det er da dejligt at være unik ;D lol
Avatar billede -kenner- Nybegynder
13. maj 2005 - 23:01 #8
Syne sjeg er en god idé, kan du komme med et oplæg til en kode, gerne skrevet sammen med min funktion..
Avatar billede coderdk Praktikant
14. maj 2005 - 00:43 #9
if ( !empty( $_COOKIE['talt'] ) )
{
  setcookie( 'talt', '1', mktime( 0, 0, 1, date( 'm' ), date( 'd' ) + 1, date( 'Y' ) ) );
  // Tæl databasen op her
}

Husk dit script ikke må komme med noget output før setcookie() - Ikke engang et mellemrum ;)
Avatar billede -kenner- Nybegynder
14. maj 2005 - 08:52 #10
coderdk, kan du ikke smide det ind i min funktion, så man får en cookie for hver side, for der er en unik tæller på hver side på mit site..
Avatar billede coderdk Praktikant
14. maj 2005 - 16:22 #11
function counter($taller)
{
    if ( !empty( $_COOKIE['talt'] ) )
    {
        setcookie( 'talt', '1', mktime( 0, 0, 1, date( 'm' ), date( 'd' ) + 1, date( 'Y' ) ) );
        $titel[Home] = "1";
        $titel[Mig] = "2";
        $titel[Familie] = "3";
        $titel[Venner] = "4";
        $titel[Galleri] = "5";
        $titel[Karate] = "6";
        $titel[Ansoegninger] = "7";
        $titel[Kontakt] = "8";
       
        //ændre til det nye besøgstal
        $sql = "UPDATE besoeg SET antal=antal+1 WHERE id = $titel[$taller]";
        mysql_query( $sql ) or die( mysql_error() );
       
        $nyt_antal = $row['antal'] + 1;
       
        if ( $titel[$taller] == $titel[Home] )
        {
            echo "Besøg: $nyt_antal";
        }
        else
        {
            echo "Visninger: $nyt_antal";
        }
    }
}
Avatar billede coderdk Praktikant
14. maj 2005 - 16:24 #12
Ok så ikke lige du brugte tallet:

function counter($taller)
{
    if ( !empty( $_COOKIE['talt'] ) )
    {
        setcookie( 'talt', '1', mktime( 0, 0, 1, date( 'm' ), date( 'd' ) + 1, date( 'Y' ) ) );
        $titel[Home] = "1";
        $titel[Mig] = "2";
        $titel[Familie] = "3";
        $titel[Venner] = "4";
        $titel[Galleri] = "5";
        $titel[Karate] = "6";
        $titel[Ansoegninger] = "7";
        $titel[Kontakt] = "8";

        $sql = "SELECT * FROM besoeg WHERE id =$titel[$taller]";
        $besoeg = mysql_query( $sql ) or die (mysql_error());
        $row = mysql_fetch_array($besoeg);
        $nyt_antal = $row['antal'] + 1;     
        //ændre til det nye besøgstal
        $sql = "UPDATE besoeg SET antal=antal+1 WHERE id = $titel[$taller]";
        mysql_query( $sql ) or die( mysql_error() );
       
        if ( $titel[$taller] == $titel[Home] )
        {
            echo "Besøg: $nyt_antal";
        }
        else
        {
            echo "Visninger: $nyt_antal";
        }
    }
}
Avatar billede -kenner- Nybegynder
14. maj 2005 - 19:08 #13
Jeg undrede mig lige over disse linier:

$nyt_antal = $row['antal'] + 1;     
        //ændre til det nye besøgstal
        $sql = "UPDATE besoeg SET antal=antal+1 WHERE id = $titel[$taller]";
        mysql_query( $sql ) or die( mysql_error() );

Der bliver lagt 1 til antal to gane, både i $nytantal, og i $sql

Så vil jeg også være sikker på at når man går ind på Home, så får man en cookie, som kun gælder for home, så man kun kan blive registreret på den side en gang. men så hvis man også kommer forbi venner, så skal den sætte en anden cookie, så den tilføjer 1, lige som ved home. Altså er det muligt at få en cookie for hver side, og at cookiesne er forskellige fra side til side..
Avatar billede -kenner- Nybegynder
27. maj 2005 - 13:31 #14
coderdk? -> Er cookien unik i forhold til de andre sider?

Idéen er jo, at jeg vil vise hvor mange der har besøgt hver enkelt side.
Avatar billede coderdk Praktikant
27. maj 2005 - 16:04 #15
Nææh, men så kan du vist lave noget i stil med:

if ( !empty( $_COOKIE['talt'.$taeller] ) )
    {
        setcookie( 'talt'.$taeller, '1', mktime( 0, 0, 1, date( 'm' ), date( 'd' ) + 1, date( 'Y' ) ) );

Bliver bare mange cookies ;P Men ok, hvis du ikke har så mange sider :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