Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele

[es] :: PHP :: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele

[ Pregleda: 2930 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

malamalla
Dragana Marusic
Krusevac

Član broj: 311721
Poruke: 5
*.dynamic.isp.telekom.rs.



Profil

icon Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele04.02.2013. u 08:46 - pre 135 meseci
Code:

$upit = "SELECT * FROM TABLENAME WHERE USERNAME=(uneti username sa forme za prijavu) AND PASSWORD=(uneti password sa forme za prijavu)";
$temp = $upit->fetch(PDO::FETCH_ASSOC); //Pravi niz
        $_SESSION['id'] = $temp['id']; //Pravi sesijsku varijablu gde je id=id-ju dobijenog reda iz tabele


Sada mi treba
Code:
 $upit = ("Select username from TABLENAME where id=" . $_SESSION['id']);
$izraz = $dbh->query($upit);
                $obj = $izraz->fetch(PDO::FETCH_ASSOC);
                $ime = $obj['username'];
                echo "<p id='bbb'><b >$ime</b>:dobrodosli


Dakle, meni treba username gde je id=$_SESSION['id'];
U CodeIgniter-u



[Ovu poruku je menjao malamalla dana 04.02.2013. u 12:53 GMT+1]
 
Odgovor na temu

malamalla
Dragana Marusic
Krusevac

Član broj: 311721
Poruke: 5
*.dynamic.isp.telekom.rs.



Profil

icon Re: Codeigniter problem-kreiranje sesijske varijable04.02.2013. u 10:19 - pre 135 meseci
Imam tabelu sa 3 kolone (id, username i password). Hocu da uzmem username sa odredjenim id-jem.

Code:
$this->db->where('id', '3');
//here we select every clolumn of the table
$q = $this->db->get('my_users_table');
$data = $q->result_array();

echo($data[0]['age']);


E sad kako uzeti username gde je id jednak id-ju jedne vrste u tabeli a ne broju 3 kao u ovom slucaju (kada se ukuca pravilan username i password na stranici za prijavu, dobija se jedan red u tabeli, e iz tog reda hocu da uzmem username).

[Ovu poruku je menjao malamalla dana 04.02.2013. u 12:53 GMT+1]
 
Odgovor na temu

Nemke_BG

Član broj: 163822
Poruke: 341
*.static.sbb.rs.

Jabber: Nemke_BG@elitesecurity.org
Sajt: https://www.nmdesign.rs


+45 Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele05.02.2013. u 10:47 - pre 135 meseci
Ubi me ako sam ja ista skapirao sta je tvoj problem ovde
...
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.isp.telekom.rs.



+373 Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele05.02.2013. u 11:01 - pre 135 meseci
Code (php):

$this->db->where('id', $_SESSION['id']);


I za username:
Code (php):

echo($data[0]['username']);
 
 
Odgovor na temu

malamalla
Dragana Marusic
Krusevac

Član broj: 311721
Poruke: 5
*.dynamic.isp.telekom.rs.



Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele05.02.2013. u 11:22 - pre 135 meseci
Dakle hocu da napravim login formu da kada se korisnik uloguje, na drugoj strani da kaze "Dobrodosli (username)".

Imam tabelu sa npr. 3 kolone (id, username i pasword). Kada se korisnik uloguje, ako su ispravni username i password - if ($query->num_rows() == 1) - "aktivan" je taj red u tabeli.
Mislila sam da napravim jedan niz koji ce pamtiti taj jedan red u tabeli koji ce se pamtiti npr. u varijabli $niz

Dakle nesto ovako: $niz = $query->result_array();
Sve u cilju da bih kasnije mogla da zadam upit tipa "SELECT * FROM KORISNICI WHERE ID=".$niz['id']; (da bih obelezila taj red).

Probala sam nesto ovako ali ne ide...

Model:

Code:
<?php

class LoginModel extends CI_Model
{
    public function login($user, $pass)
    {
        $this->db->where('username', $user);
        $this->db->where('password', md5($pass));
        
        $query = $this->db->get('korisnici');
        
        
        if ($query->num_rows() == 1)
        {
            $obj = array();
            foreach ($query->result() as $row) {
                $obj[] = $row;
                return $obj;
                $this->getData($obj);
            }
            return TRUE;
        }
        else            return FALSE;
    }
    
    public function getData($obj)
    {
      
        $this->db->where('id', $obj['id']);  
    $upit = $this->db->get('korisnici');
       return $upit->result();
    }
}

?>


View:

Code:
<div id="pocetak">
                <?php
                foreach ($records as $rec){
                     echo "<p id='bbb'><b >" .$rec->username. "</b>:dobrodosli</p>";
                }
               
                ?>


Controller:

Code:
public function checkAdmin()
    {
        $this->load->model('LoginModel');
        $data['records'] = $this->LoginModel->getData($obj);
        
        $this->load->view('pocetna_admin', $data);
    }


prikazuje mi gresku:
Code:
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: obj
Filename: controllers/LoginController.php
Line Number: 50


U prvom postu sam objasnila kako bi to trebalo da izgleda, nesto proceduralnog tipa i to tako radi.
Sada mi treba isto to, samo kroz CodeIgniter.

Nadam se da je sada malo jasnije.
Hvala na odgovoru.
 
Odgovor na temu

Nemke_BG

Član broj: 163822
Poruke: 341
*.static.sbb.rs.

Jabber: Nemke_BG@elitesecurity.org
Sajt: https://www.nmdesign.rs


+45 Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele05.02.2013. u 16:05 - pre 135 meseci
Nisam siguran da te i dalje razumem, ali ako je ono sto mislim da jeste onda iskoristi CI-jeve session varijable:

http://ellislab.com/codeignite...-guide/libraries/sessions.html

Code:

    $newdata = array(
                   'username'  => 'johndoe',
                   'email'     => '[email protected]',
                   'logged_in' => TRUE
               );
    $this->session->set_userdata($array);

    $session_id = $this->session->userdata('session_id');

...
 
Odgovor na temu

Memla

Član broj: 299610
Poruke: 6
*.adsl-a-1.sezampro.rs.



+11 Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele05.02.2013. u 18:31 - pre 135 meseci
Pa pise ti gde je greska. Da bi ti ovo radilo moras prvo da napravis formular za login recimo:

Code:

<form action="controller/checkAdmin" method="post" >
    <input type="text" name="username" />
    <input type="text" name="password" />
</form>


A onda kontroller mora da prihvati unos iz tog formulara:

Code:

public function checkAdmin()
{
    $obj['username'] = $this->input->post('username');
    $obj['password'] = md5($this->input->post('password'));

    $this->load->model('LoginModel');
    $data['records'] = $this->LoginModel->getData($obj);
         
    $this->load->view('pocetna_admin', $data);
}


Model:

Code:

public function getData($obj)
{
    return $this->db
             ->where('username', $obj['username'])
             ->where('password', $obj['password'])
             ->get('korisnici')->result();
}


Ovo je, naravno, uzasan nacin da se postigne to sto ti pokusavas :)
 
