Register for your free account! | Forgot your password?

You last visited: Today at 16:54

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release] Datenbankklasse *NEW*

Discussion on [Release] Datenbankklasse *NEW* within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.

Reply
 
Old   #1
 
xsrf's Avatar
 
elite*gold: 0
Join Date: May 2012
Posts: 870
Received Thanks: 642
[Release] Datenbankklasse *NEW*

Eine kleine Datenbankklasse, welche die Möglichkeit des manuellen Bestätigen der Querys bietet.

Features
  • manueller commit
  • rollback-Funktion
  • 100% anpassbare Querys
  • Ausgabe der Treffer
  • Escape Funktion für Objekte ( Arrays oder einzelne Werte )

Beispiele

Aufrufe:

PHP Code:
$a = new DB;
$t $a->Escape"Dasda" );
$i = ["Gentros""noob3""malibu"];
$z $a->Escape$i );
$b $a->Querysprintf"SELECT TOP 100 * FROM ACCOUNT_DBF.dbo.ACCOUNT_TBL WHERE account = '%s'""Gentros" ) );
$c $a->Rows();
$d $a->Fetch(); 
Ausgabe: mittels <pre>print_r()</pre>

Quote:
0x4461736461

1

Array
(
[1] => Array
(
[account] => Gentros
[password] => af832abc0addb03f90d3be5e2caedafe
[isuse] => F
[member] => A
[id_no1] => deee67702a81a5516432142f08c8343b
[id_no2] => deee67702a81a5516432142f08c8343b
[realname] => P
[reload] =>
[OldPassword] => deee2abc0addb03f90d3be5e2caedafe
[TempPassword] =>
[cash] => 0
[votepoints] => 4
)

)

Array
(
[0] => 0x47656e74726f73
[1] => 0x6e6f6f6233
[2] => 0x6d616c696275
)

Array
(
[0] => Gentros
[1] => noob3
[2] => malibu
)
______________________

PHP Code:
<?php 

class DB 
{
    
    private 
$sql;
    private 
$result;
    private 
$arr;
    
    function 
__construct()
    {
        
$this->sql odbc_connect('Driver={SQL Server};Server=' DB_HOST ';Port=' DB_PORTDB_USERDB_PASS );
        
odbc_autocommit$this->sqlfalse );
    }
    
    private function 
Encrypt$value )
    {
        if( 
gettype$value ) != "integer" )
        {
            return 
'0x' bin2hex$value );
        }
        
        return 
$value;
    }
    
    public function 
Decrypt$value )
    {
        return 
hex2bin(str_replace('0x''',  $value));
    }
    
    public function 
Escape$object )
    {
        if( !
is_array$object ) )
        {
            
$object self::Encrypt$object );
        }
        else 
        {
            foreach( 
$object as $key => $val )
            {
                
$object[$key] = self::Encrypt$val );
            }
        }
        return 
$object;
    }
    
    public function 
Query$query )
    {
        
$this->result odbc_exec$this->sql$query );
        if( 
odbc_error() )
        {
            
odbc_rollback$this->sql );
            die( 
odbc_errormsg$this->sql ) );
        }
    }
    
    public function 
Commit()
    {
        
odbc_commit$this->sql );
    }
    
    public function 
Rows()
    {
        return 
odbc_num_rows$this->result );
    }
    
    public function 
Fetch()
    {
        for( 
$i 1$i <= self::Rows(); $i++ )
        {
            
$this->arr[$i] = odbc_fetch_array$this->result$i );
        }
        return 
$this->arr;
    }
}
xsrf is offline  
Old 03/24/2016, 19:57   #2
 
elite*gold: 0
Join Date: Jan 2014
Posts: 773
Received Thanks: 373
gute idee nur ist das problem das eh kaum einer bei flyff mehr eine seite programmiert. alle nehmen nur von epvper daher ist das nicht mehr wirklich benötigt sieht aber sinnvoll ist wenn es jemand sucht
Drabur is offline  
Old 03/24/2016, 20:00   #3
 
xsrf's Avatar
 
