Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]id po zalogowaniu z sesji
Forum PHP.pl > Forum > Przedszkole
avaster12
Witam dlaczego z tego skryptu nie mogę pobrać id zalogowanego użytkownika

  1. <?php
  2. function logowanie() {
  3. if (isset($_SESSION['zalogowany'])) {
  4. panel_user();
  5. } else {
  6.  
  7. if (isset($_POST['wyslij'])) {
  8.  
  9. if (mysql_num_rows(mysql_query("SELECT `user`,`haslo`,`id` FROM `user` WHERE `user` = '" . $_POST['login'] . "' && `haslo` = '" . $_POST['haslo'] . "' ")or die("Błąd zapytania mysql")) > 0) {
  10. if (mysql_num_rows(mysql_query("SELECT id FROM `user` WHERE user = '" . $_POST['login'] . "' && haslo = '" . $_POST['haslo'] . "' ")or die("Błąd zapytania mysql")) > 0) {
  11. $_SESSION['zalogowany'] = true;
  12. $_SESSION['login'] = $_POST['login'];
  13. $_SESSION['haslo'] = $_POST['haslo'];
  14. $_SESSION['id'] = $id_user_session;
  15. header("Location: index.php?act=strona_glowna");
  16.  
  17. } else {
  18.  
  19. echo "Złe hasło, proszę spróbować ponownie";
  20. }
  21. } else {
  22. echo "Nie ma takiego użytkownika";
  23. }
  24. } else {
  25. echo '
  26. Logowanie
  27. <form method="POST" action="?act=strona_glowna">
  28. <b>nazwa uzytkownika:</b> <input type="text" name="login"><br>
  29. <b>haslo:</b> <input type="password" name="haslo"><br>
  30. <input type="submit" value="Wyślij" name="wyslij">
  31. </form>';
  32. }
  33. }
  34. }
rad11
Bo przypisujesz sesje do zmiennej ale nigdzie nie przypisujesz id z bazy do zmiennej.
avaster12
a to w którym miejscy musiał bym dorobić zapytanie
rad11
  1. <?php
  2. function logowanie() {
  3. if (isset($_SESSION['zalogowany'])) {
  4. panel_user();
  5. } else {
  6.  
  7. if (isset($_POST['wyslij'])) {
  8.  
  9. if (mysql_num_rows(mysql_query("SELECT `user`,`haslo`,`id` FROM `user` WHERE `user` = '" . $_POST['login'] . "' && `haslo` = '" . $_POST['haslo'] . "' ")or die("Błąd zapytania mysql")) > 0) {
  10. if (mysql_num_rows(mysql_query("SELECT id FROM `user` WHERE user = '" . $_POST['login'] . "' && haslo = '" . $_POST['haslo'] . "' ")or die("Błąd zapytania mysql")) > 0) {
  11. $row= mysql_fetch_row(mysql_query"(SELECT id FROM `user` WHERE user = '" . $_POST['login'] . "' && haslo = '" . $_POST['haslo'] . "' ")) or die("Błąd zapytania mysql");
  12. $_SESSION['zalogowany'] = true;
  13. $_SESSION['login'] = $_POST['login'];
  14. $_SESSION['haslo'] = $_POST['haslo'];
  15. $_SESSION['id'] = $row[0];
  16. header("Location: index.php?act=strona_glowna");
  17.  
  18. } else {
  19.  
  20. echo "Złe hasło, proszę spróbować ponownie";
  21. }
  22. } else {
  23. echo "Nie ma takiego użytkownika";
  24. }
  25. } else {
  26. echo '
  27. Logowanie
  28. <form method="POST" action="?act=strona_glowna">
  29. <b>nazwa uzytkownika:</b> <input type="text" name="login"><br>
  30. <b>haslo:</b> <input type="password" name="haslo"><br>
  31. <input type="submit" value="Wyślij" name="wyslij">
  32. </form>';
  33. }
  34. }
  35. }
