Vérification du codage de mes class
Posté : 11 mars 2014, 22:36
Bonjour,
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
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];
}
}
?>