Odgovor na temu

svepomalo

Član broj: 306404
Poruke: 196



+21 Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele05.02.2013. u 19:07 - pre 135 meseci
@Memla

A koji je najbolji moguci nacin da se ovo uradi?
Ne vidim da nesto fali osim sanitizacije promenljivih.
 
Odgovor na temu

Memla

Član broj: 299610
Poruke: 6
*.adsl-a-1.sezampro.rs.



+11 Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele05.02.2013. u 20:14 - pre 135 meseci
Najbolji nacin je da se koristi neka oprobana auth biblioteka poput Ion Auth-a.
Ako devojka ovo pise cisto u edukativne svrhe, onda mogu da kazem da bi login trebalo da ide preko CI biblioteke za validaciju, zajedno sa onim sto je Nemke napisao. Znaci, sve dok unos nije validan korisniku prikazati login formular. Kad prodje validaciju onda obrada unosa i stavljanje u sesije itd.

Sto se tice sitnijih detalja, pored sanitacije ne valja to sto login() metod pretrazuje bazu korisnika prema username i password polju. Onda, ako nadje unos, koristi ga da bi pronasao taj isti unos uz pomoc id polja. Sve to zapravo ne radi jer je return $obj pozvan direktno pre getData($obj). MD5 nikako nije adekvatan za sifre, itd. Nije to bitno, doduse. Za pocetak bi bilo bolje opisati sta treba na srpskom, jer ako ne neko ne zna CI tesko da ce dobro da ilustruje problem putem CI koda. :)
 
Odgovor na temu

verodostojan

Član broj: 252511
Poruke: 110
*.ptt.rs.



