Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] - Inicjacja sesji
Forum PHP.pl > Forum > Przedszkole
Ry4n350z
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.
Hpsi
forum to nie parser 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'].'"' ); }
sadistic_son
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.
Ry4n350z
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.
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.