Iterer

Membres
  • Compteur de contenus

    12
  • Points

  • Inscription

  • Dernière visite

  • Days Won

    1

Iterer last won the day on 8 Septembre

Iterer had the most liked content!

Réputation sur la communauté

5 Neutre

À propos de Iterer

  • Rang
    Membre

Compétences

  • Pawn
  • Web front-end
  • Web back-end
  • Mapping
  • Réseau
  • Graphisme

Visiteurs récents du profil

83 visualisations du profil
  1. Il y a beaucoup de choses à gérer sous PHP au niveau sécurité tokens contre les failles de type CRSF, purification des champs textes et des requêtes SQL (XSS), contrôle d'accès, les cookies de session doivent être uniques tant au niveau du nom que du contenu et donc il ne faut pas utiliser celui par défaut et utiliser un hachage plus long, utiliser le cache correctement, hacher ses mots de passe, ajouter un captcha sur certains formulaires sensibles... Le but de mon message était simplement de rediriger les personnes vers un framework après quelques mois d'utilisation de PHP pur, personnellement j'ai une préférence pour Symfony. Après comme c'est mieux "quand on le connaît" mais en soit si on est à l'aise avec langage, l'utilisation d'un framework n'est pas si terrible en soi. Dans tous les cas c'est un bon tutoriel pour commencer en PHP en utilisant justement le modèle MVC utilisé par une grande majeure partie des frameworks PHP.
  2. filter: hue-rotate(180deg); sur le body. Je rigole hein.
  3. Personnellement j'ai fait des serveur RPM et globalement le premier a fonctionné alors que le système c'était 4 territoires et voilà. Après plusieurs années et quelques projets j'ai refait un RPM, du type monstrueux et sans succès : environ 40 territoires mappé dans le tout désert, tous les territoires collés. (tu as le droit d'attaquer que les territoires liés aux territoires que tu as). les admins ouvrent ou ferment la guerre pour les prises de territoire. certains véhicules sont blindés (pas de dommage des balles mais des explosions uniquement). système de faction dynamique (tu mets une ligne dans la base de données et c'est une faction) plus de 400 armes avec des dommages, critiques etc. système de sections dynamique, le général crée une section avec 2 types (infanterie, sniper, ingénieur, antichar....) qui leur permet de débloquer des sections d'armes à l'armurerie. les ingénieurs peuvent placer des mines, sacs de munitions et peuvent réparer un peu un véhicule. les territoires peuvent se faire mapper par les chefs de section et sous chef de section. 2 systèmes de rang. rang d'accréditation de 1 à 12. (12 chefs faction, 11 sous-chefs faction, 10 chefs section, 9, sous-chef section) un nom de rang que les rangs 10 à 12 choisissent. un titre que le chef faction rend 12 donnes. Il peut mettre du texte. une personne peut avoir le rang 12 avec le nom du rang à "Tueur" et le titre "chef des bleues" en exemple. système de ressource toutes les heures les territoires donne des ressources. les territoires sont mappable en utilisant des ressources par les rangs 10 ou plus (territoire a de la faction). achat de véhicule par les rangs 10 ou plus avec les ressources faction. les véhicules détruits ne respawn pas. certains objets à placer coûtent plus cher : les SAM site fonctionnels. les caisses de munitions (réapprovisionnement des unités) les cibles (à activer dans le territoire pour que les troupes s'entrainent a tirer) qui donne les résultats à la fin. (les cibles tombent une fois touchées et remonte 10 secondes plus tard, elles donne de l'XP compétence arme). certains bunkers. les soldats ont des compétences. arme : la visée bouge quand on vise et plus on l'augmente moins elle bouge. endurance : plus de vie. Bref, je sais pas si j'ai tout dit... il manque les systèmes de menottes etc...
  4. Tout à fait d'accord, c'est SA:MP certes mais les personnes qui ouvrent un serveur le font à la mode campagnarde.
  5. L'entreprise ma parole. Quand je parle du Webcrawler de Google je l'ai écrit.
  6. Quand je dis Google c'est l'entreprise filiale de l'entreprise Alphabet. Après si toi quand tu entends Google tu penses directement au moteur de recherche... Le français est une langue contextuelle.
  7. Quand on fait un site, on essaye d'abord de faire du RWD. Bootstrap fait certes partie de cette catégorie, mais on pense aussi au SEO. Car maintenant, la plupart des Webcrawler, dont Google (celui qui a 92 % des recherches) référence mieux les sites utilisant un design responsive, en gros tu es en haut de page. Et pour le référencement, l'utilisation des codes de Google pour design est selon moi un atout, si bien utilisé. Pour revenir au sujet, il y a des différences entre Bootstrap et MaterializeCSS, la philosophie déjà : Bootstrap c'est pour faciliter la mise en place d'un site RWD et MaterializeCSS c'est pour donner les bases du style de Google pour étendre son style sur les autres sites web. Après pour l'instant Bootstrap a plus de fonctionnalités, documentation, themes gratuits et une plus grosse communauté. Question rhétorique. Je vais te dire oui pour rigoler. Leurs sites sont globalement beaux à voir et user friendly entre gmail, google maps., youtube, google+, google code et j'en passe je trouve ça consistant et jolie. Je dis pas que Twitter c'est moche, j'aime aussi mais j'ai une attirance pour le design made by Google la plupart des utilisateurs en on l'habitude.
  8. Bootstrap c'est Twitter, MaterializeCSS c'est Google qui référence les sites ? Google. Le choix est vite fait.
  9. Le mieux est de faire une classe PHP de connexion à la base de données avec PDO qui est plus simple, rapide et sécurisé pour les requêtes : <?php namespace models; use \PDO; use \Exception; // Abstract pour ne pas pouvoir instancier la classe. abstract class DB { // L'instance de PDO. private static $PDO; // Configurations de connexion. const CONST_HOST = "127.0.0.1"; const CONST_DB = "stock"; const CONST_CHARSET = "UTF8"; const CONST_USER = "root"; const CONST_PASS = ""; // Demande connexion à la base de données avec les constantes. // Notez que l'on verifie si notre private est vide ou sans instance de PDO. final protected static function DBConnection() { try { if (!isset(self::$PDO) || !((self::$PDO) instanceof PDO)) { self::$PDO = new PDO("mysql:host=" . self::CONST_HOST . ";dbname=" . self::CONST_DB . ";charset=" . self::CONST_CHARSET . ";", self::CONST_USER, self::CONST_PASS); } } catch (Exception $ex) { return [false, $ex->getMessage()]; } } // Récupération de notre private avec un getter. // Notez que l'on vérifie si une instance de PDO est présente. final protected static function DBGetConnection() { try { if (isset(self::$PDO)) { if ((self::$PDO) instanceof PDO) { return (self::$PDO); } else throw new Exception("DBGetConnection() as no instance of PDO."); } else throw new Exception("DBGetConnection() could return a null value."); } catch (Exception $ex) { return [false, $ex->getMessage()]; } } // final pour éviter les surcharges des classes filles. // protected pour éviter les appels de classes que ne sont pas filles. (héritage) // static pour à ne pas avoir a instancier la classe pour utiliser cette fonction. // DB::DBConnection(); // $pdo = DB::GetConnection(); } Ensuite les classes filles qui utiliserons notre classe mère de connexion par exemple : <?php namespace models; require_once("DB.php"); use \PDO; // Vous noterez que la classe hérite de la classe DB pour avoir accès aux protected. class DBPersonnage extends DB { // Je n'ai pas créé de classe Personnage, c'est un exemple pour vous, on passe une instance de // personnage avec comme champs : nom, prenom, âge. public static function add(\entities\Personnage $personnage) { DB::DBConnection(); $pdo = DB::DBGetConnection(); try { // http://php.net/manual/fr/pdo.begintransaction.php $pdo->beginTransaction(); $pre = $pdo->prepare("INSERT INTO PERSONNAGE(id, nom, prenom, age) VALUES(DEFAULT, :nom, :prenom, :age);"); $pre->bindValue(":nom", $personnage->getNom(), PDO::PARAM_STR); $pre->bindValue(":prenom", $personnage->getPrenom(), PDO::PARAM_STR); // Je vous ai mis un champ INT pour que vous compreniez que bindValue attend donc un int et non un string // par défault string. $pre->bindValue(":age", $personnage->getAge(), PDO::PARAM_INT); $pre->execute(); // http://php.net/manual/fr/pdo.commit.php $pdo->commit(); return [true, ""]; } catch (Exception $ex) { // http://php.net/manual/fr/pdo.rollback.php $pdo->rollBack(); return [false, $ex->getMessage()]; } } // Les transactions sont pratiques uniquement lors de multiples requêtes liées : création d'un personnage et de son inventaire si l'un échoue l'autre doit aussi échouer. // Ici ce n'est qu'un exemple d'utilisation des transactions pour votre culture sur PDO. } Notez que le DBConnection() n'est pas obligatoire sur chaque fonction vous pouvez très bien faire en sorte que la classe fille lors de son instanciation (__construct) demande une connexion puis utiliser celle-ci tout le long des requêtes.
  10. Commencer par du PHP pur c'est une bonne chose mais après quelques mois d'utilisation, de lecture de documentation sur les fonctions de base de PHP et la compréhension du fonctionnement du protocole HTTP, le mieux est de passer par un framework comme Symfony. C'est déjà, plus professionnel et rapide de développer avec un framework quand on le connaît, sans oublier les outils de débogage et j'en passe...