Я работаю с фреймворком Codeigniter PHP. У меня есть обычный диспетчер страниц для отображения страниц. Я также добавил код для хранения в переменной сеанса, в которой страница была пользователем перед входом в систему. Дело в том, что я получаю параметр «favicon.ico», который не имеет никакого смысла, потому что страница, которая была вызвана, была «login» и хорошо отображена после этого.
Сначала, как временное решение, я проверил переменную $ page для «favicon.ico», и было странно, что после проверки ее у меня внутри переменной $ page «login». Это было очень странно, мне пришлось сделать вторую проверку на странице входа, как вы видите здесь, чтобы заставить ее работать. :
public function view($page = 'index') { if($page != 'favicon.ico'){ if($page != "login"){ $this->session->set_userdata('actual_page', $page); } } if ( ! file_exists('application/views/pages/'.$page.'.php')) { // Whoops, we don't have a page for that! $page="error"; } // guardamos la página actual en la sesión $data['title'] = ucfirst($page); // Capitalize the first letter $this->load->view('templates/header', $data); $this->load->view('pages/'.$page, $data); $this->load->view('templates/footer', $data); }
Мой вопрос: что происходит? Почему, если я проверяю только $ page == 'login', это не работает. Это безумие.
Браузер отправляет запрос на ваш веб-сервер
GET /favicon.ico HTTP/1.1
чтобы получить Favicon . Вы можете изменить местоположение значка с тегом ссылки, как описано в статье wikipedia.
Попробуйте перенести проверку file_exists
перед установкой данных сеанса? Веб-приложение должно будет иметь возможность обрабатывать недостающие ресурсы и возвращать соответственно 404.