Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Dodanie $_SESSION do logowania
saren_as
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 21.07.2008

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


Mam cos takiego:
  1. <html>
  2. <head>
  3. <title>Login</title>
  4. </head>
  5.  
  6. <?php
  7. $hidden_hash_var='saren';
  8. // polaczenie z baza danych
  9. include('connect.php');
  10.  
  11. @$user_name = $_POST['user_name'];
  12. @$password = $_POST['password'];
  13.  
  14. // wywolanie funkcji logowania
  15. user_login($user_name,$password);
  16.  
  17. // funkcja sprawdzajaca poprawnosc logowania
  18. function user_login($user_name,$password) {
  19.    global $feedback;
  20.    if (!$user_name || !$password) {
  21.        $feedback .=  ' ERROR - Missing user name or password ';
  22.        return false;
  23.    } else {
  24.        $user_name=strtolower($user_name);
  25.        $password=strtolower($password);
  26.        $sql="SELECT * FROM user WHERE user_name='$user_name' AND password='". md5($password) ."'";
  27.        $result=mysql_query($sql);
  28.        if (!$result || mysql_numrows($result) < 1){
  29.            $feedback .=  ' ERROR - User not found or password incorrect ';
  30.            return false;
  31.        } else {
  32.            if (mysql_result($result,0,'is_confirmed') == '1') {                
  33.                user_set_tokens($user_name);
  34.                $feedback .=  ' SUCCESS - You Are Now Logged In ';
  35.                return true;
  36.            } else {
  37.                $feedback .=  ' ERROR - You haven't Confirmed Your Account Yet ';
  38.                return false;
  39.            }
  40.        }
  41.    }
  42. }
  43.  
  44.  
  45. // funkciaj ustawiajaca cookies
  46. function user_set_tokens($user_name) {
  47.    global $hidden_hash_var,$user_name,$id_hash;
  48.    if (!$user_name) {
  49.        $feedback .=  ' ERROR - User Name Missing When Setting Tokens ';
  50.        return false;
  51.    }
  52.    $user_name=strtolower($user_name);
  53.    $id_hash= md5($user_name.$hidden_hash_var);
  54.  
  55.    setcookie('user_name',$user_name,(time()+2592000),'/','',0);
  56.    setcookie('id_hash',$id_hash,(time()+2592000),'/','',0);
  57. }
  58.  
  59. //wyswietlenie komunikatu
  60. echo $feedback. "<br>";
  61. echo $_COOKIE['user_name'];
  62. echo "<br >";
  63. echo $_COOKIE['id_hash'];
  64. ?>
  65.  
  66. <!-- Logowanie -->
  67. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  68. Imie: <input type="text" name="user_name" />
  69. Haslo: <input type="password" name="password" />
  70. <input type="submit" value="Zaloguj sie" />
  71. <br>
  72.  
  73. </body>
  74. </html>


Poprzerabialem to na swoje potrzeby i wszystko dziala. Chcialem sie tylko dowiedziec jak teraz do tego dodac sesje z wykorzystaniem cookies? Ta funkcja tworzaca cookies dziala ok, ale nie wiem za bardzo jak to teraz wszystko do tego dodac. Jestem jeszcze za glupi na samodzielne analize wiec prosze o krotkie nakierowanie jak zrobic teraz, abym po zalogowaniu zostal przeniesiony na tajna.html? W sumie juz duzo o tym czytalem, ale jakos mimo to stoje w miejscu.

Ten post edytował saren_as 27.11.2008, 12:05:09
Go to the top of the page
+Quote Post
sticker
post
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


po poprawnym zalogowaniu daj redirect na inną stronę albo po prostu zrob
  1. <?php
  2. include
  3. ?>
strony która ma być wyświetlona

btw. pisanie bez żadnego frameworka to raczej zły pomysł
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Zacznij od wywalenia wszystkich cookie i poczytanie...
http://php.net/session_start

jak napiszesz
Kod
session_start();

TO teraz mozesz przechowywać dane w $_SESSION i tyle teori...
Go to the top of the page
+Quote Post
saren_as
post
Post #4





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 21.07.2008

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


Cytat(sticker @ 27.11.2008, 12:10:25 ) *
po poprawnym zalogowaniu daj redirect na inną stronę albo po prostu zrob
  1. <?php
  2. include
  3. ?>
strony która ma być wyświetlona

btw. pisanie bez żadnego frameworka to raczej zły pomysł



Oki jezeli uzytkownik sie zalogowal popranie, dam mu redirect na tajna.php. Teraz na tej tajnej stronie mam dac cos takiego?:
  1. <?php
  2.  
  3. if (!isset($_SESSION)) {
  4. echo "<meta http-equiv=\"refresh\" content=\"0; url=index.php\">";
  5. } else {
  6. wlasciwa strona po zalogowaniu
  7. }
  8. ?>


I to jest cala filozofia sesji? Nie bardzo to rozumiem jak one zabezpieczaja...?

A co do frameworka to jeszcze nie za duzo o nich wiem, wiec narazie ucze sie ogolnie cos pisac w php. Czy powinienem jak najszybciej zaczac uzywac?

Pozdrawiam!
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie. Wstaw jakąś zmienną identyfikującą, czy jest użyszkodnik zalogowany, czy nie. Na tajnej stronie sprawdzaj, czy została ona ustawiona.

Cytat
A co do frameworka to jeszcze nie za duzo o nich wiem, wiec narazie ucze sie ogolnie cos pisac w php. Czy powinienem jak najszybciej zaczac uzywac?

Naucz się dobrze pisać w "czystym" PHP, potem się przerzuć na frameworki. IMHO.
Go to the top of the page
+Quote Post
saren_as
post
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 21.07.2008

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


