Classe qui est plus un ensemble de fonctions utilisable à n'importe quelle endroit du site.
<?php
include('./includes/Secure.class.php');
// sécurise les données entrée par un utilisateur
echo Secure::safest($_POST['login']);
// prépare une variable à être utilisé dans une requête MySQL
$login = Secure::secure_sql($_POST['login']);
// enlève les accents d'une chaine
echo Secure::supprime_accents($_POST['texte']);
?>
<?php
/*
* Class qui gère la sécurité des données qui transit
*/
class Secure{
function __construct()
{
/* */
}
/*
* Affiche un code html en toute sécurité !
*/
public function safest($var, $charset='UTF-8')
{
$var = htmlentities($var, ENT_QUOTES, $charset);
return $var;
}
/*
* Sécurise les variables avant une utilisation au sein d'une requête MySQL
*/
static function secure_sql($value)
{
if ((!isset($value)) || (is_null($value)) || ($value === ""))
{
$value = '';
}
else
{
if (is_string($value))
$value = mysql_real_escape_string($value);
else
$value = (is_numeric($value)) ? ($value) : ("'ERROR: unhandled datatype in quote_smart'");
}
return $value;
}
/*
* Supression des accents
*/
public function supprime_accents($str, $charset='utf-8')
{
$str = htmlentities($str, ENT_NOQUOTES, $charset);
$str = preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#', '\1', $str);
$str = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $str); // pour les ligatures e.g. 'œ'
$str = preg_replace('#\&[^;]+\;#', '', $str); // supprime les autres caractères
return $str;
}
/*
* On secure tous les valeur passé en POST
* Les clef ne sont pas touché
*/
public function secure_posts()
{
if($_POST)
{
foreach($_POST as $k => $d)
{
$_POST[$k] = Secure::safest($d);
}
}
}
}
?>