elite*gold: 0
Join Date: May 2012
Posts: 870
Received Thanks: 642
Da ich aus vielen Fehlern, welche ich bei meiner ersten Webseite machte, lernte, versuche ich eine neue Webseite zu entwickeln. Dort werden sämtlich, damals von mir nicht berücksichtigte Aspekte, beachtet und qualitativ umgesetzt.

Es plagt mich mein Gewissen, wenn ich sehe dass die Forsakenseite für 200 € verkauft wird, obschon dort nichts weiter als ein "neues Design", meist sogar nur kleinere Änderungen vorgenommen wurden.
xsrf is offline  
Old 03/25/2016, 00:06   #4
 
xTwiLightx's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,739
Received Thanks: 1,669
Quote:
Originally Posted by Drabur View Post
gute idee nur ist das problem das eh kaum einer bei flyff mehr eine seite programmiert. alle nehmen nur von epvper daher ist das nicht mehr wirklich benötigt sieht aber sinnvoll ist wenn es jemand sucht
Es gibt sie noch... wenn ich mit meinem Kram irgendwann mal fertig bin, kannste den Zähler +1 setzen. :]

In Zeiten von PDO und Co. sind solche selbstgeschriebenen Klassen eigentlich nicht mehr relevant (außer man muss sie wegen irgendwelcher Vorgaben dahingehend anpassen, aber dafür nimmt man Abstraktionsschichten... und PDO ist so eine).

Für jemanden, der sich mit Klassen und OOP beschäftigt (das hier sind ja noch basics) ist es natürlich hilfreich, so eine Klasse mal selbst zu schreiben.
Für einen nützlichen Release eher grenzwertig.


Aber einem geschenkten Gaul...

Diese Schnapsidee, Strings in Hex zu codieren, nur damit sie sicherer sind finde ich immernoch absolut bescheuert. Wofür gibt es denn Bindings u.a. in PDO oder mysqli? Oder html_entities/escape als native Optionen, Benutzerinput zu entschärfen...

EDIT: Schreib noch im Titel hinzu, dass es sich um eine PHP Klasse handelt.
xTwiLightx is offline  
Thanks
1 User
Old 03/25/2016, 09:29   #5
 
elite*gold: 0
Join Date: Jan 2014
Posts: 773
Received Thanks: 373
Quote:
Originally Posted by xTwiLightx View Post
Es gibt sie noch... wenn ich mit meinem Kram irgendwann mal fertig bin, kannste den Zähler +1 setzen. :]

In Zeiten von PDO und Co. sind solche selbstgeschriebenen Klassen eigentlich nicht mehr relevant (außer man muss sie wegen irgendwelcher Vorgaben dahingehend anpassen, aber dafür nimmt man Abstraktionsschichten... und PDO ist so eine).

Für jemanden, der sich mit Klassen und OOP beschäftigt (das hier sind ja noch basics) ist es natürlich hilfreich, so eine Klasse mal selbst zu schreiben.
Für einen nützlichen Release eher grenzwertig.


Aber einem geschenkten Gaul...

Diese Schnapsidee, Strings in Hex zu codieren, nur damit sie sicherer sind finde ich immernoch absolut bescheuert. Wofür gibt es denn Bindings u.a. in PDO oder mysqli? Oder html_entities/escape als native Optionen, Benutzerinput zu entschärfen...

EDIT: Schreib noch im Titel hinzu, dass es sich um eine PHP Klasse handelt.
Natürlich aber sollte auf elitepvpers mal einer auf die idee kommen seine seite zu programmieren kann es dem helfen

ach ne kommt eh keiner
Drabur is offline  
Old 03/30/2016, 23:14   #6
 
iSynaptic's Avatar
 
elite*gold: 0
Join Date: Sep 2011
Posts: 195
Received Thanks: 65
Entschuldige, aber schon allein

Quote:
SELECT TOP 100 * FROM ACCOUNT_DBF.dbo.ACCOUNT_TBL WHERE account = '%s'"
zeigt mir, dass du von der Materie mal gar keinen Plan hast.

Da kaufe ich doch lieber 200€ Webseiten, dessen Ersteller wenigstens PHP/MYSQL versteht.
iSynaptic is offline  
Old 03/31/2016, 00:10   #7
 
