Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z header()
Forum PHP.pl > Forum > PHP
inc0
Mam problem z funkcją header()

CODE
<?php
ob_start();
session_start();


include_once('/funkcje/f_login.php');


if ($_SESSION['sesja']) f_wyloguj();
//header("Location: /admin/index.php");

ob_end_flush();
?>


Problem wygląda tak: kiedy do podobnego pliku przechodzę np. poprzez formularz(action="...") wszystko działa jak należy. Natomiast jeśli idę tam przez link(<a href="/actions/exampleaction.php">) po przejściu skryptu zamiast odsyłać do tego pliku działa, jakby go includował. Tj. pojawia się w źródle kod tego pliku, ale w adresie pozostaje /actions/exampleaction.php zamiast /admin/index.php. Jakieś pomysły, o co może chodzić? Z góry dzięki!
okitoki
nie możesz modyfikować nagłówka po wysłaniu już treści. nie wiem co w tym pliku jest
include_once('/funkcje/f_login.php'); ale podejrzewam że tam sie coś wyświetla a jak nie to możesz mieć jakiś ukryty znak na początku pliku, notatnik coś takiego dodaje
Fifi209
Cytat(okitoki @ 11.06.2009, 08:20:17 ) *
nie możesz modyfikować nagłówka po wysłaniu już treści. nie wiem co w tym pliku jest
include_once('/funkcje/f_login.php'); ale podejrzewam że tam sie coś wyświetla a jak nie to możesz mieć jakiś ukryty znak na początku pliku, notatnik coś takiego dodaje


Zgadzam się w 100%.

"notatnik coś takiego dodaje" - nie tylko, problem pojawia się przy kodowaniu UTF8, należy je kodować bez BOM. (opcję takiego kodowania zapewnia notepad++)
inc0
W pliku f_login są tylko deklaracje funkcji.

CODE
function f_wyloguj() {
unset($_SESSION['sesja']);
session_destroy();
}


Wszystko było przekonwertowane na UTF-8 przez notepad++. Miałem jednak już na tym serwerze problemy z tym kodowaniem, więc to na 99% to, dzięki! Jak znajdę problem, napiszę.

Naprawiłem dodając $_SERVER['DOCUMENT_ROOT'] do ścieżki. To załatwiło ten plik, był jeszcze inny plik z podobnymi problemami. Tam też udało mi się to załatwić..ale w zupełnie irracjonalny sposób...
oto kod:
CODE
<?php
if($_SESSION['sesja']!=1) header("Location: /admin/index.php");

include_once('/funkcje/f_admin_inner.php');
$id=$_REQUEST['id'];

f_usunklienci($id);
echo $_SERVER['DOCUMENT_ROOT']."admin/admin-inner.php?str=1";

//header("Location: ".$_SERVER['DOCUMENT_ROOT']."admin/admin-inner.php?str=1");

?>


Jak pewnie widzicie, funkcja header() jest zakomentowana...ale działa! I to lepiej, niż kiedy była odkomentowana. Ktoś potrafi wyjaśnić to zjawisko?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.