Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] - Inicjacja sesji, Jestem początkujący
Ry4n350z
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 31.05.2011

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


Witam,

Od jakiegoś czasu piszę grę MMO via WWW. Pomyślałem, że będzie to świetny sposób na naukę języków PHP i MYSQL. Mam problem z zainicjowaniem sesji, tzn. nie wiem jak się zabrać za to.

Strona składa się ze strony index.php (gdzie użytkownik rejestruje konto i się loguje) i index2.php (strona po zalogowaniu). Po poprawnym zalogowaniu strona index2.php ma pobierać dane z bazy i wyświetlać je. Kod w index.php wygląda tak:

  1. if ($_POST['Login'] AND $_POST['Pass']) {
  2. $l = md5($_POST['Login']);
  3. $p = md5($_POST['Pass']);
  4. if(mysql_num_rows(mysql_query("SELECT * FROM users WHERE n = '$l' OR p = '$p'")) > 0) {
  5. session_start(); $_SESSION['n'] = $_POST['Login']; header("Location: index2.php"); return FALSE; };
  6. if(mysql_num_rows(mysql_query("SELECT * FROM users WHERE n = '$l' OR p = '$p'")) == 0) {
  7. echo('<div id="error">Niepoprawne dane!</div>'); return FALSE; };
  8. }


Jak widać, po spełnieniu warunku, następuje inicjacja sesji. Utworzona jest zmienna $_SESSION['n'], dzięki której zostaną później pobrane z bazy danych dane i przetworzone na stronie index2.php. Cały kod jest długi, więc wstawię kod związany z sesją:

  1. if(!isset($_SESSION['session'])) {
  2. mysql_query ( "SELECT id, n, exp, pn, msg FROM users WHERE n = '$_SESSION['n']' ); }


Niestety, w linijce 2 występuje błąd syntax. Jeśli by nie było błędu, dalej umieściłbym instrukcje przetwarzania danych (z użyciem funkcji list())

Jeśli mój zamysł jest dobry (w co szczerzę wątpię), to jak poprawić błąd? Jeśli macie lepsze pomysły na realizację sesji, to napiszcie propozycje. Dzięki z góry za wszelkie odpowiedzi.

Ten post edytował Ry4n350z 31.05.2011, 16:10:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Hpsi
post
Post #2





Grupa: Zarejestrowani
Postów: 483
Pomógł: 50
Dołączył: 15.03.2005
Skąd: Poznań

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


forum to nie parser (IMG:style_emoticons/default/smile.gif) koloego zapomnialeś zamknąć w 2 linijce cudzysłowia
  1. mysql_query ('SELECT id, n, exp, pn, msg FROM users WHERE n = "'.$_SESSION['n'].'"' ); }
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Zrób tak jak kolega wyżej podał lub tak:
  1. if(!isset($_SESSION['session'])) {
  2. mysql_query ( "SELECT id, n, exp, pn, msg FROM users WHERE n = '$_SESSION[n]' "); }
Wyjdzie na to samo.

PS. Co do pierwszego kawałka Twojego kodu to session_start wywaliłbym przed ten warunek, właściwie na sam początek pliku. Bo w przypadku gdy nie podano loginu i hasła (czyli już po zalogowaniu) sesja istnieć nie będzie.

Ten post edytował sadistic_son 31.05.2011, 16:28:32
Go to the top of the page
+Quote Post
Ry4n350z
post
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 31.05.2011

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


Hmm, kod działa, dzięki, ale nie rozumiem Twojego toku myślenia. Po pierwsze, czy jeśli przeniosę session_start na sam początek, to może to wpłynąć na bezpieczeństwo skryptu?
Poza tym, przecież z warunku wynika, (bez względu na to, czy login i hasło są poprawne) że gdy się nie poda albo loginu, albo hasła (lub i tego i tego), to nie zostaną wykonane dalsze instrukcje, więc nie nastąpi zainicjowanie sesji.

Ten post edytował Ry4n350z 31.05.2011, 18:16:44
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: 4.10.2025 - 08:17