Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Pobieranie danych z mysql
Kedi
post 2.09.2019, 16:45:47
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 2.09.2019

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


Witam,
Chciałem pobrać informację z bazy danych czy wartość jest równa 0 lub 1

Jeśli mamy 0


  1. if ($rezultat = $conn->query(
  2. sprintf("SELECT postac FROM users WHERE login='%s'",
  3. mysqli_real_escape_string($conn,$username))))
  4. {
  5. $postac = $rezultat->num_rows;
  6. if($postac == 0)
  7. {
  8. header('Location: index.php?page=stworz');
  9. }


zaś jeśli zwraca nam 1 to

  1. else{
  2. $_SESSION['loggedin'] = $username;
  3. header('Location: index.php?page=gra');
  4. }


Ale cały ładuje mi się else, mimo, że w db w tabeli users oraz w kolumnie postac jest sztywno ustawione 0.

Jakieś sugestie ?

Ten post edytował Kedi 2.09.2019, 16:47:11
Go to the top of the page
+Quote Post
nospor
post 2.09.2019, 16:53:30
Post #2





Grupa: Moderatorzy
Postów: 34 743
Pomógł: 5779
Dołączył: 27.12.2004




Mowisz o tym
$postac = $rezultat->num_rows;
?
To sprawdz co to zawiera

$postac = $rezultat->num_rows;
var_dump($postac);
exit;

No chyba ze ELSE podpiales pod to
($rezultat = $conn->query(
? No to wtedy zapytanie zwraca blad. No ale ciezko powiedziec jak zamiast calego kodu podajesz wycinki i zgaduj zgadula....


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kedi
post 2.09.2019, 16:55:13
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 2.09.2019

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


Cytat(nospor @ 2.09.2019, 17:53:30 ) *
Mowisz o tym
$postac = $rezultat->num_rows;
?
To sprawdz co to zawiera

$postac = $rezultat->num_rows;
var_dump($postac);
exit;

No chyba ze ELSE podpiales pod to
($rezultat = $conn->query(
? No to wtedy zapytanie zwraca blad. No ale ciezko powiedziec jak zamiast calego kodu podajesz wycinki i zgaduj zgadula....



D:\wamp\www\strony\gra.php:61:int 1

  1. <?php
  2. global $tytul;
  3. global $separator;
  4. global $description;
  5.  
  6. ?>
  7.  
  8. <html>
  9. <head>
  10.  
  11. <title><?php echo $tytul.$separator.$description;?> </title>
  12. <script src="design/js/script.js"></script>
  13. <link href="https://fonts.googleapis.com/css?family=EB+Garamond&display=swap" rel="stylesheet">
  14. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  15. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  16. <link href="design/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
  17. <link rel="stylesheet" type="text/css" href="../design/css/style.css">
  18. <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
  19. <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
  20. <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
  21. </head>
  22. <body>
  23.  
  24. <div class="wrapper">
  25. <?php require_once("temp/header.php"); ?>
  26. <div class="layer">
  27. <div class="menu">
  28. <?php require_once("temp/menu.php"); ?>
  29. </div>
  30. </div>
  31. <div class="layer">
  32. <div class="content">
  33. <fieldset>
  34. <center><legend>Logowanie</legend></center>
  35. <form role="form" method="post">
  36. <div class="form-group">
  37. <label for="username">Nazwa Postaci:</label>
  38. <input type="text" class="form-control" id="username" name="login" required />
  39. </div>
  40.  
  41. <div class="form-group">
  42. <label for="password">Wprowadź hasło:</label>
  43. <input type="password" class="form-control" id="password" name="haslo" required />
  44. </div>
  45. <button type="submit" class="btn btn-outline-success" name="send">Zaloguj się</button>
  46. </form>
  47.  
  48. <?php
  49.  
  50. function inject_checker ($conn, $field){
  51. return (htmlentities(trim(mysqli_real_escape_string($conn, $field))));
  52. }
  53.  
  54. $dbserver = "localhost";
  55. $dbusername = "root";
  56. $dbpassword = "";
  57. $db = "game";
  58.  
  59. $conn = new mysqli($dbserver, $dbusername, $dbpassword, $db);
  60. $conn -> query ('SET NAMES utf8');
  61. $conn -> query ('SET CHARACTER_SET utf8_unicode_ci');
  62.  
  63. //Sprawdza Połączenie
  64. if ($conn->connect_error)
  65. {
  66. die("Połączenie nie udane z bazą dany.".$conn->connect_error);
  67. }
  68.  
  69. if(isset($_POST['send'])){
  70. $username = inject_checker($conn, strtolower($_POST['login']));
  71. $password = inject_checker($conn, $_POST['haslo']);
  72. $haslo_hash = password_hash($password, PASSWORD_DEFAULT);
  73.  
  74.  
  75.  
  76. if ($rezultat = $conn->query(
  77. sprintf("SELECT * FROM users WHERE login='%s'",
  78. mysqli_real_escape_string($conn,$username))))
  79. {
  80. $ilu_userow = $rezultat->num_rows;
  81. if($ilu_userow == 1)
  82. {
  83. $wiersz = $rezultat->fetch_assoc();
  84.  
  85. if (password_verify($password, $wiersz['haslo']))
  86. {
  87.  
  88. if ($rezultat = $conn->query(
  89. sprintf("SELECT postac FROM users WHERE login='%s'",
  90. mysqli_real_escape_string($conn,$username))))
  91. {
  92. $postac = $rezultat->num_rows;
  93. if($postac == 0)
  94. {
  95. header('Location: index.php?page=stworz');
  96. }else{
  97.  
  98. $_SESSION['loggedin'] = $username;
  99. header('Location: index.php?page=gra');
  100. }
  101. }
  102. else
  103. {
  104. ?> <div class="alert alert-danger" role="alert">
  105. <center>Podane dane są błędne!</center>
  106. </div> <?php
  107. }
  108.  
  109. }
  110. }
  111. }
  112. }
  113.  
  114.  
  115. ?>
  116.  
  117. </fieldset>
  118. </div>
  119. </div>
  120. <?php require_once("temp/footer.php"); ?>
  121. </div>
  122. </body>
  123. </html>
Go to the top of the page
+Quote Post
nospor
post 2.09.2019, 16:59:49
Post #4





Grupa: Moderatorzy
Postów: 34 743
Pomógł: 5779
Dołączył: 27.12.2004




Zrobiles var_dump jak prosilem?


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kedi
post 2.09.2019, 17:38:50
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 2.09.2019

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


Cytat(nospor @ 2.09.2019, 17:59:49 ) *
Zrobiles var_dump jak prosilem?


Tak, napisałem co zwraca linię nad kodem. ( inna nazwa ponieważ skopiowałem tylko zawartość login do innego php.)

Nie ważnę jaką wartość ustawię w db zawsze zwraca 1

Ten post edytował Kedi 2.09.2019, 18:06:13
Go to the top of the page
+Quote Post
viking
post 2.09.2019, 18:45:08
Post #6





Grupa: Zarejestrowani
Postów: 5 363
Pomógł: 909
Dołączył: 30.08.2006

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


A sprawdziłeś w dokumentacji co zawiera num_rows? Bo na pewno nie jest to pole z bazy. I czemu tak mieszasz kod obiektowy ze strukturalnym? Zamiast mysqli_real_escape_string użyj bindowania.

Ten post edytował viking 2.09.2019, 18:47:08


--------------------
Go to the top of the page
+Quote Post
dublinka
post 2.09.2019, 18:50:51
Post #7





Grupa: Zarejestrowani
Postów: 292
Pomógł: 36
Dołączył: 22.02.2008

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


po co 2 razy to ?

  1. sprintf("SELECT postac FROM users WHERE login='%s'",


pomyliles where z like
Go to the top of the page
+Quote Post
nospor
post 2.09.2019, 18:53:35
Post #8





Grupa: Moderatorzy
Postów: 34 743
Pomógł: 5779
Dołączył: 27.12.2004




Cytat
pomyliles where z like
Oj chyba tobie sie cos teraz pomylilo wink.gif


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dublinka
post 2.09.2019, 20:37:24
Post #9





Grupa: Zarejestrowani
Postów: 292
Pomógł: 36
Dołączył: 22.02.2008

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


Cytat(nospor @ 2.09.2019, 18:53:35 ) *
Oj chyba tobie sie cos teraz pomylilo wink.gif

a no tak smile.gif sprintf. sorki.

  1. <?php
  2. function query($host, $user, $pwd, $database, $table)
  3. {
  4. $mysqli = new mysqli($host, $user, $pwd, $database);
  5. if($mysqli->connect_error) {
  6. exit('Błąd polączenia z MySQL');
  7. }
  8.  
  9. $mysqli->set_charset("utf8");
  10.  
  11. $loginf = 'qqq2'; // login z forma
  12. $haslof = 'qwerty2'; // haslo z forma
  13.  
  14. $stmt = $mysqli->prepare("SELECT id, login, haslo, postac FROM $table WHERE login = ?");
  15. $stmt->bind_param("s", $loginf);
  16. $stmt->execute();
  17. $stmt->store_result();
  18. $stmt->bind_result($id, $login, $haslo, $postac);
  19. $stmt->fetch();
  20.  
  21. if($stmt->num_rows === 1)
  22. {
  23.  
  24. if (password_verify($haslof, $haslo))
  25. {
  26. if($postac == 0)
  27. {
  28. echo 'Postac ma wartosc: ' . $postac;
  29. exit;
  30.  
  31. header('Location: index.php?page=stworz');
  32. }else{
  33.  
  34. echo 'Postac ma wartosc: ' . $postac;
  35. exit;
  36.  
  37. $_SESSION['loggedin'] = $loginf;
  38. header('Location: index.php?page=gra');
  39. }
  40.  
  41. } else {
  42.  
  43. exit('Błędne hasło');
  44.  
  45. }
  46.  
  47. } else {
  48.  
  49. echo $stmt->num_rows . ' wyników';
  50.  
  51. }
  52.  
  53. $stmt->close();
  54. }
  55. query('localhost', 'root', 'haslo', 'nazwabazy', 'nazwatabeli');
  56.  
  57.  
  58. ?>


Ten post edytował dublinka 2.09.2019, 21:25:06
Go to the top of the page
+Quote Post
nospor
post 3.09.2019, 09:08:00
Post #10





Grupa: Moderatorzy
Postów: 34 743
Pomógł: 5779
Dołączył: 27.12.2004




@dublinka jaki sens ma twoja funkcja? To jest jakis groch z kapusta. Czemu tam sa przekazywane wszystkie dane do polaczenia? Czemu ta funkcja tworzy nowe polaczenie za kazdym razem jak jest wywolywana?
Czemu tam jest jako parametr nazwa tabeli? A jak sie kod rozrosnie w niej i bede zapytania do dwoch tabel? Kolejny parametr dodasz?
Rozumiem chec pomocy ale nie ucz ludzi pisac tak nieoptymalnych rzeczy.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dublinka
post 4.09.2019, 06:40:36
Post #11





Grupa: Zarejestrowani
Postów: 292
Pomógł: 36
Dołączył: 22.02.2008

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


To jest tylko przyklad jak mozna zrobic to na czym koledze zalezy.
Jesli ktos chcialby bardzo zeby to przerabiac dla dalszego kodu to oczywiscie trzeba to pozmieniac. Parametry podalem ot tak jak i nazwe tabeli.
Zalozeniem bylo pokazanie jak dobrac sie do rekordu POSTAC i to bylo najwazniejsze. Reszta to ogolny zarys.

Ten post edytował dublinka 4.09.2019, 06:42:33
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 16.10.2019 - 11:37