Archives de catégorie : Compte-rendu hebdomadaire

Compte-rendu de mes activités chaque semaine sur toutes mes créations et tout les supports (Youtube, GitHub, jeux-vidéo, etc…)

Début de mes vacances en Alsace

La semaine du 5 au 10 février 2018, j’ai doucement arrêté mes activités pour préparer mon voyage vers mon lieu de vacances. J’ai avancé un peu sur mon prototype de FPS old-school en 2,5D. J’ai essayé de cuisiner des trucs mangeables, et finalement j’ai fais des chaussons au chocolat. Non à part ça, rien à dire, et c’est pour ça que ce compte-rendu est en retard. Enfin aussi parce que le voyage m’a fatigué. Je suis si contente d’être arrivée samedi soir chez ma chère amie 🙂 Enfin bref, je me repose et je peux être dans mon genre <3 Du coup, je ferai le prochain compte-rendu dans deux semaines. J’y mettrai quelques trucs que je ferai pendant ces vacances. Le moteur de FPS, etc… 🙂

Vidéo Inktober reportée, prototype de moteur BUILD-like et TMTC dans Les carencés

La semaine du 29 janvier au 4 février 2018 était totalement plongée dans le développement de mon prototype de moteur de rendu 2,5D façon BUILD-like. Oui ce n’est pas tout à fait de la 3D au sens strict. Bon ce compte-rendu est en retard et du coup je compte le dimanche x)

J’ai à peine avancé sur le dessin animée de la future vidéo sur le Inktober 2017. Justement, j’ai décidé que je prendrais tout mon temps pour terminer cette vidéo et la publier sur ma chaîne. Je suis bien trop motivée par d’autres choses par rapport à la partie dessin-animée de ce projet. Comme le prochain Inktober est en octobre, je pourrai même sortir la vidéo de celui de l’année dernière dans un mois ou deux, que ça laisserait beaucoup de temps avant la prochaine. Et puis la partie dessin animée sera prête à être recyclée et le projet du montage aussi. Je ne rencontrerai donc plus le même soucis pour produire la vidéo rapidement 🙂 Je pense que si pour toutes les nouveaux contenus que je lance sur ma chaîne ou d’autres supports, je me laisse le temps, après les choses se passeraient bien mieux. C’est ma nouvelle résolution de l’année et contrairement à l’année dernière, j’ai pu faire janvier entier sans devoir arrêter de faire quelque chose pour me recharger au lit 😀

Avant d’enchaîner sur ce prototype de moteur de jeu 2,5D old school, je vous annonce la publication en début de semaine d’un épisode du podcast Les carencés dans lequel vous pourrez entre autres écouter mon TMTC : Les carencés #16 : Les p’tits éleveurs dans la prairie. Entre temps, un autre épisode s’est enchaîné. Je n’y ai aucune contribution personnelle, mais je vous le dis parce que ce podcast est très cool et donc j’en fais sa pub au passage :p Je suis donc Timidouveg dans le podcast. Je précise, au cas où je change de pseudonyme à l’avenir, comme je l’envisageais dans mon vlog 4.

Comme je vous le disais, je suis le nez dans le développement de mon prototype et je ne pense quasiment qu’à ça. Bon, pas qu’à ça, mais aussi de la dernière chose dont je vous parlerai à la fin de ce compte-rendu. J’ai hâte 🙂 Bref, j’ai passé plusieurs jours à réfléchir, et tester une idée d’algorithme pour faire le rendu des murs et surtout en respectant l’ordre d’affichage pour que les murs derrières d’autres murs restent à l’arrière. J’avais en effet un soucis qu’on rencontre toujours quand on essaye de rendre un monde 3D en 2D sur l’écran. L’ordinateur ne pouvait pas deviner quels murs sont proches de la caméra et lesquelles sont plus éloignées. J’ai trouvé une méthode pour le faire. Ça fonctionne et il reste un petit bug qui devrait être rapide à comprendre et corriger. Voici donc une petite vidéo qui montre le rendu pixel par pixel.