+9 Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele05.02.2013. u 20:39 - pre 135 meseci
Citat:
Memla: Najbolji nacin je da se koristi neka oprobana auth biblioteka poput Ion Auth-a.
Ako devojka ovo pise cisto u edukativne svrhe, onda mogu da kazem da bi login trebalo da ide preko CI biblioteke za validaciju, zajedno sa onim sto je Nemke napisao. Znaci, sve dok unos nije validan korisniku prikazati login formular. Kad prodje validaciju onda obrada unosa i stavljanje u sesije itd.

Sto se tice sitnijih detalja, pored sanitacije ne valja to sto login() metod pretrazuje bazu korisnika prema username i password polju. Onda, ako nadje unos, koristi ga da bi pronasao taj isti unos uz pomoc id polja. Sve to zapravo ne radi jer je return $obj pozvan direktno pre getData($obj). MD5 nikako nije adekvatan za sifre, itd. Nije to bitno, doduse. Za pocetak bi bilo bolje opisati sta treba na srpskom, jer ako ne neko ne zna CI tesko da ce dobro da ilustruje problem putem CI koda. :)


Pre svega ja sam CI pocetnik, takodje mozda ovo nije najbolji nacin organizacije koda...

Napravila sam ja login formu ali nisam htela ovde da prikazujem ceo view. Takodje, login ide preko biblioteke za validaciju (form_validation), takodje nisam prikazivala ceo controller.
dakle...

Controller:

Code:
<?php

class LoginController extends CI_Controller
{
    public function index()
    {
        $this->load->view('login');
    }
    
    public function validate_form()
    {
        $this->form_validation->set_rules('korisnik', 'Username', 'trim|required|xss_clean');
        $this->form_validation->set_rules('lozinka', 'Password', 'trim|required|md5|callback_verifyUser');
        
        $data = array ('admin' => 1, 'user' =>2);
        
        $this->session->set_userdata($data);
        
    
        if ($this->form_validation->run())
        {
            redirect('LoginController/checkSession');
                   
            }
        else
        {
            $this->load->view('login');
        }
    }
    
    public function checkSession() // Ovo sa sesijama mozda nije najbolje odradjeno
    {
        if ($this->session->userdata('admin') == 1)
        {
            redirect('LoginController/checkAdmin');
        }
        elseif ($this->session->userdata('user') == 2) {
        
            redirect('LoginController/checkUser');
    }
    else
    {
        $this->load->view('restricted');
    }
    }
    
    public function checkAdmin()
    {
        $this->load->model('LoginModel');
        $data['records'] = $this->LoginModel->getData();
        
        $this->load->view('pocetna_admin', $data);
    }

    public function verifyUser($user, $pass)
    {
        $user = $this->input->post('korisnik');
        $pass = $this->input->post('lozinka');
        
        $this->load->model('LoginModel');
        
        if ($this->LoginModel->login($user, $pass))
        {
           return TRUE;
        }
        
 else {
            $this->form_validation->set_message('verifyUser', 'Incorrect username/password. Please try again.');
            return FALSE;
     
 }
                
    }
        
}

?>


Ceo view login:

Code:
<html>
    
 <head>
        <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
        <title>Telefonski imenik</title>

        <link href=<?php echo base_url()."css/login-box.css"; ?> rel='stylesheet' type='text/css' />
    </head>

    <body>
        <div style='padding: 100px 0 0 250px;'>
            <div id='login-box'>
                <h2>Telefonski imenik</h2>
                <br />
                <br />
                
                <?php echo validation_errors(); ?>
               <?php echo form_open('LoginController/validate_form'); ?>
                    <div id='login-box-name' style='margin-top:20px;'>Username:</div><div id='login-box-field' style='margin-top:20px;'><input name='korisnik' class='form-login' title='korisnik' size='30' maxlength='2048' /></div>
<div id='login-box-name'>Šifra:</div><div id='login-box-field'><input name='lozinka' type='password' class='form-login' title='lozinka' size='30' maxlength='2048' /></div>
<br />

<br />
<br />
<input background:url('images/login-btn.png') no-repeat; border: none; width='103' height='42' style='margin-left:90px;'  type='submit' value='Pošalji'>
<?php echo form_close(); ?>

</div>
</div>
</body>
</html>


Ceo view Pocetna_admin:

