Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Logowanie, sesja i problem :(
Forum PHP.pl > Forum > Przedszkole
Setesh
Może ktoś z was mi pomoże - byłbym wdzięczny bo ja nie wiem już co jest źle w tym sad.gif

Mam 3 pliki do zalogowania wyświetlenia strony i wylogowania (Z tej strony podpatrzyłem)

I wszystko było by fajnie gdyby nie to że... jak mam tylko te 3 pliki (login.php, secret.php i logout.php) i nie podłączę je pod inne pliki to wszystko jest ok - podaje usera i hasło i się loguje - wyświetla stronkę i potem klikam aby się wylogować - i tu wszystko ładnie ale...

Chciałem to podłączyć u siebie na stronce (tak dla mnie aby było hasło i login do niektórych stron - np konfiguracja) ale wystąpiły błędy :

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at c:\usr\krasnal\www\swebs\index.php:16) in c:\usr\krasnal\www\swebs\root\php\admin.php on line 6Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\usr\krasnal\www\swebs\index.php:16) in c:\usr\krasnal\www\swebs\root\php\admin.php on line 6Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\swebs\index.php:16) in c:\usr\krasnal\www\swebs\root\php\admin.php on line 8" title="Zobacz w manualu PHP" target="_manual

i teraz może trochę kodu i informacji (ja już wszystko przerobiłem i nie mam już sił aby z tym walczyć sad.gif )

Plik login.php :

  1. <?php
  2. if (isset($login) && isset($pass)){
  3. if ($login == "seth" && $pass == "passwd"){
  4. session_register("login");
  5. header("Location: secret.php" . SID);
  6. exit();
  7. } else
  8. $error = "<B>Błędny login lub hasło!</B><BR>";
  9. } else
  10. $error = false;
  11. ?>
  12. <HTML>
  13. <HEAD>
  14. <TITLE>Logowanie</TITLE>
  15. </HEAD>
  16. <BODY>
  17. <?php
  18. echo $error ? $error : "";
  19. ?>
  20. <B>Podaj login i hasło</B>
  21. <FORM method="POST" action="<?php echo $PHP_SELF?>">
  22. Login: <INPUT type="text" name="login"><BR>
  23. Hasło: <INPUT type="password" name="pass"><BR>
  24. <INPUT type="submit" value="Zaloguj się">
  25. </FORM>
  26. </BODY>
  27. </HTML>


plik secret.php :

  1. <?php
  2. if (!isset($_SESSION["login"])){
  3. header("Location: login.php");
  4.  exit();
  5. }
  6. ?>
  7. <HTML>
  8. <HEAD>
  9. <TITLE>Tajne/poufne</TITLE>
  10. </HEAD>
  11. <BODY>
  12. <?php
  13. echo "Witaj " . $_SESSION["login"];
  14. echo " <A href=\"logout.php?\"" . SID . "\">";
  15. echo "[Wyloguj]</A>";
  16. ?>
  17. <BR><B>Ściśle tajne dane.</B>
  18. </BODY>
  19. </HTML>


i ostatni plik : logout.php :

  1. <?php
  2. ?>
  3. <HTML>
  4. <HEAD>
  5. <TITLE>Wylogowanie</TITLE>
  6. </HEAD>
  7. <BODY>
  8. <?php
  9. echo "Użytkownik " . $_SESSION["login"];
  10. echo " został wylogowany.";
  11. ?>
  12. </BODY>
  13. </HTML>


Jak pisałem - te pliki same w sobie działają - człowiek się loguje i wyloguje kiedy chce ale... teraz :

Moja stronka główna (index.php) wykorzystuje includowanie niektórych plików - co też zrobiłem z plikiem login.php - w menu klikamy na link Login (<a href="index.php?page=login") i wtedy na stronie głównej pojawia się okienko logowania - tu jak na razie wszystko ok - wpisujemy login i hasło - klikamy zaloguj i... wywala mi te błędy sad.gif

Pliki trochę zmodyfikowałem aby pasowały do strony :

