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

Notice: Undefined index: password in D:\Xampp\htdocs\hotel\logowanie.php on line 18

Mały hosting, OGROMNE możliwości
0 głosów
407 wizyt
pytanie zadane 17 kwietnia 2023 w PHP przez abc123x123 Nowicjusz (140 p.)

Hej! Czy chciałby mnie nakierować gdzie jest błąd? 

zarejestruj.html



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="logowanie.css">
</head>
<body>
    <div class="main">
        <input type="checkbox" id="chk" aria-hidden="true" />
        <div class="singup">
            <form method="post" action="rejestracja.php">
                <label for="chk" aria-hidden="true">Sign up</label>
                <input type="text" name="imie" placeholder="Imie"/>
                <input type="password" name="password" placeholder="Password"/>
                <input type="email" name="email" placeholder="Email"/>
                <button type="submit">Sign up</button>
            </form>
        </div>
        <div class="login">
            <form method="post" action="logowanie.php">
                <label for="chk" aria-hidden="true">Login</label>
                <input type="email" name="email" placeholder="Email" required>
                <input type="password" name="password" placeholder="Password"/>
                <button>Login</button>
            </form>
        </div>
       
    </div>
</body>
</html>
logowanie.php 


<?php
session_start();

$host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "hotel";

$conn = new mysqli($host, $db_user, $db_pass, $db_name) or die("Odpowiedź: Błąd połączenia z serwerem $host");

$password = mysqli_real_escape_string($conn, $_POST["password"]);
$email = mysqli_real_escape_string($conn, $_POST["email"]);

$query_login = mysqli_query($conn, "SELECT * FROM users WHERE email ='$email'");

if (mysqli_num_rows($query_login) > 0) {
    $record = mysqli_fetch_assoc($query_login);
    $hash = $record["password"];
    if (password_verify($password, $hash)) {
        $_SESSION["current_user"] = $record['id'];
        $_SESSION["user_role"] = $record['role'];
    }
}

if (isset($_SESSION["current_user"])) {
    if ($_SESSION["user_role"] == "admin") {
        header("Location: indexadmin.php");
    } else {
        header("Location: rezerwuj.php");
    }
} else {
    /* Użytkownik nie jest zalogowany */
}

exit();
?>

 

1 odpowiedź

+1 głos
odpowiedź 17 kwietnia 2023 przez Comandeer Guru (607,980 p.)

To nie błąd a po prostu informacja, że nie istnieje zmienna $_POST['password'].

Dobra praktyka: zanim obsłużysz formularz, sprawdź, czy wgl został wysłany i czy przyszły Ci poprawne dane:

if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
	// mamy formularz
}

// lub

if ( !empty( $_POST[ 'email' ] ) && !empty( $_POST[ 'password' ] ) ) {
	// przesłano dane
}

 

Podobne pytania

–1 głos
2 odpowiedzi 1,509 wizyt
+1 głos
2 odpowiedzi 647 wizyt
0 głosów
1 odpowiedź 879 wizyt
pytanie zadane 1 października 2018 w PHP przez olejniczakbydgoszcz Początkujący (290 p.)

93,696 zapytań

142,614 odpowiedzi

323,225 komentarzy

63,230 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.

...