Avatar billede tvilling53 Seniormester
20. januar 2015 - 16:02 Der er 13 kommentarer og
1 løsning

Problemmer med header

Hej eksperter.

Jeg har denne linie som det første på siden:
<?php header ("location:individuelle.php");
session_start();

flere linier kode og så denne linie:
if(trim($data[84][$kol1])==="" || trim($data[84][$kol1+1])==="")exit();<------
flere linier kode


Problemmet er at uanset om der står data i de to celler eller ej kommer jeg over på den side som står i headeren.

Mens jeg lavede denne side, stod headeren der hvor der står exit();og sådan kørte den uden fejl på min localserver, men kan ikke på one.com's server.

Er der nogen der har en løsning?
Thomas V
Avatar billede moddi100 Seniormester
20. januar 2015 - 16:07 #1
Lige så snart du sender header('Location: XX') beder du browseren om at skifte side (redirect). Samtidig fortsætter udførslen af dit php-script dog. Med andre ord, kan du ikke annullere dit redirect.

I stedet for bør din kode se ud som følger:

<?php
session_start();

// flere linier kode og så denne linie:
if(trim($data[84][$kol1])==="" || trim($data[84][$kol1+1]) ==="")
{
header ("location:individuelle.php");
exit;
}
Avatar billede tvilling53 Seniormester
20. januar 2015 - 17:07 #2
hej
Rettelse af kode som dit forslag giver følgende fejlmeddelse:
Warning: Cannot modify header information - headers already sent by (output started at /customers/2/1/1/api-it.dk/httpd.www/vejledningstekst.php:2) in /customers/2/1/1/api-it.dk/httpd.www/start.php on line 56

thomas V
Avatar billede moddi100 Seniormester
20. januar 2015 - 17:17 #3
Fjern alle mellemrum og linjeskift før <?php
Avatar billede tvilling53 Seniormester
20. januar 2015 - 17:31 #4
hej
Den første fejl blev afløst af en anden, så her er koden neg til det sted hvor headeren allerede er sent:

<?php session_start();
include_once 'mine_funktioner.php';
include "label_tekst.php";
include_once "vejledningstekst.php";?>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Startside for program</title>
        <link rel="stylesheet" href="blog2.css" type="text/css"/>
        <style type="text/css">
        .area{height:500px}
        </style>
    </head>
<body class="body">
<?php  <------ det er her er fejlen meldes!!!
Avatar billede moddi100 Seniormester
20. januar 2015 - 17:55 #5
header() skal kaldes inden du udskriver noget indhold.

Det kan dog løses med at du skriver følgende aller øverst:

[Div]<?php ob_start();

// resten af din kode følger her
session_start();
include_once 'mine_funktioner.php';
include "label_tekst.php";[/div]
Avatar billede tvilling53 Seniormester
20. januar 2015 - 18:21 #6
Hej
De første 5 linier ser sådan ud:

[Div] <?php ob_start();
session_start();
include_once 'mine_funktioner.php';
include "label_tekst.php";
include_once "vejledningstekst.php";[/div] ?>

det giver denne fejl:
Parse error: syntax error, unexpected '/', expecting ']' in /customers/2/1/1/api-it.dk/httpd.www/start.php on line 5

fjernes denne slash giver det denne fejl:
[Div] Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /customers/2/1/1/api-it.dk/httpd.www/start.php:1)

Thomas V
Avatar billede olsensweb.dk Ekspert
20. januar 2015 - 18:45 #7
fjern [Div] fra linje 1
det moddi100 ville have skrevet er
<?php ob_start();
// resten af din kode følger her
session_start();
include_once 'mine_funktioner.php';
include "label_tekst.php";


fejlen oppstod pga tags er følsommer for store og små bogstaver
her kunne det være rart at kunne editerer sit indlæg så man kunne rette end smutter

ob_start() er kun en nødløsning.
den rigtige løsning er at restructurer din code, så alt test kommer før din HTML
Avatar billede olsensweb.dk Ekspert
20. januar 2015 - 18:50 #8
du kan se hvilke tags/bb coder vi anvender her på E i denne guide
http://www.eksperten.dk/guide/1325
Avatar billede tvilling53 Seniormester
20. januar 2015 - 18:57 #9
hej
Nu ser mine første 5 linier sådan ud:

<?php ob_start();
session_start();
include_once 'mine_funktioner.php';
include "label_tekst.php";
include_once "vejledningstekst.php";?>

og headerren ser sådan ud:

if(trim($data[84][$kol1])==="" || trim($data[84][$kol1+1])==="")
        { header("location:individuelle.php");}

Jeg ved ikke hvorfor , men det ser ud til at virke nu,men den egentlige test kan ikke køres lige nu.

Smid et svar så får du dine point.
Thomas V
Avatar billede olsensweb.dk Ekspert
20. januar 2015 - 19:04 #10
jeg springer point over, point må være til moddi100, da han kom med løsningen

@moddi100 smid et svar
Avatar billede tvilling53 Seniormester
20. januar 2015 - 19:37 #11
hej
moddi100 smid et svar så får du dine point.
Thomas V
Avatar billede moddi100 Seniormester
21. januar 2015 - 01:02 #12
Takker for rettelsen ronols.

#tvilling53 hvad mener du med:
"Jeg ved ikke hvorfor , men det ser ud til at virke nu,men den egentlige test kan ikke køres lige nu."

Er det blot, at du ikke har mulighed for at teste din if-sætning med rigtige værdier eller hvordan skal det forstås? Virker din redirect ellers efter hensigten nu?
Avatar billede tvilling53 Seniormester
21. januar 2015 - 14:07 #13
Hej
Det ser ud til at virke nu, fordi når der er værdier i de 2 celler som der står i if-sætningen kommer jeg ikke tilbage til den side hvor indtastningen foretages, og det tolker jeg som at det virker som det skal. Den side som skal gemme værdierne er ikke blevet rettet efter at alle 134 sider er oploadet fordi at min localserver og One.com's server ikke er enige om hvordan koden skal skrives helt korrekt og derfor kan en egentlig test ikke køres. Jeg håber du kan få en mening ud det jeg har skrevet.

Smid et svar så får du dine point.

Thomas V
Avatar billede moddi100 Seniormester
21. januar 2015 - 17:04 #14
Godt at høre, at du får de resultater du forventer. Så kan vi lukke her :)
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

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