Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Prosty skrypt logowania
Forum PHP.pl > Forum > Przedszkole
mks1948
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. 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';

}


}
Tomplus
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.
mks1948

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
Tomplus
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
mks1948
czyli jak to zrobić ? Młgłbyś podac mi co mam wstawic zeby to działało ?
patwoj98
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.
mks1948
dziekuję bardzo wszystko hula , taka głupota a 3 dni nad nią siędzę , jeszcze raz dzieki biggrin.gif
Tomplus
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.
patwoj98
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.
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.