blogotext
blogotext copied to clipboard
About the captcha
The captcha system used in comment submission (form + test) must be more independent from the core. The purpose is to allow addons to use it and to integrate in others forms easily.
I think documenting the use of captcha might be enough :
- When
inc/boot.phpis included, a new captcha is computed. You can access to the following variables :$GLOBALS['captcha']['y']and$GLOBALS['captcha']['x'], the two numbers to add$GLOBALS['captcha']['hash']
- Pass one of the integer to
en_lettresfunction to turn it into a word. i.een_lettres($GLOBALS['captcha']['y']) - send the form. Note that token can be included hidden with
hidden_inputfunction. i.ehidden_input('a_contact_token', $GLOBALS['captcha']['hash']) - To check the result of the captcha, compare the token to the results send passed to sha1 function. It requires to know the user agent :
$ua = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : '';
if ($datas['token'] != sha1($ua.$datas['captcha'])) {
// error
}
In short :
The form :
$html .= '<p><label>'.$GLOBALS['lang']['label_dp_captcha'].'<b>'.en_lettres($GLOBALS['captcha']['x']).'</b> + <b>'.en_lettres($GLOBALS['captcha']['y']).'</b>';
$html .= '<input type="number" name="a_contact_captcha" autocomplete="off" value="" class="text" type="int"/></label></p>';
$html .= hidden_input('a_contact_token', $GLOBALS['captcha']['hash']);
The check of POST :
$datas['captcha'] = filter_input(INPUT_POST, 'a_contact_captcha', FILTER_SANITIZE_SPECIAL_CHARS);
$datas['token'] = filter_input(INPUT_POST, 'a_contact_token', FILTER_SANITIZE_SPECIAL_CHARS);
$ua = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : '';
if ($datas['token'] != sha1($ua.$datas['captcha'])) {
// error !
}
Tu es chaud pour porter ta doc sur le wiki ? https://github.com/BlogoText/blogotext/wiki. :D
Juste une chose, pour la doc, utilise soit des noms générique :
hidden_input('a_contact_token', $GLOBALS['captcha']['hash'])
devient
hidden_input('your_input_name', $GLOBALS['captcha']['hash'])
Je ne sais pas si tu peux créer une page, au pire je te la crée.
Je vais quand même voir pour améliorer un peu le captcha pour que ça soit plus facile d'intégrer les outils de sécurité (token et captcha)
+1, on peut peut-être avoir des fonctions facilitantes (Il y en a bien pour "hidden_input")
J'ai bien l'impression que je peux créer des pages sur le wiki. Oui, je suis chaud pour le compléter, ça je sais mieux faire que du PHP ;)
Une fonction pour vérifier le hash sha1 par exemple serait pas mal ;)
Pour le wiki, fait toi plaisir ;)
- N'oublie pas d'ajouter ta page dans la home du wiki
- J'essaye de mettre la langue dans le nom de la page
[FR] le titre/[EN] the title
Je pense bricoler 2 fonctions genre captcha_form() qui retournera le code HTML et captcha_check() pour vérifier la réponse qui retournera du booléen.
Et voilà la version FR : https://github.com/BlogoText/blogotext/wiki/%5BFR%5D-Ajouter-un-captcha-(addons)
je me colle a la versoin [EN] ce week-end quand j'ai plus de temps.
and voilà
Du coup, tu veux que je m'occupe de captcha_form() et captcha_check()?
Ça devrait être dans mes cordes si ça peut aider...
Yep, tu peux :) de mon côté ça commence à revenir à la normale, du coup je serais plus présent assez rapidement :D
Yep, tu peux :)
D'ac', je m'en occupe ces prochains jours.
de mon côté ça commence à revenir à la normale, du coup je serais plus présent assez rapidement :D
aaah, ça fait plaisir à mon petit coeur ;)
Voilà https://github.com/BlogoText/blogotext/pull/366 . Pas sûr que ça apporte énormément, mais ça sera au moins un poil plus simple pour les addons. Si ça te va, je modifierai le wiki en conséquence.
J'en profite pour remarquer qu'il y a des fonctions qui affichent des formulaires dans util.php au lieu d'être dans form.php.
Je pense que tu n'as pas synchro ta branche avant ton commit, du coup ça fait sauter le fichier sitemap.php.
Pour l'emplacement des fonctions, yep, il y a quelques incohérences, à voir ça lors du freeze 3.8...
Ben si pourtant j'ai fait comme d'habitude 😖 . Je ne vois pas comme il a pu disparaître, c'est bien la branche dev que j'ai récupéré.
Là je bloque, j'ignore pourquoi la branche dev est incomplète dans ma copie... J'ai tout bien suivi : git pull upstream dev et tout et tout...
tu te positionnes bien dans ta branche dev (ou autre nom) git checkout dev avant de faire l'upstream ?
Eh bien oui... Je vais reprendre mon dépôt à zero... Tu peux chourer le diff en attendant, peu m'importe qu'il porte mon nom ;)
Bah je ne sais pas ce qui cloche.... :/ Reprend les modifications au propre de ton côté, il n'y a pas beaucoup de code ça va aller vite ;)
C'est résolu.
J'ai dû faire un git checkout upstream/dev sitemap.php sur ma branche dev, le fichier n'avait jamais été récupéré 😖
Pourtant, je fais à chaque fois
git pull origin dev
git pull upstream dev
J'espère maintenant avoir bien tout...
:)
J'hésite à refaire l'addon contact du coup...
ps : en fait non, y a des ajouts importants, inaccessibles avec les fonctions captcha_form, à moins d'intégrer aussi les $random_ids
de mémoire, le système de captcha actuel encapsule le <input> dans le <label> histoire de ne pas gérer la liaison entre les attributs id => for, ont peux revoir ça pour la 3.8 histoire de séparer les deux et de générer un id random.