Avatar billede ny89 Nybegynder
06. november 2011 - 19:15 Der er 22 kommentarer og
1 løsning

Cookies

Godaften, Vil høre om I kan hjælpe. Jeg har lavet et script, som skal vise et felt, hvor man kan indtaste en farve skoene skal have og som skal gemmes ved hjælp af cookies. Farven skal printes foroven. Jeg har lavet et script, men det vil ikke vise noget frem. Hvad gør jeg forkert?



<?php
    echo "Skoforretning";

    $_sko = "l&oslash;besko";
    setcookie ("sko", $_sko, time()+3600);
    //korrekt
    echo "Sko du har valgt":
    echo $_COOKIE["farve"];
    echo "<form action='sko.php' method='GET'>";
    echo "<input type='text' name='farve' size='20'/>";
    echo "<input type='submit' value='Klik'>";
    // Fejl
else
    echo "Fejl";   
?>
Avatar billede olsensweb.dk Ekspert
06. november 2011 - 19:35 #1
du kan ikke sette en cookie efter du har skrevet noget til skærmen header restriction http://dk2.php.net/setcookie
det skrev jeg også til dig allerede i http://www.eksperten.dk/spm/950731 #1
Avatar billede ny89 Nybegynder
06. november 2011 - 19:43 #2
Har ændret til dette:




<?php
echo "Skoforretning";
echo "<br>";

if (empty($_GET))    {
   
setcookie ('sko', 'farve', time()+3600);
    echo 'Skofarve:' .($_COOKIE['sko']!= ''? $_COOKIE['sko']: 'vises her'); // skoefarve ?   
    }
    //korrekt
    //echo "Sko du har valgt":
    //echo $_COOKIE["farve"];
   
    // Fejl
else
    echo "Fejl";
   
?>

<html>
<form action='sko.php' method='GET'>
<input type='text' name='farve' size='20'/>
<input type='submit' value='Klik'>
</html>


Nu viser den "fejl", når jeg indtaster en farve.
Hvad vil det sige i header restriction? Jeg har ikke arbejdet med cookie før, så jeg er rimelig ny på området.
Avatar billede olsensweb.dk Ekspert
06. november 2011 - 19:51 #3
du skriver stadig noget til skærmen før du setter en cookie

<?php
echo "Skoforretning";
echo "<br>";

if (empty($_GET))    {
 
setcookie ('sko', 'farve', time()+3600);
    echo 'Skofarve:' .($_COOKIE['sko']!= ''? $_COOKIE['sko']: 'vises her'); // skoefarve ? 
    }
    //korrekt
    //echo "Sko du har valgt":
    //echo $_COOKIE["farve"];
 
    // Fejl
else
    echo "Fejl";
?>
Avatar billede olsensweb.dk Ekspert
06. november 2011 - 19:53 #4
<?php
echo "Skoforretning";
echo "<br>";

if (empty($_GET))    {
 
setcookie ('sko', 'farve', time()+3600);
Avatar billede ny89 Nybegynder
06. november 2011 - 19:59 #5
Vil det sige at jeg skal gøre følgende:

<?php
echo "Skoforretning";
echo "<br>";

setcookie ('sko', 'farve', time()+3600);
if (empty($_GET))    {
Avatar billede olsensweb.dk Ekspert
06. november 2011 - 20:09 #6
ref http://dk2.php.net/setcookie
citat
setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including <html> and <head> tags as well as any whitespace.
/citat


>Vil det sige at jeg skal gøre følgende:
nej, set cookie skal op som det første

ca sådan (utested)
<?php
if (empty($_GET))    {
    setcookie ('sko', 'farve', time()+3600);
    echo 'Skofarve:' .($_COOKIE['sko']!= ''? $_COOKIE['sko']: 'vises her'); // skoefarve ?
}
//korrekt
//echo "Sko du har valgt":
//echo $_COOKIE["farve"];

// Fejl
else{
    echo "Fejl";
}   
echo "Skoforretning";
echo "<br>";
?>
Avatar billede ny89 Nybegynder
06. november 2011 - 20:16 #7
super, takker.

Den udskriver fejl, når jeg skriver en farve.

Er der noget galt med: echo 'Skofarve:' .($_COOKIE['sko']!= ''? $_COOKIE['sko']: 'vises her'); // skoefarve ?
Avatar billede olebole Juniormester
07. november 2011 - 08:14 #8
<ole>

"Den udskriver fejl, når jeg skriver en farve" - skrives der mon mere end bare 'Fejl'?  *o)

/mvh
</bole>
Avatar billede olebole Juniormester
07. november 2011 - 08:16 #9
Ahhh ... fejlen er, at en cookie ikke kan læses lige efter, den er sat - men først efter et sideskift  =)
Avatar billede olebole Juniormester
07. november 2011 - 08:19 #10
For lige at præcisere: Du skal sætte kagen, før noget somhelst output til browseren - fuldstændig, som ronols skriver. Til gengæld kan den først læses, efter du er navigeret til en anden side
Avatar billede ny89 Nybegynder
07. november 2011 - 15:19 #11
Jeg har ændret til følgende:


