J'aimerais savoir si mes class sont bien codées et sécurisées.
Je précise que tout fonctionne, donc si une modification est à faire, il faut que ça fonctionne de la même façon que sans la modification.
Merci d'avance
<?php
include($_SERVER['DOCUMENT_ROOT'].'/include/define.inc.php');
// CLASS : Connexion à la base de données
class Bdd {
private static $connexion = NULL;
public static function connect(){
if(!self::$connexion){
self::$connexion = new PDO(DNS, USER, PASS);
self::$connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$connexion -> exec('SET NAMES utf8');
}
return self::$connexion;
}
}
// CLASS : Vérification des sessions
class CheckSession {
private static $pseudo = 0;
private static $persistent = 0;
public static function verif($pseudo, $persistent){
if(isset($pseudo) || isset($persistent)){
header('location: home');
exit();
}
}
public static function verifHome($pseudo, $persistent){
if(!isset($pseudo) && !isset($persistent)){
header('location: ../login.php?login_error=1');
exit();
}
}
}
// CLASS : Cryptage
class Cryptage {
public static function chaine($nb_car, $chaine='AZERTYUIOPQSDFGHJKLMWXCVBNazertyuiopqsdfghjklmwxcvbn123456789') {
$nb_lettres = strlen($chaine)-1;
$generation = '';
for($i=0; $i < $nb_car; $i++)
{
$pos = mt_rand(0, $nb_lettres);
$car = $chaine[$pos];
$generation .= $car;
}
return $generation;
}
}
// CLASS : Inscription
class Inscription {
}
// CLASS : Connexion
class Connexion {
public static function connexionCreate(){
$email = htmlspecialchars($_POST['email']);
$mdp = htmlspecialchars(sha1($_POST['mdp']));
if(preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!",$email)){
if(!empty($_POST['email']) && !empty($_POST['mdp'])){
$resultat = Bdd::connect() -> prepare(SELECT.ALL.USERS.LOGIN);
$resultat -> execute(array('email' => $email,'mdp' => $mdp));
$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
if($resultat -> rowCount() === 1){
$_SESSION['id'] = $donnee['id'];
$_SESSION['pseudo'] = $donnee['pseudo'];
header('location: home');
$resultat -> closeCursor();
} else {
echo '<span class="error">Vos identifiants sont incorrects</span>';
}
} else {
echo '<span class="error">Veuillez remplir tous les champs</span>';
}
} else {
echo '<span class="error">Veuillez entrer une adresse électronique valide</span>';
}
}
public static function recover($recoverEmail){
$email = htmlspecialchars($_POST['recoverEmail']);
if(preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!",$email)){
if(!empty($_POST['recoverEmail'])){
$verifMail = Bdd::connect() -> prepare(SELECT.ALL.USERS.EMAIL);
$verifMail -> execute(array('email' => $email));
if($verifMail -> rowCount() === 1){
$donnee = $verifMail -> fetch(PDO::FETCH_ASSOC);
$newPass = Cryptage::chaine(8);
$cryptPass = htmlspecialchars(sha1($newPass));
$enregistrePass = Bdd::connect()->prepare(UPDATE.USERSZ.MAJPASS.EMAIL);
$enregistrePass -> execute(array('newPass' => $cryptPass,'email' => $email));
if(preg_match('#@(hotmail|live|msn).[a-z]{2,4}$#', $email)){
$passage_ligne = "\n";
} else {
$passage_ligne = "\r\n";
}
$headers = 'From: Web Astronomie <node12.cluster1.easy-hebergement.net>'.$passage_ligne;
$headers .= 'Reply-to: Web Astronomie <node12.cluster1.easy-hebergement.net>'.$passage_ligne;
$headers .= 'MIME-Version: 1.0'.$passage_ligne;
$headers .= 'Content-Type: multipart/alternative;'.$passage_ligne;
$sujet = 'Mot de passe perdu';
$message .= 'Content-Type: text/html; charset="ISO-8859-1"'.$passage_ligne;
$message .= 'Content-Transfer-Encoding: 8bit'.$passage_ligne;
$message = 'Bonjour '.$donnee['prenom'].' '.$donnee['nom'].''.$passage_ligne;
$message .= 'Voici votre nouveau mot de passe : '.$newPass.''.$passage_ligne;
$message .= 'Cordialement,'.$passage_ligne;
$message .= NAMESITE.''.$passage_ligne;
if(mail($email, $sujet, $message, $headers)){
echo '<span class="success">Un nouveau mot de passe viens de vous être envoyé</span>';
} else {
echo '<span class="error">Erreur lors de l\'envoie de votre mot de passe</span>';
}
} else {
echo '<span class="error">Aucun compte n\'est associé à cette email :<br />'.$email.'</span>';
}
} else {
echo '<span class="error">Veuillez remplir au moins un champ</span>';
}
} else {
echo '<span class="error">Veuillez entrer une adresse électronique valide</span>';
}
}
}
// CLASS : Membres
class Membre {
public static function info($id, $info){
$resultat = Bdd::connect() -> prepare(SELECT.ALL.USERS.ID);
$resultat -> execute(array('id' => $id));
$infoMembre = $resultat -> fetch(PDO::FETCH_ASSOC);
return $infoMembre[$info];
}
}
// CLASS : Statut
class Statut {
public static function sendStatut($user_id,$statut_text,$statut_acces,$statut_photo,$statut_etat){
if(isset($statut_text) && !empty($statut_text)){
$statut_text = trim(mysql_escape_string($_POST['statut_text']));
if(($statut_acces == 'amis') || ($statut_acces == 'moi') || ($statut_acces == 'public')){
$resultat = Bdd::connect() -> prepare(INSERT.USERSZ_STATUT.STATUTINSERT);
$resultat -> execute(array('user_id' => $user_id,'statut_text' => $statut_text,'statut_acces' => $statut_acces,'statut_photo' => $statut_photo,'statut_etat' => $statut_etat));
$avatar50 = $_SERVER['DOCUMENT_ROOT'].'/users/upload/avatars/'.Statut::newsPost('id').'-mini.jpg';
$avatarDefault = Statut::newsPost('sexe') == 'homme' ? 'users/upload/avatars/homme.jpg' : 'users/upload/avatars/femme.jpg';
echo '<li class="clearfix">';
echo '<div class="statutAvatar arrow">';
echo '<a href="'.Statut::newsPost('pseudo').'">';
if(file_exists($avatar50)){ echo '<img src="users/upload/avatars/'.Statut::newsPost('id').'-mini.jpg" height="50" width="50" alt="" />'; } else { echo '<img src="'.$avatarDefault.'" height="50" width="50" alt="" />'; }
echo '</a>';
echo '</div>';
echo '<div class="statutContent">';
echo '<p>'.Statut::newsPost('statut_text').'</p>';
echo '</div>';
echo '</li>';
} else {
return false;
}
} else {
return false;
}
}
public static function displayStatut(){
$resultat = Bdd::connect() -> prepare(SELECT.ALL.USERS_STATUT.' LEFT JOIN users ON users_statut.user_id = users.id ORDER BY statut_id DESC');
$resultat -> execute();
while($statut = $resultat -> fetch(PDO::FETCH_ASSOC)){
$avatar50 = $_SERVER['DOCUMENT_ROOT'].'/users/upload/avatars/'.$statut['id'].'-mini.jpg';
$avatarDefault = $statut['sexe'] == 'homme' ? 'users/upload/avatars/homme.jpg' : 'users/upload/avatars/femme.jpg';
echo '<li class="clearfix">';
echo '<div class="statutAvatar arrow">';
echo '<a href="'.$statut['pseudo'].'">';
if(file_exists($avatar50)){ echo '<img src="users/upload/avatars/'.$statut['id'].'-mini.jpg" height="50" width="50" alt="" />'; } else { echo '<img src="'.$avatarDefault.'" height="50" width="50" alt="" />'; }
echo '</a>';
echo '</div>';
echo '<div class="statutContent">';
echo '<p>'.$statut['statut_text'].'</p>';
echo '</div>';
echo '</li>';
}
}
public static function newsPost($info){
$resultat = Bdd::connect() -> prepare(SELECT.ALL.USERS_STATUT.' LEFT JOIN users ON users_statut.user_id = users.id ORDER BY statut_id DESC');
$resultat -> execute();
$infoPost = $resultat -> fetch(PDO::FETCH_ASSOC);
return $infoPost[$info];
}
}
?>