Početnik sam u PHP programiranju ali sam ipak se odvažio da radim sajt sa njim pa sam odlučio da napravim sebi par pomoćnih skripti između kojih je i ova za rad sa mySql bazom.
<?php
$user="***********";
$password="***********";
$database="***********";
function ExecuteQuery($p_query, $p_parametars)
{
global $user;
global $password;
global $database;
try
{
$query = $p_query;
$conn = mysql_connect('localhost', $user, $password) or die( mysql_error());
if (!$conn)
{
return null;
}
$db_selected = mysql_select_db($database, $conn);
if (!$db_selected)
{
return null;
}
$query = '';
$temp = $p_query;
foreach ($p_parametars as $key => $value)
{
$pKey = "#p" . $key . "#";
$pos = strpos($temp, $pKey);
if($pos !== false)
{
// Dio pre parametra stavljamo u query.
$query .= substr($temp, 0, $pos);
//dodajemo zamjenjen parametar na query.
$query .= mysql_real_escape_string($value);
//u temp uzimamo ono što je nobrađeno.
$temp = substr($temp, $pos + strlen($pKey));
}
else
{
//nije nađen kay $pKey u tempu
continue;
}
}
//ako je nešto preostalo dodajemo na query.
$query .= $temp;
return mysql_query($query);
}
catch(Exception $e)
{
}
return null;
}
?>
Naime kako ovo radi, tj koristi se.
Primjer.
static function LoginUser($p_username, $p_password)
{
$parametars[0] = $p_username;
$parametars[1] = MD5($p_password);
$query = "SELECT * FROM Users WHERE username='#p0#' and password='#p1#'";
$sqlResult = ExecuteQuery($query, $parametars);
...
Imao sam na cilj da se na jedinstven način konektujem na bazu, a istovremeno da se ne zamaram stalnom tim djelom koda koji bi se stalno ponavljao.
Gledajući primjere za rešavanje SQL injection mislim da sam ga riješio. jer ako se
pozove
LoginUser("Cola's", "test");
dobijem SQL query a sve zahvaljujući funkciji mysql_real_escape_string
SELECT * FROM Users WHERE username='Cola\'s' and password='098f6bcd4621d373cade4e832627b4f6'
takođe sam izdvajao parametre da slučajno nebih replejsovao nešto što je korisnik prosledio
Npr. za
LoginUser("Co#p1#la's#p1#", "test");
dobijem:
SELECT * FROM Users WHERE username='Co#p1#la\'s#p1#' and password='098f6bcd4621d373cade4e832627b4f6'
Ako je ovo dobro imalo drago mi je da to neko iskoristi ali ako ima propusta takođe bi volio da mi ukaže na njih

Gdje se na sajtu čuvaju parametri za pristup bazi? Jel nesigurno ovako u fajlu? Ako nije sigurno gde se to inače drži?
Hvala
[Ovu poruku je menjao Cola dana 10.06.2010. u 20:47 GMT+1]