8791 sujets

Développement web côté serveur, CMS

Vu la tournure de la discussion, je clos le sujet.

Je ne veux pas apprendre dans un climat que je viens de vivre.
Quelque soit la compétence de la personne qui donne son aide.
Inculquer et communiquer n'est pas la même chose.

Merci tout de même AlsaCréations, c'est un bon forums.

Si le modérateur veut bien supprimer la discussion, ça serait
une bonne chose. Chose que j'ai demandé à sélectionnant
cette option.

Aurevoir!

PS do not reply! je ne lirai pas.
Modifié par dan4 (03 Mar 2011 - 19:56)
Une page index.php vide qui inclut membres.php ? Ou tu nous caches du code ?

(t'as vu, on a des balises php sympas)
die(include('login.php'));


J'ai la gerbe.
Lis la documentation sur include. Lis aussi celle sur die, ça peut que faire du bien aussi (même si c'est pas ce qui me donne ce sentiment).


<HTML>


Je crois qu'on est sur un site IT dédié à l'accessibilité et aux bonnes pratiques web. Donc là, tu risques le lynchage en postant un truc qui serait à peu près passé y'a, quoi, 10 ans ?


a écrit :
J'ai pas mis session_start() à cause que $_SESSION['users']=.... semble initier la session.

Fail. C'est juste que tu as inclus. Doc, doc, doc, toujours Smiley smile
Question : t'as essayé de mater le source, en explorant ? Parce qu'à mon avis, ça vaudra son pesant de cacahOuètes. Testes avec un navigateur qui crashe quand la structure HTML est foireuse, genre IE; ça passera mieux.


if(isset($_POST['submit'])){

Le traitement de la validation en plein milieu du html après le form. Tu oublies la différence primordiale entre les langages dits "statiques" (HTML...) et dynamiques (PHP...).


$users=trim(htmlentities(preg_replace('/([^a-z0-9])/i','',$users)));

Très belle démo de "comment ne pas vérifier ses données".
Pourtant, alsacreations propose des documents sympas sur ce point, de mémoire.
Donc:
- vérification regexp par JS avant validation, ça évite de se retaper tout le form
- vérification regexp en PHP à la validation. Sauf que tu vérifies, et tu tronque pas violemment. Là, si je tape "a_Toto_", ça donnera "aToto". D'ici à ce que j'arrive à me connecter...
- htmlentities, lui préférer htmlspecialchars. Mais de toutes manières, c'est à l'affichage et non à l'enregistrement qu'il faut faire ça.


$apass=md5($_POST['apass']);
$apass=mysql_real_escape_string(md5($_POST['apass']));

Là, soit t'as copié / collé, soit t'as pas fait attention, soit tu vises le best-of plus.
- md5 deux fois. Chapeau bas. Il sert à quoi le premier vu que tu l'ignores complètement ?
- md5 retourne une chaîne... au format md5. J'ai pas souvenir que ça crachait autre chose que du caractère tout à fait compatible SQL. Confirmation / Infirmation ?

$sql="SELECT * FROM `".PRETABLE."auth` WHERE `users`='$users' AND `apass`='$apass'";

T'as mis les quotes correctement, les backquotes par réflexe. Dommage que tu n'utilises pas de préparées : ça t'aurait viré la moitié du code.

while($verif = mysql_fetch_assoc($result)){

      define("EMAIL",$verif['email']);

      define("NIV",$verif['niv']);

		}

A tout hasard, tu travailles avec quel niveau d'erreurs activé ?
- en fait, le select s'avère inutile. Une clef primaire au mieux, une clef UNIQUE au pire sur le champ, tu insères. Si ça marche, rien à faire, sinon c'est que c'est déjà pris.
- define, pour le fun ? Les variables, que ce soit scalaires ou tableaux, ça t'avait soulé ?
- bah justement, définir 50 fois une constante, bizarrement, PHP aime pas trop.

header('location:./');

exit() après un header de type location.

session_regenerate_id();

        $_SESSION = array();

        session_unset();  

        session_destroy();

Consultes la doc sur les sessions et sur ces fonctions. Là, tu fais beaucoup d'opérations inutiles.

sleep(2);

C'est pour faire joli ?

Et encore, je ne traite pas du HTML, là...
Lpu8er, j'ai tenter quelque chose..

En lisant vos commentaires, j'ai l'impression qu'il y a du défoulement parmi vos remarques.
A la place du défoulement, si j'aurais eu des suggestions, ça m'aurait plus aider.

Merci quand même.
Modifié par dan4 (02 Mar 2011 - 15:44)
Modérateur
Bonjour,

Lpu8er, même si tu as pris de ton temps pour soulever les erreurs commises par dan4, il reste que le ton sarcastique et moqueur que tu as utilisé n'est ni pertinent ni agréable pour qui que ce soit.

Je te recommande chaudement d'éviter ce ton la prochaine fois.

Merci de ta compréhension.
dan4, Tony Monast : Malheureusement, ce code est un pot-pourri de copié/collé assemblé à la va-vite sans aucune tentative de compréhension du langage, avec considération du forum d'alsacreations comme une assemblée présente pour faire le travail : rectifier le tout.
Le ton est certes sarcastique, mais au vu du code présenté, ce dernier ne l'est pas moins.

Nous sommes sur un site dédié à l'accessibilité, les bonnes pratiques, les standards dans le domaine du web.
Ici, c'est un peu comme si, demain, quelqu'un venait avec du XML coupé/collé à gauche et à droite, des namespaces mélangés sans références, une imbrication incorrecte, et demandais à ce qu'on corrige le tout.

Ce n'est donc pas du défouloir, c'est une tentative de te faire prendre conscience, dan4, que:
- la documentation existe, et est à consulter en cas de doutes. Contrairement à JS, HTML et consorts, elle est centralisée, aisée à lire (limite agréable), rapide d'accès
- ce code utilise majoritairement des éléments d'il y a de nombreuses années (balises en majuscules, API mysql_* abandonnée)
- une logique simple suffit parfois à résoudre certaines choses, logique non-présente dans ce code (le coup de la recopie sur la même variable entre $_POST['aPass'] et $aPass)
- surenchère de certaines choses au nom de la sécurité, qui au final rendent le code bancal
Le souci, c'est que ces points résumés font que le tout est incohérent, et contraire aux bonnes pratiques. Pire, le tout fait fortement penser qu'en imaginant que tu ais bien écrit ce code, tu ne l'ais pas relu avant de le poster.

N'imagines pas que je poste dans une volonté de te casser ou de me défouler. Seulement, quand quelque chose a été très mal fait, il est, je pense, nécessaire de le dire clairement. Et lorsque le tout a été posté en vue d'une rectification, c'est un minimum de respect à avoir que de relire le tout posément.
Pense à ceux qui passeront après toi Smiley smile
Donc alors ceci :
<SCRIPT>

Est du copier ou du coller?

Comment jugé, vous n'êtes pas la pour me voir en personne.
Vos opinions ne servent à rien si vous jugez.

Ce n'est pas le but du forum ni de mon message.

La discussion est close.
Modérateur
Lpu8er a écrit :
Nous sommes sur un site dédié à l'accessibilité, les bonnes pratiques, les standards dans le domaine du web.


Je crois être bien placé pour connaître Alsacreations et savoir apprécier le ton à utiliser sur ce forum. Smiley cligne

Il y a une façon de dire les choses clairement concernant un code très mal réalisé, et ce n'est pas en arronsant la personne de sarcasmes et de moqueries qu'elle va pouvoir s'améliorer. Je crois sincèrement que dan4 n'avait pas besoin du ton employé pour comprendre qu'il a commis beaucoup d'erreurs. Il était justement ici pour de l'aide, pour détecter ses fautes et les corriger, et non pas pour se faire casser dès le premier message de son sujet. En plus, il n'a jamais demandé qu'on fasse le travail à sa place comme tu sembles le penser. C'est très désagréable.

En tant que modérateur, je répète ma recommandation : évite d'utiliser un ton aussi sévère la prochaine fois. Garde ça pour ceux qui ne veulent rien entendre. Smiley cligne

Merci
Modifié par Tony Monast (02 Mar 2011 - 16:57)
Je ne veux pas partir sur un troll, même si j'ai l'impression que tu n'as pas saisi ce que j'ai voulu dire. Bref.

Donc, on va reprendre, en terme de conseils "simples", "secs" et courtois.

- si les noms de fichiers sont en majuscules, passes-les en minuscules, cela te posera très certainement des problèmes à l'avenir
- il manque le doctype en haut de la page
- les noms des balises devraient être en minuscules
- la balise script peut éventuellement avoir un type définissant son type MIME, et encore
- de même, les commentaires autour du script ne sont ici pas utiles
- idem avec l'attribut name du form
- l'action par défaut d'un formulaire est la page sur laquelle on se trouve, il est donc ici inutile
- l'utilisation de javascript "discret" est recommandé, plutôt que l'insertion des handlers on* directement en attribut html
- strong a un sens sémantique, son utilisation ici est incorrecte au vu de l'accessibilité
- on n'utilise pas des table pour aligner un formulaire, les tableaux sont à utiliser pour les données tabulaires (comme l'indique leur nom). L'utilisation de CSS sur les balises label, en fixant une largeur est préférable, par exemple
- placer du php en plein milieu du code html est à proscrire : cela rend le code brouillon, difficile à lire donc à maintenir, et peu fragmentable
- isset vérifiant qu'une variable existe et est strictement non-nulle et empty vérifiant qu'une variable existe et est équivalente nulle, l'emploi de isset et !empty sur la même variable fait doublon : utiliser !empty est généralement préférable
- l'emploi de htmlspecialchars est préférable à htmlentities
- htmlentities (ou specialchars) est à effectuer lors de l'affichage, non lors de l'enregistrement

C'était la première partie du fichier LOGIN.PHP, je posterais le reste plus tard, si ça peut t'aider.