PHP/Mysql

cycy78000 - 30 déc. 2012 à 20:18
 sezivb - 16 janv. 2013 à 11:33
Bonsoir à tous,

Voilà je suis débutant, et on m'a chargé de créer un site internet pour mon club automobile. Après avoir navigué sur pas mal de site j'ai trouvé Web Accappella comme logiciel. Sur le site le seul hic c'est que je dois verrouillé une partie du site internet pour que les gens de mon club avec un identifiant et mot de passe qu'on leur donnera après leur adhésion. J'ai utilisé pas mal de script je n'arrive pas les faire fonctionner avec la base mysql/php admin. Nous avons un hébergeur payant qui est LWS (Top hébergement), j'aurai besoin que quelqu'un me guide dans l'élaboration des scripts. Je dois ouvrir le site pour Janvier, il me reste plus que la partie sécurisation dont j'ai du mal a mettre en place??

Est ce qu'une âme charitable veux bien m'aider??

Merci a vous, super site pour les informations.

Cordialement

CyCy78000

22 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
31 déc. 2012 à 12:01
Salut,

Le plus simple, rapide et fiable pour toi serait certainement de faire une authentification HTTP. Vu ton hébergeur, il y a de fortes chances pour que le serveur web utilisé soit apache et pour que tu puisses mettre ça en place avec des fichiers .htaccess et .htpasswd. Je te laisse chercher sur google plus de détails, il y a des milliers de tutos à ce sujet !

Mais sinon, au lieux de tout refaire, tu devrais utiliser un CMS. En voici quelques uns à titre d'exemple :
- CMS Made Simple
- Drupal
- Joomla!
- etc
Ce sera peut être un peu plus dur pour toi de personnaliser le look du site (quoique, en se basant sur un thème déjà fait ça peut être très simple), mais au moins c'est complet et sécurisé.
0
Salut,

Perso je trouve ces logiciels trés mal organisé en administration, je les ai tous testé perso pour des personnes voulant pas s'embêter je leur conseil pour nous ca nous allait pas du tous. Le site est déjà fait, j'ai les scripts, mais j'ai juste un problème a faire fonctionner avec la base de donnée.
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
31 déc. 2012 à 12:30
Perso je trouve ces logiciels trés mal organisé en administration

Pour avoir bossé sur plusieurs d'entre eux je peux t'assurer du contraire.

pour nous ca nous allait pas du tous

Tu me fais rire. Un CMS est fait pour s'adapter à l'immense majorités des besoins et est paramétrable à l'extrème. Quand on vois que drupal est utilisé pour des sites allant de celui de la maison blanche à celui d'un hébergeur web en passant par des sites touristiques et j'en passe. Sérieux, non je ne crois pas que le site d'un "club automobile" soit à un tel point particulier qu'un CMS aussi généraliste que ça ne convienne pas. A mon avis c'est plutôt que tu ne sais pas utiliser l'outil correctement. Parce que oui, le développement web, c'est un vrai métier.
0
Le soucis c'est que le développement web j'ai peu de temps pour le faire je me forme sur le tas malheureusement je bosse 2h par jour depuis début décembre. Pour faire un site un peu près correct, après peut être qu'effectivement je ne manipule pas les outils web correctement, mais vu que j'ai déjà tous fait je vais pas recommencer a zéro. La seule chose c'est que j'ai déjà tous les scripts pour faire la sécurisation j'ai juste un petit problème c'est que je ne sais pas ou j'ai merdé si c'est sur la base de donnée ou si c'est sur le script. Et pour répondre à ta dernière phrase, le développement web est effectivement un vrai métier comme beaucoup d'autre, mais je le fais en tant qu'amateur la seule chose que je demande c'est juste une personne pouvant me corriger ce que j'ai commencé et pas tous refaire a zér. Des applications comme cités au dessus sont certes peut être plus facile mais niveau design des templates on ne peut rien importer parce qu'on se tape les versions démo au lieu d'avoir les vrai versions.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
31 déc. 2012 à 13:15
je ne sais pas ou j'ai merdé si c'est sur la base de donnée ou si c'est sur le script