plik admin.php (odpowiednik pliku login.php :
  1. <?php
  2.  $login2 = "seth";
  3.  $pass2 = "passwd"; 
  4. if (isset($login) && isset($pass)){
  5. if ($login == $login2 && $pass == $pass2){
  6. session_register("login");
  7. header("Location: index.php?page=test" . SID); // aby przeszedł na stronkę z działem np moje programy
  8. exit();
  9. } else
  10. $error = "<B>Błędny login lub hasło!</B><BR>";
  11. } else
  12. $error = false;
  13. ?>
  14. <HTML>
  15. <HEAD>
  16. <TITLE>Logowanie</TITLE>
  17. </HEAD>
  18. <BODY>
  19. <?php
  20. echo $error ? $error : "";
  21. ?>
  22. <B>Podaj login i hasło</B>
  23. <br><?php echo "<br>Login : ".$login2."<br>Passwd : ".$pass2."<br><Br>";?> <- abym zapamiętał hasło
  24. <FORM method="POST" action="index.php?page=admin"> <--aby wrócił na stronę logowania w celu ponownego sprawdzenia (czyli na tą)
  25. Login: <INPUT type="text" name="login"><BR>
  26. Hasło: <INPUT type="password" name="pass"><BR>
  27. <INPUT type="submit" value="Zaloguj się">
  28. </FORM>
  29. </BODY>
  30. </HTML>
  31.  
  32. </center>


plik test.php (odpowiednik secret.php) :
  1. <?php
  2. if (!isset($_SESSION["login"])){
  3. header("Location: index.php?page=admin"); // jak nie zalogowany to stronki nie pokazuj i wróć na stronkę logowania
  4.  exit();
  5. }
  6. ?>
  7.  
  8. <?php
  9. echo "Witaj " . $_SESSION["login"];
  10. echo " <A href=\"logout.php?\"" . SID . "\">";
  11. echo "[Wyloguj]</A>";
  12. ?>
  13. <BR><B>Ściśle tajne dane.</B>


plik logout.php (ten został taki sam smile.gif )

  1. <?php
  2. ?>
  3.  
  4.  
  5. <?php
  6. echo "Użytkownik " . $_SESSION["login"];
  7. echo " został wylogowany.";
  8. ?>


I teraz pytanie czemu to nie działa ?

Jeżeli podam złe hasło lub login - wyświetla poprawnie że złe hasło lub zły login ale jak hasło i login są dobre... nie może się zainicjować session_start(); sadsmiley02.gif

Nie chce od nikogo litości tylko trochę pomocy - siedzę nad tym 2 dzień i naprawdę nie mam już pomysłów a problem pewnie jest banalny sad.gif

Podejrzewam że możliwe że to przez adresy - aby były bez zmiennych typu page=admin czy coś w tym stylu ale potrzebuję tego niestety więc wolałbym nie mieć racji że to właśnie to worriedsmiley.gif

Ktoś pomoże ? sadsmiley02.gif
Cysiaczek
Popraw proszę tytuł topiku na zgodny z zasadami forum Przedszkole

Było z 10000 razy.
Google:
http://www.google.pl/search?hl=pl&q=Ca...+Google&lr=

Pozdrawiam
Setesh
Poprawione smile.gif (chyba sad.gif )

AD. mojego postu... Wszystko fajnie ale porady z google mi nie pomagają - ani przepisanie pliku na nowo, ani żadne spacje itp rzeczy.
No sorki ale zawsze najpierw szukam w google bo na odpowiedź można czekać nawet tygodniami.
Nadal uważam że problem pewnie jest banalny ale sorki nie znam aż tak php mimo iż się uczę sad.gif

Jak na razie pozostało mi jeszcze jakieś 9800 topików bo z 200 to już przeczytałem wczoraj sad.gif
maziak
session_start() musi byc zawsze na SAMYM poczatku pliku, bez zadnych spacji itp., zanim COKOLWIEK zostanie przeslane do przegladarki. Zastosuj sie do tego a powinno ruszyc. Nie przygladalem sie co prawda zbyt doglebnie kodowi.
Setesh
dałem na samym początku pliku index.php i... wywala mi już tylko jeden błąd ale nie wiem dalej czemu sad.gif

Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\swebs\index.php:17) in c:\usr\krasnal\www\swebs\root\php\admin.php on line 8" title="Zobacz w manualu PHP" target="_manual

odnosi się do tego :

  1. <?php
  2. header("Location: index.php?page=test".SID);
  3. ?>
- tylko że ja potrzebuję ten link mieć z parametrem aby zaincludować inna stronkę (test.php sad.gif )
-Zenek-
Ja bym tak wywalił cały ten kod z odnośnikami - bez nich działa bez problemu ale jeżeli na serio potrzebujesz takie linki to może skopiuj plik z szablonem (o ile taki masz) i w pliku admin.php wstaw szablon - wtedy bedziesz miał bez problemu logowanie winksmiley.jpg
Setesh
Taa.... próbowałem różnych już zmian i nic nie idzie sad.gif został mi jeden błąd i za chiny nie mogę się go pozbyć normalnie jakby jakaś klątwa czy coś sad.gif
crafter
tam gdzie masz header() na początku skryptu daj ob_start(); a na końcu ob_flush()
Setesh
Pomogło ale od_start(); miałem wpisane a ob_flush(); nie - pewnie dlatego nie działało smile.gif

małe niedopatrzenie a jednak... smile.gif

BIG THX dla wszystkich za OGROMNĄ pomoc smile.gif
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.