Homepage Sicher? .PHP ( Metin2 Homepage )

03/29/2016 19:48 .SkyneT.#16
Grundsätzlich ist MySQLi sicher. PDO ist auch in Ordnung und bietet den Vorteil gleich ein paar Datenbanken mehr zu unterstützen ([Only registered and activated users can see links. Click Here To Register...]).

Sei "einfach" nur vorsichtig mit jeglichem User Input (immer escapen) und überleg dir, was du machen könntest, falls doch einmal etwas schief geht (z.B. Regelmäßige Backups auf einem anderen Server).
03/31/2016 23:13 xsrf#17
Hier ist zumindest SQL Injection gesichert.

PHP Code:
<?php 

class DB
{
    private 
$sql;
    private 
$result;
    private 
$exec;
    
    function 
__construct$database null )
    {
        
$this->sql = [MENTION=351728]new[/MENTIONMySQLiDB_HOSTDB_USERDB_PASS$database == null DB_BASE $database );
        
$this->sql->autocommitfalse );
        if( 
$this->sql->connect_errno )
        {
            
//change
            
die( "Unable to connect with the database. Error: " $this->sql->connect_errno .  " - " .   $this->sql->connect_error);
        }
    }
    
    public function 
Escape$post )
    {
        foreach(
$post as $key => $value)
        {
            
$value htmlspecialchars$value );
            
$value htmlentities$value );
            
$value strip_tags$value );
            
$value $this->sql->escape_string$value );
        }
        return 
$post;
    }
    
    public function 
Send $qry )
    {
        
$this->result self::Exec$qry );
        if( 
$this->sql->errno )
        {
            die( 
"Error: " $this->sql->errno .  " - " .   $this->sql->error);
        }
        return 
self::Result();
    }
    
    public function 
Send2 $qry )
    {
        
$this->result self::Exec$qry );
    }
    
    public function 
Commit()
    {
        if( 
$this->sql->errno )
        {
            
$this->sql->rollback();
            die( 
"Error: " $this->sql->errno .  " - " .   $this->sql->error);
        }
        
$this->sql->commit();
    }
    
    private function 
Exec$qry )
    {
        
$exec = @$this->sql->query$qry );
        return 
$exec;
    }
    
    private function 
Result()
    {
        if( 
$this->result != "1" )
        {
            
$arr = array();
            if (!
function_exists('mysqli_fetch_all')){
                
$arr['obj'] = [];
                while (
$row $this->result->fetch_assoc()) {
                    
$arr['obj'][] = $row;
                }
            }else {
                
$arr['obj'] = $this->result->fetch_all(MYSQLI_ASSOC);
            }
            
$arr['rows'] = $this->result->num_rows;
            return 
$arr;
        }
        else 
        {
            return 
3;
        }
    }
    
}
03/31/2016 23:40 debug​#18
1. niemals @ nutzen
2. @[Only registered and activated users can see links. Click Here To Register...] das ist nicht wirklich ein schönes oop modell
3. wozu das ganze escape wenn es prepared statements gibt?
04/01/2016 01:13 xsrf#19
Mag sein, dennoch sicher, war auch mehr zusammen gewürfelt.

@ wird genutzt um Fehler zu unterdrücken also warum nicht?

Naja um eben nicht dauerhaft die gesamten Calls zu machen.
04/08/2016 22:46 #Metho#20
Quote:
Originally Posted by xsrf View Post
Mag sein, dennoch sicher, war auch mehr zusammen gewürfelt.

@ wird genutzt um Fehler zu unterdrücken also warum nicht?

Naja um eben nicht dauerhaft die gesamten Calls zu machen.
Es bringt dir aber keinen Vorteil aus bereits kompletten Klassen weiter Abstrakten etc. zu erstellen; zumal der Ersteller nicht einmal Basiskenntnisse besitzt. Und dann adaptierst du noch Dinge wie htmlspecialchars etc., welche man eigentlich nur zur Ausgabe nutzt.
04/10/2016 21:39 KingDingD0ng#21
Quote:
Originally Posted by debug​ View Post
3. wozu das ganze escape wenn es prepared statements gibt?
^this

[Only registered and activated users can see links. Click Here To Register...] ist wärmstens zu empfehlen

Prepared Statements sind eigentlich der Standard und was anderes sollte meine Meinung nach auch garnicht/kaum genutzt werden.

Schau dir die Seite mal an. Dort ist alles nennenswertes von Conventions, über DesignPattern und vieles weiteres erläutert. Und das sogar in Englisch :)

Greetz