Personne ici ne pourra te le dire tant que tu ne montreras pas ton code tu sais.

[...] parce qu'on se tape les versions démo au lieu d'avoir les vrai versions.

En un mot : non.
0
Désolé je suis nouveau j'ai pas le réflexe de mettre les choses sur les forums même si ca fait des années que je traine sur plein de forums auto.

Je mettrais ça en fin d'après-midi
0
Bonsoir,

J'ai ce code là pour une identification, sauf que je voudrais y intégrer la feuille juste en dessous de ce code je n'arrive pas a savoir ou la mettre

le code pour que j'y intègre le css

<?
include("configuration.php");

$pseudo = trim($HTTP_POST_VARS[pseudo]);
$clef = trim($HTTP_POST_VARS[clef]);
$validation = $HTTP_POST_VARS[validation];

if($validation) {

if(empty($pseudo)) {
$erreur[pseudo] = 1;
} elseif(strlen($pseudo) > 20) {
$erreur[pseudo] = 2;
unset($pseudo,$clef);
}

if(empty($clef)) {
$erreur[clef] = 1;
} elseif(strlen($clef) > 20 || strlen($clef) < 6) {
$erreur[clef] = 2;
unset($clef);
}

}


$ok = 0;

if(!$erreur) {
$ok = vérification($pseudo,crypter($clef));
}

if(!$ok && $validation) {
unset($clef);
$erreur[clef] = 2;
}

/*
 * On dirige l'internaute selon qu'il doive se connecter à l'espace membre ou y accéder
 *
 */

if($validation && !$erreur) {

/*
 * Si le membre a entré un bon mot de passe
 *
 */

// On crypte le mot de passe via la fonction crypter() disponible dans le fichier de configuration
// afin d'empêcher sa lecture dans la barre d'adresses

$clef = crypter($clef);

// On envoie le membre vers la pccueil des membres

header("Location:espacemembre.php?pseudo=$pseudo&clef=$clef");

} else {

/*
 * Si l'internaute a entré un mauvais mot de passe ou ne s'est pas encore connecté
 * On demande à l'internaute de remplir un formulaire avec ses pseudo et mot de passe
 *
 */

/*
 * Faîtes une inclusion de page avec include() plutôt que laisser ce code html.
 * C'est moins lourd et plus clair. Attention, si vous utilisez cette méthode, ne protégéz
 * pas la page utilisée.
 *
 */

echo "<html>
<head>
<title>Section membre</title>
</head>

Accès à l'espace membre :

";

// On affiche les éventuelles erreurs détectées

if($erreur && $validation) {


echo "Merci de corriger les erreurs suivantes :
";

if($erreur[pseudo]) {
echo "- Vous n'avez pas donné de pseudo
";
}
switch($erreur[clef]) {
case 1 : echo "- Vous n'avez pas donné de mot de passe
"; break;
case 2 : echo "- Vous avez donné un mot de passe erroné
"; break;
}

}

echo "<form action='connexion.php' method='post'>

Pseudo : 

Mot de passe : 





</html>
";


}

?>


La page en html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!--page generated by WebAcappella-->
<!-- 2012-12-31T12:18:54 **********************************-->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<meta name="generator" content="WebAcappella 4.3.34 Premium professional (WIN) #7861"/>
<title>AX Club de France</title>
<meta name="keywords" content="ax, citroen ax, ax sport, ax gt, ax gti, ax diesel, ax club, ax club de france, ax club en france, club ax"/>
<meta name="description" content="Site de l'AX Club de France, association loi 1901, Un Club pour un véhicule révolutionnaire"/>

