Witajcie, mam pewien problem z sejsami... Otóż wiedziony potrzebą, próbuję bezskutecznie napisać system logowania. Działa w połowie... czyli mówiąc krótko - nie działa. Ale bliżej...
Ten oto prosty kod sprawdzający poprawność funkcji zachowuje się troszkę... dziwnie.
index.php:
<?php
include("funct_session.php");
if(check_pass("jakis_login", "jakies_haslo")) {
sess_make("jakis_login", "jakies_haslo");
echo "Sesja utworzona.<br>"; }
if(sess_state
()) echo "Sesja aktywna.<br>"; elseif(!sess_state
()) echo "Brak sesji.<br>";
sess_destroy();
echo "Sesja usunięta.<br>";
?>
i plik z funkcjami,
funct_session.php:
<?php
function check_pass($login, $pass) {
include("database.cfg.php");
if($user['username']=="") return false;
else return $user['username'];
}
function sess_state() {
include("config.cfg.php");
if(isset($_SESSION['sess_id'])) { $user = mysql_fetch_array(mysql_query("SELECT sess_id, username FROM samgam_bestiariusz.session_users WHERE userna
me='".$_SESSION['username']."'", $session_state)); if($user['username']==$_SESSION['username']) return true;
else return false;
}
elseif(!isset($_SESSION['sess_id'])) return false; }
function sess_make($user, $pass) {
include("config.cfg.php");
$sess_id = md5($REMOTE_ADDR.$user.$pass.$time); $_SESSION['sess_id'] = $sess_id;
$_SESSION['username'] = $user;
if(mysql_num_rows(mysql_query("SELECT * FROM samgam_bestiariusz.session_users WHERE username='".$user."'", $session_make))!=0
) mysql_query("DELETE FROM samgam_bestiariusz.session_users WHERE username='".$user."'",$session_make) or
die(mysql_error()); mysql_query("INSERT INTO samgam_bestiariusz.session_users VALUES('".$sess_id."', '".$_SESSION['username']."', '".md5($password)."', '".$time."')", $session_make) or
die(mysql_error()); }
function sess_destroy() {
include("config.cfg.php");
if(mysql_num_rows(mysql_query("SELECT * FROM samgam_bestiariusz.session_users WHERE username='".$_SESSION['username']."'",$session_destroy))!=0
) mysql_query("DELETE FROM samgam_bestiariusz.session_users WHERE username='".$_SESSION['username']."'",$session_destroy) or
die(mysql_error()); }
?>
Sprawa wyglada tak, że skrypt działa w przypadku kiedy hasło jest Login i Hasło są rzeczywiście poprawne. Zaskakujące jest to, że gdy wpisze błędne hasło lub login, nie dzieje się... nic. Output jest czysty, biały, pusty. Nie wiem w czym leży problem. Próbowałem kilku rzeczy, od sprawdzenia poprawności zapytań MySQL po bardziej bezpośrednie moetody sprawdzania, ale wszystko zdaje się być Ok.
Za pomoc z góry dziękuję.
Pozdrawiam,
Gnomik
Ten post edytował Gnomik 12.08.2006, 08:36:23