私はPHPでアプリケーションを構築しており、単一のindex.phpファイルからルーティングとユーザー管理(セッションとCookieを使用)を処理しようとしています。複数のswitch文を1つのPHPファイルで使用する
次のコードブロックは、私が設定した基本的なルーティングロジックです。
$request_uri = explode('?', $_SERVER['REQUEST_URI'], 2);
switch ($request_uri[0]) {
// Home page
case '/':
require 'partial/_main.php';
break;
// About page
case '/about':
// do logic
break;
// Everything else
default:
header('HTTP/1.0 404 Not Found');
echo "<h1>Not Found</h1>";
break;
}
また、ログに記録されていない、またはログインしているユーザーが見ることができるウェブサイトの他の部分を制御したいと考えています。例えば
:
$status = $_COOKIE['uid'];
switch ($status) {
case $status === '':
// Not logged in
// echo "Not logged in";
break;
default:
echo "Hello there, ".$status;
require 'partial/_user-actions.php';
break;
}
問題は今それが設定されていないとき、私は$_COOKIE['uid']
をチェックすることはできませんです。私は "未定義の変数"エラーを取得しています。
(isset($ _ COOKIE ['uid']))を実行して$ statusに割り当てます。 –
@DhavalChhedaがそれを行いました。今度はswitch文の中のケースが冗長になります。 –