<style type="text/css">
body{margin-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;background-color:#ffffff;}
</style>
<link rel="stylesheet" type="text/css" href="wa_global_style.css"/>
<script type="text/javascript"  src="jquery.js?v=86c"></script>
<script type="text/javascript">
var waJSQuery = jQuery.noConflict()
</script>
<script type="text/javascript"  src="webacappella_core.js?v=1rj"></script>
<!--[if lte IE 8]><script type="text/javascript"  src="excanvas.js?v=1f2a"></script>
<![endif]-->
<!--[if lte IE 8]><script type="text/javascript"  src="webacappella_patch_ie8.js?v=1p89"></script>
<![endif]-->
<script type="text/javascript">
document.write("\u003cscript type='text/javascript'  src='wa_site_global_settings.js?v=1f9wwc4ap6xj0wa"+urlSuffixe(1)+"'>\u003c/script>");
</script>
<script type="text/javascript"  src="jquery.mousewheel.js?v=use"></script>
<link href="webacappella.css?v=ser" rel="stylesheet" type="text/css" media="all"/>
<!--[if lte IE 7]>
<link href="webacappella_ie.css?v=1tjn" rel="stylesheet" type="text/css" media="all"/>
<![endif]-->
<script type="text/javascript"  src="webacappella_tools.js?v=blf"></script>
<script type="text/javascript">
waJSQuery(function() {
initializeWA_JQuery()
});
</script>
<script type="text/javascript">
var waWebFontDescription={families:[
]}
</script>

</head>

[laxetlapresse.html L'AX &#38; la presse]







[photos.html Photos]







[videos.html Vid&#233;os]







[index.html Accueil]







Facebook







Notre forum







[nouscontacter.html Nous contacter]







[demandeadhesion.html Demande d'adh&#233;sion]







[vieabord.html Vie &#224; bord]







[activitesduclub.html Activit&#233;s du club]







[presentationduclub.html Pr&#233;sentation du club]







[identification.html Espace Membre]


Copyright (c) AX Club de France 2013

Ouverture du site internet de l'AX Club de France en Janvier 2013

 




  <!--end html-centered-->
<script type="text/javascript">
<!--
document.webaca_page_option_background=0
document.webaca_page_background_img_size=[-1,-1]
document.webaca_page_is_centered=true;
document.webaca_width_page=1200;
document.webaca_height_page=999;
document.webaca_banner_height=0;
document.webaca_is_preview=false;
var wa_global_market = {markets:new Array(),id_modif_dlg_js:''};
Translator.m_lang="fr";
Translator.m_languages={}
Translator.m_lang_for_filename="";
function wa_timeout(_fct,_time,p1,p2,p3){return setTimeout(_fct,_time,p1,p2,p3)}
function wa_evaluate(_s){return eval(_s)}
function IS_onload(){
IS_onload_WA();
}
-->
</script>
<script type="text/javascript" src='wa_common_messages_fr.js?v='></script>
<script type="text/javascript">
<!--
WA_loadMessages();
-->
</script>
<script type="text/javascript">
<!--
-->
</script>

</html>
0
sylvain64520 Messages postés 130 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 7 juin 2013
2 janv. 2013 à 11:22
Bonjour,

As-tu eu une erreur à l'affichage ? erreur php ?

Utilises-tu des plugins tel que Web Developper (firefox) pour remonter les erreurs Javascirpt ? -> ça pourrait t'aider.
0
Bonjour,

Non je n'ai malheureusement pas d'erreur d'affichage en fait j'ai juste une page blanche

Je ne savais pas qu'il existait un plug-in pour firefox je vais regardé si je le trouve pour l'installer. merci.
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
2 janv. 2013 à 13:53
Salut,

Niveau PHP tu as deux très grosses erreurs :
- Il ne faut surtout pas utiliser les short-tags : remplace <? par <?php
- $HTTP_POST_VARS est obsolète, il ne faut pas l'utiliser, remplace le par $_POST qui fonctionne globalement pareil (désolé pour le jeux de mots tout pourri :p)
De plus, ta manière de faire pour l'authentification me semble très louche, je ne peux qu'émettre des réserves à son sujet étant donné que tu n'as pas montré tout le code à ce sujet. Si c'est un script que tu as trouvé sur le net je t'invite fortement à ne pas l'utiliser, il a l'air foireux. Si c'est toi qui l'a fais, il faudrait en montrer plus afin qu'on puisse te dire si ça va ou pas.


En ce qui concerne le HTML, étant donné qu'il est généré par ou outil graphique, c'est immonde à souhait, mais passons. Si tu veux intégrer ton truc d'authentification il va te falloir faire quelques modifications. Avant d'aller plus loin, j'aimerais savoir quel est ton niveau en dev web exactement : sais-tu écrire du HTML à la main ? as-tu déjà manipulé des formulaires ? connais-tu le PHP ? Parce qu'au lieux de te donner une réponse toute cuite j'aimerais plutôt pouvoir t'expliquer comment faire avec des explications de préférence adaptées à ton niveau.
0
Bonsoir,

En fait j'ai trouvé ce script sur le site, il est un peu vieux, c'était un espace membre sans base mysql.

En ce qui concerne HTML je manipule un peu, mais le php c'est tous nouveau pour moi j'ai trouvé des cours dessus que je lis je me forme histoire de comprendre le fonctionnement.

J'ai des scripts que j'ai refait en suivant un tuto je vais vous les joindres.

Connexion

<?php

class Auth{
if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['login']) && isset($_SESSION['Auth']['pass'])){
extract($_SESSION['Auth']);
mysql_connect("localhost","root","root");
mysql_select_db("basededonnee");
$sql = "SELECT id FROM users WHERE login='$login' AND pass='$pass'";
$req = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($req)>0){
    return true;
        }
else{
     return false;
}
}
else{
    return false;	
}

}
}

?>
<html>
<head><title>Authentification requise</title></head>

<center>
Connexion à l'espace membre

<form action="espacemembre.php">
<center>Identifiant : </center>,
<center><center>,

----

<center>Mot de passe : </center>,
<center></center>


</form>
</center>

<html>[code=php]

Fichier authentification

[code=php]<?php

class Auth{
if(isset($_SESSION['Auth']) && isset($_SESSION['Auth']['login']) && isset($_SESSION['Auth']['pass'])){
extract($_SESSION['Auth']);
mysql_connect("localhost","root","root");
mysql_select_db("basededonnee");
$sql = "SELECT id FROM users WHERE login='$login' AND pass='$pass'";
$req = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($req)>0){
    return true;
        }
else{
     return false;
}
}
else{
    return false;	
}

}
}

?>


Login

<?php session_start();
print_r($_SESSION);
if (isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])){
extract($_POST);
$pass = sha1($pass);
mysql_connect("localhost","root","root");
mysql_select_db("basededonnee");
$sql = "SELECT id, FROM users WHERE login='$login' AND pass='$pass'";
$req = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($req)>0){
$data = mysql_fetch_assoc($req);
$_SESSION['Auth'] = array(
'login' => $login,
'pass' => $pass,
);
print_r($_SESSION);
        header('Location:espacemembre.php');
}
else{
     echo "Mauvais identifiants";
}
}
?>


