Задать вопрос
worldlight
@worldlight
Просто программист

Help с роутером PHP?

Здравствуйте, у меня есть роутер который обрабатывает URl и взависемости от него показывает юзеру выбранную страницу но есть две проблемы: 1. Как сделать чтобы роутер инклудил 404.php если юзер ввел неправильный URl? 2. Я хочу сделать общедоступный профиль пользователя, где вся информация будет выводится взависемости от GET параметра типа: "q=*тут ник юзера*" но когда я указываю GET параметр роутер выводит ошибку что, страница с таким URL не найдена, помогите, как решить?

Код роутера:
/*
* Holds the registered routes
*
* @var array $routes
*/
$routes = [];

class Route {

	/**
	* Register a new route
	*
	* @param $action string
	* @param \Closure $callback Called when current URL matches provided action
	*/
	public static function get($action, Closure $callback)
	{
	    global $routes;
	    $action = trim($action, '/');
	    $routes[$action] = $callback;
	}

	/**
	* Dispatch the router
	*
	* @param $action string
	*/
	public static function dispatch($action)
	{
	    global $routes;
	    $action = trim($action, '/');
	    $callback = $routes[$action];

	    echo call_user_func($callback);
	}
}


Формат запроса для роутера:
Route::get('/URL', function() {
    *Код*
});
...
$action = $_SERVER['REQUEST_URI'];
Route::dispatch($action);


Мой код реализации общедоступного профиля:
Route::get('/profile?q=', function() {
    include 'includes/profile.php?q=$_POST['username']';
});

$action = $_SERVER['REQUEST_URI'];
	Route::dispatch($action);


P.S: я пробовал много разных способ но все равно не получалось. Более опытные веб-разработчики поделитесь опытом.
  • Вопрос задан
  • 155 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Stalker_RED
@Stalker_RED
На первый вопрос легко ответить:
$isCorrect = myCheck($uri); 
// саму проверку придется вам написать
// мне отсюда же не видно какие вы считаете правильными, а какие неправильными.
if (!$isCorrect) {
  include '404.php';
}


У вас там наверняка ошибка типа
не найден файл includes/profile.php?q=$_POST[...
вот ее и решите для начала.

Весело, наверное, изучать классы и роутинг не умея в конкатенацию строк и кавычки.
А потом, у вас точно есть файл "includes/profile.php?q=Vasya"? Или что вы собрались инклудить?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы