Avatar billede manse999 Nybegynder
07. august 2006 - 13:12 Der er 8 kommentarer og
1 løsning

Cookies med link til undersider

Hej med jer.
Jeg har siden www.nyhedsoverblikket.dk .

Jeg vil gerne lave det sådeledes at hvis en bruger er inde på een af mine undersider som han synes godt om, kan han trykke på en knap og der bliver herefter lagt en cookie på brugerens maskine som fortæller om linket til pågældende underside.
På forsiden af min hjemmeside vil jeg så have en boks som viser links til mine undersider alt efter hvilke cookies brugeren har valgt til og fra.
Er det besværligt at lave?
Kan nogen vise mig hvordan det gøres?
Avatar billede manse999 Nybegynder
07. august 2006 - 13:26 #1
Man skal i øvrigt også kunne slette cookies igen fra forsiden
Avatar billede jakobdo Ekspert
07. august 2006 - 13:37 #2
Du kunne gemme et serialized array som en cookie: sider
Det array kan du så trække ud og ind som du lyster! (gemme, slette, vise osv..)
Avatar billede manse999 Nybegynder
07. august 2006 - 13:44 #3
Tak for dit svar jakobdo.
Har du et godt link eller lign. hvor jeg kan læse lidt mere om hvordan man gør.
Eller evt. et eksempel.
Jeg er ikke den vilde kode kahl
Avatar billede jakobdo Ekspert
07. august 2006 - 15:50 #4
Prøv at se her: http://www.codebreaker.dk/exp/724640exp.php
Det er muligt det kan laves smartere...
Avatar billede manse999 Nybegynder
07. august 2006 - 19:47 #5
Det er meget tæt på at være totalt gyldent !
Det jeg gerne vil vise på mine sider er en lille boks hvor "Mine sider" er i, og også hvor man kan slette den fra igen. Altså "Slet" knappen skal også være der.
Måden man tilføjer sider på er evt ved at på hver side er der en knap som aktiver cookie og link ryger i "mine sider".
En anden ting jeg godt kunne tænke mig rettet er at linket i stedet for at hedde:

http://www.codebreaker.dk/exp/724640exp.php?husk=side4
Skal hedde:
http://www.codebreaker.dk/side4.php
Jeg er som sagt ikke den vilde kode kahl, og har ikke brugt query strings.

Jeg vil seriøst være meget glad, hvis du vil hjælpe mig igennem denne. Ud over point sponserer jeg også gerne et par gode flasker rødvin
Avatar billede jakobdo Ekspert
07. august 2006 - 21:30 #6
Flasker rødvin siger du, det lyder jo helt supert.
Jeg har bare lavet det hele på en side, så det kan sagtens laves på flere.
Fang mig lige på MSN: jakobdo (at) hotmail {dot} com
Så kan vi lige finde løsningen! :o)
Avatar billede jakobdo Ekspert
09. august 2006 - 19:25 #7
Løsningen blev disse funktioner:

<?php
//Config
define("COOKIENAME", "nyheds_cookie");

if($_GET['save'] == true)
{
    addSite();
}

if(isset($_GET['delete']) && isSiteSaved($_GET['delete']))
{
    deleteSite($_GET['delete']);
}

function addSite()
{
    $sites = getSites();
   
    $site = siteName();
   
    //Only save the site, if not already listed.
    if(!in_array($site,$sites))
    {
        $sites[] = $site;
    }
   
    saveSites($sites);
    reloadSite();
}

function getSites()
{
    //Creates an empty array
    $sites = array();
   
    //Do we have an old cookie?
    if(isset($_COOKIE[COOKIENAME]))
    {
        //Is magic quotes enabled?
        if(get_magic_quotes_gpc())
        {
            $sites = unserialize(stripslashes($_COOKIE[COOKIENAME]));
        }
        else
        {
            $sites = unserialize($_COOKIE[COOKIENAME]);
        }
    }
    return $sites;
}

function saveSites($sites)
{
    //Serialize array
    $sites = serialize($sites);
   
    //Vi gemmer cookie i 1 år.
    setcookie(COOKIENAME, $sites, time()+(3600*24*365));
}

function reloadSite()
{
    header('Location: ' . $_SERVER['PHP_SELF']);
    exit();
}

function deleteSite($site)
{
    $sites = getSites();
   
    if(isSiteSaved($site))
    {
        foreach($sites AS $key => $value)
        {
            if($value == $site)
            {
                unset($sites[$key]);
            }
        }
    }
    saveSites($sites);
    reloadSite();
}

function showSites($header=NULL)
{
    $sites = getSites();
    if(numberOfSites()>0)
    {
        natsort($sites);
       
        $output = '<div id="savedSitesHeader">';
       
        if(empty($header))
        {
            $output .= 'Dine sider';
        }
        else
        {
            $output .= $header;
        }
        $output .= '</div>';
       
        foreach($sites AS $site)
        {
            $output .= '<div class="row">';
            $output .= '<span class="link">&middot;&nbsp;<a href="' . $site . '.php">' . $site . '</a></span>';
            $output .= '<span class="action"><a href="'.$_SERVER['PHP_SELF'].'?delete='.$site.'">Slet</a></span>';
            $output .= '</div>';
        }
        $output .= '<div class="spacer">&nbsp;</div>';
        return $output;
    }
    return false;
}

function isSiteSaved($site=NULL)
{
    $sites = getSites();
    if($site == NULL)
    {
        $site = siteName();
    }
    return in_array($site,$sites);
}

function numberOfSites()
{
    $sites = getSites();
    return count($sites);
}

function siteName()
{
    return basename($_SERVER['PHP_SELF'], '.php');
}

?>

og et svar.
Avatar billede manse999 Nybegynder
09. august 2006 - 21:01 #8
1000 tak for hjælpen jakobdo. Fantastiks hjælp !
Avatar billede jakobdo Ekspert
11. august 2006 - 10:31 #9
Takker for point.
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