Espace membre (avec de quoi se délogger)

<?php
session_start();
require("autht.php");
if(Auth::islogged()){

}
else{
    header('location:connexion.php;')
}
?>
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
2 janv. 2013 à 22:58
Re,

Attention, n'utilise surtout pas ces scripts tel quel, ils sont dangereux. C'est bourré d'injections SQL, une faille de sécurité dangereuse. De plus, à cause de la mauvaise utilisation de la fonction extract() ça peux potentiellement ajouter d'autres failles tout aussi dangereuses.

S'il n'y a vraiment que ça on peux corriger, c'est pas bien compliqué. M'enfin bon, si tu as utilisé d'autres scripts en provenance de la même source, il faudrait tout passer en revue faute de quoi ton site risque de se faire dégommer rapidos.
0
J'ai pas encore utilisé ces script le site n'est pas encore en ligne c'est pour cela que je joins les scripts pour corriger les éventuelles erreurs que je n'aurai pas vu.
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
3 janv. 2013 à 10:20
bonjour

en effet
$sql = "SELECT id, FROM users WHERE login='$login' AND pass='$pass'"; on peut balancer n'importe quoi aprés le extract() surtout si on recopie le form et si on c'est déjà connecté avec un autre login ...

mettre

<?php 
session_start();
print_r($_SESSION);


