2016-06-17 7 views
0

質問が少し奇妙ですが、私はユーザーにprofile.phpにアクセスすることを望まない。ユーザー名が定義されていないという通知が表示されるためです。とにかく私はそれを行うことができますか?たとえばユーザーがユーザー名をクリックすると、彼はprofile.php?username = yにリダイレクトされますが、私は彼にurl profile.phpを入力させたくありません。彼がそうするなら、私は彼を別のページにリダイレクトしたいと思う。私は疲れてURLを取得し、それがprofile.phpだ場合にのみ、私は彼をリダイレクトしたいが、それは私がプロフィールページにユーザがprofile.phpにアクセスすることを許可していないのに、彼がprofile.phpにアクセスできるようにしていませんか?username =

+0

「私は疲れたURLを取得し、それだけで私は彼をリダイレクトしたいprofile.phpだ場合は...」それはこの試みを参照すると便利です:ここで暗示です。あなたが達成しようとしていることは難しいことではありませんが、あなたが試したことがうまくいかなかった理由を説明する*と*働く方法でそれを修正する方法。 – HPierce

答えて

1

を表示することでユーザ名を持っている場合?username=が実行して存在する場合さて、あなたがチェックすることができ:?

if(isset($_GET['username'])){ 
    // The user tried to access profile.php?username= 
}else{ 
    // The user went to profile.php 
} 
$_GETの詳細については

:あなたは常に.htaccessファイルを介してこれを処理するか、あなたが探しているフィールドの下に1が$で提供されていないようにリダイレクト機能を使用することができ
http://php.net/manual/en/reserved.variables.get.php

+0

これはうまくいきましたが、既にヘッダが送られていると言われました。 –

+0

これは 'header'を呼び出す前にすでに印刷してあるからです。 –

+0

私はob_start()を追加して修正しました。そのトップは悪い練習ですか? –

0

_REQUEST:

function RedirectToURL($url) { 
     header("Location: $url"); 
     exit; 
} 

しかし、私があなたを正しく理解しているとすれば、これはプログラミングが貧弱だと考えています。おそらく、あなたはprofile.phpページの代わりにリクエストヘルパーオブジェクトを使用することができます(フロントコントローラーを持っていない場合)。そこから、要求の詳細を操作して適切に反応することができます。

class RequestHelper { 
    private static $instance; 
    private static $properties; 

    public static function instance() { 
     if (is_null(self::$instance)) {self::$instance = new self();} 
     return self::$instance; 
    } 

    private function __construct() { 
     $this->init(); 
    } 

    protected function init() { 
     // updating properties with fields from submitted form. 
     if (isset($_SERVER['REQUEST_METHOD'])) { 
      self::$properties = $_REQUEST; 
     } 
    } 

    private function getProperty($key) { 
     if (isset(self::$properties[$key])) { 
      return self::$properties[$key]; 
     } 

     return null; 
    } 

    private function setProperty($key, $val) { 
     self::$properties[$key] = $val; 
    } 

    public function getUserName() { 
     return getProperty("username"); 
    } 
} 


echo RequestHelper::instance()->getUserName(); 

歓声

関連する問題