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

System logowania PHP

0 głosów
599 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 (90,350 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 (90,350 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 (256,580 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 (90,350 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ź 415 wizyt
pytanie zadane 20 października 2022 w PHP przez Olafisz Nowicjusz (230 p.)
0 głosów
3 odpowiedzi 1,404 wizyt
pytanie zadane 28 lipca 2020 w PHP przez x_000 Obywatel (1,460 p.)
0 głosów
1 odpowiedź 746 wizyt
pytanie zadane 18 sierpnia 2019 w PHP przez Maciek Nayko Wiśniew Początkujący (350 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,322 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...