ugrás a tartalomhoz

Üzenetküldő szkriptem átirányítás helyett "cannot modify header information" hibát küld

Anonymous · 2006. Szep. 26. (K), 09.30
Sziasztok, a következő php scriptet próbálom alkalmazni, amely működik is, csak az üzenet elküldése után nem az elkuldve.htm oldalra irányít hanem a következő infó jelenik meg a browserben:

Warning: Cannot modify header information - headers already sent by (output started at /nfs/....

Mi lehet a gond? miért nem a megfelelő oldalra irányít? Előre is köszi a segítséget.

a form:
<form method="post" action="kuldes.php">
<input type="hidden" name="in" value="1">
Elérhetősége: <input type="text" name="neved">

<input type="submit" value="Elküld">
</form>
a kuldes.php:
<?php
if ($_POST["in"]){
reset($_POST);
$level = "<p>Az alábbi űrlapot küldték el ".date("Y-m-d H:i:s")."-kor:</p>";
foreach($_POST as $key=>$val){
$level .= "<p><strong>".$key."</strong>: ".$val."</p>";
}
$cimzett = "e-mail##kukac##cimem.hu";
$subject = "elérhetőség";
$felado = "honlapom";
mail($cimzett, $subject, $level, "From:".$felado."\nContent-Type: text/html; charset=iso-8859-2");
header("Location: elkuldve.htm");
exit;
}
else { // header("Location:bekuldes.htm"); 
exit;
}
?>
 
1

olvasd el és értelmezd ;)

TeeCee · 2006. Szep. 26. (K), 10.05
... mármint a hibaüzenetet ;)
A probléma az, hogy ha valamit már küldtél ki a böngészőnek (írtál ki valamit), akkor utána már nemt udsz header()-t küldeni, mivel az mindenféle adat előtt kell menjen.
Tipikus hiba a:

[HTML FORM]
<?php
if ( formOk() ) {
  header( 'Location: alma.html');
}
?>
Ekkor a formot kiírod a header előtt ugyebár...
Szóval a legegyszerűbb megfordítani a dolgot:

<?php
if ( formOk() ) {
  header( 'Location: alma.html');
}
else {
  $hibauzenet = 'izé';
}
?>
[HMTL tartalom]
<?php echo $hibauzenet ?>
[HTML FORM]
Ekkor ugye a header midnen előtt megy ki, vagyis nem lesz vele gond. Figyelni kell arra, hogy az első PHP kezdő tag előtt SE legyen karakter, még egy szóköz se!
2

köszi

Anonymous · 2006. Szep. 26. (K), 10.43
Köszi a gyors választ, az a baj, hogy én még csak most probálgatom a php-t mert eddig csak statikus (xhtml,css,xml)lapokat csináltam, most meg annyit szeretnék, hogy a honlapomról lehessen nekem mailt küldeni, ehhez keresem a megfelelő scriptet.
Tehát sajna csak akkor érteném mi a gond, ha beírnád a scriptemet helyesen. :-(

Köszi a segítséget
3

hmmm

TeeCee · 2006. Szep. 26. (K), 11.26
Tehát sajna csak akkor érteném mi a gond, ha beírnád a scriptemet helyesen. :-(

Azt csak akkor tudnám helyesen beírni, ha tudnám, mi a scripted :P

Akkor két lehetőséget látok:
1.) Keress magadnak egy kész contact-scriptet. (pl: www.phpclasses.org, vagy a www.hotscriptz.com, de vannak ám mások is)
2.) Próbálkozz sokat, illetve olvass utána dolgoknak.
3.) Szerintem a google is segíthet, keress rá a hibaüzenetre. (bár nyilván mindenkinek más a scriptje, azért a hibajelenséget csak elmagyarázzák valahol, közepes angol nyelvtudással megértheted :) )

Sajnos (vagy nem sajnos) akik itt válazolgatnak a kérdésekre nem szeretik, ha velük iratják meg a programjaikat, mivel - én is - ezzel foglalkoznak és ezekért vannak, akik bizony sokat fizetnek.
Ennek ellenére én szeretek segíteni másoknak. Így, ha a teljes kódot megmutatod (lehetőség szerint rakd fel valahova *.phps-ként és ne ide küldd, csak a linkjét), akkor segítek, hogy rájöjj, mi a probléma. Így tanulsz Te is és legközelebb már Te is tudsz segíteni másoknak ;)

Egyébként másik megoldásképpen egy javascriptes átirányítás jön szóba, ha már valamit írtál ki a böngészőbe, vagy nem tudod a header('Location*') előtt ellenőrizni, hogy volt-e kimeneted, akkor ez működik, feltéve, hogy a javascript be van-e kapcsolva. Ha nincs, akkor egy linket rakhatsz bele, kb. így:

Átirányítás folyamatban. Ha semmi sem történik, akkor használd az alábbi <a href="alma.html">linket</a>!
<script language="JavaScript" type="text/javascript">
<!-- //
document.location.href='alma.html';
//-->
</script>
4

thx again

Anonymous · 2006. Szep. 26. (K), 11.32
Mégegyszer köszi, már a 2 linkkel is sokat segítettél!