Avatar billede plippert Nybegynder
10. august 2005 - 18:32 Der er 29 kommentarer og
1 løsning

Oprettelse af cookie

Jeg har et velfungerende script der laver en cokkie ligeså snart man kommer ind på min side der fortæller at man kun kan komme ind på denne én gang.
Nu vil jeg gerne have det sådan så den cookie først bliver oprettet i det man trykker på SEND i den form jeg har på siden...

Min test-om-man-har-været-der-før-fil ser ud som følger

<?PHP
if (isset($_COOKIE["visit"]) && ($_COOKIE["visit"] == "yes")) {
  header("location: http://www.sorenlippert.dk/index.php"); ?>
<? }
else {
  setcookie("visit", "yes" ,time()+3600*24*365);
  header("location: http://www.sorenlippert.dk/survey/lippertlytter.php");
}
?>

Og min send form ser sådan ud:

<input type="submit" value="Send dine svar">
        <input type="hidden" name="recipient" value="9@sorenlippert.dk">
        <input type="hidden" name="redirect" value="http://www.sorenlippert.dk/survey/redir.htm">
        <input type="hidden" name="subject" value="Svar på spørgeskema på sorenlippert.dk" />

Vil nogen hjælpe? Der er mange point fordi det haster ;-)
Avatar billede anderseiler Nybegynder
10. august 2005 - 18:36 #1
Det er da bare at lave en der hedder

if (isset($_POST['NAVNET PÅ DIN KNAP'])
{
  if (isset($_COOKIE["visit"]) && ($_COOKIE["visit"] == "yes")) {
    header("location: http://www.sorenlippert.dk/index.php"); ?>
  <? }
  else {
    setcookie("visit", "yes" ,time()+3600*24*365);
    header("location: http://www.sorenlippert.dk/survey/lippertlytter.php");
  }
}

Ikke??
Avatar billede plippert Nybegynder
10. august 2005 - 18:40 #2
mjoo. men det første kode er en fil der hedder test.php. Der ser o man har været der før. Hvis man har så kommer man til én side, hvis ikke man har så kommer man ind til et spørgeskema. Det spørgeskema skal man kun ind på én gang derfor ville jeg gerne have at den cookie først bliver oprettet i det man trykker på send.knappen i spørgeskemaet og ikke i det man kommer ind på siden...

Som jeg ser det du skriver, så skal der være en knap på min test.php-side...
Avatar billede anderseiler Nybegynder
10. august 2005 - 18:46 #3
Så skal du på din indexside sige:

<?PHP
if (isset($_COOKIE["visit"]) && ($_COOKIE["visit"] == "yes")) {
  header("location: http://www.sorenlippert.dk/index.php"); ?>
<? }
else {
  header("location: http://www.sorenlippert.dk/survey/lippertlytter.php");
}
?>


Og i den fil der modtager data fra spørgeskemaet skal du skrive:

if (isset($_POST['NAVNET PÅ DIN KNAP'])
{
    setcookie("visit", "yes" ,time()+3600*24*365);
    header("location: http://www.sorenlippert.dk/index.php");

}


I det første script checker den om din cookie == "Yes". Hvis den er det, bliver du sendt til index.php siden. Hvis den IKKE == "yes", bliver du sendt til dit spørgeskema.

Når du så er i dit spørgeskema og har trykket på "SEND" knappen, sætter den en cookie på din computer til "yes", og sender dit til index.php siden.

Er det ikke sådan du vil have det??

Husk at ændre navnet på den der isset() ting til navnet på din knap i spørgeskemaet. Ellers fungerer det naturligvis ikke :)

Mvh
Anders
Avatar billede nielle Nybegynder
10. august 2005 - 18:53 #4
Hvis du gerne vil have at din cookie først bliver oprettet når folk trykker på knappen, så har du to muligheder:

1) Du opretter cookien via JavaScript

2) Du opretter først cookien på den side som form'en submitter til.
Avatar billede plippert Nybegynder
10. august 2005 - 18:53 #5
Jeg prøver. Tak
Avatar billede anderseiler Nybegynder
10. august 2005 - 18:56 #6
Nr. 2 er vist det samme som jeg har skrevet oven over....?
Avatar billede nielle Nybegynder
10. august 2005 - 19:01 #7
Korrekt, men jeg opsummerede også bare mulighederne.
Avatar billede plippert Nybegynder
10. august 2005 - 19:02 #8
Jeg får en fejl når jeg indsætter koden der skal oprette cookien efter man har trykket send.
Jeg har ændret teksten ved NAVNET PÅ DIN KNAP til det jeghar som id="send_svar"...

