Avatar billede jsl Nybegynder
10. november 2005 - 01:09 Der er 10 kommentarer og
1 løsning

Header og setcookie

Jeg får denne fejl for setcookie:
Cannot modify header information.
Jeg ved, at det skyldes, at jeg sender information til clienten før setcookie bliver eksekveret. Problemet er bare, at jeg har designet siden sådan, at jeg har én indeks side, som jeg inkludere de andre sider i vha. argumenter i url'en. Det vil med andre ord sige, at jeg skal have setcookie øverst på indeks siden. Er andre løsninger, end at jeg må lave mig en funktion med setcookie, der bliver kaldt når den side, der skal bruge setcookie, kaldes?
Avatar billede jaw Nybegynder
10. november 2005 - 01:32 #1
Kan du ikke smide det øverst alligevel, da?

Men du kan løse det, med ob_start(); i toppen -> www.php.net/ob_start og ob_end_flush() i bunden, omend løsningen måske ikke er den smukkeste.

Held og lykke med det, og godnat! :)
Avatar billede jaw Nybegynder
10. november 2005 - 01:33 #2
Hov, det med at smide den i toppen alligevel var vist noget vrøvl, bare se bort fra det.
Avatar billede jakobdo Ekspert
10. november 2005 - 09:02 #3
Jaw: Hvorfor er det noget vrøvl?
If output exists prior to calling this function, setcookie() will fail and return FALSE.
Så den skal jo øverst.
Og så kan han kalde header() bagefter.
Avatar billede jsl Nybegynder
10. november 2005 - 10:37 #4
Det virker. Jeg har gjort sådan her i min index.php:

<?PHP ob_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
.
.---kode--- include "side"
.
<?PHP ob_end_flush(); ?>
Avatar billede jaw Nybegynder
10. november 2005 - 11:36 #5
Jakob - Det var heller ikke noget vrøvl. Men først tænkte jeg på start_session(); da jeg skrev det. Så tænkte jeg på header("Location: ..."); da jeg skrev det var noget vrøvl, og tilsidst opdagede jeg det var setcookie() men der gad jeg ikke rettet det igen :)

Men godt det virker, jeg tillader mig at smide et svar?
Avatar billede jsl Nybegynder
10. november 2005 - 11:43 #6
jaw - Godt du selv tog initiativet. :)
Avatar billede jakobdo Ekspert
10. november 2005 - 11:47 #7
Ja, vi vil have flere exp-brugere som kan tænke en smule og tør prøve selv. :o)
Avatar billede jaw Nybegynder
10. november 2005 - 11:59 #8
Hehe, jeg takker :) !
Avatar billede olebole Juniormester
10. november 2005 - 14:54 #9
<ole>

Nej, det er ikke altid helt så godt, som det kunne syne  :)

Output-buffering er panik-løsningen til at løse problemer i skidt kode. Bruger man en ordentlig kode-struktur - med al PHP i funktioner i toppen af dokumentet - er det aldrig et problem at sætte headers og/eller cookies.
Problemet opstår kun, når man begynder at skrive HTML ud, før al PHP er kørt ... og det kan man jo bare lade være med.

Output-buffering sluger enorme mængder hukommelse på serveren og bør absolut undgåes, når det overhovedet kan undgåes  ;o)

/mvh
</bole>
Avatar billede jsl Nybegynder
10. november 2005 - 15:15 #10
Ok, og jeg er begynder. Her har jeg indekssiden jeg inkludere alle de andre sider i. Jeg kan ikke lige se, hvordan jeg kan undgå at bruge output-buffering:
<?PHP
ob_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<title>test</title>
<link href="css/style.css" rel="stylesheet" type="text/css">
<link href="css/main_menu.css" rel="stylesheet" type="text/css">
<script type="text/javascript" language="JavaScript1.2" src="js/main_menu.js"></script>
</HEAD>
<BODY>
<div class="wrapper">
<?php
require "inc/common.php";
include "inc/top.php";
include "inc/left.php";
include "inc/right.php";
?>
<div class="content padleft padright">
  <?php
  $show = $_GET['show'];
  if(isset($show)) {
    include $show;
  } else
    include "frontpage.php";
  ?>
  <div class="clearer">&nbsp;</div>
</div>
<?php
include "inc/bottom.php";
?>
</div>
</BODY>
</HTML>
<?PHP
ob_end_flush();
?>
Avatar billede jsl Nybegynder
10. november 2005 - 16:39 #11
olebole-> Hvis du siger jeg har andvendt panik-løsningen, har du så links til nogle sider, hvor jeg kan læse lidt om, hvordan jeg kan sætte indeks siden rigtig op.
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