Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Logowanie user lub admin
Forum PHP.pl > Forum > Przedszkole
SUICIDE
Witam otóż mam problem ze stworzeniem logowania dla admina i usera

Zacznę więc od budowy bazy danych
user_id, user_name, status

Następnie plik " Login.php "

  1. if(!$_SESSION['logged']) {
  2. // jeśli zostanie naciśnięty przycisk "Zaloguj"
  3. if(isset($_POST['name'])) {
  4. // filtrujemy dane...
  5. $_POST['name'] = clear($_POST['name']);
  6. $_POST['password'] = clear($_POST['password']);
  7. // i kodujemy hasło
  8. $_POST['password'] = codepass($_POST['password']);
  9.  
  10. // sprawdzamy prostym zapytaniem sql czy podane dane są prawidłowe
  11. $result = mysql_query("SELECT `user_id` FROM `users` WHERE `user_name` = '{$_POST['name']}' AND `user_password` = '{$_POST['password']}' LIMIT 1");
  12. if(mysql_num_rows($result) > 0) {
  13. $row = mysql_fetch_assoc($result);
  14. if ($row['status']!= "0"){
  15. // jeśli tak to ustawiamy sesje "logged" na true oraz do sesji "user_id" wstawiamy id usera
  16.  
  17. $_SESSION['logged'] = true;
  18. $_SESSION['user_id'] = $row['user_id'];
  19. $_SESSION['admin'] = true;
  20. echo '<p style="font-size:16px;text-decoration:none;color:white;">Zostałeś poprawnie zalogowany! Możesz teraz przejść na <a href="index.php" style="font-size:22px;text-decoration:none;color:red;">stronę główną</a>.</p>';
  21. }elseif ($row['status']== "0"){
  22. $_SESSION['logged'] = true;
  23. $_SESSION['user_id'] = $row ['user_id'];
  24. $_SESSION['admin'] = false;
  25. echo 'Zostałeś zalogowane jako user przejdź do strony głównej <a href="index.php">Tutaj</a>';
  26. }
  27. } else {
  28. echo '<p>Podany login i/lub hasło jest nieprawidłowe.</p>';
  29. }
  30. }


oraz plik " config.php "

  1. function db_connect() {
  2. mysql_connect(DBHOST, DBUSER, DBPASS) or die('<h2>ERROR</h2> MySQL Server is not responding');
  3. mysql_select_db(DBNAME) or die('<h2>ERROR</h2> Cannot connect to specified database');
  4. }
  5.  
  6. function db_close() {
  7. }
  8.  
  9. function clear($text) {
  10. // jeśli serwer automatycznie dodaje slashe to je usuwamy
  11. $text = stripslashes($text);
  12. }
  13. $text = trim($text); // usuwamy białe znaki na początku i na końcu
  14. $text = mysql_real_escape_string($text); // filtrujemy tekst aby zabezpieczyć się przed sql injection
  15. $text = htmlspecialchars($text); // dezaktywujemy kod html
  16. return $text;
  17. }
  18.  
  19. function codepass($password) {
  20. // kodujemy hasło (losowe znaki można zmienić lub całkowicie usunąć
  21. return sha1(md5($password).'#!%Rgd64');
  22. }
  23.  
  24. // funkcja na sprawdzanie czy user jest zalogowany, jeśli nie to wyświetlamy komunikat
  25. function check_login() {
  26. if(!$_SESSION['logged']) {
  27. die('<p>To jest strefa tylko dla użytkowników.</p>
  28. <p>[<a href="login.php">Logowanie</a>] [<a href="register.php">Zarejestruj się</a>]</p>');
  29. }
  30. }
  31.  
  32. function check_admin() {
  33. if(!$_SESSION['admin']) {
  34. die('<p>To jest strefa tylko dla użytkowników.</p>
  35. <p>[<a href="login.php">Logowanie</a>] [<a href="register.php">Zarejestruj się</a>]</p>');
  36. }
  37. }
  38.  
  39. // funkcja na pobranie danych usera
  40. function get_user_data($user_id = -1) {
  41. // jeśli nie podamy id usera to podstawiamy id aktualnie zalogowanego
  42. if($user_id == -1) {
  43. $user_id = $_SESSION['user_id'];
  44. }
  45. $result = mysql_query("SELECT * FROM `users` WHERE `user_id` = '{$user_id}' LIMIT 1");
  46. if(mysql_num_rows($result) == 0) {
  47. return false;
  48. }
  49. return mysql_fetch_assoc($result);
  50. }
  51.  
  52. // startujemy sesje
  53.  
  54. // jeśli nie ma jeszcze sesji "logged" i "user_id" to wypełniamy je domyślnymi danymi
  55. if(!isset($_SESSION['logged'])) {
  56. $_SESSION['logged'] = false;
  57. $_SESSION['user_id'] = -1;
  58. }


w pliku "index.php " w katalogu admina
includuje ten config oraz używam funkcji " check_admin() "
Oczywiście bez problemowo mogę się zalogować z dwóch kont. user1 ze statusem=1 oraz user2 ze statusem =0.

Już nawet po zapytaniu do bazy i pobraniu ['status'] robiłem ify.

Nie wiem albo jestem już przemęczony siedząc przy budowie całej strony i nie mogę tego opanować, albo brak dostarczającej wiedzy.


Prosiłbym więc o jakąś podpowiedź.
nospor
Nie ogarniam Twojego problemu....

if ($row['status']!= "0"){
Sprawdzasz jakies STATUS z zapytania, podczas gdy z zapytania pobierasz samo USER_ID...
"SELECT `user_id` FROM `users` ....
Ty myślisz ze STATUS w magiczny sposób samo się pobierze? Skoro chcesz sprawdzac status usera, to weź ty ten status równiez pobierz w zapytaniu...

"SELECT `user_id`, status FROM `users` ....
SUICIDE
Dlatego napisałem że jestem zmęczony przez cały dzień dziubania w php i mogę nie dostrzegać przyczyny tego że nie działa. Tym bardziej że z początku było to logowanie tylko i wyłącznie do jednego panelu. Do panelu zarządzania treścią itd.

Dziękuję za podpowiedź i pozdrawiam.
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.