Register for your free account! | Forgot your password?

You last visited: Today at 06:39

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


[PHP] SQL Klasse

Reply
 
Old   #1

 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,157
Received Thanks: 14,369
[PHP] SQL Klasse

Groß werde ich hier nichts schreiben, hier ist eine SQL Klasse, welche ich damals irgendwo aufgegriffen habe und ein klein wenig modifiziert habe so das diese nicht mehr Injectbar ist.

config.php
PHP Code:
<?php
define
"MSSQL_HOST""" );
define"MSSQL_USER""" );
define"MSSQL_PASS""" );
?>
class.mssql.php (MSSQL)
PHP Code:
 <?php
class MSSQL
{
public 
$query null;
public 
$fetch null;
protected 
$fetca;
protected 
$mfetc;

public function 
__construct ($fetch false$multi false)
{
$fetch $this->fetca true $this->fetca false;
$multi $this->mfetc true $this->mfetc false;
}

public function 
Escape($arg)
{
foreach (
$arg as $value)
is_numeric($value) ? $return[] = $value $return[] = "0x".bin2hex$value );
return 
$return;
}

public function 
Exec()
{
if( !
func_num_args() )
return 
false;

$arg func_get_args();

$query $arg[0];
unset(
$arg[0]);

if( 
count$arg ) )
$query vsprintf$query$this->Escape$arg ) );

mssql_connectMSSQL_HOSTMSSQL_USERMSSQL_PASS );
$this->query mssql_query($query);

if( 
$this->fetca )
{
if( 
$this->mfetc )
while( 
$fetch mssql_fetch_array$this->query ) )
$this->fetch[] = $fetch;
else
$this->fetch[] = mssql_fetch_array$this->query );
}

if( 
is_resource$this->query ) )
mssql_free_result$this->query );

mssql_close();
return 
true;
}

public function 
m_fetch()
{
$return null;
$i 0;
while( isset( 
$this->fetch[$i] ) )
{
$return[] = $this->fetch[$i];
$i++;
}
return 
$return;
}
}
?>
class.odbc.php (ODBC)
PHP Code:
 <?php
class MSSQL
{
public 
$query null;
public 
$fetch null;
protected 
$fetca;
protected 
$mfetc;

public function 
__construct ($fetch false$multi false)
{
$fetch $this->fetca true $this->fetca false;
$multi $this->mfetc true $this->mfetc false;
}

public function 
Escape($arg)
{
foreach (
$arg as $value)
is_numeric($value) ? $return[] = $value $return[] = "0x".bin2hex$value );
return 
$return;
}

public function 
Exec()
{
if( !
func_num_args() )
return 
false;

$arg func_get_args();

$query $arg[0];
unset(
$arg[0]);

if( 
count$arg ) )
$query vsprintf$query$this->Escape$arg ) );

$mssql odbc_connect('Driver={SQL Server};Server='.MSSQL_HOST.';'MSSQL_USERMSSQL_PASS);
$this->query odbc_exec$mssql$query );

if( 
$this->fetca )
{
if( 
$this->mfetc )
while( 
$fetch odbc_fetch_array$this->query ) )
$this->fetch[] = $fetch;
else
$this->fetch[] = odbc_fetch_array$this->query );
}

if( 
is_resource$this->query ) )
odbc_free_result$this->query );

odbc_close$mssql );
return 
true;
}

public function 
m_fetch()
{
$return null;
$i 0;
while( isset( 
$this->fetch[$i] ) )
{
$return[] = $this->fetch[$i];
$i++;
}
return 
$return;
}
}
?>
Anwendung
PHP Code:
// Update / Insert / Delete Commands
$SQL = new MSSQL();
$Query "USE [EXAMPLE_DBF] UPDATE [EXAMPLE_TBL] SET [EXAMPLE_COLUMN_1] = %s, [EXAMPLE_COLUMN_2] = %s";
$SQL->Exec$Query"example value 1""example value 2" );

// Get value
$SQL = new MSSQLtrue );
$Query "USE [EXAMPLE_DBF] SELECT * FROM [EXAMPLE_TBL] WHERE [EXAMPLE_COLUMN] = %s";
$result $SQL->Exec$Query"test" ) ? $SQL->fetch[0]["COLUMN"] : false;

// Get multiple values
$SQL = new MSSQLtruetrue );
$Query "USE [EXAMPLE_DBF] SELECT * FROM [EXAMPLE_TBL] WHERE [EXAMPLE_COLUMN] = %s";
$result $SQL->Exec$Query"test" ) ? $SQL->m_fetch() : false
Selbst wenn man einen INSERT Befehl so manipulieren würde, dass shutdown an den Server gesendet wird, würde dieser diesen nicht mehr als Befehl sondern als Zeichenkette interpritieren und somit wären Injections geblockt.

Und jeweils nur entweder die class.mssql.php oder class.odbc.php benutzen und nicht beides gemeinsam includen.

Moralaposteln die ankommen mit "Und was ist mit dem resourcen verbrauch" - ihr könnt mich mal Bedankt euch lieber das ihr hier euch die Injections rausnehme.



