2013-11-30 2 views
0

Я работаю с фреймворком Codeigniter PHP. У меня есть типичный диспетчер страниц для отображения страниц. Я также добавил код для хранения в переменной сеанса, в которой страница была пользователем перед входом в систему. Дело в том, что я получаю параметр «favicon.ico», который не имеет никакого смысла, потому что страница, которая была вызвана, была «login» и хорошо отображена после этого.Codeigniter - Weird параметр 'favicon.ico'

Сначала как временное решение. Я проверил переменную $ 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', это не работает. Это безумие.

ответ

1

браузер посылает запрос на веб-сервер

GET /favicon.ico HTTP/1.1 

для извлечения Favicon. Вы можете изменить местоположение значка с тегом ссылки, как описано в статье wikipedia.

Попробуйте переместить file_exists перед установкой данных сеанса? Веб-приложение должно будет иметь возможность обрабатывать недостающие ресурсы и возвращать соответственно 404.

+0

Спасибо, имеет смысл. – beerLantern

Смежные вопросы