N’hésitez pas à regarder dans la description de la vidéo pour trouver l’auteur de la musique que j’ai utilisée ou même cliquer ici pour passer sur son site : https://jaunter.bandcamp.com. J’adore ce style de musique (le chiptune). L’auteur vend à prix libre des albums, et cette musique vient d’ailleurs de l’un d’entre eux 🙂
Je ne suis pas toujours à fait satisfaite de mon algorithme. Je crains qu’il ne permette pas facilement de faire des « portals ». Des portals ? Comme le jeu Portal ? Oui, mais dans un moteur pas tout à fait 3D :p En tout cas, c’est effectivement la même technique utilisée dans les jeux Duke nukem 3D, Blood, Shadow Warrior, bref le moteur BUILD de Ken Silverman. C’est ce qui permet de faire des géométries non-euclidiennes. Si vous voulez d’ailleurs vous éclater à faire plein d’expériences d’espaces non-euclidiens, vous pouvez jouer un peu avec l’éditeur de niveau de Duke nukem 3D, ou en plus moderne et plus poussé, Portal 2 :p

En tout cas, plus je code et réfléchis à mon algorithme qui n’est pas tout à fait, et même, presque pas du tout comme celui de BUILD, et plus je comprends l’algorithme de ce dernier. Finalement, je vais soit mixé ma méthode avec celle de Ken Silverman, soit réécrire un algorithme plus proche du sien directement, maintenant que je le comprends beaucoup mieux 🙂 Une chose est sûre, je garderai mon code, et vous en parlerai dans des articles/tutoriels dédiés à ce genre de moteur et peut-être en reparlerai un peu dans des articles sur le rendu logiciel 🙂 Pour vous mettre l’eau à la bouche, je vous annonce que je parlerai forcément des algorithmes de tri, de portals, de projection 3D vers 2D, de plaquage de textures, etc… Ce sera sûrement séparé pour réutiliser chaque techniques dans tout vos projets quel qu’il soit 😉

Bon le dernier truc à vous dire, et bien, dans une semaine, je pars en vacances chez une amie en Alsace, pour deux semaines. J’ai hâte… Ah oui je l’ai déjà dis que j’avais hâte :p

Pause du montage vidéo et prototype de Ken Silverman’s Build-like

Finalement, je n’ai pas encore fini le montage de ma vidéo sur le Inktober de l’année dernière. Je pense finir ça dans deux semaines. Je reprendrai lundi plus exclusivement dessus. Pour le moment, une gastro a eu la mauvaise idée de venir dans mon organisme. Depuis ce matin donc, l’intrus est en train de passer un très mauvais moment face à mon système immunitaire de kryptonienne x)

La semaine du 22 au 27 janvier 2018, j’ai assez vite mis en pause le montage vidéo après avoir avancé un petit peu dessus. Je voulais finir le dessin de mon dernier tipeur de l’année précédente, et aussi j’avais un besoin vital de coder mon Old-school 3D Renderer inspiré de Build de Ken Silverman 🙂

J’en ai fais des choses dessus, même si il y a encore des éléments fondamentaux à programmer pour terminer le minimum syndical du rendu de ce prototype. J’ai fais un thread sur Twitter que j’ai alimenté à chaque nouveauté. Je vous ai remis les captures d’écran ici et résume ce que j’ai fais. J’ai réalisé le rendu 3D des murs, fais un Z-order pour les dessiner du plus près au plus lointain. Ce dernier est insuffisant et doit entrer dans un système de Z buffer simplifié qui s’inspire un peu d’un raycasting optimisé. Disons que ce pseudo-raycasting, scanne les murs dans le même ordre que le rendu, c’est à dire dans l’axe des X relatif à la caméra. Quand je dis scanner, je ne parle pas de pixels ou de cases d’une gille comme dans un raycasting classique. Je parle d’aller sur la partie gauche des murs et faire le reste par des calculs de segments tout simples. En gros, les murs sont ramenés au repère de la caméra, puis ordonnés sur le long de l’axe X (l’horizontale de ce qu’on voit, de gauche à droite), et scanné un à un en cherchant les intersections de murs dans le champ de vision et en comparant la distance des murs qui se concurrencent pour choisir le plus proche en premier. Tout est donc codé, à l’exception de ce balayage avec comparaison. J’ai choisi de simplifier le nombre de murs en me focalisant bien entendu sur ceux visibles à l’écran. J’ai donc codé un frustum culling, et je coderai tout à l’heure un backface culling (élimination des murs qui ne font pas face à la caméra). Oui, je m’éclate 🙂

