Od dluzszego czasu pisalem skrypty w php oparte na plikach, dzialaly dobrze i sie sprawdzaly. Teraz jednak chce liznac bazy danych np: mysql. Napisalem jakis czas temu logowanie i chcialbym teraz je przerobic na mysql. Stworzylem baze i tabele w mysqlu i teraz pisze pod nia skrypt. Niedziala. Tzn. logowanie dziala niby, ale po tym jak sie zaloguje jakbym gubil sesje, albo raczej polaczenie z baza, czy... cos tam innego sie psuje. W kazdym razie logowanie przebiega poprawnie, ale po zalogowaniu czego bym nie zrozobil zwraca mi ze jestem niezalogowany i koniec. Moze trzeba zapisywac w bazie stan? Na plikach dzialalo mi w takiej postaci, na mysqlu juz nie.
Oto skrypt (miedzy /**/ umiescilem tez kod ktory pobiera dane z pliku i uzywajac tej weryfikacji zamiast bazy skrypt bedzie dzialal poprawnie.)
<?php
$zalogowany = \"false\";
if(isset($_POST['login'])) $login = $_POST['login']; else $login = @$_SESSION['login'];
if(isset($_POST['pass'])) $pass = $_POST['pass']; else $pass = @$_SESSION['pass'];
$db_info['host'] = \"localhost\";
$db_info['user'] = \"xxx\";
$db_info['pass'] = \"xxx\";
$db_info['db'] = \"xxx\";
if(!$db_connection) $db_status = false;
if(!$db_select) $db_status = false;
if((isset($_POST['login']))&
;&
;(isset($_POST['pass']))){ if(!isset($db_status) || $db_status !== false){ $query = mysql_query(\"SELECT * FROM `user` WHERE `login`='\".$login.\"' AND `pass`='\".$pass.\"';\"); $zalogowany = \"true\";
$_SESSION['login'] = $login;
$_SESSION['pass'] = $pass;
$_SESSION['name'] = $wiersz['name'];
$_SESSION['email'] = $wiersz['email'];
$user_logged = $wiersz['level'];
}
}
}
/*
// wczytujemy liste userow z pliku oraz dokonujemy weryfikacji
if(file_exists('users.dat')){
$users_file = file('users.dat');
$users_amount = count($users_file);
// haszujemy haslo
$passmd5 = md5($pass);
while(list($key, $val) = each($users_file)){
$user_line = explode('||', trim($val));
if(($user_line[1] == $login)&&($user_line[2] == $passmd5)){
$zalogowany = \"true\";
$_SESSION['login'] = $login;
$_SESSION['pass'] = $pass;
$user_logged = $user_line;
}
}
}
*/
// jesli sie niezalogowal
if($zalogowany == \"false\"){
echo '<dl><dt>Logowanie</dt><dt>•<a href=\"index.php?id=1\">Zaloguj</a></dt></dl>'; $text = '';
if(isset($_GET['id']) == \"1\"){ // form logowania
echo'<div >Zaloguj się.</div><div ><form action=\"index.php\" method=\"post\"><div>&nbsp;</div><div >Login:<br /> <input class=\"pola_input\" type=\"password\" name=\"login\" value=\"\" /></div><div >Hasło:<br /> <input class=\"pola_input\" type=\"password\" name=\"pass\" value=\"\" /><br /><input type=\"submit\" value=\"Zaloguj\" /></div></form></div>'; }
}
// jesli sie zalogowal to
if($zalogowany == \"true\"){
//opcja wylogowania
echo '<dl><dt><span>Wylogowanie</span></dt><dt><span>•</span> <a href=\"index.php?id=logout>Wyloguj</a></dt><dt>&nbsp;</dt>'; if(@$_GET['id'] == 'logout'){
echo 'Wylogowano użytkownika. W celu ponownego zalogowania kliknij <a href=\"index.php?id=1\" title=\"przelogowanie\">tutaj</a>'; }
// ustanawiamy poziom dostepu
if($user_logged == '1') $status = 'update';
else if($user_logged == '2') $status = 'moderatorek';
else if($user_logged == '3') $status = 'adminek';
else{
echo 'Zostałeś/łaś wylogowany/a! W celu próby ponownego zalogowania się kliknij <a href=\"adm.php?id=1\" title=\"Zaloguj się\">tutaj</a>.'; }
if($status == 'update'){
echo '<dt><span>Podstawowe</span></dt><dt><span>•</span> <a href=\"'. $_SERVER[\"PHP_SELF\"] .'?id=1\">Dzial</a></dt>'; if(@$_GET['id'] == \"1\"){
}
}
// itd...
}
?>
Moze widzicie co robie zle. Z gory dzieki.
__________________
Moderated by Bakus: Wykorzystuj właściwe znaczniki BBCode