Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: header location
Forum PHP.pl > Forum > PHP
john_doe
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:)
nexis
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. ?>
mike
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.
john_doe
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
Turgon
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...
HighVoltage
  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.
john_doe
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
thornag
@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 ?
mike
~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.
thornag
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
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.