17. oktober 2004 - 21:42Der er
23 kommentarer og 1 løsning
tjeck Cookie + lav Cookie
Okay, måske ikk den mest beskrivende titel men here it goes: Jeg har lavet et rating system, men jeg vil kun have at folk kan stemme en gang. Jeg har tænkt mig at gøre dette med cookies, men hvordan? mit system fungere på følgende måde: Ud for alle de items som folk skal kunne rate er der en lille form som indeholder 2 felter, et usynligt felt med item'ets id nummer og en option box hvor man kan vælge mellem ratings fra 1 til 5. Når man så trykke submit kommer man hen på en side som nu ligger ens rating ind i en database. Men før den gør det vil jeg gerne have den til at tjekke brugerens computer for itemets id i en cookie. Hvis den finder den cookie skal den ikke ligge det ind i database men bare sige at man allerede har stemt. Og hvis den ikke finde id nummert i en cookie skal den sende en cookie til brugeren som indeholder item'ets id nr. Men hvordan??? Jeg har ikke brugt cookies før og de tutorials jeg har kunnet finde har være cappy...
+ en anden ting. kan man gemme flere værdier i en cookie? kan man gemme arrays i cookies?
Jeg havde nu tænkt mig at gøre det med cookies, mest for at lære at bruge dem. Men også for at holde db-størrlsen nede. Derfor vil jeg gerne have noget kode + lidt forklarring eller bare et par comments til koden... Hvis man godt kan lave arrays i cookies kan man så ikk bare ligge et array med alle de ratede items id nr. i og så tjekke om det item som man vil stemme på matcher nogle af de id nr. der er i arrayet? Så hvad vil koden være i et tilfælde som mit?
Okay, jeg er lidt på bar bund. Er det muligt du kan komme med noget hjælp i form af nogle kommentare til hvad det er du gør. For jeg kan ikk helt finde rundt i de variabler du bruger? som fx.: $ratedids = $_COOKIE['ratedids']; er $ratedids id'en af det item man prøver at rate?
Som sagt har jeg ikke brugt cookies før så det giver for mig ingen mennig, så hvis du kunne forklare hvad det er du gør kan jeg teste og prøve at se om det virker.
$ratedids indeholder alle de ID'er som brugeren har rated før... $nytid er så det ID som brugeren vil rate nu, denne skal så tilføjes til $ratedids når han har rated.
Jeg fatter som sagt ikke helt logikken i din kode men jeg har prøvet bare at copy paste den ind, det ser sådan her ud: (Det virker dog ikk, der kommer bare en tom side frem, min kode til selve ratingen er rigtig nok)
// Nedenstående skal bare i toppen som du har gjort if ( isset( $_COOKIE['ratedids'] ) ) { $ratedids = $_COOKIE['ratedids']; } else { $ratedids = array(); }
if ( in_array( $voted_joke_id, $ratedids ) ) { // Her skal kode hvis brugeren ALLEREDE HAR stemt på denne og ikke må stemme igen } else { // Brugeren har IKKE stemt på denne før; så lav dine databaseting hér! $ratedids[] = $voted_joke_id; }
// Denne skal bare i bunden setcookie( "ratedids", $ratedids, strtotime( "+1 year" ) );
de virker delvist.. Borset fra den sidste linie, altså din cookie: Warning: setcookie() expects parameter 2 to be string, array given in "bla bla bla" on line 56
line 56: setcookie( "ratedids", $ratedids, strtotime( "+1 year" ) );
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.