Scripts
MySQL Class voor php 5
Naar aanleiding van de vorige functie voor connecten, plaats ik mijn script ook maar even. met $sql = new sql; roep je de class op. met $value = secure($_POST['value']); zorg je voor veilige queries. met $result = $sql->query("HIER je COMPLETE query"); doe je een query. door te kijken met if(!defined('IN_SITE')) { die(); } Zorg je dat mensen niet op de pagina kunnen komen. Dit kan je zelf oplossen door in je pagina waar de requires in staan te zetten: define('IN_SITE',true); Bugs of suggesties? posten maar.
mysql-class-voor-php-5
common.php
-----------------------
<?php
if(!defined('IN_SITE'))
{
die();
}
if(!file_exists('config.php'))
{
die('De config file kon niet worden gevonden.');
}
require('config.php');
require('includes/sql.php');
define('DEBUG',$debug);
if(DEBUG)
{
ini_set(error_reporting, 1);
error_reporting(E_ALL);
}
?>
config.php
<?php
if(!defined('IN_SITE'))
{
die();
}
$SITE['NAME'] = 'Test site';
$SITE['URL'] = 'http://localhost/';
$debug = true; // true geeft errors weer + bericht, false alleen een bericht
?>
includes/sql.php
<?php
if(!defined('IN_SITE'))
{
die();
}
/***
* Data beveiligen
**/
function secure($data)
{
if (get_magic_quotes_gpc())
{
$data = stripslashes($data);
}
if (!is_numeric($data)) {
$data = '\'' . mysql_real_escape_string($data) . '\'';
}
return $data;
}
class sql
{
// vul in deze 4 velden verkeerde gegevens in om een error op te roepen.
private $localhost = 'localhost';
private $username = ''; // username
private $password = ''; // password
private $database = ''; // database
private $connection = '';
private $message = '';
private $error = '';
/***
* Connectie beginnen
**/
public function __construct()
{
$connected = @mysql_connect($this->localhost,$this->username,$this->password);
if($connected and @mysql_select_db($this->database))
{
$this->connection = $connected;
}
else
{
$this->error .= 'Fout: ' . mysql_error();
$this->message .= 'Er is geen connectie met de database gemaakt.';
throw new sqlException($this->error,$this->message);
}
}
/***
* Query opbouwen en resultaat ophalen
**/
public function query($data)
{
if($this->connection)
{
$result = mysql_query($data);
if($result)
{
return $result;
}
else
{
$this->error .= 'Fout: ' . mysql_error();
$this->message .= 'Er zit een fout in de query, query gestopt.';
throw new sqlException($this->error,$this->message);
}
}
else
{
$this->error .= 'Fout: ' . mysql_error();
$this->message .= 'Er is geen connectie met de database gemaakt.';
throw new sqlException($this->error,$this->message);
}
}
}
/***
* Error message opbouwen. DEBUG mode geeft ook errors aan.
**/
class sqlException extends Exception
{
protected $error;
public function __construct($error, $message, $code = 0)
{
parent::__construct($message, $code);
$this->error = $error;
}
public function getError()
{
if(DEBUG)
{
return $this->error."\n<br />".$this->getMessage();
}
else
{
return $this->getMessage();
}
}
}
?>
index.php
<?php
// zorg ervoor dat IN_SITE waar is.
define('IN_SITE',true);
// gegevens inladen
require('common.php');
try
{
// class oproepen
$sql = new sql;
// data beveiligen met mysql_real_escape_String
$username = secure($_POST['username']);
// de query met de class
$result = $sql->query("SELECT * FROM testtabel WHERE username=".$username."");
while($row = mysql_fetch_assoc($result))
{
echo $row['name']."<br />\n";
}
}
catch(sqlException $e)
{
echo 'Er is een onverwachte fout opgetreden :'."<br /> ---- \n <br />";
echo $e->getError();
}
if(DEBUG)
{
echo "<br />\n <br />".'Debug mode staat aan.';
}
else
{
echo "<br />\n <br />".'Debug mode staat uit';
}
?>
Reacties
0