|
You last visited: Today at 16:54
Advertisement
[Release] Datenbankklasse *NEW*
Discussion on [Release] Datenbankklasse *NEW* within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.
03/24/2016, 19:54
|
#1
|
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->Query( sprintf( "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_PORT, DB_USER, DB_PASS ); odbc_autocommit( $this->sql, false ); } 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; } }
|
|
|
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
|
|
|
03/24/2016, 20:00
|
#3
|
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.
|
|
|
03/25/2016, 00:06
|
#4
|
elite*gold: 0
Join Date: Jan 2009
Posts: 1,739
Received Thanks: 1,669
|
Quote:
Originally Posted by Drabur
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.
|
|
|
03/25/2016, 09:29
|
#5
|
elite*gold: 0
Join Date: Jan 2014
Posts: 773
Received Thanks: 373
|
Quote:
Originally Posted by xTwiLightx
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
|
|
|
03/30/2016, 23:14
|
#6
|
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.
|
|
|
03/31/2016, 00:10
|
#7
|
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 )
|
|
|
03/31/2016, 01:05
|
#8
|
elite*gold: 0
Join Date: Jan 2009
Posts: 1,739
Received Thanks: 1,669
|
Quote:
Originally Posted by xsrf
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.
|
|
|
03/31/2016, 01:45
|
#9
|
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.
|
|
|
03/31/2016, 10:28
|
#10
|
elite*gold: 0
Join Date: Jan 2009
Posts: 1,739
Received Thanks: 1,669
|
Quote:
Originally Posted by xsrf
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.
|
|
|
All times are GMT +2. The time now is 16:54.
|
|