Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Ban usera
Damalin
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2016

Ostrzeżenie: (0%)
-----


Witam, czy może mi ktoś sprawdzić dlaczego ten skrypt na sprawdzanie czy osoba jest zbanowana nie działa jak należy ? w bazie mam ban ustawiony na 0, a gdy jest 1 nie powinno zalogować użytkownika, a przenieść na podstrone ban.php. Oto kod:
  1. <?php
  2.  
  3. if($_SESSION['ban']= 1)
  4. {
  5. header('Location: ban.php');
  6. }
  7.  
  8. if((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
  9. {
  10. header('Location: index.php');
  11. exit();
  12. }
  13.  
  14.  
  15.  
  16. require_once "dane.php"; //Łączenie z bazą danych
  17.  
  18. $laczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  19.  
  20.  
  21. if ($laczenie->connect_errno!=0)
  22. {
  23. echo "Błąd: ".$laczenie->connect_errno;
  24. }
  25. else
  26. {
  27. $login = $_POST['login'];
  28. $haslo = $_POST['haslo'];
  29.  
  30. $login = htmlentities($login, ENT_QUOTES, "UTF-8");
  31.  
  32.  
  33. /* sprawdzanie poprawności loginu i hasła wraz z weryfikacją */
  34. if ($rezultat = @$laczenie->query(
  35. sprintf("SELECT * FROM users WHERE login='%s' AND weryfikacja='1'",
  36. mysqli_real_escape_string($laczenie,$login))))
  37. {
  38.  
  39.  
  40. $ile_wynikow = $rezultat->num_rows;
  41. if($ile_wynikow>0)
  42. {
  43. $wiersz = $rezultat->fetch_assoc();
  44.  
  45.  
  46.  
  47. if(password_verify($haslo,$wiersz['haslo']))
  48. {
  49.  
  50. $_SESSION['zalogowany'] = true;
  51. $_SESSION['login'] = $wiersz['login'];
  52. $_SESSION['id'] = $wiersz['id'];
  53. $_SESSION['email'] = $wiersz['email'];
  54. $_SESSION['ranga'] = $wiersz['typ_konta'];
  55. $_SESSION['ban'] = $wiersz['ban'];
  56.  
  57.  
  58. unset($_SESSION['blad']);
  59. $rezultat->free();
  60. $_SESSION['zalogowany'] = '<span style="color:green">Udało Ci się zalogować poprawnie !</span>';
  61. $laczenie->query("UPDATE users SET online=1 WHERE login='$login'");
  62. header('Location: index.php');
  63. }
  64. else
  65. {
  66. $_SESSION['blad'] = '<span style="color:red">Nieprawidłowe dane lub Twoje konto jeszcze nie zostało zweryfikowane !</span>';
  67. header('Location: index.php');
  68. }
  69.  
  70. } else {
  71. $_SESSION['blad'] = '<span style="color:red">Nieprawidłowe dane lub Twoje konto jeszcze nie zostało zweryfikowane !</span>';
  72. header('Location: index.php');
  73. }
  74. }
  75. /*Sprawdzanie czy nie jesteś adminem*/
  76.  
  77. if ($rezultat = @$laczenie->query(
  78. sprintf("SELECT * FROM users WHERE login='%s' AND typ_konta='3'",
  79. mysqli_real_escape_string($laczenie,$login))))
  80. {
  81. $ile_wynikow = $rezultat->num_rows;
  82. if($ile_wynikow>0)
  83. {
  84. $wiersz = $rezultat->fetch_assoc();
  85.  
  86. if(password_verify($haslo,$wiersz['haslo']))
  87. {
  88.  
  89.  
  90. $_SESSION['zalogowany'] = true;
  91.  
  92. unset($_SESSION['blad']);
  93. $rezultat->free();
  94. header('Location: admin/index.php');
  95. }
  96. }
  97.  
  98.  
  99.  
  100. $laczenie->close();
  101. }
  102. }
  103.  
  104. ?>
Go to the top of the page
+Quote Post
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


W którym miejscu przekierowujesz na ban.php?
Jaki tam jest warunek?
Go to the top of the page
+Quote Post
Damalin
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2016

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 27.11.2016, 14:26:56 ) *
W którym miejscu przekierowujesz na ban.php?
Jaki tam jest warunek?


  1. if($_SESSION['ban']= 1)
  2. {
  3. header('Location: ban.php');
  4. }
Go to the top of the page
+Quote Post
Spawnm
post
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Daj exit; po header
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Cytat(Damalin @ 27.11.2016, 14:28:07 ) *
  1. if($_SESSION['ban']= 1)
  2. {
  3. header('Location: ban.php');
  4. }

Ja to widzę, Ty chyba błędu nie znalazłeś.
Go to the top of the page
+Quote Post
Damalin
post
Post #6





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2016

Ostrzeżenie: (0%)
-----


Cytat(Spawnm @ 27.11.2016, 14:30:45 ) *
Daj exit; po header

Zrobiłem tak, przenosi mnie do ban.php tylko niezależnie od tego czy ta osoba jest zbanowana czy nie

Cytat(trueblue @ 27.11.2016, 14:37:38 ) *
Ja to widzę, Ty chyba błędu nie znalazłeś.

Niestety nie widzę, dopiero zaczynam swoją przygodę z PHP
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


if($_SESSION['ban']=== 1)
Go to the top of the page
+Quote Post
Damalin
post
Post #8





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2016

Ostrzeżenie: (0%)
-----


Cytat(viking @ 27.11.2016, 14:51:47 ) *
if($_SESSION['ban']=== 1)

Niestety to też nie pomogło , teraz nikogo nie banuje

Ten post edytował Damalin 27.11.2016, 15:08:37
Go to the top of the page
+Quote Post
viking
post
Post #9





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A co zawiera $wiersz['ban']?
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@viking jesli cos to ban zawiera '1' a nie 1 wiec
nie === 1
a == 1
Go to the top of the page
+Quote Post
Damalin
post
Post #11





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2016

Ostrzeżenie: (0%)
-----


Cytat(viking @ 27.11.2016, 15:35:31 ) *
A co zawiera $wiersz['ban']?

wartość 1 lub 0 z bazy 0 = brak bana, 1 = ban

Cytat(nospor @ 27.11.2016, 15:45:00 ) *
@viking jesli cos to ban zawiera '1' a nie 1 wiec
nie === 1
a == 1

== czy === to ten sam efekt = brak bana
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


@nospor. Miał to sprawdzić sam (IMG:style_emoticons/default/smile.gif)
Więc zrób var_dump($wiersz); i sprawdź co tam faktycznie jest.

Ten post edytował viking 27.11.2016, 15:49:05
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




NIech on tez sprawdzi co ma w sesji i czy w ogole cos ma (IMG:style_emoticons/default/wink.gif)
Generalnie rozwizanie problemu to wpierw poprawna diagnoza czyli jeden wielki var_dump() na wszystkim co sie da.
Go to the top of the page
+Quote Post
Damalin
post
Post #14





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2016

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 27.11.2016, 16:05:07 ) *
NIech on tez sprawdzi co ma w sesji i czy w ogole cos ma (IMG:style_emoticons/default/wink.gif)
Generalnie rozwizanie problemu to wpierw poprawna diagnoza czyli jeden wielki var_dump() na wszystkim co sie da.