avaster12
A czy da się dodać sprawdzenie czy user to ma jakieś uprawnienia np admin moderator w zależności od liczby w bazie
0 = user
1 = moderator
2= admin
i czy user nie jest zbanowany
1 = tak
0 = nie
com
da się, dodaj odpowiednie pola w bazie, przy tworzeniu zapisuj odpowiednie dane a przy odczycie po prostu dodaj te pola do zapytania i nie pisz w zapytaniu && tylko and
Rysh
Nie warto informować użytkownika czy wpisał złe hasło lub login. Jeśli użytkownik coś wpisał źle krzycz mu błędne dane, jeśli chciałbym się włamać do czyjegoś konta najpierw muszę strzelić login, Twój skrypt mi powie sam przecież czy istnieje, a potem tylko odnaleźć hasło. Poza tym, nie wrzucaj do SESSION hasła! i Czyść POST'y przed użyciem w bazie danych!
com
Rysh Ciekawa uwaga, tylko kto tak łamie zabezpieczenia. Ale przed pseudo hakierem pewnie Cię to uchroni, w jakimś tam stopniu smile.gif
avaster12
  1.  
  2. function logowanie() {
  3. if (isset($_SESSION['zalogowany'])) {
  4. panel_user();
  5. } else {
  6.  
  7. if (isset($_POST['wyslij'])) {
  8.  
  9. if (mysql_num_rows(mysql_query("SELECT `user`,`haslo`,`id` FROM `user` WHERE `user` = '" . $_POST['login'] . "' && `haslo` = '" . md5($_POST['haslo']) . "' ")) > 0) {
  10. if (mysql_num_rows(mysql_query("SELECT id FROM `user` WHERE user = '" . $_POST['login'] . "' && haslo = '" . md5($_POST['haslo']) . "' ")) > 0) {
  11. $row = mysql_fetch_row(mysql_query("SELECT `id` `admin` FROM `user` WHERE user = '" . $_POST['login'] . "' && haslo = '" . md5($_POST['haslo']) . "' "));
  12. $row2 = mysql_fetch_row(mysql_query("SELECT `admin` FROM `user` WHERE user = '" . $_POST['login'] . "' && haslo = '" . md5($_POST['haslo']) . "' "));
  13. $_SESSION['zalogowany'] = true;
  14. $_SESSION['login'] = $_POST['login'];
  15. $_SESSION['id'] = $row[0];
  16. $_SESSION['admin'] = $row2[0];
  17.  
  18. header("Location: index.php?act=strona_glowna");
  19.  
  20. } else {
  21.  
  22. echo "Złe dane logowania";
  23. }
  24. }
  25. } else {
  26. echo '
  27. Logowanie
  28. <form method="POST" action="?act=strona_glowna">
  29. <b>nazwa uzytkownika:</b> <input type="text" name="login"><br>
  30. <b>haslo:</b> <input type="password" name="haslo"><br>
  31. <input type="submit" value="Wyślij" name="wyslij">
  32. </form>';
  33. }
  34. }
  35.  
  36.  


i i wyświetlanie uprawień admina
  1. if (!isset($_SESSION['admin']) == 0) {
  2. echo 'User';
  3. }
  4. if (!isset($_SESSION['admin']) == 1) {
  5. echo "Tut";
  6. }
  7. if (!isset($_SESSION['admin']) == 2) {
  8. echo "admin";
  9. }

tylko że nie zależy jaką wartość od 0 1 2 w bazie mam to wyświetlają się razem po zalogowaniu
com
bo nie tak te warunki i else miedzy nimi, czyli:
  1. if (!empty($_SESSION['admin']) && $_SESSION['admin']== 0)

i analogicznie reszta
avaster12
no nic się nie wyświetla po dodaniu {
}
com
a ustawiasz gdzieś to wgl $_SESSION['admin'] ?
avaster12
  1. <?php
  2. function logowanie() {
  3. if (isset($_SESSION['zalogowany'])) {
  4. panel_user();
  5. } else {
  6.  
  7. if (isset($_POST['wyslij'])) {
  8.  
  9. if (mysql_num_rows(mysql_query("SELECT `user`,`haslo`,`id` FROM `user` WHERE `user` = '" . $_POST['login'] . "' && `haslo` = '" . md5($_POST['haslo']) . "' ")) > 0) {
  10. if (mysql_num_rows(mysql_query("SELECT id FROM `user` WHERE user = '" . $_POST['login'] . "' && haslo = '" . md5($_POST['haslo']) . "' ")) > 0) {
  11. $row = mysql_fetch_row(mysql_query("SELECT `id` `admin` FROM `user` WHERE user = '" . $_POST['login'] . "' && haslo = '" . md5($_POST['haslo']) . "' "));
  12. $row2 = mysql_fetch_row(mysql_query("SELECT `admin` FROM `user` WHERE user = '" . $_POST['login'] . "' && haslo = '" . md5($_POST['haslo']) . "' "));
  13. $_SESSION['zalogowany'] = true;
  14. $_SESSION['login'] = $_POST['login'];
  15. $_SESSION['id'] = $row[0];
  16. $_SESSION['admin'] = $row2[0];
  17.  
  18. header("Location: index.php?act=strona_glowna");
  19.  
  20. } else {
  21.  
  22. echo "Złe dane logowania";
  23. }
  24. }
  25. } else {
  26. echo '
  27. Logowanie
  28. <form method="POST" action="?act=strona_glowna">
  29. <b>nazwa uzytkownika:</b> <input type="text" name="login"><br>
  30. <b>haslo:</b> <input type="password" name="haslo"><br>
  31. <input type="submit" value="Wyślij" name="wyslij">
  32. </form>';
  33. }
  34. }
  35. }
  36.  
  37.  
com
chodziło mi żebyś sprawdził co jest w $_SESSION['admin'] wink.gif

np var_dump
avaster12
string(1) "0"

0 mam dodane w bazie jak zmienne to tu się wyświetli

Ok dałem rade coś mi się zacięło wcześniej albo nie zapisałem mój błąd
Rysh
Patrz jak można uprościć kod.
  1. $sql = mysql_query('SELECT id, admin, login FROM user WHERE user="'. $_POST['login'] .'" AND haslo="'. md5($_POST['haslo']) .'" LIMIT 1');
  2. if(mysql_num_rows($sql) == 1) {
  3. $_SESSION = mysql_fetch_assoc($sql);
  4. header("Location: index.php?act=strona_glowna");
  5. } else {
  6. echo 'Błędne dane.';
  7. }

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.