Autor Zpráva
Michales
Profil
Ahoj, potřeboval bych radu co mám špatně v následujících funkcích:
public function load() {
        
        $this->userdata['is_logged'] = false;
        
        if ($this->token != null) {
            $presult = mysql_query("SELECT `user`, `time` FROM `" . $this->db_prefix . "users_token` WHERE `token` = '" . mysql_real_escape_string($_COOKIE['user_token']) . "' LIMIT 1");
            if (mysql_num_rows($presult) > 0) {
                $pdata = mysql_fetch_assoc($presult);
                $this->userdata['is_logged'] = true;
                if ($pdata['time'] > time() - $this->lifetime) {
                    $data = mysql_fetch_assoc(mysql_query("SELECT * FROM `" . $this->db_prefix . "uzivatele` WHERE `id` = '" . $pdata['user'] . "' LIMIT 1"));
                    foreach ($data as $key => $val) {
                        $this->userdata[$key] = $val;
                    }
                } else {
                    $this->userdata['id'] = $pdata['user'];
                    $this->logout();
                }
            }
        }
        
        return $this->userdata;
        
    }

public function is_admin() {
        
        return $this->is_logged() && $this->userdata['admin'] == 1;
        
    }
    public function is_textar() {
        
        return $this->is_logged() && $this->userdata['admin'] == 2;
        
    }
Pokud admin=1 znamená to že je to hlavní administrátor, pokud admin=2 je to textař.
Ovšem když u uživatele v db do sloupce admin dosadím 2 má stejné funkce jako hlavní admin.
Nenalezám co je špatně že se tak děje.


Pak to volám pomocí:
Administrátor:
$_SESSION['admin'] = $user->admin ;
                               if($_SESSION['admin'] == true) {

pro textaře:
$_SESSION['admin'] = $user->textar ;
                               if($_SESSION['admin'] == true) {
Kcko
Profil
A kde máš volání is_admin nebo is_textar? Nebo je to magická metoda přes __call a je to vlastně ->admin nebo ->textar?

Já bych si tu funkci teda udělal jinak.

public function getUserStatus()
{
    if (!$this->is_logged())
    return FALSE;
    
    if ($this->userdata['admin'] == 1)
      return 'admin';

    if ($this->userdata['admin'] == 2)
      return 'textar';


}

.
.
.
$_SESSION['admin'] = $this->getUserStatus();

if ($_SESSION['admin'] == 'admin') {} // admin
if ($_SESSION['admin'] == 'textar') // textar
Michales
Profil
Kcko:
Pochopil jsem byla to má chyba, díky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: