Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Wieczne logowanie, Ciągłe problemy :(
-Wieviór-
post
Post #1





Goście







Jaki macie dobry sposób na logowanie z zaznaczeniem opcji "Zapamiętaj"? Czytałem wiele na ten temat, i na forum i wyszukując i żadna metoda nie była dla mnie dobra, bo zawsze te sesje znikają :/

Mam taki kod:

index.php:
  1. <?php
  2. setcookie('PHPSESSID',session_id(),time()+3600*24*30,'/');
  3. setcookie('loginek', $_SESSION['loginek'], strtotime('+365 days'));
  4. setcookie('layout', $_SESSION['layout'], strtotime('+365 days'));
  5. setcookie('uid', $_SESSION['uid'], strtotime('+365 days'));
  6. setcookie('roz', $_SESSION['roz'], strtotime('+365 days'));
  7. ?>


ten plik includuje plik layout.php, który z kolei includuje plik log_in.php, w którym jest coś takiego:
  1. <?
  2. if (!isset ($_SESSION['loginek']))
  3. {
  4. if (!isset ($_POST['logowanie']))
  5. {
  6. echo '<form method="POST" action="index.php"><input type="hidden" name="logowanie">
  7. <table cellspacing="2">
  8. <tr><td>Login:</td><td><input type="text" name="login"></td></tr>
  9. <tr><td>Hasło:</td><td><input type="password" name="haslo"></td></tr>
  10. <tr><td colspan="2" height="5"></td></tr>
  11. <tr><td colspan="2" align="center"><input type="submit" value="Zaloguj" name="Submit"></td></tr>
  12. </table>
  13. </form><a href="">Rejestracja</a>';
  14. } else {
  15. if (!empty ($_POST['login']) AND !empty ($_POST['haslo']))
  16. {
  17. $sql = "SELECT * FROM users WHERE level>=1 AND login = '".$_POST['login']."'";
  18. $wykonaj = mysql_query($sql);
  19. $bazalogin = mysql_fetch_array($wykonaj);
  20. if ($bazalogin['haslo'] == $_POST['haslo'] AND $bazalogin['level'] >= '1')
  21. {
  22. echo 'Zalogowano pomyślnie!';
  23. $_SESSION['loginek'] = $bazalogin['login'];
  24. $_SESSION['layout'] = $bazalogin['layout'];
  25. $_SESSION['uid'] = $bazalogin['id'];
  26. $_SESSION['roz'] = $bazalogin['roz'];
  27. ?><script>setTimeout('document.location = "index.php"', 0);</script><?
  28. } else {
  29. echo 'Podano nieprawiłowe dane!';
  30. ?><script>setTimeout('document.location = "index.php"', 1000);</script><?
  31. }
  32. }
  33. }
  34. } else {
  35. if (!isset ($_GET['userakcja']))
  36. {
  37. echo '<b>Witaj '.$_SESSION['loginek'].'</b><br>&nbsp;::&nbsp;<a href="index.php?userakcja=logout">Wyloguj</a><br>&nbsp;::&nbsp;<a href="">Panel użytkownika</a>';
  38. } elseif ($_GET['userakcja'] == 'logout') { // Wyloguj
  39. echo 'Zostałeś wylogowany.';
  40. ?><script>setTimeout('document.location = "index.php"', 300);</script><?
  41. }
  42. }
  43. ?>


Logowanie działa, wylogowywanie też, i wszystko pięknie... no tylko jak zrobić z tą opcją "zapamiętaj mnie"...?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cookies. Zauważ, że przy zamknięciu przeglądarki sesja znika, natomiast cookie (o ile ustawisz czas ważności) zostaje. Użyj więc cookies.
Go to the top of the page
+Quote Post
Hazel
post
Post #3





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


A to akurat prawda nie jest - sesja znika po 24 minutach przy standardowych ustawieniach.
Zamknięcie przeglądarki nie ma wpływu na sesje.
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Hmmm, a w przypadku przekazywania identyfikatora sesji GETem?
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #5





Goście







Cytat(phpion.com @ 8.09.2007, 10:38:23 ) *
Cookies. Zauważ, że przy zamknięciu przeglądarki sesja znika, natomiast cookie (o ile ustawisz czas ważności) zostaje. Użyj więc cookies.


Probowałem używać cookies, ale setcookie (); mogę przecież używać tylko na początku strony :/
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No i? Przebuduj logowanie tak, żeby działało jak należy (najpierw operacje, później wyświetlanie danych) a pozbędziesz się tego problemu.
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #7





Goście







Nie do końca rozumiem co masz na myśli. Panel logowania mam jakby na środku strony, więc przeniesienie go przed <head> nie wchodzi w grę.

Przepraszam, że zadaję takie może głupie pytania.
Go to the top of the page
+Quote Post
phpion
post
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Może ten przykład przybliży Ci moją koncepcję:
  1. <?php
  2. $akcja = $_REQUEST['akcja'];
  3.  
  4. switch ($akcja) {
  5. case 'logowanie':
  6. // kod odpowiedzialny za sprawdzenie logowania (w tym setcookie() jesli ok)
  7. $content = ($zalogowany) ? 'jestes zalogowany' : 'logowanie nieudane';
  8. break;
  9. case 'formularz_logowania':
  10. $content = '<form>...</form>';
  11. break;
  12. }
  13.  
  14. // dopiero teraz wysylamy kod strony
  15. ?>
  16. <html>
  17. <head>
  18. ...
  19. </head>
  20. <body>
  21. ...
  22. <?php echo $content; ?>
  23. ...
  24. </body>
  25. </html>
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #9





Goście







Ustawianie w ten sposób jest dobre, tylko panel logowania wciąż chcę zrobić niżej, to na pewno jakoś możliwe, właśnie myślę jak.

Dzięki, pokombinuję ;]

Teraz widzę

Ten post edytował Wieviór 8.09.2007, 12:20:21
Go to the top of the page
+Quote Post
phpion
post
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Pamiętaj, że do zmiennej $content możesz w każdej chwili dopisać cokolwiek poprzez operator .=
  1. <?php $content .= 'lalala';
  2. ?>

co spowoduje dopisanie tekstu 'lalala' na końcu zmiennej $content.
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #11





Goście







Wszystko jest pięknie, loguje się, cookie się ustawiają, tylko teraz jak wyłączę przeglądarkę i włączę znów, to owszem - sprawdzając w FireFoxie mam te wszystkie ciastka, tylko nie wiem jak się do nich odwołać z php, bo jak robię prostego:

  1. <?php
  2. if (isset ($_SESSION['login'])) { echo 'dobrze jest!'; }
  3. ?>


To niestety nic nie daje :/

Ten post edytował Wieviór 8.09.2007, 12:48:07
Go to the top of the page
+Quote Post
b_chmura
post
Post #12





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


na początku pliku wstaw ob_start(); od tej chwili do setcookie(); możesz odwołać się w każdym momencie pliku

EDIT:
Cytat(Wieviór @ 8.09.2007, 13:30:01 ) *
Wszystko jest pięknie, loguje się, cookie się ustawiają, tylko teraz jak wyłączę przeglądarkę i włączę znów, to owszem - sprawdzając w FireFoxie mam te wszystkie ciastka, tylko nie wiem jak się do nich odwołać z php, bo jak robię prostego:
  1. <?php if (isset ($_SESSION['login'])) { echo 'dobrze jest!'; }?>

To niestety nic nie daje :/



  1. <?php if (isset ($_COOKIE['login'])) { echo 'dobrze jest!'; }?>


Ten post edytował b_chmura 8.09.2007, 12:52:49
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #13





Goście







No tak! Ale jestem głupi!!!

Dzięki wszystkim za pomoc (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 23:51