xsrf's Avatar
 
elite*gold: 0
Join Date: May 2012
Posts: 870
Received Thanks: 642
Ich habe ziemlich wenig Erfahrung was den Umgang mit MSSQL betrifft und war mir bislang nicht sicher, ob und wie die Querys aussehen müssen. Des Weiteren ist die Klasse ein Prototyp, welcher von Nutzern erfragt wurde und somit für alle öffentlich ist.

Wer der Meinung ist, dass meine Klasse ebenso aussieht, täuscht sich. Allein aus dem Grund, dass ich einen ORM mit Middelclasshandler verwende. ( Laravel )
xsrf is offline  
Old 03/31/2016, 01:05   #8
 
xTwiLightx's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,739
Received Thanks: 1,669
Quote:
Originally Posted by xsrf View Post
Ich habe ziemlich wenig Erfahrung was den Umgang mit MSSQL betrifft und war mir bislang nicht sicher, ob und wie die Querys aussehen müssen. Des Weiteren ist die Klasse ein Prototyp, welcher von Nutzern erfragt wurde und somit für alle öffentlich ist.

Wer der Meinung ist, dass meine Klasse ebenso aussieht, täuscht sich. Allein aus dem Grund, dass ich einen ORM mit Middelclasshandler verwende. ( Laravel )
Eloquent ftw (dachte, du hasst fertige Klassen? )

Das Ding ist, die Query an sich ist korrekt.

Nur wenn du %s verwendest und bindest, dann werden die Anführungszeichen bei Strings automatisch hinzugefügt, die brauchst du dann gar nicht erst.
xTwiLightx is offline  
Old 03/31/2016, 01:45   #9
 
xsrf's Avatar
 
elite*gold: 0
Join Date: May 2012
Posts: 870
Received Thanks: 642
Das ist korrekt, habe ich beim tippen nicht beachtet, sollte allerdings nicht auf meine Erfahrung schließen, wobei ich zugeben muss, das Twilight und Synaptic wohl weit aus erfahrener sind, kein Zweifel.

#edit

Ich hasse fertige Klassen nicht, ich möchte allerdings versuchen so viel wie eben möglich selbst zu entwickeln. Da aber mein Fokus auf der Sicherheit meiner Webseite liegt, empfand ich es als vorteilhaft einen ORM zu verwenden, welchen schon tausende Entwickler vor mir nutzten, welcher somit ausgreifter sein sollte als eine hausgemachte Klasse mit eventuell geringerem Funktionsaufwand durch Zeitmangel.
xsrf is offline  
Old 03/31/2016, 10:28   #10
 
xTwiLightx's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,739
Received Thanks: 1,669
Quote:
Originally Posted by xsrf View Post
Das ist korrekt, habe ich beim tippen nicht beachtet, sollte allerdings nicht auf meine Erfahrung schließen, wobei ich zugeben muss, das Twilight und Synaptic wohl weit aus erfahrener sind, kein Zweifel.

#edit

Ich hasse fertige Klassen nicht, ich möchte allerdings versuchen so viel wie eben möglich selbst zu entwickeln. Da aber mein Fokus auf der Sicherheit meiner Webseite liegt, empfand ich es als vorteilhaft einen ORM zu verwenden, welchen schon tausende Entwickler vor mir nutzten, welcher somit ausgreifter sein sollte als eine hausgemachte Klasse mit eventuell geringerem Funktionsaufwand durch Zeitmangel.
Eine Abstraktionsklasse wie PDO reicht da als Sicherheit allemal (die meisten PHP Frameworks nutzen es ohnehin...) - ein ORM Wrapper macht nur dann Sinn, wenn man ohnehin schon von Grund auf objektorientiert programmiert und die Tabellen als eindeutige Objekte darstellen möchte.
xTwiLightx is offline  
Reply


Similar Threads Similar Threads
PHP Datenbankklasse mit Escapefunktion
08/22/2015 - Flyff PServer Guides & Releases - 2 Replies
Datenbankklasse: <?php class Database { private $sql; private $database;



All times are GMT +2. The time now is 16:54.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.