【解決方法】ログインページに正常にログインするにはどうすればよいですか?


ALOGIN フォームを作成し、データベースに正常に接続しましたが、正しい資格情報でログインしようとすると、ページにリダイレクトされて表示されます

Fatal error: Uncaught Error: Call to undefined function validate() in C:\xampp\htdocs\project\logtest.php:18

どうすれば解決できますか?

私が試したこと:

/*私のコード*/

<?php
session_start();
include "db_conn.php";

if(isset($_POST['uname']) && isset($_POST['password']))
{
    function validate($data)
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;

    }

}

$uname = validate($_POST['uname']);
$pass = validate($_POST['password']);

if(empty($uname))
{
    header("location: loghome.php?error=User Name is Required");
    exit();
}
else if(empty($pass))
{
    header("location: loghome.php?error=password is Required");
    exit();
}
$sql = "SELECT * FROM users WHERE user_name='$uname' AND password='$pass'";
$result = mysqli_query($conn, $sql);

if(mysqli_num_rows($result)===1)
{
    $row = mysqli_fetch_assoc($result);
    if($row['user_name'] === $uname && $row['password'] === $pass)
    {
        echo "Logged IN";
        $_SESSION['user_name'] = $row['user_name'];
        $_SESSION['name'] = $row['name'];
        $_SESSION['id'] = $row['id'];
        header("location:home1.php");
        exit();


    }

    else {
        header("location:loghome.php?error= Incorrect Username or password");
        exit();

    }

}
else {
    header("location: loghome.php");
    exit();
}
PHP
<pre lang="PHP">

解決策 1

PHP はインタープリター型言語です。コードを実行するときだけ何かを行います。

の中で関数を定義すると、 if 条件が true の場合にのみ定義されます。

したがって、テストが失敗すると、コードを定義する validate 決して実行されず、使用しようとすると失敗します。

どう思った? if ブロックはどうするつもりだった?

解決策 2

検証関数は、次の行で始まるブロック内にのみ存在します。

PHP
if(isset($_POST['uname']) && isset($_POST['password']))

しかし、ブロックの外から呼び出そうとしています。 したがって、そのブロックの外に移動して、コードの他の部分からアクセスできるようにします。

PHP
function validate($data)
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;

}
$uname = '';
$pass = '';
if(isset($_POST['uname']) && isset($_POST['password']))
{
    $uname = validate($_POST['uname']);
    $pass = validate($_POST['password']);
}

「PHP の変数と関数のスコープ」の主題について読む必要があります。

コメント

タイトルとURLをコピーしました