Code:
    <html>
        <head>
            <title>Telefonski imenik</title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <link href = <?php echo base_url(). 'css/style.css';  ?>  rel="stylesheet" type="text/css"  media="screen" />
        </head>
        <body>

            <div id="okvir">
                <div id="vrh"> </div>
                <div id="pocetak">
                <?php
                foreach ($records as $rec){
                     echo "<p id='bbb'><b >" .$rec->username. "</b>:dobrodosli</p>";
                }
               
                ?>
                <a id="log" href="logout.php">LOGOUT</a>
                </div>

            <div id="meni" id="nav">
                <ul>
                   <li><a href="pocetna.php">Početna</a></li>
                    <li><a href="imenik.php">Imenik</a
                    <li><a href="administracija.php">Administracija</a></li>
                    <li><a href="kontakt.php">Kontakt</a></li>
                </ul>
            </div>

            <div id="sadrzaj" >

                <h1>Početna strana - Dobrodošli</h1>
                <hr><br/><br/><br/>
                
            </div>

            <div id="kraj">
                Dragana Marusic
            </div>

            <div id="ppp"> </div>

        </div>

    </body>
</html>



Gledala sam teke CI tutorijale na YouTube-u (phpacademy) i pokusala da napravim jedan telefonski imenik.
@memla Da li postoji neki bolji nacin posto bi mi pomoc na pocetku ucenja svakako trebala?

U svakom slucaju hvala vam svima na pomoci.

 
Odgovor na temu

malamalla
Dragana Marusic
Krusevac

Član broj: 311721
Poruke: 5
*.dynamic.isp.telekom.rs.



Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele06.02.2013. u 08:20 - pre 135 meseci
Sorry, sinoc sam odgovorila sa bratovog racunara, nisam ni videla da je on bio ulogovan.
 
Odgovor na temu

Nemke_BG

Član broj: 163822
Poruke: 341
*.static.sbb.rs.

Jabber: Nemke_BG@elitesecurity.org
Sajt: https://www.nmdesign.rs


+45 Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele06.02.2013. u 12:36 - pre 135 meseci
Tu gde radis login

Code:

        if ($this->LoginModel->login($user, $pass))
        {
           return TRUE;
        }


ubacis gore cuvanje id-a u onim gore pomenutim CI sesijama i to ti je resenje.
...
 
Odgovor na temu

malamalla
Dragana Marusic
Krusevac

Član broj: 311721
Poruke: 5
*.dynamic.isp.telekom.rs.



Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele13.02.2013. u 07:37 - pre 135 meseci
Resila sam problem, ali nisam uspela da ga resim onako kako sam ja zamislila.
Code:
function index()
    {
        $this->form_validation->set_rules('korisnik', 'Username', 'trim|required|xss_clean');
        $this->form_validation->set_rules('lozinka', 'Password', 'trim|md5|required|xss_clean|callback_verify_password');
        
        if ($this->form_validation->run())
        {
            redirect('Home');
        }
 else {
            $this->load->view('login_view');
 }
    }
            
    function verify_password($user, $pass)
        {
            $user = $this->input->post('korisnik');
            $pass = $this->input->post('lozinka');
            
            $result = $this->LoginModel->login($user, $pass);
            
            if ($result)
            {
                $sess_array = array();
                foreach ($result as $row)
                {
                    $sess_array = array(
                        'ime' => $row->ime, 'username' => $row->username
                    );
                }
                
                $this->session->set_userdata('logged_in', $sess_array);
                return TRUE;
                }
 else {
     
                    $this->form_validation->set_message('verify_password', 'GREŠKA. Uneto je pogrešno 
                        korisničko ime ili lozinka. Molimo pokušajte ponovo.');
                    return FALSE;
 }
        }


Zatim controller "Home" proverava da li je kreirana sesija i ako jeste prosledjuje vrednosti u view:

Code:
<?php
session_start();
class Home extends CI_Controller
{
    function __construct() {
        parent::__construct();
    }
    
    function index()
    {
        if ($this->session->userdata('logged_in'))
        {
            $temp = $this->session->userdata('logged_in');
            $obj['username'] = $temp['username'];      
            $obj['ime'] = $temp['ime'];
            $this->load->view('welcome', $obj);
        }
 else {
            $this->load->view('restricted');
 }
    }


Hvala na pomoci.
 
Odgovor na temu

Nemke_BG

Član broj: 163822
Poruke: 341
*.static.sbb.rs.

Jabber: Nemke_BG@elitesecurity.org
Sajt: https://www.nmdesign.rs


+45 Profil

icon Re: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele13.02.2013. u 15:20 - pre 135 meseci
Mislim da ti je visak

Code:

session_start();


Na pocetku Home kontrolera.
...
 
Odgovor na temu

[es] :: PHP :: Codeigniter problem-varijabla treba da pamti polje "id" iz reda tabele

[ Pregleda: 2930 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.