Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP]Prosty skrypt logowania
mks1948
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.06.2017

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


Witam mam mały problem od kilku dni męczę się z małym problemem a mianowicie skrypt logowania. Prosze przejrzec mój kod i o odpowiedz co robię nie tak. (IMG:style_emoticons/default/biggrin.gif) Niby 'total result' wskazuje dobrze jak wpisze dobre dane to wartosc 1 a jak zle to 0 wydaje mi sie ze cos jest z warunkiem sprawdzajacym.
CODE
<?php


$servername = "localhost";
$username = "root";
$password = "";
$dbname = "sesja";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

CODE
<?php
require_once('db_connect_sesja.php');
$login=$_POST['login'];
$haslo=$_POST['haslo'];
$zaloguj=$_POST['zaloguj'];
if(isset($zaloguj))
{
$conn->select_db("logowanie");
//$conn->select_db( 'logowanie' );
$zapytanie = "SELECT * FROM `logowanie` WHERE login='$login' AND haslo='$haslo'";
//$result = $conn->query("SELECT * FROM `logowanie` WHERE login='$login' AND haslo='$haslo'");
//$result = $conn->query($zapytanie);
//$conn -> query($zapytanie);

if($result = $conn->query($zapytanie))
{
echo 'udalo sie';
echo '<br>'.'Total results: ' . $result->num_rows;

}
else
{
echo 'zly login lub haslo';

}


}
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Tomplus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


napisz sobie przed warunkiem
  1. var_dump( ($result = $conn->query($zapytanie)) );


Zobaczysz jaką otrzymujesz odpowiedź, okaże się że warunek zawsze jest spełniony, ponieważ poprawnie wykonuje się zapytanie do bazy.
Go to the top of the page
+Quote Post
mks1948
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.06.2017

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



Gdy podam wszystkie dane źle :

  1. object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(3) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) } udalo sie
  2. Total results: 0



Gdy podam prawidłowe :
  1. object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(3) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) } udalo sie
  2. Total results: 1
Go to the top of the page
+Quote Post
Tomplus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Nie zrozumiałeś mnie.
Chodzi o to że w obydwóch przypadkach wynik zwraca Ci obiekt, a jeżeli zwraca Ci obiekt, to nie ma informacji czy jest to dosłownie TRUE lub FALSE.
Podstawowa zasada warunków to spełnienie wartość czy coś jest prawdą lub fałszem.

W tej chwili masz warunek:

  1. if($result = "jestem niezalogowany") {
  2. echo "udalo sie";
  3. }


a znaczy to samo co:

  1. if($result = "jestem zalogowany") {
  2. echo "udalo sie";
  3. }


Bez względu na treść, warunek zwraca TRUE
Go to the top of the page
+Quote Post
mks1948
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.06.2017

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


czyli jak to zrobić ? Młgłbyś podac mi co mam wstawic zeby to działało ?
Go to the top of the page
+Quote Post
patwoj98
post
Post #6





Grupa: Zarejestrowani
Postów: 218
Pomógł: 16
Dołączył: 6.06.2014
Skąd: Warszawa

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


Hmmm... najprawdopodobniej tak:
  1. <?php
  2. require_once('db_connect_sesja.php');
  3. $login=$_POST['login'];
  4. $haslo=$_POST['haslo'];
  5. $zaloguj=$_POST['zaloguj'];
  6. if(isset($zaloguj))
  7. {
  8. $conn->select_db("logowanie");
  9. $zapytanie = "SELECT * FROM `logowanie` WHERE login='$login' AND haslo='$haslo' LIMIT 1";
  10. $result = $conn->query($zapytanie);
  11. if($result->num_rows == 1)
  12. {
  13. echo 'udalo sie';
  14. echo '<br>'.'Total results: ' . $result->num_rows;
  15.  
  16. }
  17. else
  18. {
  19. echo 'zly login lub haslo';
  20.  
  21. }
  22.  
  23.  
  24. }


1. Dodałem LIMIT w Twoim zapytaniu, tak w razie czego.
2. Co najwyżej jeden rekord Tobie zwróci, dlatego warto zobaczyć czy ilość rzędów jest równa 1, jak nie to będzie równa 0 - bo nie może być więcej takich userów.
Go to the top of the page
+Quote Post
mks1948
post
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.06.2017

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


dziekuję bardzo wszystko hula , taka głupota a 3 dni nad nią siędzę , jeszcze raz dzieki (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Tomplus
post
Post #8





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Chciałem żeby to sam odkrył, a nie postawienie kawy na ławę, bo następnym razem spotka się z tym samym problemem i znów spędzi 3 dni z rzędu.
Go to the top of the page
+Quote Post
patwoj98
post
Post #9





Grupa: Zarejestrowani
Postów: 218
Pomógł: 16
Dołączył: 6.06.2014
Skąd: Warszawa

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


Cytat(Tomplus @ 4.06.2017, 20:32:37 ) *
Chciałem żeby to sam odkrył, a nie postawienie kawy na ławę, bo następnym razem spotka się z tym samym problemem i znów spędzi 3 dni z rzędu.


Wiem, ale koleś nie ma pojęcia o var_dump'ie to i tak mu nie wiele pomoże, a obiektu, który dostał to nawet nie rozszyfruje.
Go to the top of the page
+Quote Post

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: 22.08.2025 - 11:55