2016-04-03 21 views
0

私は自分のサイトにユーザーがログインしていることを確認する必要があるカスタマイズされたページを使用しています。そうでない場合は、別のページにリダイレクトします。 ログイン成功では、セッション変数は次のように設定されている:ユーザーがページ上に記録されているかどうかを確認するにはログインしていない場合、ユーザーをリダイレクト

session_start(); 
$_SESSION['login'] = "1"; 

、私はページの開始時に、このコードを使用します。

session_start(); 
if($_SESSION['login']=='') 
{ 
    @header("location:login.php"); 
} 
ページはユーザーがログインしていない場合であってもリダイレクトされません。しかし

示すエラーが

お知らせです。未定義のインデックス:XXXX/XXXX/XXXX/XXXX

でログイン0

header()以外のユーザーをリダイレクトするための他の方法があり、または多分他のいくつかのコードでは、同じ目的を達成するために使用することができますか?

+0

テンプレートのみカスタムファイルとしてlogin.phpを作成しましたか?または、is_user_logged_in()で試すことができます。 – user1990

+0

is_user_logged_in()関数を使用して、ユーザーがログインしているかどうかを確認します。 wp_redirect関数を使用して希望の場所にリダイレクトします –

+0

私はlogin.phpをカスタムファイルとして使用しています。 – NewLander

答えて

0

それは$_SESSIONloginインデックスはあなたがそれをチェックしている時に設定されていない、おそらく$_SESSION['login'] = "1";ビットは、小切手の後に来るので、あなたは、あなたがそれを使用して設定するか、いないかどうかを確認するために持ってしようとしている表示されますarray_key_exists機能は以下の通り:

if (array_key_exists('login', $_SESSION) && $_SESSION['login']=='') { 
    @header("location:login.php"); 
} 

は、別の方法としては、デフォルトでは、例えば、明示的$_SESSION['login'] = 0を設定することもできますし、ログインが成功した場合のみ$_SESSION['login'] = "1";を設定します。

同時に、私の代わりに、もともとワードプレスの知識の豊富なプログラマーによって設計され、十分にコミュニティによってテストスクリプトとテクニックを使用し、独自のログイン・メカニズムを使用することはお勧めしません。そのようなアプローチはthis question on the wordpress support siteに記述されている(これを追加するには、テーマのfunctions.php):

add_action('init', 'redirect_visitors'); 

function redirect_visitors() { 
    if (! is_user_logged_in()) { 
    wp_redirect('http://your-site.com/wp-login.php'); 
    exit; 
    } 
} 
関連する問題