Cytat(erix @ 27.11.2008, 12:38:14 ) *
Nie. Wstaw jakąś zmienną identyfikującą, czy jest użyszkodnik zalogowany, czy nie. Na tajnej stronie sprawdzaj, czy została ona ustawiona.


Czy linia 34 nie jest za to odpowiedzialna? Tzn funkcja, ktora tam jest wstawiona wykonuje sie jezeli uzytkownik podal poprawne haslo i uzytkownika. Sama funkcja tworzy dwie zmienne $_COOKIE...moge je wykorzystac jako te informacje czy uzytkownik jest zalogowany czy nie?
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No możesz, ale skorzystaj z sesji... Nie dość, że wygodniejsze, to nie musisz się martwić o problem ciasteczek. Poza tym, wysyłanie wielu słodyczy szkodzi transmisji, bo przeglądarka musi wysyłać za każdym razem oba. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Poczytaj o sesjach i logowaniu, już trzeci wątek, a można odsyłać setki razy: Temat: PHPMYSQLLogowanie_i_Rejestracja_problem
Go to the top of the page
+Quote Post
saren_as
post
Post #8





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 21.07.2008

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


Szczerze to czytalem juz o sesjach i logowaniu setki razy, ale jakos mimo to, duzo rzeczy mnie jeszcze zastanawia i dla tego zwracam sie z bezposrednia prosba o pomoc do Was. Jakos to wszystko wydaje mi sie za latwe, albo za duzo poprostu nie rozumiem.
Ok! W pliku login.php mam takie cos oczywiscie tworze to, gdy uzytkownik zalogowal sie poprawnie:
  1. <?php
  2. $_SESSION['user_name'] = $user_name;
  3. $_SESSION['id_hash'] = $id_hash;
  4. ?>


W pliku tajna.php sprawdzam to tak:
  1. <?php
  2. if (isset($_SESSION['user_name']) and isset($_SESSION['id_hash'])) {
  3. echo "Jestes zalogowany. ";
  4. } else {
  5. echo "Nie jestes zalogowany";
  6. }
  7. ?>


No i jak to teraz jest? No bo niby jetem zalogowany, ale jak bezposrednio wpisuje w przegladarke adres tajna.php tez mi wyskakuje "Jestes zalogowany" No i wlasnie to mnie boli. Jak to z tym jest?
Pozdrawiam i dzieki za dotychczasowa pomoc!

Ten post edytował saren_as 27.11.2008, 16:00:27
Go to the top of the page
+Quote Post
nitek
post
Post #9





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

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


zależy jak wpisujesz w przeglądarkę? jeśli raz się zalogujesz, to sesja jest zazwyczaj trzymana, zanim nie zamkniesz okna przeglądarki. Do tej pory jesteś nadal 'zalogowany'.

Zawsze możesz zrobić tak, że jeśli ktoś poprawnie się zaloguje, to ustawiasz zmienną $_SESSION['poprawne_logowanie']=1, w każdym innym wypadku na 0. Potem sprawdzasz tylko na innych stronach, czy ta zmienna jest równa 1, a nie, czy istnieje.
Go to the top of the page
+Quote Post
saren_as
post
Post #10





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 21.07.2008

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


Cytat(nitek @ 27.11.2008, 16:05:58 ) *
zależy jak wpisujesz w przeglądarkę? jeśli raz się zalogujesz, to sesja jest zazwyczaj trzymana, zanim nie zamkniesz okna przeglądarki. Do tej pory jesteś nadal 'zalogowany'.

W przegladarke wpisuje bezposrednio localhost/tajna.php no i wyskakuje mi ze jestem zalogowany. Wylaczalem juz cala przegladarke i po ponownym odpaleniu mialem to samo. Co to znaczy, ze zazwyczaj sa trzymane do zamkniecia przegladarki?
Stworzylem teraz plik logout.php no i jest chyba ok bo jak sie zaloguje, a nastepnie wyloguje to juz po wpisaniu w przegladarke tajna.php wyskakuje ze nie jestem zalogowany.

Cytat(nitek @ 27.11.2008, 16:05:58 ) *
Zawsze możesz zrobić tak, że jeśli ktoś poprawnie się zaloguje, to ustawiasz zmienną $_SESSION['poprawne_logowanie']=1, w każdym innym wypadku na 0. Potem sprawdzasz tylko na innych stronach, czy ta zmienna jest równa 1, a nie, czy istnieje.

Popatrze tak jak mowisz, bo wydaje mi sie ze bedzie to lepsze rozwiazanie.

Dzieki za pomoc i zobaczymy co z tego wyjdzie!

Ten post edytował saren_as 27.11.2008, 16:33:14
Go to the top of the page
+Quote Post
ArekJ
post
Post #11





Grupa: Zarejestrowani
Postów: 266
Pomógł: 9
Dołączył: 21.05.2008
Skąd: Łomianki

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


Zrób sobie proste wylogowanie za pomocą session_destroy" title="Zobacz w manualu PHP" target="_manual i skorzystaj z niego. Potem zobacz ten plik z tajną zawartością...
Go to the top of the page
+Quote Post
saren_as
post
Post #12





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 21.07.2008

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


Cytat(ArekJ @ 27.11.2008, 16:34:55 ) *
Zrób sobie proste wylogowanie za pomocą session_destroy" title="Zobacz w manualu PHP" target="_manual i skorzystaj z niego. Potem zobacz ten plik z tajną zawartością...

Tak tez wlasnie uczynilem kilka minut przed Twoja wypowiedzia i jest ok! Mimo to dzieki za podpowiedz;)
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:10