Załadowanie logowania do strony?

Witam właśnie z pewnego tutka stworzyłem cały system logowania/rejestracji. Nie chce na każdej podstronie umieszczać kodu do logowania tylko chciałem dać wszędzie małą linię kodu by je po prostu załadować:

<?

include("xxx/x.php");

?>

Wszystko ładnie się załadowało tylko sypię 1 error :

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/driv/domains/gametronik.pl/public_html/xx.php:6) in /home/driv/domains/gametronik.pl/public_html/logines/login.php on line 3

Chodzi o: session-start dokładnie o to :

ob_start();

session_start();

Kiedy to usuwam nie ma błędu ale logowanie wtedy nie odpowiada. Jak załadować ten plik do mojego indexu w inny sposób :

<?php

ob_start();

session_start(); 


mysql_connect('xxx', 'xxx, 'xxx')

or die('Nieudane polaczenie z baza danych...');

mysql_select_db('xxx')

or die('Nie udalo sie wybrac bazy danych...');

echo '

Logowanie

‘; if($_SESSION[‘logged’]) echo ‘Już jestes zalogowany!’; else { echo ’ Nick: Hasło: ‘; if(isset($_POST[‘ok’])) { $nick = $_POST[‘nick’]; $pass = $_POST[‘pass’]; if(empty($nick) || empty($pass)) echo ‘Wpisz wszystkie pola!’; else { $nick = trim(strip_tags(mysql_real_escape_string(HTMLSpecialChars($nick)))); $pass = trim(strip_tags(mysql_real_escape_string(HTMLSpecialChars($pass)))); $pass = md5($pass); $result = mysql_query("SELECT * FROM users WHERE nick=’$nick’ AND pass=’$pass’"); if(mysql_num_rows($result)==0) echo ‘Niestety podałes niepoprawne dane!’; else { $row = mysql_fetch_array($result); $_SESSION[‘logged’] = true; $_SESSION[‘id’] = $row[‘id’]; $_SESSION[‘nick’] = $row[‘nick’]; $_SESSION[‘data_rejestracji’] = $row[‘data_rejestracji’]; echo ‘Zostałes poprawnie zalogowany! Możesz teraz przejsć na stronę główna’; } } } } mysql_close(); ob_end_flush(); ?>[/code]

headers already sent

poczytaj o nagłówkach php, start sesji to pierwsza informacja jaka ma być wysłana ze skryptu! myślę że możesz includować sobie skrypt ale

session_start();

musisz umieścić na samym początku odrazu po deklaracji

<?php

Ważne jest nawet to aby przed tą deklaracją nie było żadnego znaku, nawet spacji

Sorki ale nie zrozumiałem ? Próbowałem includować to tak:

<?phpsession_start(); 

include("logines/login.php");

?>

Ale nie działa ??

<?php

session_start();

include("logines/login.php");

?>

może to tak wyglądać ale jak masz np stronę index.php/html to musisz to mieć na samej górze jej a nie w środku (przypuszczam że tak masz)

Ten sposób raczej odpada…

Po pierwsze nie działa nawet gdy daje go na górę.

Po drugie on musi się znajdować w środku strony nie na górze…

Jak to wczytać na inny sposób ?

coś robisz źle, nie wczytasz tego inaczej oczywiście możesz to umieścić niżej ale sesja zaczyna się pierwsza. Trudno najpierw generować treść np pod użytkownika zalogowanego a później sprawdzać czy jest on zalogowany :confused:

session_start() musi polecieć do przeglądarki przed wysłaniem jakichkolwiek danych, więc słuchaj się kolegi wyżej.

A da się jakiś zrobić żeby session_start() było na górze strony a to co się ma wczytać na środku ?

Muszę mieć pole logowania w środku kodu !

Na samej górze strony ( PRZED znacznikiem ) dajesz:

<?php

session_start();

?>

A w środku strony dajesz ten include do pliku. Pamiętaj, aby usunąć session_start() z pliku login.php!

Dałem skrypt w środku strony i sesion start na górze ale coś sypie…

Kiedy daje podgląd źródła sypie tak

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/driv/domains/gametronik.pl/public_html/index.php:5) in /home/driv/domains/gametronik.pl/public_html/index.php on line 14



Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/driv/domains/gametronik.pl/public_html/index.php:5) in /home/driv/domains/gametronik.pl/public_html/index.php on line 14

[/code]