J’ai très peu joué à Factorio moddé, donc pas avancé sur le tournage de ma future série sur la construction d’un megabase. Je reprendrai ça dés lundi, en essayant de caser le montage vidéo, le développement du Build-like et des parties d’une ou deux heures, et le script d’un No-Comment que j’ai envie de faire avant celui prévu depuis l’année dernière. Pfiou…

Dessin-animé, vlog 4, lecture lente, nouvel épisode sur Tetris, prototype de heightmap 3D

Durant la semaine du 15 au 20 janvier 2018, j’ai continué le montage de ma vidéo sur le Inktober. Et finalement, il me faudra au moins encore la semaine prochaine pour terminer la vidéo. Je suis en pleine création de la partie dessin-animée. J’en parle dans le vlog 4 qui est sortit cette nuit et que j’ai annoncé en fin de matinée. J’y rappelle aussi l’existence de mon Tipeee et de ce blog, pour les personnes qui ne le savaient pas encore. Et enfin, je parle d’un projet qui me permettra de faire évoluer mon modèle économique 🙂

Je continue ma lecture de « La libération animale » par Peter Signer. En gros, je lis 10 pages par soir et certains soirs je n’ai pas pu lire. C’est ce qui explique le temps qu’il me faut pour lire un livre. Mais, je vais tenter d’améliorer ça en passant éventuellement à 20 pages par soir si possible.

J’ai aussi sortit en début de semaine un nouvel épisode de ma série sur mon défi Tetris réalisé en 2017. Et aujourd’hui, j’ai commencé le développement d’un prototype de Heightmap en 3D. Pour l’instant c’est en 2D, pour me concentrer sur la logique du heightmap, puis je ferai ensuite un système simple de rendu 3D.Heightmap3D - 20 janvier 2018

Du Python, du Blender, un futur let’s play Factorio moddé et Linux

La semaine du 8 au 13 janvier 2018, toujours le même projet. J’ai continué le montage de la vidéo sur mon Inktober. Je vous mets une capture d’écran du moment où j’ai fais un peu se script Python, appris plus de trucs en animations, fait du texte 3D. J’adore apprendre de nouvelles choses en créant mes idées 🙂 Sur l’image, on ne voit pas le script Python, mais la tête de mon Blender pour le montage. Oui j’ai besoin de plusieurs écrans, c’est maintenant devenu une évidence 😀

Montage complexe Inktober 2017Depuis cette image, j’ai bien sûr ajouté des trucs. Et ce n’est pas tout pour cette semaine. J’ai aussi préparé et tourné le premier épisode d’une série let’s play sur Factorio avec des mods. Malgré ce qui est arrivé avec le let’s play sur Lethis, ça ne me semblait pas une bonne chose d’en rester là. Avec une meilleure organisation et l’acceptation de mes imperfections, ainsi que mon nouvel environnement de création et de jeu, Linux, je peux essayer une approche différente. Peut-être que je retenterai Lethis un jour, mais en attendant, je prends plaisir à jouer à Factorio, et plus encore avec tout les mods que j’ai décidé d’associer ensemble. L’objectif de cette série est de m’amuser sous vos yeux et de vous parler, tout en prenant tout mon temps pour bâtir une megabase comme on en trouve dans les vidéos anglophones 🙂 Je sortirai cette série courant ou fin printemps. C’est la grande différence avec Lethis. Je joue, fais des montages simples sous Blender, utilise un script Linux que je vais coder pour copier un projet Blender de base avec le début et la fin déjà en place pour accélérer la production, et une fois toute une saison prête, je diffuse une ou deux fois par semaine, dans le calme 😀

