不允许用户访问profile.php,但允许他访问profile.php?username =

时间:2016-06-17 01:48:33

标签: php

我知道这个问题有点奇怪但我不希望用户在没有用户名的情况下访问profile.php。因为它显示用户名未定义的通知。无论如何我能做到吗?例如,用户点击用户名,他被重定向到profile.php?username = y,但我不想让他输入url profile.php。如果他这样做,我想将他重定向到另一页是可能的。我累了得到网址,如果它的profile.php只有我想重定向他,但如果它有?用户名在其中我想显示个人资料页面

2 个答案:

答案 0 :(得分:1)

你可以通过以下方式检查?username=是否存在:

if(isset($_GET['username'])){
    // The user tried to access profile.php?username=
}else{
    // The user went to profile.php
}

有关$_GET的更多信息:
http://php.net/manual/en/reserved.variables.get.php

答案 1 :(得分:0)

你总是可以通过.htaccess文件来处理这个问题,或者在$ _REQUEST中没有提供你正在寻找的字段下面的重定向函数:

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

但是,如果我理解你,我认为这将是糟糕的编程。也许您可以在profile.php页面中使用Request Helper对象(如果您没有前端控制器)。从那里,您将能够操纵请求详细信息并做出适当的反应。这是一个消化:

    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();

欢呼声