coś takiego mi wyświetliło

array(13) { ["id"]=> string(1) "1" ["login"]=> string(5) "dawid" ["haslo"]=> string(60) "$2y$10$p0l.dqmOp5I7r8IAF.ej4u1hKGodYE2U2QtzcMR913Muw/1M7.cYG" ["email"]=> string(5) "dawid" ["imie"]=> string(5) "dawid" ["nazwisko"]=> string(5) "dawid" ["typ_konta"]=> string(1) "1" ["weryfikacja"]=> string(1) "1" ["ban"]=> string(1) "0" ["czas"]=> string(19) "0000-00-00 00:00:00" ["powod"]=> string(0) "" ["online"]=> string(1) "0" ["czas_stworzenia"]=> string(19) "0000-00-00 00:00:00" }
Go to the top of the page
+Quote Post
viking
post
Post #15





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


To po pierwsze widzisz że typ danych to string, po drugie ban nie został nadany więc jak warunek ma być spełniony?
Go to the top of the page
+Quote Post
Damalin
post
Post #16





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2016

Ostrzeżenie: (0%)
-----


Cytat(viking @ 27.11.2016, 16:26:51 ) *
To po pierwsze widzisz że typ danych to string, po drugie ban nie został nadany więc jak warunek ma być spełniony?

Jak zmienić żeby nie był stringiem ?
Ban akurat na koncie "Dawid" nie jest nadany, ale na innym jest i może się normalnie logować
Go to the top of the page
+Quote Post
viking
post
Post #17





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Na początek to musisz zrozumieć różnicę między = == i ===. A później sprawdź co jest w sesji (po session_start).
Go to the top of the page
+Quote Post
Damalin
post
Post #18





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2016

Ostrzeżenie: (0%)
-----


Cytat(viking @ 27.11.2016, 16:37:36 ) *
Na początek to musisz zrozumieć różnicę między = == i ===. A później sprawdź co jest w sesji (po session_start).

Fakt, miałem tylko jedno =, a powinienem mieć 2 żeby zadziałało gdy wartość w bazie będzie taka sama czyli równa 1, ale mimo to dalej można się logować

REFRESH ~~
Bardzo proszę o pomoc w rozwiązaniu problemu
Go to the top of the page
+Quote Post
viking
post
Post #19





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


No to sprawdziłeś co masz w sesji?
Go to the top of the page
+Quote Post
Damalin
post
Post #20





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 27.11.2016

Ostrzeżenie: (0%)
-----


Cytat(viking @ 28.11.2016, 09:20:43 ) *
No to sprawdziłeś co masz w sesji?

Tak, stringa, lecz nie bardzo wiem jak to zmienić
array(13) { ["id"]=> string(1) "1" ["login"]=> string(5) "dawid" ["haslo"]=> string(60) "$2y$10$p0l.dqmOp5I7r8IAF.ej4u1hKGodYE2U2QtzcMR913Muw/1M7.cYG" ["email"]=> string(5) "dawid" ["imie"]=> string(5) "dawid" ["nazwisko"]=> string(5) "dawid" ["typ_konta"]=> string(1) "1" ["weryfikacja"]=> string(1) "1" ["ban"]=> string(1) "0" ["czas"]=> string(19) "0000-00-00 00:00:00" ["powod"]=> string(0) "" ["online"]=> string(1) "0" ["czas_stworzenia"]=> string(19) "0000-00-00 00:00:00" }

Chyba że chodzi o $_SESSION['ban'];
to pokazuje mi 1 na zbanowanym koncie

Ten post edytował Damalin 28.11.2016, 09:27:47
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 11:20