Tout à l’heure, j’ai commencé le montage du prochain épisode de Tetris. Je suis à la moitié, et je reprendrai un peu lundi. En m’y prenant à raison d’une demi-heure tout les deux jours, je devrai réussir à finir de publier cette série avec une sortie d’épisode une fois par semaine. Je verrai bien, mais en tout cas, vous n’aurez plus trop à attendre pour la suite des épisodes dorénavant 🙂 Aussi, je devrai me remettre au développement de TFL, Demiurge Mini, etc… dans une semaine ou une semaine et demi, le temps de bien finir proprement la vidéo du Inktober. Vous l’avez sûrement compris, en ce moment les semaines ne se limite qu’à ma casquette de vidéaste. Bien que dans Factorio, je joue les ingénieures et que dans mes montages sous Blender, il y a un peu d’infographie et de programmation avec Python :p

Ah oui, et j’ai enfin pu mettre à jour mon OS, en réduisant la partition /temp qui était bien trop grande (contenu qui ne dépassait jamais 1%) et ainsi agrandir la partition /var. J’ai aussi agrandit la partition /boot que j’avais limité à 496 Mo, croyant au départ que ça suffisait. La raison est qu’avant d’installer Xubuntu, si vous vous souvenez bien, j’avais testé FreeBSD. Seulement voilà, FreeBSD est Unix, alors que Linux n’est pas Unix. Sur un système Unix comme FreeBSD, le /boot doit être exactement de 496 Mo, ce qui est totalement faux sous Linux qui du coup de nos jours à besoin de bien plus. C’est ce qui provoquait l’incapacité à mettre à jour mon système et même d’installer de nouveaux logiciels. Enfin bref, c’est de l’histoire ancienne maintenant 🙂

Capture d’écran_2018-01-12_19-29-04Du coup, je me suis amusée à créer des lanceurs pour Factorio sous Linux. Un lanceur dans mon répertoire Jeux-vidéo de ma grosse partition personnelle, et un autre dans le start menu, catégorie Jeux. Les lanceurs utilisent une icône du jeu que j’ai pioché sur Internet car il n’y en a pas par défaut dans la version pour Linux. D’où pourquoi je l’ai ajouter pour agrémenter et aussi j’ai ajouté une option de commande pour dimensionner la fenêtre du jeu à 1600×900. Un format 16:9 qui me permet de filmer ma partie sous OBS en qualité correct pour mon let’s play, en toute simplicité. La version du jeu que j’ai installé (0.15.40) ne contient pas d’option pour changer la résolution du jeu dans le menu. Mais, je suis sous Linux 😀 Je sens qu’avec cet OS, je vais me facilité la vie pour créer, apprendre des trucs et simplement rendre mon ordinateur plus confortable :p

Bonne année, montage vidéo et mon premier TMTC envoyé

Bonne année cherxs lecteux :p Je n’ai publié aucun compte-rendu pour le nouvel an parce que j’avais besoin de m’arrêter. Je vous avez prévenu la dernière fois. La nouvelle année commence doucement et bien. Je dois juste surveiller mon comportement le soir. J’ai toujours cette tendance à tarder et à lutter contre le sommeil, mais j’ai pu avoir des couchers plus tôt.

Tofoie gras de fin d'année 2017
Tofoie gras de fin d’année 2017

