PHPのsessionを使用して、一部ページにログイン認証が必要なサイトをつくっています。
一覧ページは未ログインでも参照可能で、詳細を押すとログインフォームがオーバーレイ表示されるようにしているのですが
ログイン認証後、詳細ページではなく一覧ページに戻ってしまいます。
遷移先のURLを取得するにはどうしたらいいのでしょうか?
わかる方いらっしゃいましたらをご教示ください。
<?php session_start(); $_SESSION['user_name'] = isset($_SESSION['user_name']) ? $_SESSION['user_name'] : null; $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null; // ログイン認証 if ( !is_front_page() && !is_page('logout') ) { if ( get_post_type() === 'XXX' || in_category('XXX')) { if (!isset($_SESSION['user_name'])) { wp_redirect($referer); exit; } } } elseif (is_page('logout')) { // ログアウト処理 // session_start(); // array関数でセッションの配列を空にして初期化する $_SESSION = array(); wp_redirect(get_bloginfo('url')); exit; } elseif (!isset($_SESSION['user_name'])) { session_cache_limiter('private_no_expire'); //session_start(); // エラーメッセージを格納する変数を初期化 $error_message = ""; $passmatch = '/^[0-9]{6}$/u'; // password:「数字6桁」 // ログインボタンが押されたかを判定 if (isset($_POST["login"])) { /* user_nameのログイン条件:「全角日本語のみOK、半角英数NG、半角カナNG、全角英数字NG」 初めのifは空白(スペース)のみNGの指定。 */ if ( mb_ereg_match("^(\s| )+$", $_POST["user_name"]) && preg_match($passmatch, $_POST["password"]) ) { } elseif ( preg_match('/^[ァ-ヶー]+$/u', $_POST["user_name"]) && preg_match($passmatch, $_POST["password"]) ) { // ログインが成功した証をセッションに保存 $_SESSION["user_name"] = $_POST["user_name"]; // ログイン前のページへリダイレクト wp_redirect($referer); exit; } $error_message = "間違いがあります"; } } ?>
WordPressですかね。
わざわざ自前でやろとするのは何故でしょうか?
WordPressにはWordPressの認証やセッションの管理があるのでそこから外れたものを中途半端にWordPressの機能を使ってやろうとすると真っ当には進まないと思います
返信ありがとうございます。
Wordpressです。
もともと前任者が作成した「サイト全体ログイン必須」だったものを、一部認証に変更しようと思いベースをそのまま利用していました。