<html>
<b>Skoforretning</b><p>

<?php
if(empty($_GET)) {
    $farve = $_GET['farve'];
    setcookie ('sko', $farve, time()+3600);   
    echo 'Den valgte skofarve:' .($_COOKIE['sko']!= ''? $_COOKIE['sko']: ' vises her'); // skofarve ?   
    echo $_COOKIE['sko'];
    }
   
else
    {
    echo "Fejl";
    }
   
   
?>


<form action='sko.php' method='GET'>
<input type='text' name='farve' size='20'/>
<input type='submit' value='Klik'>
</form>
</html>


betyder det at jeg skal navigere til en helt ny side i stedet for sko.php?? Vil det hjælpe med at kunne læse cookies?
Avatar billede olebole Juniormester
07. november 2011 - 22:49 #12
Ja, eller bare reloade sko.php
Avatar billede olsensweb.dk Ekspert
08. november 2011 - 07:28 #13
og ryk så dette
<html>
<b>Skoforretning</b><p>

længere ned i coden, ellers får du aldrig sat din cookie
Avatar billede olebole Juniormester
08. november 2011 - 14:42 #14
I det hele taget er det noget rod at blande HTML og PHP sammen. Du bør have dine PHP funktioner liggende helt i toppen af dokumentet - før DTD'en.

Al din PHP bør være afviklet - og alle HTML-strenge, der senere skal bruges nede i dokumentet, skal være færdige og ligge klar - inden du kommer forbi DTD'en.

Det eneste, du bør gøre nede i HTML-koden, er at skrive de færdige strenge ind i dokumentet. At udskrive HTML i PHP-løkker er dårlig kodeskik. Også selvom det ofte ses hos 'hobbykodere' ... med eller uden ansættelsesbrev  *o)
Avatar billede ny89 Nybegynder
08. november 2011 - 17:16 #15
Okay, nu har jeg sat php øverst og html under det. Scriptet fejler dog stadigt. Jeg har oploadet filen igen og vil stadig ikke udskrive en tilfældig farve jeg skriver.
Avatar billede olebole Juniormester
08. november 2011 - 17:27 #16
Hvordan ser din kode helt præcist ud? Du bedes vise al kode ned til det sted, hvor du sætter kagen
Avatar billede olebole Juniormester
08. november 2011 - 17:27 #17
- og for lige at være helt sikker: Du prøver ikke stadivæk at læse cookien lige efter, du har sat den, vel?
Avatar billede ny89 Nybegynder
08. november 2011 - 18:30 #18
Nu ser den sådan ud - håber jeg har forstået det korrekt:

<?php
if(empty($_GET)) {
    $farve = $_GET['farve'];
    setcookie ('sko', $farve, time()+3600);   
    echo 'Den valgte skofarve:' .($_COOKIE['sko']!= ''? $_COOKIE['sko']: ' vises her'); // skofarve ?   
    echo $_COOKIE['sko'];
    }
   
else
    {
    echo "Fejl";
    }   
?>

<html>
<b>Skoforretning</b><p>
<form action='sko.php' method='GET'>
<input type='text' name='farve' size='20'/>
<input type='submit' value='Klik'>
</form>
</html>
Avatar billede olebole Juniormester
08. november 2011 - 19:13 #19
Ja, nu sætter du i det mindste kagen, før du udskriver noget. Men jeg fatter ikke hat af resten.

Det, du skriver i koden er: "Hvis $_GET array'et er tomt - så vil jeg sætte en cookie med det element i $_GET array'et, der hedder 'farve' som værdi. Ellers udskriver jeg en fejl".

Det giver jo ikke mening, vel?
Avatar billede ny89 Nybegynder
08. november 2011 - 19:27 #20
Åbenbart ikke da det desværre fejler.

Hvis array'et er tomt, så skal den udskrive xxx, hvis du forstår hvad jeg mener. Jeg er helt nybegynder med cookies og forstår stadig ikke særligt meget af det.

Men tænkte på om man ikke kan gøre følgende:
<?php
if(empty($_GET)) {
    $farve = $_GET['farve'];
    setcookie ('sko', $farve, time()+3600); 
    echo $_COOKIE["sko"];
Avatar billede olebole Juniormester
08. november 2011 - 20:26 #21
Jamen, du er da vel ikke også helt ny i disciplinen 'tænkning'?

Hvis din bankkonto er tom, hvordan vil du så bruge pengene på din bankkonto til at købe en bil med? Der er jo ikke nogen penge på kontoen!

Hvis $_GET array'et er tomt, hvordan vil du så bruge $_GET['farve'] til noget som helst? Det handler ikke om cookies - men om at tænke sig om!


if(empty($_GET)) {
    $farve = $_GET['farve']; // Hvordan skal dette ske?

Avatar billede ny89 Nybegynder
12. november 2011 - 11:10 #22
..
Avatar billede olebole Juniormester
12. november 2011 - 16:52 #23
Tja, sådan kan man jo også lukke en tråd
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