![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 19.01.2008 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Otóż mam bardzo mało czasu na ukończenie pewnego projektu i nie mogę zrozumieć czemu tak się dzieje :
Przy logowaniu skrypt tworzy sesję: Kod if (!isset($_SESSION['inicjuj'])) { session_regenerate_id(); $_SESSION['inicjuj'] = true; $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; } if($_SESSION['ip'] !== $_SERVER['REMOTE_ADDR']) { die('Próba przejecia sesji udaremniona!'); } $_SESSION['login'] = $_POST['nick']; $ip = $_SESSION['ip']; } I wszystko jest ok. Ale na kolejnej podstronie jest sprawdzenie : Kod if (empty($_SESSION['login']) || empty($_SESSION['ip'])) { echo "<script language = 'javascript'>window.location.href = 'error.php?e=4'</script>"; } I tu przekierunkowuje na error.php. session_start(); jest na początku skryptu. Proszę o szybką odpowiedź co może to powodować i jak temu zaradzić. Dodałem nową podstronę i za pierwszym razem wszystko było ok. Sesja działała. Ale jak wyłączyłem przeglądarkę to już wyskakuje błąd, że nie ma sesji. Czy może po sesji nie zostają jakieś śmieci ? Ten post edytował MFIPETER 15.07.2008, 21:53:37 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 654 Pomógł: 17 Dołączył: 19.03.2006 Skąd: z kosmosu ;) Ostrzeżenie: (0%) ![]() ![]() |
Myślę że użyłeś innego operatora niż trzeba.
A być może powinno być:
Dziękuję, Babcia@Stefa -------------------- Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 19.01.2008 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie nie o to chodzi. Jesli komuś to pomoże to podaję cały skrypt :
Kod <?php require_once('includes/sessions.php'); require_once 'libs/Smarty.class.php'; require_once ('includes/config.php'); $smarty = new Smarty; $smarty-> compile_check = true; $db -> LogSQL(); /** * Logowanie do gry, ustawianie sesji */ if (isset ($_POST['pass']) && $title == 'Start') { // Sprawdzanie czy nick i hasło są wpisane if (!$_POST['nick'] || !$_POST['pass']) { $error = "Nie logowano się. Aby się zalogować wróć na stronę główną i wpisz dane do pola z nickiem oraz hasłem."; $smarty -> assign("error", $error); $smarty -> display("error.tpl"); exit; } $user = $_POST['nick']; $pass = MD5($_POST['pass']); $zapytanie = $db -> Execute("SELECT id, login FROM users WHERE login='".$user."' AND pass='".$pass."'"); $logres = $zapytanie -> RecordCount(); if ($logres <= 0) { $error = "Konto nie istnieje lub podane dane są nieprawidłowe. Jeżeli jesteś pewny, ze wpisujesz poprawne dane, to Twoje konto mogło zostać usunięte. Po więcej informacji napisz do administracji."; $smarty -> assign("error", $error); $smarty -> display("error.tpl"); exit; } $zapytanie -> Close(); $intCtime = time() - 180; $objQuery = $db -> Execute("SELECT count(*) FROM users WHERE rank!='Admin' AND rank!='Sztab' AND lpv>=".$intCtime); $numo = $objQuery -> fields['count(*)']; $objQuery -> Close(); $zapytanie = $db -> Execute("SELECT isactive FROM users WHERE login='".$user."'"); $logres = $zapytanie -> RecordCount(); // Sprawdzenie czy konto gracza jest aktywne if ($logres <= 0) { $error = "Twoje konto nie jest aktywne. Żeby móc się zalogować musisz aktywować konto za pomocą linku, który został do Ciebie wysłany mailem."; $smarty -> assign("error", $error); $smarty -> display("error.tpl"); exit; } $zapytanie -> Close(); // Sprawdzenie czy jest zalogowane więcej niż 500 graczy (nie dotyczy adminów, sztabu i oficerów) if ($numo >= 500 && $query -> fields['rank'] != 'Admin' && $query -> fields['rank'] != 'Sztab' && $query -> fields['rank'] != "Oficer") { $error = "Niestety ale z powodu limitu transferu w grze może przebywać maksymalnie 500 graczy."; $smarty -> assign("error", $error); $smarty -> display("error.tpl"); exit; } $_SESSION['nick'] = $_POST['nick']; $_SESSION['pass'] = $_POST['pass']; } /** * W razie końca sesji */ if (empty($_SESSION['nick']) || empty($_SESSION['pass'])) { $error = 'Niestety, ale prawdopodobnie zbyt długo byłeś nieaktywny na koncie i zostałeś automatycznie wylogowany. Może to być jednak błąd z naszej strony. Jeśli kilka razy próbujesz i nie możesz się zalogować ponieważ wyświetla się ten komunikat, napisz do administracji !'; $smarty -> assign("error", $error); $smarty -> display("error.tpl"); exit; } $pass = MD5($_SESSION['pass']); $stat = $db -> Execute("SELECT id FROM users WHERE login='".$_SESSION['nick']."' AND pass='".$pass."'"); // Konto gracza nie istnieje if (!$stat -> fields['id']) { $error = 'Twoje konto nie istnieje. Żeby móc się zalogować musisz się najpierw zarejestrować !'; $smarty -> assign("error", $error); $smarty -> display("error.tpl"); exit; } $ctime = time(); $ip = $_SERVER['REMOTE_ADDR']; $title = strip_tags($title); $db -> Execute("UPDATE users SET lpv=".$ctime.", ip='".$ip."', page='".$title."' WHERE id=".$stat -> fields['id']); ?> Jest includowany przez każdy plik, który jest po zalogowaniu. Ten post edytował MFIPETER 16.07.2008, 19:58:49 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 12:34 |