Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> header location, headers already send
john_doe
post 23.09.2006, 23:58:05
Post #1





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


witajcie,

  1. <?php
  2. require ( 'fabryka.php' );
  3.  
  4. getaDataBaseConnection();
  5.  
  6. $translate = md5( $phpowe );
  7. $zapytanie = 'SELECT pole FROM tabela';
  8. $wynik = mysql_query( $zapytanie );
  9. $wiersz = mysql_fetch_assoc( $wynik );
  10.  
  11. $bazowe = $wiersz["pole"];
  12. $phpowe = $_POST['haslo'];
  13.  
  14. if ( $translate === $bazowe )
  15. {
  16. header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . '/index.php' );
  17. }
  18. else 
  19. {
  20. header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . '/wrong.php' );
  21. }
  22. ?>


blad typu

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\test.php:1) in C:\wamp\www\test.php on line 20

w zadnym miejscu przytoczonego kodu nie wyrzucam nic na ekran. Co sie dzieje?


pozdro:)
Go to the top of the page
+Quote Post
nexis
post 24.09.2006, 00:08:44
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Zrób na wszelki wypadek tak i z głowy:

  1. <?php
  2. require ( 'fabryka.php' );
  3.  
  4. getaDataBaseConnection();
  5.  
  6. $translate = md5( $phpowe );
  7. $zapytanie = 'SELECT pole FROM tabela';
  8. $wynik = mysql_query( $zapytanie );
  9. $wiersz = mysql_fetch_assoc( $wynik );
  10.  
  11. $bazowe = $wiersz["pole"];
  12. $phpowe = $_POST['haslo'];
  13.  
  14. if ( $translate === $bazowe )
  15. {
  16. header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . '/index.php' );
  17. }
  18. else 
  19. {
  20. header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . '/wrong.php' );
  21. }
  22. ?>


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
mike
post 24.09.2006, 00:09:46
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Daj:
  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. require ( 'fabryka.php' );
  7.  
  8. // ....
  9.  
  10. ?>
zobaczymy czy nie ma błędów smile.gif

I co jest w fabryka.php ?

~nexis to co podales to akurat najgorsze wyjście z możliwch.
Go to the top of the page
+Quote Post
john_doe
post 24.09.2006, 00:22:30
Post #4





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


fabryka.php
  1. <?php
  2. function getaDataBaseConnection()
  3. {
  4. $link = mysql_connect('localhost', 'root', '') 
  5. or die ("ERROR: Nie mogę się połączyć z bazą");
  6. $baza = mysql_select_db("a")
  7. or die ("ERROR: Nie udało się wybrać bazy danych");
  8. }
  9.  
  10. function goToPage ( $page )
  11. {
  12. header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . $page );
  13. }
  14. ?>


to co zaproponowal nexis nie dziala. nadal ten sam blad funkcji gotopage teraz juz nie ma narazie

Ten post edytował john_doe 24.09.2006, 00:35:20
Go to the top of the page
+Quote Post
Turgon
post 24.09.2006, 07:15:15
Post #5





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Błąd jest :
  1. <?php
  2. function goToPage ( $page )
  3. {
  4. header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . $page );
  5. }
  6. ?>

  1. <?php
  2. function goToPage ( $page )
  3. {
  4. header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . $page );
  5. }
  6. ?>

Bo inaczej czyścisz bufor biggrin.gif...


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
HighVoltage
post 24.09.2006, 10:19:33
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 22.09.2006

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $translate = md5( $phpowe );
  3. $zapytanie = 'SELECT pole FROM tabela';
  4. $wynik = mysql_query( $zapytanie );
  5. $wiersz = mysql_fetch_assoc( $wynik );
  6. $bazowe = $wiersz["pole"];
  7. $phpowe = $_POST['haslo'];
  8. ?>


Yhm, najpierw hashujesz zmienna $phpowe, a dopiero potem przypisujesz jej wartosc? smile.gif
  1. <?php
  2. $phpowe = $_POST['haslo'];
  3. $translate = md5( $phpowe );
  4. ?>


Funkcja goToPage w pliku fabryka.php jest nieistotna bo i tak jej tutaj nie wywoluje. U mnie wszystko dziala prawidlowo.

Ten post edytował HighVoltage 24.09.2006, 10:27:14
Go to the top of the page
+Quote Post
john_doe
post 24.09.2006, 13:04:19
Post #7





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


Hey, mam teraz tak i nadal ten sam blad. rece opadaja sad.gif

  1. <?php
  2.  
  3. require ( 'fabryka.php' );
  4.  
  5. getaDataBaseConnection();
  6.  
  7. $zapytanie = 'SELECT pole FROM tabela';
  8. $wynik = mysql_query( $zapytanie );
  9. $wiersz = mysql_fetch_assoc( $wynik );
  10.  
  11. $bazowe = $wiersz["pole"];
  12. $phpowe = $_POST['haslo'];
  13. $translate = md5( $phpowe );
  14.  
  15. if ( $translate === $bazowe )
  16. {
  17. header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . '/index.php' );
  18. }
  19. else 
  20. {
  21. header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . '/wrong.php' );
  22. }
  23. ?>


fabryka.php

  1. <?php
  2. function getaDataBaseConnection()
  3. {
  4. $link = mysql_connect('localhost', 'root', '') 
  5. or die ("ERROR: Nie mogę się połączyć z bazą");
  6. $baza = mysql_select_db("a")
  7. or die ("ERROR: Nie udało się wybrać bazy danych");
  8. }
  9.  
  10. function goToPage ( $page )
  11. {
  12. header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . $page );
  13. }
  14. ?>


w sumie fabryka sluzy mi narazie tylko zeby kodu laczenia z baza nie miec w tym pliku i tyle. reszta nie jest wywolywana. moze jakas konfiguracja php z mysql albo cos tam......

pozdro

Ten post edytował john_doe 24.09.2006, 13:22:01
Go to the top of the page
+Quote Post
thornag
post 24.09.2006, 21:31:19
Post #8





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


@mike_mech pozwole sobie na rozwiniecie drugiego rdzenia tematu. Dlaczego stosowanie buforowania to najgorsze wyjscie ? Jakie sa inne sposoby (jesli nie mozna zmienic konfiguracji serwera) na uzywanie header() w srodku skryptu ?


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
mike
post 26.09.2006, 07:32:55
Post #9





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


~thornag sytuacja kiedy aplikacja działa w takiej kolejności:
1. Wysłanie zawartości;
2. Wysłanie nagłówków;
3. Wysłanie dalszej zawartości;
to sytuacja zła.
Zła dlatego że jest źle zaprojektowana. Weź na przykład strone internetową. Przeglądarka najpierw dostaje nagłówek a potem zawartość. To jest naturalna, dobra kolejność.

Stosowanie ob_*() po to by to omijać, nie jest żadnym rozwiązainem problemu a jedynie zamaskowaniem/ominięciem problemu źle zaprojektowanej aplikacji.

Poprawnym wrozwiązaniem jest tak zaprojektowanie aplikacji by takie sytuacje się nie zdarzały.

Pomijam jakiś 0.1% przypadków kiedy może to być uzasadnione.
Go to the top of the page
+Quote Post
thornag
post 26.09.2006, 10:34:41
Post #10





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Wlasciwie to rzeczywiscie dopiero teraz popatrzalem na to z innej strony.

Wszak po co wyswietlac np header strony jesli zaraz po nim chce sie zrobic redirect smile.gif

Czasem mnie szturchnac trzeba to sie polapie winksmiley.jpg

Dzieki za odpowiedz.
eot


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 04:02