La semaine du 1er au 5 janvier 2018 était consacrée uniquement au montage de ma vidéo sur le Inktober. J’ai prévu de terminer ça pour la fin de la semaine prochaine. Donc les comptes-rendus seront répétitifs jusqu’au prochain. Je suis fatiguée aujourd’hui, donc je ne vais pas beaucoup écrire. J’ai réussi, comme je le disais à me coucher à de meilleurs heures, et j’en ai profité pour recommencer à lire des livres. Je continue donc « La libération animale » de Peter Singer. Ensuite, j’ai prévu de continuer ma lecture de « L’homme sans argent » de Mark boyle. Ce n’est pas pour tout de suite parce que je suis lente pour lire et je suis presque à la moitié du livre de P. Singer.

Mardi, j’ai enregistré mon TMTC pour le prochain podcast « Les Carencés ». Je vous mettrai le lien du prochain podcast quand il sortira. Je n’ai pas de date pour le moment. J’ai hâte d’être écouté. Comme j’ai du vous le dire la dernière fois, ou alors c’était dans la vidéo de fin d’année 2017, j’ai l’intention d’en faire d’autres 🙂

J’arrête pour terminer l’année et je reprendrais en janvier.

Gros retard sur le compte-rendu de la semaine du 18 au 23 décembre 2017. Il y avait noël ce weekend et je ne suis toujours pas assez en forme. J’ai pu tout de même me faire quelques plats pour le réveillon. J’ai très peu travaillé sur la vidéo du Inktober. Et j’ai décidé qu’étant donné que j’ai besoin d’arrêter avant l’année prochaine, je vais me contenter de faire une vidéo très courte de remerciement aux tipeux et de topo sur l’année écoulée pour finir l’année. La vidéo du Inktober sortira donc en janvier, et le reste sortions au fur et à mesure début 2018.

Toujours au montage, MAJ d’un article, Carrot Invaders n°8

Je sors ce compte-rendu le lundi, parce que j’ai eu un soucis personnel et je n’avais pas le moral pour écrire. La semaine du 18 au 23 décembre 2017, rien de bien nouveau. Je travaille toujours sur le montage de la vidéo du Inktober, entre deux soucis de sommeil. Bon ça commence enfin à aller mieux de ce côté là. J’ai aussi amélioré un peu mon article sur Aymeric Caron. Je ne voulais pas que cet article soit négatif envers lui, mais plus tôt exprimer un malaise vis à vis de certaines choses. Je n’ai pas su changer grand chose à la majorité du texte, j’ai donc surtout ajouté une mise à jour à la fin.

Le prochain compte-rendu arrivera sûrement vendredi soir, pour décrocher du travail avant le weekend de Noël. Je vais essayer de faire une vidéo de remerciement des tipeux. Elle sera peut-être courte ou alors ce sera dans la vidéo du Inktober. Je termine en indiquant que j’ai envoyé la première version de mon article pour Carrot Invaders. Aussi, je fais une petite pub pour le numéro 8 sortis avant-hier. Deux de mes dessins y sont publiés à la fin parmi les œuvres d’autres artistes pleinxs de talents 🙂

Montage encore et toujours, 4096 RF par ticks dans Minecraft moddé et vie nocturne

La semaine du 4 au 9 décembre 2017 a était entièrement consacrée au montage de la vidéo sur le Inktober, du militantisme sur Twitter et du repos/consommation de vidéo politiques, scientifiques et artistiques. J’ai aussi continuer à jouer à Mech and Magic après le boulot sur ma vidéo. Je sais maintenant que je n’aurais pas le temps et l’énergie pour finir la version 0.7 de TFL avant les fêtes de fin d’année. Vous aurez donc TFL 0.7 en début de l’année prochaine.

La création de ma vidéo sur le Inktober prend beaucoup de temps parce que je  ne veux plus avoir la sensation que je n’ai pas assez travailler le montage, les effets et le son dans une vidéo. Dorénavant mes vidéos seront autant que faire ce peut travaillées, même si ma chaîne diffusera du contenu que peu de fois dans l’année. Faire les choses avec une impression de pas assez travaillé n’a pou moi aucun sens. Comme ce n’est pas la quantité que je vise, et que je suis même assez critique sur ça, ainsi qu’une certaine forme d’uniformisation de certaines choses, je préfère assumer ma vision des choses et y mettre le temps et le plaisir.

