(29-10-2014, 22:31)msx83 napisał(a): Witam.Wiem o to chodzi, jednak jeśli spróbuję umieścić w widoku zmienną i wysłać do niej wynik funkcji, to jest ona wyrzucana nad <html>. Wiem, że ten kod nie jest jeszcze dopracowany - zmieniałem go już kilka razy, sprawdzając, czy zadziała. Dlatego na razie traktuję go raczej jako szkielet, niż gotowy kod:
Nie kontroler umieszczasz w layoucie tylko na odwrót. Jak sama nazwa wskazuje kontroler, kontroluje czy jesteś zalogowany czy nie (ciasteczko ustawione lub brak ciastka) i na tej podstawie wyświetla odpowiednie div-y (layout, formularz rejestracyjny lub logowania).
Pokarz kod, to może ktoś pomoże.
Pozdrawiam
Kod PHP:
function log_user(){
$this->load->database();
$this->load->library('form_validation');
$this->load->library('code_cookie');
//Jeśli istnieje plik cookie
if(isset($_SESSION['log']) ) {
$login = $this->code_cookie->uncode_id($_COOKIE['log'] );
$pass = $this->code_cookie->uncode_pass($_COOKIE['log'] );
$query = $this->db->query("SELECT login, password FROM register WHERE login='" .$login. "' AND password='" .$pass. "'");
if($query->num_rows == 1){
echo 'Witaj ' . $login . "<br />";
$this->load->view('user_menu');
} else {
setcookie("log", "", 0);
}
} else {
if(isset($_COOKIE['log']) ){
$login = $this->code_cookie->uncode_id($_COOKIE['log'] );
$pass = $this->code_cookie->uncode_pass($_COOKIE['log'] );
$query = $this->db->query("SELECT login, password FROM register WHERE login='" .$login. "' AND password='" .$pass. "'");
if($query->num_rows == 1){
echo 'Witaj ' . $login . "<br />";
$this->load->view('user_menu');
} else {
setcookie("log", "", 0);
}
} else {
echo 'Witaj <b> Nieznajomy</b><br />';
echo "<a href='register'>Zarejestruj się</a> | <a href='login'>Zaloguj</a><br /><a href='remmember-password'>Nie pamiętam hasła</a>";
}
}
}
function test(){
$this->load->view('testowy');
}
function index(){
$data = array(
'log' => $this->test()
);
$this->load->view('themes', $data);
}
Na tym przykładzie nawet widać, że próbowałem wywołać testową funkcję z samym widokiem, niestety... nic to nie dało.