if (isset($_POST['login'],$_POST['pass']) && !empty($_POST['login']) && !empty($_POST['pass'])){

@mysql_connect("localhost","root","");
@mysql_select_db("users");

/*protection anti xss et injection sql de base*/
$login $_POST['login'] mysql_real_escape_string(htmlentities(strip_tags(trim($_POST['login']))));
$pass $_POST['pass']  mysql_real_escape_string(htmlentities(strip_tags(trim($_POST['pass']))));
//$pass = sha1($pass);

$sql = "SELECT id FROM users WHERE login='$login' AND pass='$pass' limit 1";
//limit 1 comme le premier trouvé et 1 seul

$req = @mysql_query($sql);
//or die(mysql_error());
//on affiche pas les erreurs exploitables par un hacker

if(@mysql_num_rows($req)===1){
//$data = @mysql_fetch_assoc($req); sert à rien tu reprends pas des datas
$_SESSION['Auth']=true;
$_SESSION['Login']=$login;
unset($sql);
unset($pass);
unset($login);
/*ahhhh ...
fixe pas le pass dans une session 
????*/
//$_SESSION['Auth'] = array(
//	'login' => $login,
//	'pass' => $pass,
//);
//print_r($_SESSION);
/*il faut un espace entre: et espacemembre.php*/
    header('Location: espacemembre.php');exit;
}else{
echo "Mauvais identifiants";
}

}
?>


ou utilisé pdo et les requêtes préparées
de + le extract() sert à rien pour deux variables


Bonne programmation !
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
3 janv. 2013 à 10:21
//$pass = sha1($pass);
tu enléves les //
c'est une erreur de frappe

merci ++


Bonne programmation !
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
4 janv. 2013 à 14:49
Salut,

@cod57: NOOOOOOOOOOOOOOOOOOOOOOOOOOOOON!
Quelques remarques importantes sur ce que tu as mis :

1/ On ne trim jamais un mot de passe! C'est le rendre plus simple et donc plus vulnérable. Toute la kyrielle de fonctions destinées à "nettoyer" les données ne sert strictement à rien étant donné que le pass n'est jamais mis dans une requête SQL et encore moins affiché. On ne considère que son hash, il n'y a strictement aucune raison de faire toutes ces manipulations sur le mot de passe.

2/ Arrêtez d'utiliser les fonctions mysql_*() ! C'est officiel, ces fonctions sont totalement dépréciées et seront supprimées dans le futur. Je te laisse lire l'article en lien pour plus de détails.

3/ Grrrr, tes commentaires sont assez insultant. Tout comma la plupart des gens, tu utilises très mal le terme "hacker". Ça ne signifie pas du tout ce que tu crois.
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 janv. 2013 à 15:12
bonjour

@TychoBrahe
c'est vrai que le contrôle du pass est superflu vu qu'il est hashé le trim aussi !
pour le reste mysql_real_escape_string et mysql_connect c'est du passé donc mieux comme tu le préconise PDO et une requête préparée


Bonne programmation !
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 janv. 2013 à 16:13
@TychoBrahe
hacker comme intrusion, rien de plus
Bonne programmation !
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 janv. 2013 à 16:49
@TychoBrahe j'aimerai ton avis si je fais ça

<?php 
session_start();

