webForumDet fria alternativet

header-problem i wamp

15 svar · 867 visningar · startad av tanten

tantenMedlem sedan nov. 20051 658 inlägg
#1

Har senaste versionen av wamp installerad och så fort jag har
header('Location: någonfil.php');
så slutar det fungera och får varningen
Cannot modify header information - headers already sent by...
Och detta händer bara lokalt!!!
Är det någon inställning man ska ändra på?
Någon annan som har/haft samma problem?

aasahMedlem sedan mars 20033 451 inlägg
#2

Det beror på att vidareskickningen INTE ligger överst i filen. Någonting "<html>", eller ett mellanslag eller vad som helst har skrivits ut till webbsidan före raden

header("Location: ....");

För att redirecten ska fungera måste du se till att din kod ligger före varje tecken som skickas till webbläsaren.

tantenMedlem sedan nov. 20051 658 inlägg
#3

Jag har verkligen kollat. Inga mellanslag ingen html <?php på rad1 ...
I lite smådesperation har jag hämtat hem färdiga script både här och på andra ställen på nätet som blivit godkända och där ingen sagt att de fått dessa fel. Och Wamp har protesterat direkt. Skickat upp dessa sidor på nätet för att se vad som händer då och allt fungerar perfekt på tre webhotel, men inte här lokalt... Inte något enda script som har med header("Location:... fungerar på min dator... så det var därför jag började skylla på wampinställningarna.
I den förra WAMP-versionen jag hade så fick jag inte sådana varningar eller fel.
Laddar snart hem den gamla versionen igen... :-)

tantenMedlem sedan nov. 20051 658 inlägg
#4

För att jag inte ska ha kunnat göra några egna fel så har jag nu laddat ner en gästbok, tror det är "Mattes" från http://www.a-kok.com/gastbok/gastbok.php
och laddat upp den och det blir inga fel och jag skickas vidare till gastbok.php,efter att ha fyllt i ett inlägg, men här i wamp så får jag header-grejen på rad 23 sista raden i scriptet jag kopierat. Nu raderade jag alla kommentarer för att det inte ska bli så långt...

<?php  
require "config.php";
include "strfunc.php";
if ($use_mysql == 1) {
    require_once("mysql_functions.php");
} else {
    require_once("text_functions.php");
}
if (isset($_POST['submit_new'])) {
  foreach($_POST as $key => $val) $_POST[$key] = cleanText($val);
     if (empty($_POST['namn'])||empty($_POST['meddelande'])){
      $_POST['meddelande'] = str_replace("<br />", "\n", $_POST['meddelande']);
      $tillbaka = array('1', $_POST['namn'], $_POST['hemort'], $_POST['epost'], $_POST['url'], $_POST['meddelande']);
    } else {
      save_post_new($_POST['namn'], $_POST['hemort'], $_POST['epost'], $_POST['url'], $_POST['meddelande'], $HTTP_SERVER_VARS['REMOTE_ADDR']);
      $gpost = "Skickat ".date("Y-m-d H:i")." ip: {$HTTP_SERVER_VARS['REMOTE_ADDR']}\n";
      $gpost .= "Namn: ".uncleanText($_POST['namn'])."\n";
      $gpost .= "Hemort: ".uncleanText($_POST['hemort'])."\n";
      $gpost .= "E-post: ".uncleanText($_POST['epost'])."\n";
      $gpost .= "Hemsida: ".uncleanText($_POST['url'])."\n";
      $gpost .= "Meddelande:\n".uncleanText($_POST['meddelande'])."\n";
        if ($skickamail==1){
         $huvud = "From: Min gästbok<".$mailavsandare.">\r\n";
         $huvud .= "Return-Path: <".$mailavsandare.">\r\n"; 
         mail($mailmottagare, $mailamne, $gpost, $huvud);
      }header("Location: gastbok.php");
     }

Enda skillnaden är att på datorn har jag PHP5 på servern 4.01.

MatteMedlem sedan aug. 20002 970 inlägg
#5

Hur lyder ditt kompletta felmeddelande?

tantenMedlem sedan nov. 20051 658 inlägg
#6

Så här:

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\gastbok\nygast.php:25) in C:\wamp\www\gastbok\nygast.php on line 26

MatteMedlem sedan aug. 20002 970 inlägg
#7

Din output får du alltså på raden med mail().
mail-funktionen ger ingen output, såvida det inte är ett felmeddelande.

@ndersMedlem sedan juni 200026 914 inlägg
#8

Du inkluderar fyra filer högt upp i den kod du visar. Kontrollera dessa filer.

