2016-07-17 4 views
1

は私のウェブサイトのフォルダ構造です:ページを自分自身にリダイレクトするにはどうすればよいですか?ここ

myweb/ 
    index.php 
    files/ 
     autoloader.php 
     login.php 

そして、ここでは私のスクリプトです:

// login.php 

class login{ 

    public function __construct() { 
     function signed(){ 
      header('Location: ../'); 
      exit; 
     } 
    } 

    public function index(){ 

     echo isset($_SESSION['error_message']) ? $_SESSION['error_message'] : null; 

     if ($_SESSION['login'] == 1) { 
      signed(); 
     } 

     $_SESSION['login'] = 1; 

     if ($_SESSION['login'] == 1) { 
      $_SESSION['error_message'] = 'something is wrong'; 
      header('location: ../login?arg=value'); 
     } 
    } 
} 

私はこのパスを読み込む場合:

:ここ

localhost/myweb/login 

は2例です

  1. $_SESSION['login']1に等しいです:私のスクリプトは、このパスに私をリダイレクトします。localhost/myweb
  2. $_SESSION['login']1に等しくない:私のスクリプトは、このパスに私をリダイレクトします。localhost 最初のケースは結構です、私は期待どおりに動作します意味します。しかし、2番目のケースは間違っている、私はそれが期待どおりに動作しないことを意味します。後者の場合は、localhost/myweb/login?arg=valueではなく、localhostというパスにリダイレクトされます。さて、どうすれば修正できますか?

注:すべてのページがindex.phpを通過します。また、index()機能はデフォルトであり、URLに言及する必要はありません。私が使用することができます:代わりの

header("Refresh:0"); 


は、私は解決策を持っている

header('location: ../login?arg=value'); 

をしかし、単に小さな問題があります:はパラメータを渡すには。では、どうすればheader("Refresh:0");?arg=valueを一緒に使うことができますか?

答えて

1

あなたは使用することができます。

header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']); 

https://secure.php.net/manual/en/reserved.variables.server.php

+0

は何の 'QUERY_STRING'ありませんが、私は今、それを追加します。 $ _SERVER ['QUERY_STRING'] 'はこの場合常に空です。 –

+0

'$ _SERVER ['PHP_SELF']。"? "。'を使用し、クエリ文字列は –

+0

の後にあります。私はそれを試し、あなたがそれが働いているかどうかを知らせます。 –

関連する問題