我輸入了正確的用戶和錯誤的用戶。我收到這條消息:注意:未定義索引:用戶名和未定義索引:密碼。我在輸入代碼中收到無效的用戶輸入錯誤。第 18 行和第 23 行正在返回Undefined index消息。寫入了不正確的用戶輸入,而不是在輸入部分中輸入。如何解決這個問題?我研究了很多話題。這段 PHP 代碼<?php session_start(); require_once "../../config.php"; if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){ header("location: ../../index.php"); exit; } $username = " "; $password = " "; $username_err = " "; $password_err = " "; if($_SERVER["REQUEST_METHOD"]=="POST"){ if(empty(trim($_POST["username"]))){ $username_err = "Lütfen kullan?c? ad?n?z? giriniz."; } else { $username = trim($_POST["username"]); } if(empty(trim($_POST["password"]))){ $password_err = "Lütfen ?ifrenizi giriniz."; } else{ $password = trim($_POST["password"]); } if(empty($username_err) && empty($password_err)){ $tsql = "SELECT id, username, password FROM [ARAC_TAKIP].[dbo].[KULLAN?C?LAR] WHERE username = :username "; if($stmt = $pdo->prepare($tsql)){ $stmt->bindParam(":username", $param_username, PDO::PARAM_STR); $param_username = trim($_POST["username"]); if($stmt->execute()){ if($stmt->rowCount() == 1){ if($row = $stmt->fetch()){ $id = $row["id"]; $username = $row["username"]; $hashed_password = $row["password"]; if(password_verify($password, $hashed_password)){
2 回答

心有法竹
TA貢獻1866條經驗 獲得超5個贊
PHP 文檔說,empty()需要一個變量作為參數。trim()
作為一種方法不適用于empty()
.?您應該使用isset()檢查 POST 變量是否已聲明:
if(!isset($_POST["username"]) || empty($_POST["username"])) {
? ? $username_err = "Lütfen kullan?c? ad?n?z? giriniz.";
} else {
? ? $username = trim($_POST["username"]);
}
if(!isset($_POST["password"]) || empty($_POST["password"])) {
? ? $password_err = "Lütfen ?ifrenizi giriniz.";
} else{
? ? $password = trim($_POST["password"]);
}

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
根據 PHP 文檔,該empty()
函數僅接收一個變量作為參數。這意味著您無法使用empty("Data")
. 您需要在調用該函數之前將參數設置為變量,如下例:
$foo = trim(" Test"); $isEmpty = empty($foo);
此致!
- 2 回答
- 0 關注
- 160 瀏覽
添加回答
舉報
0/150
提交
取消