I övrigt: det kan väl inte vara helt omöjligt att se till så webbservern buffrar hela sidan innan den skickar något till webbläsaren? Borde väl gå att konfigurera ordentligt i php.ini?

http://www.phpportalen.net/wiki/index.php?page=Varf�r+f�r+man+inte+skicka+n�gon+header+efter+man+skickat+n�gon+output%3F

tantenMedlem sedan nov. 20051 658 inlägg
#9

Ja ha ja, valde jag fel script för att visa mitt hela-tiden header-problem. Ser nu att det var för mailfunktion just här och jag har inte outlook så det är kanske är därför.
Är det din gästbok Matte? I så fall, finns det då header någon merstans som. Jag ska testa mer...

Ska kolla det där med buffer också. Tycker jag rotat runt så myket i inifilen, får se om jag klarar av att konfigurera det...

MatteMedlem sedan aug. 20002 970 inlägg
#10

Bara för att bocka av andra fel. Lägg ditt // i början av rad 25. Testa igen och se om du får header-fel.
Får du det så skriv ut allt du har på skärmen.

tantenMedlem sedan nov. 20051 658 inlägg
#11

Hittade denna i ini-filen och satte den till off, men inget händer.

; Output buffering allows you to send header lines (including cookies) even
; after you send body content, at the price of slowing PHP's output layer a
; bit. You can enable output buffering during runtime by calling the output
; buffering functions. You can also enable output buffering for all files by
; setting this directive to On. If you wish to limit the size of the buffer
; to a certain size - you can use a maximum number of bytes instead of 'On', as
; a value for this directive (e.g., output_buffering=4096).
output_buffering = On

Meddelandet sparas som förut och jag blir kvar på sidan där man skriver meddlandet, isället för att skickas till gästboken.
Jag har tittat i de fyra includefilerna, men hittar inget fel där heller. Jag har inte ändrat något i dem heller utan är orginal.
Min mailadress finns i ini-filen, ska det behövas mer?

MatteMedlem sedan aug. 20002 970 inlägg
#12

Men vad skrivs ut på skärmen?

tantenMedlem sedan nov. 20051 658 inlägg
#13

Nej med den bortkommenterad så försvann varningen och jag hoppade tillbaka till gästboken.
Men då är ini-filen satt till off.
Nu hinner jag inte mer... Ledsen kommer inte tillbaka förrän om några timmar... eller i morgon. Hoppas att felet är borta nu.

tantenMedlem sedan nov. 20051 658 inlägg
#14

Matte skrev:

Men vad skrivs ut på skärmen?

Förlåt... Såg inte ditt förra inlägg innan jag skrev mitt inlägg. så det blev lite hopp i mina svar.

Nu har jag kikat på mina andra script och om jag kommenterar bort mailfunktionen så fungerar de också, även med bufferten off. Så jag gissar att det händer mig för att jag inte har något mailprogram installerat på datorn. Kan det vara så?
Så nu kommenterar jag bort dem och hoppas jag kommer ihåg att ta bort dem när jag skickar upp dem.
Tack så jättemycket för hjälpen...

MatteMedlem sedan aug. 20002 970 inlägg
#15

Kör du Windows är det lätt att aktivera så du kan skicka mail: http://www.phpportalen.net/viewtopic.php?p=486361#486361

Att bufferten är off är normalläge.

tantenMedlem sedan nov. 20051 658 inlägg
#16

Eftersom det bara fungerade med att kommentera bort email-funktionen så satte jag tillbaka bufferten på off så jag får varningarna på andra ställen... Blev kanske lite förvirrad där i går med on och off :-)

Aktivera mail...
Och då kommer vi till ett av mina stora frågetecken? som jag inte brytt mig om att fördjupa mig i.
Jag har ingen aning om vem som ser till att jag kommer ut på nätet.
Jag har ingen telefon och inget telefonabbonemang. Bara Skype för att prata med folk...
Men bredbandsbolaget använder det befintliga telefonjacket, där jag har mitt modem.
Nu ska GEAB(bredbandsbolaget) i dagarna överlåta ip-tjänsterna till ePhone http://www.ephone.se/Vadarip.aspx så då återstår det att se om jag kommer hänga kvar på nätet eller vad som händer...
Men, men... lite spännande är det. Kanske får jag reda på någon port så småningom... Vi får se...
Men jättetack för att jag fick upp ögonen för vad problemet bestod i. Nu vet jag hur jag kanske ska kunna åtgärda det så småningom

Genererad på 387 ms · cache AV · v20260730165559-full.f96bc7eb