Sedrika is offline  
Thanks
3 Users
Old 03/18/2014, 05:52   #2
 
elite*gold: 80
Join Date: May 2013
Posts: 147
Received Thanks: 23
Thanks, it is very helpful


Supr3matt is offline  
Old 03/24/2014, 11:06   #3

 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,157
Received Thanks: 14,369
Is anyone using this class?
Sedrika is offline  
Old 03/24/2014, 12:26   #4
 
elite*gold: 0
Join Date: Oct 2012
Posts: 947
Received Thanks: 153
Its an nice class but i have my own class that doesnt relay on ODBC.

But its an good job. I wish i could see more of OOP.

I am currently working an an flyff website thats based on OOP.


raventh1984 is offline  
Old 03/24/2014, 13:34   #5

 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,157
Received Thanks: 14,369
There are both scripts. One for mssql connection and one for odbc.
Sedrika is offline  
Old 03/24/2014, 13:47   #6
 
elite*gold: 0
Join Date: Oct 2012
Posts: 947
Received Thanks: 153
o.O didnt say the first one.

haha ok

Here i am using this one. its MSSQL

PHP Code:
<?php
class MSSQL
{
    private 
$_link;

    public function 
connect($server=''$username=''$password=''$new_link=true)
    {
        
$this->_link mssql_connect($server$username$password$new_link);
    }
    
    public function 
Escape($string)
    {
        return 
str_replace("'""''"$string);
    }
    
     public function 
query($query) {
        return 
mssql_query($query$this->_link);  
    }
    
    public function 
fetchArray($result$array_type MYSQL_BOTH) {
        return 
mssql_fetch_array($result$array_type);  
    }
    
    public function 
fetchRow($result) {
        return 
mssql_fetch_row($result);  
    }
    
    public function 
fetchAssoc($result) {
        return 
mssql_fetch_assoc($result);
    }
    
    public function 
fetchObject($result) {
        return 
mssql_fetch_object($result);  
    }
    
    public function 
numRows($result) {
        return 
mssql_num_rows($result);
    }
    
    public function 
close() {
        return 
mssql_close($this->_link);
    }
}

//Example
//Select DB
$db->query('USE ACCOUNT_DBF');
//Getting data
$result $db->query('SELECT account,password FROM ACCOUNT_TBL WHERE account = "accountname"');
//Fetching the data
echo $db->fetchAssoc($result);

?>
raventh1984 is offline  
Old 03/24/2014, 14:35   #7

 
elite*gold: 18
The Black Market: 103/0/0
Join Date: Sep 2009
Posts: 20,157
Received Thanks: 14,369
Use at least my escape function it's way better then yours
Sedrika is offline  
Thanks
1 User
Old 03/24/2014, 15:17   #8
 
elite*gold: 0
Join Date: Dec 2012
Posts: 33
Received Thanks: 14
@raventh1984 that's a really poor class. Use at least prepared statements as in Sedrika script.
I've somewhere a SQL class I don't use since a long time ago, I will post if I find it.
DarkFlyffTeam is offline  
Old 03/24/2014, 15:24   #9
 
elite*gold: 0
Join Date: Oct 2012
Posts: 947
Received Thanks: 153
Thanks for the comment DarkFlyff
I will take an look into prepared statements.


raventh1984 is offline  
Reply



« [RELEASE] PVP arena | [Release]Flyff Home page BigVid »

Similar Threads
Biete Mathehilfe bis zur 10. Klasse Real/ 9.Klasse Haupt
03/13/2012 - School & Education - 0 Replies
Wenn ihr Probleme mit einer aufgabe habt, schickt mir eine PM. Kostet nur 1eGold. Vielleicht auch nichts :D Kommt ganz auf die aufgaben drauf an.
Volkswechsel alte Klasse(Classic)->neue Klasse(Cata)
01/30/2011 - WoW Ask the Experts - 13 Replies
Hi, Ich würde meinen Untoten Magier gerne zu einem Goblin Magier verändern. Ich weis auch, dass Goblins Magier sein können aber ich finde keine 100% sicheren Infos ob man auch Untoter->Goblin changen kann! Kennt sich da einer aus? Außerdem...
[C++]Funktion einer Klasse in einer anderen Funktion der Klasse verwenden, aber wie?
07/25/2010 - C/C++ - 3 Replies
Mein Problem ist eigentlich recht simpel und die Lösung wahrscheinlich auch. Da ich bisher fast 0 mit Klassen am Hut hatte, wollte ich mich doch mit dem Thema anfreunden und hatte gleich angefangen: int test::Funktion2() { int temp;...
Welche Klasse ist die Beste Klasse
07/06/2010 - Metin2 Main - Discussions / Questions - 6 Replies
Hallo ich habe heute mal angefangen Metin 2 angefangen und wollte fragen welche klasse ist die beste meine Vorstellung Menge Deff Wird Mich freuen auf Antwort



All times are GMT +2. The time now is 06:39.


Powered by vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2018 elitepvpers All Rights Reserved.