Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] header('location: '); Nie działa
Forum PHP.pl > Forum > Przedszkole
oz3h
Mam taki kod:
  1. <?php
  2. if (isset($_GET['download'])) {
  3. header('location: '.$result['file_link']);
  4. }
  5. ?>


Gdy włączam stronę wyskakuje mi taki błąd: Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\oz3h\file.php:7) in c:\usr\krasnal\www\oz3h\file.php on line 36

Nie wiem o co chodzi, szukałem już o tym na forum lecz nic nie znalazłem co mogło by mi pomóc sad.gif
Szakal
a użyłeś wcześniej echo czy czegoś w tym stylu questionmark.gif

jak nie to się niesraj tylko daj

  1. <?
  2. echo "<script>window.location.href='".$result['file_link']."';</script>";
  3. ?>
JaRoPHP
Cytat
Nie wiem o co chodzi...
Jak to nie wiesz, wszystko jest napisane:
Cytat
Warning: Cannot modify header information - headers already sent...

Nie możesz wysłać nagłówka, jeśli wcześniej na stronie pojawił sie już jakiś tekst (poprzez zwykły kod html, czy też instrukcje php, jak np. echo()). Funkcja header() musi pojawić się, zanim cokolwiek będzie drukowane na ekranie.
skowron-line
na poczatku skryptu w 1 lini wpisz

ob_start();

i bedzie po temacie
oz3h
Mam takie coś:
  1. <?php
  2. require_once('globals.php');
  3.  
  4. $query = mysql_query ("SELECT * FROM files WHERE file_id =".$_GET['id']." ORDER BY file_id DESC");
  5. if ($result = mysql_fetch_assoc ($query)) {
  6. $id = (int)$_GET['id'];
  7. $file_id = $result['file_id'];
  8. $file_name = $result['file_name'];
  9. $file_description = $result['file_description'];
  10. $file_description2 = $result['file_description2'];
  11. $file_size = $result['file_size'];
  12. $file_licence = $result['file_licence'];
  13. $file_os = $result['file_os'];
  14. $file_producer = $result['file_producer'];
  15. $file_producer_link = $result['file_producer_link'];
  16. $file_lang = $result['file_lang'];
  17. $file_link = $result['file_link'];
  18. $file_screen = $result['file_screen'];
  19. $file_screen_width = $result['file_screen_width'];
  20. $file_screen_height = $result['file_screen_height'];
  21. $file_date = $result['file_date'];
  22. $file_downloads = $result['file_downloads'];
  23. $download = 'file.php?id='.$file_id.'&download=ok';
  24.  
  25. if (isset($_GET['download'])) {
  26. mysql_query ("UPDATE files SET file_downloads=file_downloads+1 WHERE file_id=$id");
  27. header('location: '.$result['file_link']);
  28. }
  29. ?>


Ten Twój sposób z Javą działa lecz wolał bym zrobić to z header biggrin.gif

Cytat(skowron-line @ 5.12.2006, 22:32:40 ) *
na poczatku skryptu w 1 lini wpisz

ob_start();

i bedzie po temacie


Już tego próbowałem wcześniej i też nie działało.
acztery
ob_start(); ma byc nie na początku tego skrypu ale na początku pliku includowanego pewnie jako 1 nie wiem jak tam to masz... tez sadze ze to najlepsze roziwazanie
Szakal
ja robie to javom bo te nagłówki mnie tylko wk******* :]
skowron-line
jezeli includujesz ten plik to ob_start() powinno byc na poczatku glownego pliku index.php czy w co tam includujesz a w tym przypadku co pokazales przed error_reporting
oz3h
Cytat(skowron-line @ 5.12.2006, 22:42:03 ) *
jezeli includujesz ten plik to ob_start() powinno byc na poczatku glownego pliku index.php czy w co tam includujesz a w tym przypadku co pokazales przed error_reporting


Dokładnie wstawiam to w tym miejscu:
  1. <?php
  2. require_once('globals.php');
  3. ?>

I dalej nie działa ;(
JaRoPHP
Cytat
Dokładnie wstawiam to w tym miejscu...

Jest to początek Twojego pliku, czy może wcześniej masz jakiś kod HTML/XHTML?
oz3h
Już sobie z tym poradziłem biggrin.gif Po prostu wstawiłem <?php ob_start(); ?> przed <html>
Dzięki wszystkim za pomoc.
MavisS2
Zdaje sobie sprawę, że temat był poruszany dość dawno, ale podane rozwiązanie mi osobiście się nie podoba i chciałbym dodać swoją radę. Ktoś już wspomniał ze nie można wysłać headera, bo już został wydrukowany tekst na stronie po przez funkcje echo lub inna. Ja chciałbym dodać ze wcale to nie musi być nic drukowane przez php tylko zwykła spacja przed kodem lub na jego końcu. Warto sprawdzić wszystkie pliki includowane do kodu właśnie pod względem spacji/enterow (lub innych białych znaków) przed kodem lub na końcu kodu PHP, czyli przed i po znacznikach <?php i ?>
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.