Parse error: parse error, unexpected '{' in /customers/sorenlippert.dk/sorenlippert.dk/httpd.www/survey/lippertlytter.php on line 1379


Det ser nu sådan ud omkring send knappen

<input type="submit" value="Send dine svar" id="send_svar">
        <input type="hidden" name="recipient" value="9@sorenlippert.dk">
        <input type="hidden" name="redirect" value="http://www.sorenlippert.dk/survey/redir.htm">
        <input type="hidden" name="subject" value="Svar på spørgeskema på sorenlippert.dk" />
        <br>
        <?
        if (isset($_POST['"send_svar'])
{
    setcookie("visit", "yes" ,time()+3600*24*365);
    header("location: http://www.sorenlippert.dk/default.php");

}
?>
Wa nu det?
Avatar billede anderseiler Nybegynder
10. august 2005 - 19:02 #9
:)

Hehe og grunden til jeg beskrev den sidste, er at jeg nok er det bedste eksempel på, hvor dum en person kan være til JS :P
Avatar billede anderseiler Nybegynder
10. august 2005 - 19:03 #10
<input type="submit" value="Send dine svar" id="send_svar">
        <input type="hidden" name="recipient" value="9@sorenlippert.dk">
        <input type="hidden" name="redirect" value="http://www.sorenlippert.dk/survey/redir.htm">
        <input type="hidden" name="subject" value="Svar på spørgeskema på sorenlippert.dk" />
        <br>
        <?
        if (isset($_POST['send_svar']))
{
    setcookie("visit", "yes" ,time()+3600*24*365);
    header("location: http://www.sorenlippert.dk/default.php");

}


Sådan, det burde virke nu... Du havde glemt en } (eller også havde jeg :P)
Avatar billede anderseiler Nybegynder
10. august 2005 - 19:04 #11
en ) ikke en }

Undskyld jeg skriver det, det er for at gøre det klart, ikke spam :)
Avatar billede plippert Nybegynder
10. august 2005 - 19:20 #12
den skriver inge cookie? Er der noget gal kode?
Avatar billede anderseiler Nybegynder
10. august 2005 - 19:26 #13
Jeg kan ikke se nogen fejl der hvor den skriver selve cookien. Prøv:

<input type="submit" value="Send dine svar" name="send_svar">
        <input type="hidden" name="recipient" value="9@sorenlippert.dk">
        <input type="hidden" name="redirect" value="http://www.sorenlippert.dk/survey/redir.htm">
        <input type="hidden" name="subject" value="Svar på spørgeskema på sorenlippert.dk" />
        <br>
        <?
        if (isset($_POST['send_svar']) && $_POST['send_svar'] == "Send dine svar")
{
    setcookie("visit", "yes" ,time()+3600*24*365);
    header("location: http://www.sorenlippert.dk/default.php");
} else {
    echo "Informationen fra spørgeskeamet er ikke kommet igennem!";
}

Så er der også en lille fejldetektor med :)
Avatar billede plippert Nybegynder
10. august 2005 - 20:12 #14
måske har jeg et problem med hvor jeg placerer kode-stykket?
Den lille fejldetektor udløses med det samme og viser 'Informationen fra spørgeskeamet er ikke kommet igennem!' fra start på siden... Og den skriver stadig ingen cookie
Avatar billede anderseiler Nybegynder
10. august 2005 - 20:18 #15
Okay.. Jeg prøver lige at gennemgå det så:

INDEX.PHP:

<?PHP
if (isset($_COOKIE["visit"]) && ($_COOKIE["visit"] == "yes")) {
  header("location: http://www.sorenlippert.dk/index.php"); ?>
<? }
else {
  header("location: http://www.sorenlippert.dk/survey/lippertlytter.php");
}
?>


DEN FIL DER MODTAGER SPØRGESKEAMET:
<?
if (isset($_POST['send_svar']) && $_POST['send_svar'] == "Send dine svar")
{
    setcookie("visit", "yes" ,time()+3600*24*365);
    header("location: http://www.sorenlippert.dk/default.php");
}
    else
{
    echo "Informationen fra spørgeskeamet er ikke kommet igennem!";
}
?>


Det stykke kode som er nederst, skal IKKE placeres sammen med formen, men derimod i den fil som modtager de informationer fra felterne i formen. Okay?

Det den gør er, at i det øverste script checker den om cookien er sat. Er den det, bliver du sendt til den side du ønsker. Er den ikke sat, bliver du sendt til spørgeskeamet. Når du så har trykket "send" i spørgeskemat, bliver alle data sendt videre til en fil. I den fil placerer du så det nederste script. Så burde det virke!

