Приветствую!
Движок сайта построен по MVC.
Есть страница сайта, на которой есть форма регистрации.
Адрес страницы registration.html формируется из контроллера Login.php, функция страницы registration().
public function registration() {
return View::fetch($this->template_dir . 'registration');
}
Получается адрес страницы регистрации
https://site.ru/Login/registration.html
На странице
https://site.ru/Login/registration.html
есть форма регистрации, которая обрабатывается другим контроллером: Connectemail.php, функция send_mail().
В функцию send_mail() передаются параметры формы и форма отрабатывает.
<form method="post" action="/Connectemail/send_mail">
<input type="text" name="user_email" />
<input type="text" name="user_name" />
</form>
Так же функцию формы можно запустить отдельно
https://site.ru/Connectemail/send_mail.html?user_name=vaska&user_email=main-email@narod.ru
Вопрос: как запретить ссылке
https://site.ru/Connectemail/send_mail.html?user_name=vaska&user_email=main-email@narod.ru
отрабатывать самостоятельно, за пределами страницы с формой, которая находится по адресу
https://site.ru/Login/registration.html
?
Допустим в контроллере Connectemail.php функция send_mail()
я определяю контроллер и разрешаю работу функции только на странице контроллера Login.php
public function send_mail() {
//разрешаю работу функции только на странице контроллера Login.php
$controller=request()->controller();
if ($controller != 'Login') {
echo lang('Системная ошибка');
exit;
}
// бла-бла, код функции
}
Но тогда функция перестаёт работать везде.
Далее пробовал сделать так:
В контроллере Connectemail.php, функция send_mail() разрешаю работу функции только на странице контроллера Login.php в котором я указал define("LOGIN_VERIFY_MODE", true);
public function send_mail() {
//разрешаю работу функции только на странице контроллера Login.php у которого я указал define("LOGIN_VERIFY_MODE", true);
if (!defined("LOGIN_VERIFY_MODE")) {
header("HTTP/1.1 404 Not Found");
echo "Not Found";
exit(1);
}
// бла-бла, код функции
}
Но функция send_mail(), в контроллере Connectemail.php не видит в контроллере Login.php прописанный define("LOGIN_VERIFY_MODE", true);.
Что я делаю не так?
Заранее спасибо за ваш отклик.