Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z sesjami
xsalok
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 18.01.2016

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


Witam!

Próbuję włączyć sesje do mojego skryptu logowania i jako że jestem początkujący napotkałem na pewien problem. Otóż po udanym logowaniu i zapisaniu do zmiennej
  1. $_SESSION['login']
loginu wpisanego przez użytkownika, na stronie do której przekierowuje chcę zrobić proste potwierdzenie logowania z napisem 'Witaj $_SESSION['login'] !'. Jednak php zwraca mi informację :Undefined variable: _SESSION in C:\xampp\htdocs\php_new\zalogowany.php on line 4, tj że zmienna nie została zdefiniowana.

Części listigów plików:
1. funkcja odpowiedzialna za logowanie z klasy User
  1. function log_in(){
  2.  
  3. if ($this->db->connect()){
  4. $sql = "SELECT * FROM `users` WHERE `login` = '".mysql_real_escape_string($this->login)."' AND `password` = '".mysql_real_escape_string(md5($this->password))."' ";
  5. if(mysql_num_rows($this->db->select($sql))==1){
  6.  
  7.  
  8. $_SESSION['login']=$this->login;
  9. $_SESSION['zalogowany']=true;
  10. header("Location: zalogowany.php");
  11.  
  12. }
  13. else{
  14. echo'Niepoprawne dane logowania';
  15. }
  16.  
  17. }
  18. }


2. strona do wyświetlenia po zalogowaniu się
  1. <?php
  2.  
  3. echo'Logowanie zakończone sukcesem';
  4. echo ' Witaj ' .$_SESSION['login']. '!';
  5. echo '<button><a href="index.html">start</a></button>';
  6. ?>


Sesje otwieram w pliku z formularzem, który działa poprawnie. Wiem że używam kilku przestarzałych metod ale dopiero rozpoczynam swoją zabawę z PHP

Ten post edytował xsalok 23.01.2016, 12:54:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
miki22
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 2
Dołączył: 2.03.2012

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


Chodzi mi o to że jak ktoś niezalogowany będzie przeglądał tę stronę to bezsensu serwer będzie zakładał sesję.
Zrobiłbym tak:
  1. if (isset($_COOKIE['PHPSESSID']))
  2. {
  3.  
  4. if ($_SESSION['zalogowany'] === true)
  5. {
  6. echo'Logowanie zakończone sukcesem';
  7. echo ' Witaj ' .$_SESSION['login']. '!';
  8. echo '<button><a href="index.html">start</a></button>';
  9. ..... // dalej jakieś inne operacje
  10. exit();
  11. }
  12. }
  13. echo 'Nie jesteś zalogowany';
  14. echo '<button><a href="logowanie.html">Zaloguj się</a></button>';
  15.  



Cytat(viking @ 23.01.2016, 14:02:14 ) *
Session_start() tworzy albo wznawia istniejącą sesję więc nie ma sensu zbytniego sprawdzanie konkretnego identyfikatora. Będziesz chciał zmienić id sesji, trzeba będzie wszędzie poprawiać kod.

Jest sens. Jeśli witryna ma 300 stron i na każdej mogą (ale nie muszą!) być wykorzystywane dane z $_SESSION to bezsensu inicjować zawsze sesje.
Na witrynę wchodzi 1000 userów z czego tylko 2 dokonuje logowania. Gdyby nie ifować session_start() biedny serwer by zakładał 1000 sesji i trzymał je (domyślnie 30min.) a tak załozy tylko 2.
Cytat(viking @ 23.01.2016, 14:02:14 ) *
Będziesz chciał zmienić id sesji, trzeba będzie wszędzie poprawiać kod.

Zmiana id sesji nie ma znaczenia - ten if pyta się tylko czy jest PHPSESSID a nie jakie ma id.


EDIT: Mała poprawka kodu php bo wcześniej napisałem bzdury (IMG:style_emoticons/default/haha.gif)

Ten post edytował miki22 23.01.2016, 17:23:21
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 08:06