У меня есть эта функцияPHP код после IF не исполняется
public function logout() {
if ($this -> user_model -> is_logged() === TRUE) {
$user_id = $this -> user_model -> get_id();
if (get_cookie('cookie_name') != FALSE) {
delete_cookie('cookie_name');
$new_cookie = md5(sha1(rand() . time() . $user_id));
$this -> db -> set('cookie', $new_cookie);
$this -> db -> update('users') -> where('id = ' . "'" . $user_id . "'");
}
$this -> session -> unset_userdata('user_id');
echo "logged out? <a href=" . base_url() . ">click here</a>";
} else {
echo "no";
}
}
когда
if (get_cookie('cookie_name') != FALSE) {
верно и код внутри, если скобки выполняется, то остальные две строки кода:
$this -> session -> unset_userdata('user_id');
echo "logged out? <a href=" . base_url() . ">click here</a>";
Пока код if не выполняется, эти строки выполняются правильно.
Код внутри if выполнен правильно, потому что cookie удаляется и база данных обновляется.
Я использую Codeigniter 2.1.0, но я не думаю, что проблема была устранена.
Мой PHP версия 5.3 под локального хоста на Ubuntu 11.04
У меня трудное время после вашей проблемы. Когда выполняется внутреннее заявление If, следующие две строки кода не выполняются должным образом? Это то, что вы пытаетесь сказать? –
Возможно ли, что «обновление» имеет фатальную ошибку или «выход» или что-то в конце? Как насчет 'unset_userdata'? –
Я не совсем уверен, что вы можете связать команды db, как вы. Переместите предложение where на его вызов db ... $ this-> db-> где (""), а затем запустите $ this-> db-> update(). Опять же, я не уверен, что это неправильно. Я никогда не видел, чтобы это делалось именно так. –