function ismember(){

static $pass;
static $login;
/*pour la connection a la base*/
static $host = 'localhost';
static $utilisateur = 'root';
static $motdepasse = '';
static $ma_base = 'users';

if (isset($_POST['login'],$_POST['pass']) && !empty($_POST['login']) && !empty($_POST['pass'])){

/*protection anti xss et injection sql de base sur le login*/
$login = htmlentities(trim($_POST['login']));
$pass = $_POST['pass'];
$pass = sha1($pass);

/*connection  mysql*/

try{
$connStr = 'mysql:host='.$host.';dbname='.$ma_base;
$arrExtraParamarray(PDO::MYSQL_ATTR_INIT_COMMAND> "SET NAMES utf8");
$pdo = new PDO($connStr, $utilisateur, $motdepasse, $arrExtraParam); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
$msg = 'TECHNICAL PROBLEM ... CALL HOUSTON ... PLEASE';
/*ou plus explicite en mode debug creation*/
//$msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
die($msg);
}


$query = "SELECT id FROM users WHERE login=:tologin AND pass=:topass limit 1";
//limit 1 comme le premier trouvé et 1 seul

$prep = $pdo->prepare($query);
$prep->bindValue(':topass', $pass, PDO::PARAM_STR);
$prep->bindValue(':tologin', $login, PDO::PARAM_STR);	
$prep->execute();			

$count=false;

$count = $prep->rowCount();

if($count===1){

$_SESSION['Auth']=true;
$_SESSION['Login']=$login;
unset($sql);
unset($pass);
unset($login);
unset($count);

header('Location: espacemembre.php');exit;

}else{
return "Mauvais identifiants";
}

}else{
/*rien*/
}

}

echo ismember();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>  
  <head>  
    <meta http-equiv="content-type" content="text/html; charset=utf-8">  
    <meta name="generator" content="PSPad editor, www.pspad.com">  
    <title>
    </title>  
  </head>  
  
    <form method="post" action="">login :
      
      
passw :
      
      

      
    </form>  
  
</html>



Bonne programmation !
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
4 janv. 2013 à 17:59
hacker comme intrusion, rien de plus

Justement, aucun rapport ! Tu voulais utiliser cracker, pas hacker !

Pour ton code, perso je ne suis pas du tout fan d'avoir la connexion à la BDD avec, il faudrait dissocier tout ça. Perso j'ai tendance à avoir un fichier common.php inclue de base sur toutes mes pages contenant ce qui est valable partout (connexion à la DB, autoload, etc). Exemple de common.php :
<?php

/**
 * bla bla bla
 */

$GLOBALS['project_name']['db'] = new \PDO('mysql:dbname=database_name;host=host', 'username', 'password', [\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'']);
$GLOBALS['project_name']['db']->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);


Oui c'est une globale et non ce n'est pas sale. Dans ce cas précis ça me semble totalement justifié.

À part cette remarque sur la connexion à al DB, je te suggère quelques modifications sans grande importance :
- directement faire $pass = sha1($_POST['pass']); au lieux de passer par une étape inutile
- remplacer htmlentities() par htmlspecialchars() qui, dans le cas présent, est plus adapté
- essaye de logger les erreurs, bon après pour évité d'être submergé il faut configurer logrotate ou équivalent
- tu pourrais avoir un gestion des exceptions de plus haut niveau (cf common.php), c'est cool pour faire des log d'erreur
- $count=false; est totalement inutile puisque tu lui assigne une nouvelel valeur dans l'instruction suivante
- bearkk beark des statiques qui servent à rien !
- les unset() sont inutiles
- au lieux de if (condition) { /* plein de trucs */ } else { /* quedal */ } tu peux faire un if (!condition) { return ; }, ça enlève un peu de profondeur et est un peu plus agréable à lire. Quoique, en général quand on fais de la POO on aime pas trop les return comme ça, mais vire au moins le else qui sert à rien !

Et sinon pour vraiment mieux faire, il ne faudrait pas prendre un simple sha1 du pass mais utiliser un sel aléatoire. Pour ça, crypt() est très efficace. Son seul problème est que si on veux utiliser autre chose que l'algo par défaut (DES ou MD5) il faut générer soi même un sel aléatoire, ce qui est fastidieux. Heureusement, PHP 5.5 va apporter une super fonction qui fais tout ça super bien : password_hash().
0
Rejoignez-nous