Je mets deux images de mon générateur de 4096 RF/ticks, de Mech & Magic, qui me fait penser à une batterie géante 🙂 Il est conçu avec des générateurs thermoélectriques de Immersive engineering et des conduits à RF de Ender IO. Là c’est en creative et j’ai déjà construis la premier étage et une petite partie du deuxième en survival. Les générateurs thermoélectriques convertissent la différence de température entre la glace compacte et la lave en énergie. Pour augmenter les performances de ce générateur, je chercherai un filon d’uranium pour un futur excavator et transformerai cette ressource en yellorium, puis en blutonium. Je remplacerai ensuite la lave par le blutonium qui produit environ 3 fois plus de chaleur que la lave. Bref, je vous expliquerai plus en détail le principe, avec formule mathématique, dans un article consacré 🙂

Je n’arrive toujours pas me coucher de bonne heure. Hier soir, je me suis endormis à 6h du matin environs. C’est cyclique chez-moi. Des fois je suis plus tôt du jour, et d’autres fois de la nuit. J’ai qu’en-même une préférence pour la nuit, si calme et si inspirante. De toute façon, j’ai ma veg1 qui contient de la vitamine D pour m’éviter des soucis à cause de ma très forte sous exposition solaire. Bon par contre, faudra qu’à l’avenir, dans mon futur chez-moi (Quand ? Mystère), je mette en place un générateur d’énergie pour la lumière, et bien sûr avec une bonne isolation pour ne pas bouffer la planète à cause de ma vie nocturne. C’est assez drôle parce que j’ai toujours eu une sorte de fascination pour tout ce qui à trait aux ténèbres, aux vampires, aux démons, etc… Et même si pendant un long moment, la nuit était le moment où mes troubles de l’humeur passaient à déprime, angoisse et agressivité, j’ai l’impression que plus j’assume ce besoin de vie nocturne, et plus je me sens mieux comme-ça. Je pense que mes troubles d’humeur sont liés à autre chose que la nuit. Les obligations d’un monde qui n’accepte pas votre différence et l’aliénation des humains. Oui je sais #notallhuman.

Pas de Twitter, toujours montage du Inktober et un exutoire sur Mech and Magic

La semaine du 27 novembre au 2 décembre 2017 était entièrement consacrée à ma vidéo du inktober. Je viens malheureusement de me rendre j’avais trop monté le niveau du micro de mon enregistreur numérique et que donc j’ai une très très grande partie de mon speech en saturation. Je vais donc encore prendre quelques jours pour finaliser tout ça. Je viens d’essayer après quelques réglages et ça va beaucoup mieux.

J’évite de faire autre chose et je m’économise beaucoup parce que je n’ai pas l’esprit à ça et je fatigue vite et facilement si je me force. J’ai repris mes parties de Minecraft : Mech & Magic. Ça me fait du bien. Pour améliorer ma disposition à avancer sur mon travail, je me suis interdis d’aller sur Twitter durant presque 3 jours. Aujourd’hui étant le troisième jour, autorisé uniquement une fois ce compte-rendu terminé 🙂 Je vais continuer de faire ainsi parce que ça fonctionne très bien, même si ça n’est pas la seule chose qui me freine.

Concernant Mech & Magic, je vous posterai quelques photos de construction et machines. J’ai une usine de traitement des métaux pas terminée, mais qui avance petit à petit et je construis aussi une sorte d’immense batterie pour alimenter entre un et deux excavators selon mes besoins. Quand j’en alimente deux avec, les excavators sont à la moitié de leur performances. Cette immense batterie sera construite au minimum pour produire juste assez pour un seul excavator en vitesse normale. Enfin bref, c’est du jeu, c’est du fun, mais j’aime bien en parler de temps en temps 🙂

