Avatar billede kasbas91 Nybegynder
11. april 2011 - 19:25 Der er 14 kommentarer og
1 løsning

Hej jeg har en database class som jeg har lavet, men jeg er ikke helt sikker på om den er okay.

Hej eksperten.dk

Hej jeg har en database class som jeg har lavet,

men jeg er ikke helt sikker på om den er okay.

Jeg er ikke sikker på om den er sikker.

Da man ikke skal kunne få adgang til oplysningerne...

Scripten ligger på pastebin.com:

http://pastebin.com/ac0zNNQe

Og hvordan man kan gøre den bedre...

Tak :)
Avatar billede arne_v Ekspert
11. april 2011 - 20:25 #1
1) public fields er ikke godt
2) session og saet af connection oplysninger (og det er stort set hele koden) virker alt for komplekst i forhold til hvad koden goer
Avatar billede kasbas91 Nybegynder
11. april 2011 - 20:43 #2
Okay, hvad vil du så forslå at jeg skal gøre istedet..
Avatar billede kasbas91 Nybegynder
11. april 2011 - 20:47 #3
Hva så med den her version af den...

Skal jeg dele tingene mere op eller hvad mener du :)

http://pastebin.com/Vd7eZi8z
Avatar billede arne_v Ekspert
11. april 2011 - 20:52 #4
Hvad goer den kode som ikke kunne opnaaes ved bare at have en constructor?
Avatar billede kasbas91 Nybegynder
11. april 2011 - 21:04 #5
Den gør nok ikke den stor forskel.. Tænkte bare det ville væke sikre.

Men nu har jeg slette det og køre det i construct:

http://pastebin.com/Khyw3dw8
Avatar billede arne_v Ekspert
11. april 2011 - 21:09 #6
Er start_session og set_session noedvendige?

Har du brug for at gemme server/db/user/pass?
Avatar billede arne_v Ekspert
11. april 2011 - 21:09 #7
Du kan overveje at putte default vaerdier paa parameterne til constructoren.
Avatar billede arne_v Ekspert
11. april 2011 - 21:10 #8
Og du kan overveje om echo af en fixed text er fleksibelt nok for fejlbeskeder.
Avatar billede kasbas91 Nybegynder
11. april 2011 - 21:35 #9
Okay ja men hvad med den her, nu gemmer jeg ikke noget..


class Database {
   
    private $mysqli;
   
    private $config, $bool = false, $session_id;
   
    public function __construct($set_host, $set_user, $set_pass, $set_name)
    {
        if ($this->set_session())
        {           
            $this->mysqli  = new mysqli($set_host, $set_user, $set_pass, $set_name);   
           
            if ($this->mysqli->connect_error)
            {
                die('Your connection are closed, because some information was false.' . $this->mysqli->connect_error);
            }
        }
    }
   
    private function set_session()
    {
        ob_start();
       
        return session_start();
       
        $this->session_id = session_id();
       
        if (strlen($this->session_id) >= 1)
        {
            return true;
        }
    }
}   
$database = new Database('localhost','root','root','framework');
Avatar billede kasbas91 Nybegynder
11. april 2011 - 21:38 #10
Okay men er den her sikker nok.. :)


class Connection {
   
    private $mysqli;
   
    public function __construct($set_host, $set_user, $set_pass, $set_name)
    {
        if ($this->set_session())
        {       
            $this->mysqli = new mysqli($set_host, $set_user, $set_pass, $set_name);   
           
            if ($this->mysqli->connect_error)
            {
                die('Your connection are closed, because some information was false.' . $this->mysqli->connect_error);
            }
        }
    }
   
    private function set_session()
    {
        ob_start();
       
        session_start();
       
        if (strlen(session_id()) >= 1)
        {
            return true;
        }
    }
}   
$database = new Connection('localhost','root','root','framework');
Avatar billede arne_v Ekspert
11. april 2011 - 21:47 #11
Der er ikke noget sikkerheds problem i den kode.

Der er stadig de to ting at overveje.
Avatar billede kasbas91 Nybegynder
11. april 2011 - 22:02 #12
Jeg har lavet den om... Har fjernet session...
Avatar billede kasbas91 Nybegynder
11. april 2011 - 22:08 #13
Men du må lægge et svar og tak for din hjælp...

Den ser nu således ud:


class Connection {
   
    private $mysqli;
   
    public function __construct($set_host, $set_user, $set_pass, $set_name)
    {
        $this->mysqli = new mysqli($set_host, $set_user, $set_pass, $set_name);   
           
        if ($this->mysqli->connect_error)
        {
            die('<pre style="text-align:center;">Your connection are closed, because some information was false. </pre><pre style="text-align:center;">' . $this->mysqli->connect_error . '</pre>');
        }
    }
}   

$database = new Connection(DBHOST, DBUSER, DBPASS, DBNAME);


Og den er sikker nok...
Avatar billede arne_v Ekspert
11. april 2011 - 23:04 #14
svar
Avatar billede arne_v Ekspert
11. april 2011 - 23:05 #15
Jeg synes stadig at nogle default samt en mere fleksibel fejl haandtering kunne vaere smart.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester