• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

System logowania PHP

VPS Starter Arubacloud
0 głosów
307 wizyt
pytanie zadane 11 listopada 2022 w PHP przez mrc Nowicjusz (200 p.)

Cześć,
Mniej więcej od momentu jak wprowadziłem zabezpieczenie przeciwko SQL Injection, system logowania przestał mi działać. Analizowałem kod już kilkukrotnie, jednak nie widzę błędów. Zerkniesz na kod?

<?php

  session_start();

  //include 'dbconnect.php';

  //nie przetestowane. Istnieje ryzyko błędu.
  if ((!isset($_POST['login'])) || (!isset($_POST['password'])))
  {
    header('Location: signin.php');
    exit();
  }
  require_once "dbconnect.php";

  $connection = new mysqli($host, $db_user, $db_password, $db_name); //or die("Connect failed: %s\n". $conn -> error);

  if($connection->connect_errno!=0)
  {
      echo "Error: ".$connection->connect_errno;
  }
  else {
    $login = $_POST['login'];
    $password = $_POST['password'];

//nietestowane. Do sprawdzenia. Ochrona SQL Injection
    $login = htmlentities($login, ENT_QUOTES, "UTF-8");
    $password = htmlentities($password, ENT_QUOTES, "UTF-8");

    //$sql = "SELECT * FROM identity WHERE Login='$login' AND Password='$password'";

    if($result = $connection->query(
      sprintf("SELECT * FROM identity WHERE Login='%s' AND Password='%s'",
      mysqli_real_escape_string($connecion, $login),
      mysqli_real_escape_string($connecion, $password))))
    {
      $user_count = $result->num_rows;
      if($user_count>0)
      {
        $_SESSION['loggedin']=true;
        $row=$result->fetch_assoc();
        $_SESSION['Id']=$row['Id'];
        $_SESSION['Login']=$row['Login'];
        //Można dodać session dla e-maila
        //$Login = $row['Login'];
        unset($_SESSION['error']);
        $result->free_result();
        header('Location: home.php');

        echo $Login;
      }
      else
      {
        $_SESSION['error']='<span style="color:red">Nieprawidłowy login lub hasło!</span>';
        header('Location:signin.php');
      }
    }
    
    $connecion->close();

  }
  //$login = $_POST['login'];
  //$password = $_POST['password'];

 ?>

 

komentarz 11 listopada 2022 przez SzkolnyAdmin Szeryf (88,920 p.)
Jakieś komunikaty błędów? Próbowałeś var_dump dla przesyłanych zmiennych?
komentarz 11 listopada 2022 przez mrc Nowicjusz (200 p.)
Jedyny błąd jest dość ogólny:

HTTP ERROR 500

Co masz na myśli odnośnie var_dump?
1
komentarz 11 listopada 2022 przez SzkolnyAdmin Szeryf (88,920 p.)
edycja 11 listopada 2022 przez SzkolnyAdmin
Funkcja var_dump pokaże ci, co otrzymujesz z formularza, a także to, co wychodzi z funkcji zabezpieczających.

1 odpowiedź

0 głosów
odpowiedź 11 listopada 2022 przez VBService Ekspert (255,840 p.)
wybrane 13 listopada 2022 przez mrc
 
Najlepsza

jak wprowadziłem zabezpieczenie przeciwko SQL Injection

Może spróbuj zabezpieczyć za pomocą "bind-owania".

Sql Injection Prevention In PHP With MySQLi

1
komentarz 12 listopada 2022 przez SzkolnyAdmin Szeryf (88,920 p.)
To też, a dodatkowo przed przekazaniem zmiennych do zapytania sprawdziłbym je pod kątem dozwolonych znaków, w końcu w haśle i loginie nie wszystko jest dopuszczalne.

Podobne pytania

0 głosów
1 odpowiedź 284 wizyt
pytanie zadane 20 października 2022 w PHP przez Olafisz Nowicjusz (230 p.)
0 głosów
3 odpowiedzi 761 wizyt
pytanie zadane 28 lipca 2020 w PHP przez x_000 Obywatel (1,460 p.)
0 głosów
1 odpowiedź 519 wizyt
pytanie zadane 18 sierpnia 2019 w PHP przez Maciek Nayko Wiśniew Początkujący (350 p.)

93,025 zapytań

141,990 odpowiedzi

321,293 komentarzy

62,374 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...