0

ユーザーがアクセスするメイン ページがあり、渡された変数に応じて MySQL クエリからの出力が表示されます。そう;

http://website/mypage.php?page=0

ただし、リダイレクトを設定して、誰かが

http://website/mypage.php

に行くことhttp://website/mypage.php?page=0。現在のページを検証し、ユーザーのセッションが確立されていることを検証する次のコードを使用することを考えました。

elseif ($_SERVER['PHP_SELF'] == '/mypage.php' && isset($_SESSION['valid_user']))
{
header('Refresh: 0; URL=/mypage.php?page=0');
}

しかし、これは一般的すぎるようです。「/mypage.php」または「/mypage.php?page=」を正確に確認する方法はありますか? /mypage.php の 11 文字だけをチェックするために strlen を使用することを考えましたが、これが最も効率的な方法かどうかはわかりません。

4

5 に答える 5

2

変数ページに値があるかどうかを確認でき、空の場合はリダイレクトを実行できます

if($_GET['page'] == ''){
  header('Location: /mypage.php?page=0');
  exit;
}

また

if(!isset($_GET['page'])){
  header('Location: /mypage.php?page=0');
  exit;
}
于 2013-10-30T15:43:18.640 に答える
1

次のように使用する必要があります。

header('Location: /mypage.php?page=0');
exit;

それ以外の場合は、$_SERVER 変数でより厳密な一致を確認してください。http://php.net/manual/en/reserved.variables.server.php

おそらく必要だと思います$_SERVER['REQUEST_URI']

于 2013-10-30T15:35:14.993 に答える
1

あなたmypage.phpはこのようなものをチェックすることができます

if(!isset($_GET['page'])) {
    header('location: /mypage.php?page=0');
    exit;
}

しかし、get 変数を使用して同じページにリダイレクトする代わりに、変数が設定されていない場合に、デフォルトで表示したいページを表示しないのはなぜだと思いますかpage

于 2013-10-30T15:37:05.720 に答える
1

これはあなたが探しているものですか?

if(!isset($_GET['page']) || empty($_GET['page'])) {
    Header('Location: http://website/mypage.php?page=0')
    exit();
}

また

if(!isset($_GET['page']))
    $_GET['page'] = 0;

2 番目の解決策についてはよくわかりません。値を $_GET[] 変数に属性付けるべきではありません。

于 2013-10-30T15:39:23.353 に答える