Nu har du husket at indkapsle formen i

<form action=\"DIN-SIDE\" method=\"POST\">DIN FORM</form>

ikke?
Avatar billede plippert Nybegynder
10. august 2005 - 20:33 #16
Nu forstår jeg meget mere! Der er bare én ting. Data fra spørgeskema bliver ikke sendt videre til en anden side. De bliver abre sendt via FormMail til en adresse...

Jeg har prøvet at gøre følgende:

Index.php - tjekker om der er den pågældende cookie og sender bruger videre på det grundlag enten til spørgeskema eller til forsiden

lippertlytter.php - spørgeskema hvor jeg sender info til en mailadresse med FormMail.pl. Min Submit-knap har id="send_svar" og en kommando der sender videre til

test.php - sætter cookien ( den kode du har posted til mig) og redirgerer brugeren til

redir.htm - en tak fordi du gad deltage side med en timeout der sender brugeren videre til forsiden.

Hvad gør jeg galt? Måske er det lidt sent og du har formentlig allerede opdaget det, JEG ER IKKE SÅ SKART TIL DET HER  OG JEG ER MEGET GLAD FOR AT DU GIDER HJÆLPE ;-)
Avatar billede plippert Nybegynder
10. august 2005 - 20:36 #17
og det er formentlig den mest besværlige måde jeg gør det, men sådan er det nu en gang ;-)
Avatar billede anderseiler Nybegynder
10. august 2005 - 20:39 #18
Hehe okay, det gør ikke noget...

Men virker det så nu eller??
Avatar billede plippert Nybegynder
10. august 2005 - 20:43 #19
nej, desværre. Jeg kommer til min test.php

<?PHP
        if (isset($_POST['send_svar']))
{
    setcookie("visit", "yes" ,time()+3600*24*365);
    header("location: http://www.sorenlippert.dk/survey/redir.htm");

}

?>

og så kommer jeg ikke videre og der er tilsyneladende igen cookie (og jeg har slået cookies til )
Avatar billede anderseiler Nybegynder
10. august 2005 - 20:47 #20
Den "komando" du sender videre til test.php hvad hedder den?

Det du skriver oven over...
Avatar billede plippert Nybegynder
10. august 2005 - 20:47 #21
og med igen, mener jeg ingen cookie...
Avatar billede plippert Nybegynder
10. august 2005 - 20:48 #22
det er en del af den der FormMail.pl og hedder

<input type="hidden" name="redirect" value="http://www.sorenlippert.dk/survey/test.php">

Den sender bare brugeren videre til den side man nu vil have det...
Avatar billede anderseiler Nybegynder
10. august 2005 - 20:51 #23
Okay.. Hvis formen er en POST, så skal koden på test.php være:

<?PHP
        if (isset($_POST['redirect']))
{
    setcookie("visit", "yes" ,time()+3600*24*365);
    header("location: http://www.sorenlippert.dk/survey/redir.htm");

}

?>
Avatar billede plippert Nybegynder
10. august 2005 - 20:54 #24
det er det vel egentlig...
starten af formen ser således ud'

<FORM method="post" action="http://www.sorenlippert.dk/cgi-bin/FormMail.pl">

men jeg kommer sq ikke videre end test.php
Avatar billede anderseiler Nybegynder
10. august 2005 - 20:59 #25
Nej det er klart fordi alle data bliver sendt til:

action="http://www.sorenlippert.dk/cgi-bin/FormMail.pl"...

Hmmm... Nu skal jeg sq lige tænke mig om...

Hvis man ikke behøves at klikke på "SEND" kan det sagtens lade sig gøre. Hvis man skal klikke der, så bliver det lidt mere kompliceret.
Avatar billede plippert Nybegynder
10. august 2005 - 21:01 #26
hehe. æv.
Jeg havde det sådan så man bare skulle ind på siden for at cookie blev skrevet, men det andet ville være lidt federe
Avatar billede anderseiler Nybegynder
10. august 2005 - 21:02 #27
Ja er det. Kan du ikke lige sende de første par liner af den der FormMail.pl? Så jeg lige kan se om det er noget jeg kan finde ud af at redigere i? :P
Avatar billede plippert Nybegynder
10. august 2005 - 21:03 #28
eller det vil sige MEGET federe!
Avatar billede anderseiler Nybegynder
10. august 2005 - 21:04 #29
^^
Avatar billede plippert Nybegynder
27. august 2005 - 11:24 #30
Hov. den gled vist lidt ud i sandet... Sorry
Jeg har lader den bare skrive cookie når man kommer ind på siden. Og så bliver det bare sådan
Men mange tak for god hjælp!
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