Bonjour.
J'utilise des fonctions pour mes requêtes, et j'aimerais vos conseils pour sécuriser le sql et aussi faire de ces fonctions une classe pour accéder directement aux objets.
Par ex:
Je voudrais par la suite faire une autre classe pour mètre en forme les données avec un système de template.
Pour le moment voici les fonctions sql
Merci de me donner quelques conseils ou liens pour débuter avec les classes, afin de transformer ces fonctions en classe, les optimiser (par exemple je n'arrive pas à garder $con pour les fonctions qui s'enchainent), et y ajouter un système pour sécuriser les reqêtes à la base de donnée, j'avoue que je me perd un peu avec les $this->.
Modifié par cyrildphotos (01 May 2009 - 17:28)
J'utilise des fonctions pour mes requêtes, et j'aimerais vos conseils pour sécuriser le sql et aussi faire de ces fonctions une classe pour accéder directement aux objets.
Par ex:
$page = new page;
$page->get_page($title);
echo "<h1>".$head->h1."</h1>";
$media = new media;
$media->get_media($id);
$media->get_iptc($media_id);
Je voudrais par la suite faire une autre classe pour mètre en forme les données avec un système de template.
Pour le moment voici les fonctions sql
<?php
include ('admin/conf.inc.php');
function get_author($id) {
$con = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
if ($id) {
$sql = "SELECT * FROM creator WHERE id = '".$id."'";
if ($result = $con->query($sql)) {
$obj = $result->fetch_object();
global $author;
$loc =
htmlentities($obj->CiAdrCtry).", "
.htmlentities($obj->CiAdrRegion).", "
.htmlentities($obj->CiAdrCity);
$author = array(
'name'=>htmlentities($obj->creator),
'location'=>$loc,
'id'=>$obj->id
);
}
$result->close();
$con->close();
}
}
function get_content($content) {
$con = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
if (mysqli_connect_errno()) {
printf("Connexion impossible: %s\n", mysqli_connect_error());
exit();
}
if(count($content) == '1') {
$content = implode($content);
$sql = "SELECT * FROM content WHERE id = '".$content."'";
}
if(count($content) > '1') {
$content = "(".implode(", ", $content).")";
$sql = "SELECT * FROM content WHERE id IN ".$content;
}
if (!$result = $con->query($sql)){
printf("Le contenu demandé n'existe pas: \n",$con->error);
}
if ($result = $con->query($sql)){
global $articles;
$i = 0;
while($obj = $result->fetch_object()) {
$titre = utf8_encode($obj->titre);
$chapeau = utf8_encode($obj->chapeau);
$texte = utf8_encode($obj->texte);
$articles[$i] = array('titre'=>$titre,'chapeau'=>$chapeau,'texte'=>$texte);
$i++;
}
$result->close();
$con->close();
}
}
function get_page($title){
$con = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
if (mysqli_connect_errno()) {
printf("Connexion impossible: %s\n", mysqli_connect_error());
exit();
}
$sql = "SELECT * FROM page WHERE title = '".$title."'";
if (!$con->query($sql)){
printf("La page %s n'existe pas:\n",$con->error);
}
if ($result = $con->query($sql)){
$obj = $result->fetch_object();
global $head;
$head = array(
'title'=>htmlentities($obj->title),
'h1'=>htmlentities($obj->h1),
'head_title'=>htmlentities($obj->head_title),
'commentaire'=>$obj->commentaire,
'created'=>$obj->created,
'modified'=>$obj->modified,
'keywords'=>htmlentities($obj->keywords),
'rel'=>$obj->rel,
'content'=>explode(", ",$obj->content),
'description' =>htmlentities($obj->description),
'author'=>$obj->author,
'pages'=>$obj->pages,
'type'=>$obj->type
);
$result->close();
get_author($head['author']);
get_content($head['content']);
$con->close();
}
}
function get_media($id){
$con = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
if (mysqli_connect_errno()) {
printf("Connexion impossible: %s\n", mysqli_connect_error());
exit();
}
$sql = "SELECT * FROM media WHERE id = '".$id."'";
if (!$con->query($sql)) {
printf("Le média % n'existe pas\n",$con->error);
}
if ($result = $con->query($sql)){
global $media;
$obj = $result->fetch_object();
$src = $obj->filepath.$obj->filename;
$var = getimagesize($src);
$size = $var['3'];
$media = array(
'id'=>$obj->id,
'src'=>$src,
'size'=>$size,
'creator'=>$obj->creator,
'iptc'=>$obj->iptc,
'exif'=>$obj->exif
);
$result->close();
$con->close();
}
}
function get_iptc($id) {
$con = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
if (mysqli_connect_errno()) {
printf("Connexion impossible: %s\n", mysqli_connect_error());
exit();
}
$sql = "SELECT * FROM iptc WHERE id = '".$id."'";
if (!$con->query($sql)) {
printf("Il n'y a pas d\'informations iptc pour %\n",$con->error);
}
if ($result = $con->query($sql)){
global $iptc;
$obj = $result->fetch_object();
$iptc = array(
'titre'=>utf8_encode($obj->title),
'sous titre'=>utf8_encode($obj->Headline),
'description' =>utf8_encode($obj->description),
'sujet' =>utf8_encode($obj->subject),
'date'=>$obj->DateCreated,
'lieu'=>utf8_encode($obj->Location),
'ville'=>utf8_encode($obj->City),
'région'=>utf8_encode($obj->State),
'pays' =>utf8_encode($obj->Country),
'code pays'=>$obj->CountryCode,
'crédit'=>utf8_encode($obj->credit),
'droits'=>utf8_encode($obj->rights),
'source'=>utf8_encode($obj->Source),
'usage'=>utf8_encode($obj->UsageTerms),
'instructions'=>utf8_encode($obj->Instructions),
'transmission'=>utf8_encode($obj->TransmissionReference),
'genre'=>utf8_encode($obj->IntellectualGenre),
'code sujet'=>$obj->SubjectCode,
'scène'=>$obj->Scene,
'auteur'=>utf8_encode($obj->creator),
'auteur de la description'=>utf8_encode($obj->CaptionWriter)
);
$result->close();
$con->close();
}
}
?>
Merci de me donner quelques conseils ou liens pour débuter avec les classes, afin de transformer ces fonctions en classe, les optimiser (par exemple je n'arrive pas à garder $con pour les fonctions qui s'enchainent), et y ajouter un système pour sécuriser les reqêtes à la base de donnée, j'avoue que je me perd un peu avec les $this->.
Modifié par cyrildphotos (01 May 2009 - 17:28)