php登录表单修剪未定义的索引错误

我输入了正确的用户和错误的用户。我收到这条消息:


注意:未定义索引:用户名和未定义索引:密码。


我在输入代码中收到无效的用户输入错误。


第 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)){

qq_花开花谢_0
浏览 113回答 2
2回答

心有法竹

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"]);}

梵蒂冈之花

根据 PHP 文档,该empty()函数仅接收一个变量作为参数。这意味着您无法使用empty("Data").&nbsp;您需要在调用该函数之前将参数设置为变量,如下例:$foo&nbsp;=&nbsp;trim("&nbsp;Test"); $isEmpty&nbsp;=&nbsp;empty($foo);此致!
打开App,查看更多内容
随时随地看视频慕课网APP