1

私はPHPが初めてで、誰かが私を助けてくれることを願っています.

すべてのページに含まれるヘッダー ファイルで、次のシナリオをカバーしようとしています。

  1. セッション変数 " status" が設定されておらず、かつページ名が " login" または " "でない場合user、ログイン ページにリダイレクトします。
  2. セッション変数 " status" が設定されておらず、かつページ名が " user" であり、かつ変数 " resetToken" が設定されていない場合、ログイン ページにリダイレクトします。

これまでのところ、ブラウザーからアクセスするときにすべてのページで機能する以下がありますが、次のような電子メールからのリンクを使用すると、リンクに変数 " "が含まれていてもリダイレクトされます。resetToken

リンクの例: https://www.myurl.com/user.php?resetToken=abcde

私のPHP(ヘッダーに含まれています):

$baseURL = "https://www.myurl.com";
$pageURL = basename($_SERVER["REQUEST_URI"]);
$pageName = pathinfo(parse_url($pageURL, PHP_URL_PATH), PATHINFO_FILENAME);

if( (!isset($_SESSION["status"])) && ($pageName != "login") && ($pageName != "user") ){
    header("Location: " . $baseURL . "/login.php");
    exit;
}
if( (!isset($_SESSION["status"])) && ($pageName == "user") && (!isset($_GET["resetToken"])) ){
    header("Location: " . $baseURL . "/login.php");
    exit;
}

これに関して 2 つの質問があります。

  1. メールリンクからページにアクセスするときに $_GET は機能しませんか、それともここで何かを変更する必要がありますか?
  2. これらのチェックを 2 つ続けて行うのではなく、1 つの IF ステートメントに組み合わせる方法はありますか?

助けてくれてありがとう、マイク

4

2 に答える 2