Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sesje
Forum PHP.pl > Forum > Przedszkole
falfin
Witam. Napisałem prosty skrypcik rejestracji. Jednak po wpisaniu i wysłaniu danych, wyskakuje mi błąd:

Warning: session_start() [function.session-start]: Cannot send session cookie -
headers already sent by
(output started at C:WebServhttpdPHP & MySQLinternetowaPrzetworzonaRejestracja.php:22) 
in C:WebServhttpdPHP & MySQLinternetowaPrzetworzonaRejestracja.php on line 4

A pod spodem drugi:

Warning: session_start() [function.session-start]: Cannot send session cache limiter -
headers already sent
(output started at C:\WebServ\httpd\PHP & MySQL\internetowa\PrzetworzonaRejestracja.php:22) in C:\WebServ\httpd\PHP & MySQL\internetowa\PrzetworzonaRejestracja.php on line 4

Pozatym wszystko działa ok. Wie ktoś może co z tym zrobić?
Oto kod skryptu:

  1. <?php
  2. //ROZPOCZECIE  SESJI
  3.  
  4. $nazwa_uz= $_POST['nazwa_uz'];
  5. $haslo= $_POST['haslo'];
  6. $haslo2= $_POST['haslo2'];
  7. $email= $_POST['email'];
  8.  
  9.  
  10.  
  11.  
  12. if (!$nazwa_uz || !$haslo || !$haslo2 || !$email)
  13. {
  14.  echo ' Nie podales wszyszystkich danych. Wróć do poprzedniej strony i uzupełnij brakujące pola ' ; exit;
  15. }
  16.  
  17.  
  18. else
  19. { //SPRAWDZENIE POPRAWNOSCI DANYCH
  20.  
  21.  if(strlen($nazwa_uz)>16)
  22.  {
  23. echo ' Podana nazwa użytkownika jest za długa. Powinna ona zawierać mniej niż 16 znaków.';
  24. }
  25.  
  26.  if(strlen($haslo)<=5)
  27.  {
  28.  echo 'Podane hasło jest za krótkie! Ze względów bezpieczeństwa,powinno ono zawerać conajmniej 5  znaków.';
  29.  exit;
  30.  }
  31.  
  32.  if ($haslo != $haslo2)
  33. {
  34. echo'Podane hasła są różne!';
  35. }
  36.  
  37. if (!eregi ("[a-zA-z0-9_]+@[a-zA-z0-9-]+.[a-zA-z0-9-.]+$", $email))
  38. {
  39. echo 'Podany adres e-mail jest nie poprawny.';
  40. }
  41. }
  42.  
  43.  
  44. // JEZELI WSZYSTKO SIE ZGADZA TO REJESTRACJA
  45.  
  46. //DODAWANIE ZNAKOW
  47.  
  48. {
  49. $nazwa_uz = addslashes($nazwa_uz);
  50. $haslo = addslashes ($haslo);
  51. $email=addslashes ($email);
  52. }
  53.  
  54.  
  55. //POLACZENIE  Z BAZA DANYCH
  56. require('polaczenie.php');
  57.  
  58.  
  59. //JEZELI NAWIAZANO POLACZENIE
  60. //SPRAWDZENIE CZY PODANA NAZWA NIE  JEST JUZ ZAJETA
  61.  
  62. $zapytanie1= "select * from uzytkownik where nazwa_uz='$nazwa_uz' ";
  63. $wynik1 = mysqli_query($mysql, $zapytanie1);
  64.  
  65.  if(!$wynik1)
  66. {
  67. echo 'Przepraszamy rejestracja w tej chwili jest nie mozliwa. Prosze spróbowac pozniej
    .'
    ;
  68. }
  69.  
  70.  if(mysqli_num_rows($wynik1)>0)
  71. {
  72. echo 'Wybrany nick jest juz zajety. Prosze wybrac inny i sprobowac ponnownie';
  73. }
  74.  
  75.  
  76. //JEZELI NICK NIE JEST ZAJETYREJESTRACJA
  77.  
  78. $zapytanie2= "insert into uzytkownik values ('$nazwa_uz' , sha1('$haslo') , '$email') ";
  79. $wynik2 = mysqli_query($mysql, $zapytanie2);
  80.  
  81.  
  82. //REJESTRACJA  ZMIENNEJ SESJI
  83. $_SESSION['prawid-uzyt']=$nazwa_uz;
  84.  
  85. if(!$wynik2)
  86. {
  87. echo 'Przepraszamy rejestracja w tej chwili jest nie mozliwa. Prosze spróbowac pozniej
    .'
    ;
  88. }
  89.  
  90.  else
  91. {
  92. echo'Rejestracja zakończona sukcesem. Prosze udać się na strone członkowską w celu konfiguracji profilu';
  93. }
  94.  
  95. ?>
devnul
przed rozpoczęciem sesji nie możesz wysyłać żadnych danych do przeglądarki (kodu html, textu nic) a najwyraźniej wysyłasz
falfin
Hmm... Ten skrypt znajduje się w sodku strony html (po to by jego wyniki wyświetlały sie w odpowiednim div'ie). Czy jest jakieś rozwiązanie które pozwoli zachować mi moją dotychczasową koncepcje winksmiley.jpg ?
Statozor
Dodaj na początku ob_start();
falfin
Dodałem, i niestety dalej to samo :/
Ma ktoś jakieś inne rozwiązanie?
W innym skrypcie w którym session_start jest w 2 lini od razu po znaczniku <?php wyskakuje teb błąd:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
(output started at C:\WebServ\httpd\PHP &MySQL\internetowa\skrypty php\Uwierzytelnienie\logowanie.php:2) in C:\WebServ\httpd\PHP & MySQL\internetowa\skrypty php\Uwierzytelnienie\logowanie.php on line 5
devnul
@falfin:
<?php ob_start(); ?> dodaj na początku pliku który wywołujesz (przed <html> lub innymi znacznikami od jakich zaczyna się Twój plik

jeśli wywołujesz z przeglądarki plik w którym pojaiwa się taki błąd to prawdopodobnie kodujesz plik za pomocą UTF8 z nagłówkiem BOM (są to 3 znaki identyfikujące plik w standardzie utf8) możęsz te znaki usunąć w jakimś hexedutrze lub za pomocą programu który potrafi zapisywac utf8 bez nagłówka BOM np notepad2)
Statozor
O to mi chodziło żeby tak dał właśnie ob_start();
devnul
@Statozor: ja to wiem ale kolga falfin najwyraźniej nie wiedział, wstawiłem złego nicka - sory - poprawione
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.