Besoin de conseils pour un bon codage de mes fonctions
Posté : 13 mars 2014, 04:48
Bonjour,
J'ai une liste de fonctions que j'ai moi-même créé.
Elles fonctionnent, mais j'aimerais savoir si elles sont bien écrites (erreurs de sécurité, faille, mauvais codage etc...)
Merci beaucoup d'avance
J'ai une liste de fonctions que j'ai moi-même créé.
Elles fonctionnent, mais j'aimerais savoir si elles sont bien écrites (erreurs de sécurité, faille, mauvais codage etc...)
Merci beaucoup d'avance
<?php
include($_SERVER['DOCUMENT_ROOT'].'/include/define.inc.php');
include('smiley.func.php');
// Connexion à la base de données
function connect(){
try{
$connexion = new PDO(DNS, USER, PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
} catch (Exception $e){
echo 'Échec lors de la connexion : ' . $e->getMessage();
}
return $connexion;
}
// Vérifications des sessions
function verif($pseudo, $persistent){
if(isset($pseudo) || isset($persistent)){
header('location: home');
exit();
}
}
function verifHome($pseudo, $persistent){
if(!isset($pseudo) && !isset($persistent)){
header('location: ../login.php?login_error=1');
exit();
}
}
// Cryptage
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;
}
// Majuscules et accents majuscules
function majuscule($mot){
$mot = utf8_decode($mot);
$mot = trim($mot);
$maj = $mot[0];
$maj = strtr($maj, äâàáåãéèëêòóôõöøìíîïùúûüýñçþÿæðø,ÄÂÀÁÅÃÉÈËÊÒÓÔÕÖØÌÍÎÏÙÚÛÜÝÑÇÞÝÆÐØ);
$mot = substr_replace($mot,$maj,0,1);
$mot = utf8_encode($mot);
$mot = ucfirst($mot);
return $mot;
}
// Date relative
function getRelativeTime($date){
$date_a_comparer = new DateTime($date);
$date_actuelle = new DateTime("now");
$intervalle = $date_a_comparer->diff($date_actuelle);
if($date_a_comparer > $date_actuelle){ $prefixe = 'Dans '; }
else { $prefixe = 'Il y a '; } $ans = $intervalle->format('%y');
$mois = $intervalle->format('%m');
$jours = $intervalle->format('%d');
$heures = $intervalle->format('%h');
$minutes = $intervalle->format('%i');
$secondes = $intervalle->format('%s');
if($ans != 0){ $relative_date = $prefixe . $ans . ' an' . (($ans > 1) ? 's' : ''); if ($mois >= 6) $relative_date .= ' et demi'; }
elseif($mois != 0){ $relative_date = $prefixe . $mois . ' mois'; if ($jours >= 15) $relative_date .= ' et demi'; }
elseif($jours != 0){ $relative_date = $prefixe . $jours . ' jour' . (($jours > 1) ? 's' : ''); }
elseif($heures != 0){ $relative_date = $prefixe . $heures . ' heure' . (($heures > 1) ? 's' : ''); }
elseif($minutes != 0){ $relative_date = $prefixe . $minutes . ' minute' . (($minutes > 1) ? 's' : ''); }
else { $relative_date = $prefixe . ' quelques secondes'; } return $relative_date;
}
// Connexion
function loginCreate(){
$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 = 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>';
}
}
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 = connect() -> prepare(SELECT.ALL.USERS.EMAIL);
$verifMail -> execute(array('email' => $email));
if($verifMail -> rowCount() === 1){
$donnee = $verifMail -> fetch(PDO::FETCH_ASSOC);
$newPass = chaine(8);
$cryptPass = htmlspecialchars(sha1($newPass));
$enregistrePass = 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>';
}
}
// Membre
function info($id, $info){
$resultat = connect() -> prepare(SELECT.ALL.USERS.ID);
$resultat -> execute(array('id' => $id));
$infoMembre = $resultat -> fetch(PDO::FETCH_ASSOC);
return $infoMembre[$info];
}
// Statut
function displayStatut(){
$resultat = connect() -> prepare(SELECT.ALL.USERS_STATUT.' LEFT JOIN users ON users_statut.user_id = users.id ORDER BY statut_id DESC');
$resultat -> execute();
if($resultat -> rowCount() >= 1){ ?>
<div id="newsFeed" data-referrer="newsFeed">
<div id="topList" class="listPoint"></div>
<ol class="clearfix">
<?php
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'; ?>
<li class="clearfix">
<div class="statutAvatar arrow">
<a href="<?php echo $statut['pseudo']; ?>"><?php if(file_exists($avatar50)){ ?>
<img src="users/upload/avatars/<?php echo $statut['id']; ?>-mini.jpg" height="50" width="50" alt="" /><?php } else { ?><img src="<?php echo $avatarDefault; ?>" height="50" width="50" alt="" /><?php } ?>
</a>
</div>
<div class="statutContent">
<div class="statutName"><a href="<?php echo $statut['pseudo']; ?>"><?php echo majuscule($statut['prenom']); ?> <?php echo majuscule($statut['nom']); ?></a></div>
<div class="statutText"><?php echo nl2br(smiley($statut['statut_text'])); ?></div>
<div class="statutDate"><?php echo getRelativeTime($statut['statut_date']); ?></div>
<div class="statutOpt">
<a href="#" class="linkOpt"><i class="img_like"></i><span>J'aime</span></a>
<a href="#" class="linkOpt"><i class="img_comment"></i><span>Commenter</span></a>
</div>
</div>
</li><?php } ?>
</ol>
<div id="botList" class="listPoint"></div>
</div><?php } else {}
}
function newsPost($info){
$resultat = 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];
}
function sendStatut($user_id,$statut_text,$statut_acces,$statut_photo,$statut_etat){
$statut_text = trim(html_entity_decode($_POST['statut_text']));
if(isset($statut_text) && !empty($statut_text)){
if(($statut_acces == 'amis') || ($statut_acces == 'moi') || ($statut_acces == 'public')){
$resultat = connect() -> prepare(INSERT.USERSZ_STATUT.STATUTINSERT);
$resultat -> execute(array('user_id' => $user_id,'statut_text' => trim(html_entity_decode($statut_text)),'statut_acces' => $statut_acces,'statut_photo' => $statut_photo,'statut_etat' => $statut_etat)); ?>
<div id="newsFeed" data-referrer="newsFeed">
<div id="topList" class="listPoint"></div>
<ol class="clearfix"><?php
$avatar50 = $_SERVER['DOCUMENT_ROOT'].'/users/upload/avatars/'.newsPost('id').'-mini.jpg';
$avatarDefault = newsPost('sexe') == 'homme' ? 'users/upload/avatars/homme.jpg' : 'users/upload/avatars/femme.jpg'; ?>
<li class="clearfix">
<div class="statutAvatar arrow">
<a href="<?php echo newsPost('pseudo'); ?>"><?php if(file_exists($avatar50)){ ?>
<img src="users/upload/avatars/<?php echo newsPost('id'); ?>-mini.jpg" height="50" width="50" alt="" /><?php } else { ?><img src="<?php echo $avatarDefault; ?>" height="50" width="50" alt="" /><?php } ?>
</a>
</div>
<div class="statutContent">
<div class="statutName"><a href="<?php echo newsPost('pseudo'); ?>"><?php echo majuscule(newsPost('prenom')); ?> <?php echo majuscule(newsPost('nom')); ?></a></div>
<div class="statutText"><?php echo nl2br(smiley(newsPost('statut_text'))); ?></div>
<div class="statutDate"><?php echo getRelativeTime(newsPost('statut_date')); ?></div>
<div class="statutOpt">
<a href="#" class="linkOpt"><i class="img_like"></i><span>J'aime</span></a>
<a href="#" class="linkOpt"><i class="img_comment"></i><span>Commenter</span></a>
</div>
</div>
</li>
</ol>
<div id="botList" class="listPoint"></div>
</div><?php } else { return false; }
} else {
return false;
}
}
?>