Dés que ma vidéo du Inktober sera terminée, je terminerai aussi vite que je peux le dessin de Loubi Tek. Ensuite, j’essaierai de finir TFL 0.7 et enfin dans la foulée, je ferai la vidéo de remerciement à mes tipeux 🙂 Avec ce problème de saturation sur l’enregistreur numérique je vais avoir encore du retard. J’espère pouvoir rattraper ça sans accentuer ma tendance à la fatigue. C’est que je veux me cuisiner quelques bons petits plats pour les fêtes :p

recaptcha/recaptchalib.php at 1.0.0 · google/recaptcha · GitHub
Skip to content
Permalink
Switch branches/tags
Find file
8a45f9d Dec 1, 2014
141 lines (129 sloc) 4.47 KB
<?php
/**
* This is a PHP library that handles calling reCAPTCHA.
* - Documentation and latest version
* https://developers.google.com/recaptcha/docs/php
* - Get a reCAPTCHA API Key
* https://www.google.com/recaptcha/admin/create
* - Discussion group
* http://groups.google.com/group/recaptcha
*
* @copyright Copyright (c) 2014, Google Inc.
* @link http://www.google.com/recaptcha
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* A ReCaptchaResponse is returned from checkAnswer().
*/
class ReCaptchaResponse
{
public $success;
public $errorCodes;
}
class ReCaptcha
{
private static $_signupUrl = "https://www.google.com/recaptcha/admin";
private static $_siteVerifyUrl =
"https://www.google.com/recaptcha/api/siteverify?";
private $_secret;
private static $_version = "php_1.0";
/**
* Constructor.
*
* @param string $secret shared secret between site and ReCAPTCHA server.
*/
function ReCaptcha($secret)
{
if ($secret == null || $secret == "") {
die("To use reCAPTCHA you must get an API key from <a href='"
. self::$_signupUrl . "'>" . self::$_signupUrl . "</a>");
}
$this->_secret=$secret;
}
/**
* Encodes the given data into a query string format.
*
* @param array $data array of string elements to be encoded.
*
* @return string - encoded request.
*/
private function _encodeQS($data)
{
$req = "";
foreach ($data as $key => $value) {
$req .= $key . '=' . urlencode(stripslashes($value)) . '&';
}
// Cut the last '&'
$req=substr($req, 0, strlen($req)-1);
return $req;
}
/**
* Submits an HTTP GET to a reCAPTCHA server.
*
* @param string $path url path to recaptcha server.
* @param array $data array of parameters to be sent.
*
* @return array response
*/
private function _submitHTTPGet($path, $data)
{
$req = $this->_encodeQS($data);
$response = file_get_contents($path . $req);
return $response;
}
/**
* Calls the reCAPTCHA siteverify API to verify whether the user passes
* CAPTCHA test.
*
* @param string $remoteIp IP address of end user.
* @param string $response response string from recaptcha verification.
*
* @return ReCaptchaResponse
*/
public function verifyResponse($remoteIp, $response)
{
// Discard empty solution submissions
if ($response == null || strlen($response) == 0) {
$recaptchaResponse = new ReCaptchaResponse();
$recaptchaResponse->success = false;
$recaptchaResponse->errorCodes = 'missing-input';
return $recaptchaResponse;
}
$getResponse = $this->_submitHttpGet(
self::$_siteVerifyUrl,
array (
'secret' => $this->_secret,
'remoteip' => $remoteIp,
'v' => self::$_version,
'response' => $response
)
);
$answers = json_decode($getResponse, true);
$recaptchaResponse = new ReCaptchaResponse();
if (trim($answers ['success']) == true) {
$recaptchaResponse->success = true;
} else {
$recaptchaResponse->success = false;
$recaptchaResponse->errorCodes = $answers [error-codes];
}
return $recaptchaResponse;
}
}
?>
You can't perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Fatal error: Class 'ReCaptcha' not found in /homepages/39/d436294224/htdocs/clickandbuilds/TheeDonistMonk/index.php on line 29