Я предлагаю небольшую перестановку кода для enter()
, которая обеспечивает лучший тест для имени пользователя с использованием чуть-чуть меньшего кода.
function enter()
{
if(empty($this->session->userdata('username')))
{
//base_url() accepts URI segments as a string.
redirect(base_url('main/login'));
}
// The following code will never execute if `redirect()` is called
// because `redirect()` does not return, it calls `exit` instead.
// So, you do not need an `else` block
echo '<h2> Welcome- '.$this->session->userdata('username').'</h2>';
echo '<a href="'.base_url().'main/logout">Logout</a>';
}
empty()
будет true
для пустой строки, NULL
, False
и пару других вещей.В этом случае вас больше всего интересует пустая строка или NULL
.(empty()
документация ЗДЕСЬ .)
Возможно, вы захотите добавить «trim» в ваши правила проверки, потому что он удаляет пустые пробелы из входной строки.Это исключит возможность того, что кто-то попытается ввести имя пользователя, используя только пробелы.
В противном случае ваш код должен работать.Если это не так, то, скорее всего, у вас не настроены сеансы CodeIgniter должным образом.На вопросы о переполнении стека можно найти ответы на многие вопросы по настройке сеанса.