Programmation PHP ( et autres ), Conseils, trucs & astuces.

Vous avez bien une vie en dehors de Celestus ? Parlez-en !

  • Bonjour à vous programmeurs et programmeuses.

    Depuis plusieurs mois ( voir plus d'un an je ne me souviens plus ), je me suis lancé dans la programmation PHP ( après avoir appris le xHTML/CSS ) et j'ai fais un peu de Javascript ( avec quelques notions de la librarie JQuery ) et bien sûr la SQL. ( J'utilisais mysql_ mais je suis passé à la PDO ).

    Je me lance dans la création ( en local d'abord ) d'un petit jeu par navigateur ( Non concurrent de Celestus car n'étant pas du tout du même genre / thème )
    Je viens donc poser quelques questions à vous tous, joueurs de Celestus, mais aussi Véovis sur le PHP et les serveurs :
    1. Quels sont vos conseils concernant la sécurité ? ( Fonctions / librairies etc.)
    2. Programmez-vous orienté Objet ? ( POO ) Si oui, avez vous un exemple d'utilisation ? Car je connais le principe, j'ai lu plusieurs cours, mais j'ai du mal à voir l'intérêt par rapport à une programmation dite procédurale.
    3. Quel type de serveur est nécessaire au minimum pour faire tourner un jeu navigateur ? ( Moins gourmant que Celestus ^^ )
    4. Quel hébergeur conseillez-vous ?
    5. Que sont les Frameworks ?
    6. Avez vous des adresses sur des cours concernant le développement WEB ?
    7. Comment structurez vous vos pages ? Tableaux ? position : absolute / fixed ?

    Voila pour l'instant je n'ai que ces question, j'en ajouterai si d'autres me viennent à l'esprit ^^

    Merci d'avance et bon jeu à vous, amis de l'elePHPant !
    Image
    Dernière édition par PodBlake le Mer Juil 21, 2010 3:54 pm, édité 1 fois.
    Avatar de l’utilisateur
    PodBlake
    Officier
    Officier
     
    Messages: 153
    Inscription: Sam Mai 08, 2010 11:18 am
    Gouverneur: PodBlake



  • Merci beaucoup pour ces réponses.

    Pour l'instant je vais l'hoster en local pour les test, je verrais après pour tester peut-être sur free, je me renseignerai sur 1&1, mais lorsque l'on commande, l'on paye pour 1 ans. Mais si l'hébergement ne suffit pas, on peut améliorer ou on doit attendre la fin de l'année commandée ?

    Pour les frameworks, j'en ai entendu parler, mais je ne sais pas tellement en quoi cela consiste... C'est là ma question ^^
    Pour la sécurité j'ai entendu parler de PHPIDS ( http://php-ids.org/ ) tu connais ?

    Pour la POO, tu me rassure, car j'ai un peu de mal ! Certains font des objet en POO pour créer des formulaires facilement des trucs comme ça, mais c'est pas la mort de taper un formulaire...

    Pour la structure, alors c'est parti pour des position absolute / fixed et des float :mrgreen:

    Encore merci pour tes réponses, je continue la programmation ( après 1H30 de bataille à cause d'un foutu espace lorsque j'ai rentré le password hashé dans la BDD pour tester la connexion '-_- ):D
    Avatar de l’utilisateur
    PodBlake
    Officier
    Officier
     
    Messages: 153
    Inscription: Sam Mai 08, 2010 11:18 am
    Gouverneur: PodBlake


  • Etrange sentiment que celui qui m'envahit quand je lit ce texte, sans difficulté aucune, mais sans arriver à piper un mot de ce qu'ils racontent... :mrgreen:

    Voilà, c'était la pause flood de Tonton Jenk'!
    Alia du Couteau, veux-tu m'épouser?

    Ooh Eeh Ooh Ah Aah Ting Tang Walla Walla Bing Bang !!
    Avatar de l’utilisateur
    Jenkins
    Commandant
    Commandant
     
    Messages: 1107
    Inscription: Ven Mai 30, 2008 11:29 pm
    Localisation: Derrière toi!
    Gouverneur: Mondes Libres de Raguse


  • 6) Mis à part le SdZ, il y a autrement le site Alsacréation qui est pas mal si tu veux être au courant de l'actualité en matière de dev web (principalement concernant les normes W3C, le XHTML/CSS et le JS).
    Le site regorge de petites astuces pour faire face à certains problèmes qu'on peut couramment rencontrer. Me semble aussi qu'ils font quelques tutos, mais je sais pas trop ce que ça donne.

    Pour 1&1, me semble que c'est gratuit le premier mois... Ca laisse le temps d'essayer quoi !
    Image
    Avatar de l’utilisateur
    Morphée
    Cadet
    Cadet
     
    Messages: 22
    Inscription: Sam Sep 05, 2009 9:45 pm


  • Oui le premier mois est peut-être gratuit, mais l'engagement est d'un an ! ;)

    Véo, sans être indiscret, pour avoir comme exemple, l'hébergement de Celestus est lequel ? Enfin je parle de l'hébergement du début de Celestus . Tu as choisi quelle formule ?

    EDIT : 60 Jours Satisfait ou remboursé >.< Pardon !
    Dernière édition par PodBlake le Dim Juil 18, 2010 9:56 pm, édité 1 fois.
    Avatar de l’utilisateur
    PodBlake
    Officier
    Officier
     
    Messages: 153
    Inscription: Sam Mai 08, 2010 11:18 am
    Gouverneur: PodBlake


  • Pas forcément : ils te remboursent si tes pas satisfait !
    L'hébergeur de celestus je suppose que c'est tout simplement onlinehome.


    Edit : grillé !
    Image
    Avatar de l’utilisateur
    Morphée
    Cadet
    Cadet
     
    Messages: 22
    Inscription: Sam Sep 05, 2009 9:45 pm


  • Pour avoir quelques sites derrière mes fesses, je me permet de répondre également.
    Beaucoup de points rejoindront ceux de Véovis.

    PodBlake a écrit:Quels sont vos conseils concernant la sécurité ? ( Fonctions / librairies etc.)

    Attention aux injections SQL mais aussi aux détournements de fichiers. Il y a des tonnes de sites qui permettent d'avoir accès aux fichiers de config d'Apache, MySql et autre. Ce qui veut dire bien souvent la possibilité de récupérer les mots de passe root. Il y a aussi les problèmes de DDOS, mail et autres attaques.
    Donc si tu héberges, gère la sécurité du serveur également et pas uniquement le code PHP/MySql
    PodBlake a écrit:Programmez-vous orienté Objet ? ( POO ) Si oui, avez vous un exemple d'utilisation ? Car je connais le principe, j'ai lu plusieurs cours, mais j'ai du mal à voir l'intérêt par rapport à une programmation dite procédurale.

    Le PHP5 permet la POO. Certains sont des fanas de ça. L'avantage principal est l'utilisation de classes et de fonctions qui s'utilisent vite dans le code. Par contre, la construction est longue... trop longue parfois !
    Lorsque tu as un site de recherche (google ? ), tu as tout le temps la même requête et le même process : je recherche le mot ou les mots x y z dans ma base. Au lieu de refaire mon parcours de base et donc de réécrire ma requête à chaque fois (surtout que l'on peut parfois la faire sur des serveurs différents), je fais un objet qui gère la connexion au serveur et qui lance ma requête en écrivant dans mon code de page un truc du style recherche(form.search.this);
    Pour un jeu, les actions sont trop différentes sauf pour des mini jeux du style labrute où là, oui, la POO est recommandée.
    PodBlake a écrit:Quel type de serveur est nécessaire au minimum pour faire tourner un jeu navigateur ? ( Moins gourmant que Celestus ^^ )

    Tu peux commencer sur un auto-hébergé pour les tests mais pour du live, il faut un dédié.
    Le bas de gamme suffit à tous les coups pour le démarrage ;)
    PodBlake a écrit:Quel hébergeur conseillez-vous ?

    En dehors des noms donnés, il y a aussi ovh. Le technique est light mais mes serveurs fonctionnent bien et j'arrive toujours à avoir quelqu'un par mail.
    PodBlake a écrit:Que sont les Frameworks ?

    Pour quoi faire ?
    PodBlake a écrit:Avez vous des adresses sur des cours concernant le développement WEB ?

    Site du Zéro mais aussi LE plus important : php.net ! Ne rigole pas mais c'est LA mine d'or du programmeur que je suis. Après tu as aussi asp-php.net, phpdebutant.org, ...
    PodBlake a écrit:Comment structurez vous vos pages ? Tableaux ? position : absolute / fixed ?

    Je fais en général un cadre central ou tout vient ce mettre.
    J'évite désormais les tableaux et je ne fais plus que du CSS. Plus chiant au départ mais quand tu dois modifier ton site, quel bonheur !



    Par contre, avant de te poser toutes ces bonnes questions, la primordiale est :
    Est-ce que mon jeu intéressera mes joueurs et aurai-je le temps de travailler dessus ?

    Bon courage ! :)
    Le génie, c'est quand ça va si vite qu'on ne sait pas comment c'est fait.

    Tout ce que je dis est dit en mon nom. L'interface derrière le clavier est un ignare qui ne pige rien à ce que je raconte. Je la contrôle. N'écoutez que moi...
    (HRP : Pour ceux qui ne comprennent toujours pas, le joueur ne parle jamais sauf dans la partie Hors-Jeu)
    Image
    Avatar de l’utilisateur
    fmarie
    Pilote
    Pilote
     
    Messages: 74
    Inscription: Mar Juil 06, 2010 12:07 pm
    Gouverneur: Fmarie


  • Merci fmarie pour ta réponse complète.

    La dernière question est évidemment importante.
    Pour ma part, j'espère que des gens seront intéressés, sinon en tout cas, je me serais beaucoup entraîné !

    Cependant, si tu peux m'aider, j'ai un gros soucis là !

    Dans ma BDD, j'ai les infos sur le joueurs donc les ressources ( l'argent ).
    Type : BIGINT.
    lorsque je fais une requête, si je fais exit($argent) , il m'affiche le nombre.
    Cependant, si je multiplie cet argent par 2, si je fais un exit($argent) simple, il n'affiche rien par contre si je fais exit('$argent vaut :'.$argent) il m'affiche le nombre multiplié par 2 !
    Voici le code en question, sachant que ce soucis arrive à d'autres endroit du site :

    Code: Tout sélectionner
       $prepare = $bdd->prepare('SELECT * FROM joueurs WHERE id=?');
       $prepare->execute(array($_SESSION['id']));
       $query = $prepare->fetch();
       $prepare->closeCursor();
       $argent = $query['argent'];
            // exit($argent) donne le nombre
       $argent = $argent*2;
       // exit($argent) donne rien.
            // exit('Test : '.$argent) donne le bon résultat

    :shock: :shock: J'ai pas pigé pourquoi ! On peut m'aider S.V.P ? C'est génant si je veux faire des comparaisons !
    Avatar de l’utilisateur
    PodBlake
    Officier
    Officier
     
    Messages: 153
    Inscription: Sam Mai 08, 2010 11:18 am
    Gouverneur: PodBlake


  • A la base, exit() n'est pas fait pour afficher un message quelconque, il est utilisé pour sortir du script php en affichant un status passé en paramètre.

    Essaye avec echo, peut être que...

    Edit : Quand tu fais une requête SQL, évite l'étoile dans ta requête. Met les colonnes que tu veux récupérer.
    Ca permet à l'optimiseur SQL de trouver un plan d'exécution plus rapide en ramenant seulement les infos utile.
    Norian
    Cadet
    Cadet
     
    Messages: 4
    Inscription: Jeu Mai 27, 2010 12:17 am



  • exit doit seulement être utilisé pour sortir d'un script php en levant une erreur. Elle n'est pas fait pour un affichage sur la page.
    Dans ton code, si tu met deux exit à la suite, le deuxième ne sera pas pris en compte car le script se sera arrêté après le premier. C'est l'équivalent du exit, abort ou shutdown en C.

    Si tu veux faire du debug, il y a la commande echo ou print.
    Par contre ça peut être lourd a les utiliser car quand ton jeu sera en production, il faudra les enlever.
    La solution pour éviter de tout reprendre ton code, c'est de créer une fonction global avec ton echo et une condition sur un variable globale. Tu remplace tes echo par cette fonction et tu positionne la variable globale à true. Quand ton jeu sera en prod, suffira de positionner ta variable globale à false.

    EDIT :
    Code: Tout sélectionner
    void exit  (  int $status  )
    Termine le script courant. Les fonctions d'extinction et les destructeurs d'objets seront toujours exécutés même si exit() est appelé.

    Liste de paramètres
    status
        Si status est une chaîne de caractères, cette fonction affichera le status juste avant de sortir.
        Si le paramètre status est un entier, cette valeur pourra être utilisée comme statut de sortie et ne sera pas affichée. Le statut de sortie peut être dans l'intervalle 0-255, le statut de sortie 255 est réservé par PHP et ne doit pas être utilisé. Le statut 0 est utilisé pour terminer le programme avec succès.

    http://php.net/manual/fr/function.exit.php
    Norian
    Cadet
    Cadet
     
    Messages: 4
    Inscription: Jeu Mai 27, 2010 12:17 am


  • Norian a écrit:Si tu veux faire du debug, il y a la commande echo ou print.
    Par contre ça peut être lourd a les utiliser car quand ton jeu sera en production, il faudra les enlever.
    La solution pour éviter de tout reprendre ton code, c'est de créer une fonction global avec ton echo et une condition sur un variable globale. Tu remplace tes echo par cette fonction et tu positionne la variable globale à true. Quand ton jeu sera en prod, suffira de positionner ta variable globale à false.


    Effectivement, moi je m'en servait ( à tort ) pour voir la valeur des variables là où ça bloque ...

    Par contre, j'ai pas du tout compris ton idée de la fonction globale et de l'echo ... :shock:

    Merci pour tes réponses argumentées et ta recherche dans la doc ( je sais pas pourquoi j'y ai pas pensé ! )
    Avatar de l’utilisateur
    PodBlake
    Officier
    Officier
     
    Messages: 153
    Inscription: Sam Mai 08, 2010 11:18 am
    Gouverneur: PodBlake


  • function DebugPodBlake($variableatester){
    if($debugsite==1){
    echo 'Debug : ' .$variableatester;
    }
    }

    Dans ton fichier de configuration de base (en général celui qui ouvre les accès à la bdd), tu mets une variable $debugsite=0;
    Quand tu voudras tester une variable, tu mettras $debugsite=1; et la fonction DebugPodBlake($toto);
    Tu auras l'affichage de ta variable.
    Le génie, c'est quand ça va si vite qu'on ne sait pas comment c'est fait.

    Tout ce que je dis est dit en mon nom. L'interface derrière le clavier est un ignare qui ne pige rien à ce que je raconte. Je la contrôle. N'écoutez que moi...
    (HRP : Pour ceux qui ne comprennent toujours pas, le joueur ne parle jamais sauf dans la partie Hors-Jeu)
    Image
    Avatar de l’utilisateur
    fmarie
    Pilote
    Pilote
     
    Messages: 74
    Inscription: Mar Juil 06, 2010 12:07 pm
    Gouverneur: Fmarie


  • Ok merci.
    Quand tu parle de fichier de base de configuration...
    Pour ma part, dans chaque page, je fais 1 include au tout début, qui lui même include ce dont j'ai besoin sur chaque page.
    Donc tu me dis de mettre cette fonction dans le fichier que j'include partout ?

    Merci en tout cas pour la réponse, mais pourquoi le soucis de la variable debugsite et d'une fonction ? Un simple echo fais l'affaire non ? Pas besoin d'utiliser une fonction pour faire l'echo !?

    Je parais peut-être nul là, mais je vois pas trop l'interêt de la fonction >.< !
    Avatar de l’utilisateur
    PodBlake
    Officier
    Officier
     
    Messages: 153
    Inscription: Sam Mai 08, 2010 11:18 am
    Gouverneur: PodBlake


  • Oui c'est ton fichier d'include

    L'intérêt de la fonction est qu'elle doit être exceptionnelle et unique.
    Tu ne débug pas ton site tout le temps et partout.
    Tu peux donc mettre la fonction debug à l'endroit désiré facilement.
    De plus le jour ou, pressé, tu laisses ta fonction debug dans un fichier inclus ou tu ne sais trop où, la recherche sera facile, tu pourras supprimer ton debug.

    Un echo direct d'une variable n'est pas vraiment top à mon goût !

    Si vraiment tu ne veux pas d'une fonction, tu peux aussi faire un div dans ta page qui sera invisible et afficher le debug :
    Code: Tout sélectionner
    <div id="debug" style="visibility:hidden "><?php echo $debug; ?></div>

    Il te suffira dans le fichier que tu veux débugger de faire un $debug=$mavariable ou $debug=$marequete;
    En visualisant le code de ta page générée, tu auras ce que tu recherches.
    Le génie, c'est quand ça va si vite qu'on ne sait pas comment c'est fait.

    Tout ce que je dis est dit en mon nom. L'interface derrière le clavier est un ignare qui ne pige rien à ce que je raconte. Je la contrôle. N'écoutez que moi...
    (HRP : Pour ceux qui ne comprennent toujours pas, le joueur ne parle jamais sauf dans la partie Hors-Jeu)
    Image
    Avatar de l’utilisateur
    fmarie
    Pilote
    Pilote
     
    Messages: 74
    Inscription: Mar Juil 06, 2010 12:07 pm
    Gouverneur: Fmarie


  • Alors rectification, il vaut mieux un display : none qu'un visibility : hidden ( histoire que la place ne soit pas prise ).

    Mais le truc c'est que lorsque ça bug quand je teste, je debug en regardant la variable et une fois que c'est réglé, j'enlève l'echo de la variable !
    Alors oui mettre une fonction me permettrait de faire que lorsque je l'appelle, je vois de manière clair la variable à débuguer, mais une fois que j'aurai vu le soucis, je supprime l'appel de la fonction !
    On continue par MP si tu veux, pour ne pas gâcher le topic ;)

    EDIT :
    fmarie a écrit:Mais je ne trouve pas que l'on soit HS et que l'on "gâche" le topic :)

    => Pas faux ! :D
    Dernière édition par PodBlake le Lun Juil 19, 2010 3:30 pm, édité 1 fois.
    Avatar de l’utilisateur
    PodBlake
    Officier
    Officier
     
    Messages: 153
    Inscription: Sam Mai 08, 2010 11:18 am
    Gouverneur: PodBlake


  • Comme tu veux ;)
    Mais je ne trouve pas que l'on soit HS et que l'on "gâche" le topic :)
    Le génie, c'est quand ça va si vite qu'on ne sait pas comment c'est fait.

    Tout ce que je dis est dit en mon nom. L'interface derrière le clavier est un ignare qui ne pige rien à ce que je raconte. Je la contrôle. N'écoutez que moi...
    (HRP : Pour ceux qui ne comprennent toujours pas, le joueur ne parle jamais sauf dans la partie Hors-Jeu)
    Image
    Avatar de l’utilisateur
    fmarie
    Pilote
    Pilote
     
    Messages: 74
    Inscription: Mar Juil 06, 2010 12:07 pm
    Gouverneur: Fmarie


  • News : J'aime le Javascript !

    Car c'est l'un des seules langage où l'on peut pomper sur les autres sites :D

    ( Je remercie d'ailleurs le site Celestus pour le téléscripteur car pour ma part j'étais parti sur une animation JQuery bien, sauf que je savais arrêter l'animation, mais pas la faire reprendre ! J'ai opté pour la balise <marquee> ^^
    Avatar de l’utilisateur
    PodBlake
    Officier
    Officier
     
    Messages: 153
    Inscription: Sam Mai 08, 2010 11:18 am
    Gouverneur: PodBlake


  • Marquee n'est pas valide d'un point de vue W3C et sur certains navigateurs, cela ne "bouge" pas :!:
    Cependant, il y a plein de possibilités cf http://www.csvt.qc.ca/patriotes/html/code_spec/xmpl_mrq.htm
    Le génie, c'est quand ça va si vite qu'on ne sait pas comment c'est fait.

    Tout ce que je dis est dit en mon nom. L'interface derrière le clavier est un ignare qui ne pige rien à ce que je raconte. Je la contrôle. N'écoutez que moi...
    (HRP : Pour ceux qui ne comprennent toujours pas, le joueur ne parle jamais sauf dans la partie Hors-Jeu)
    Image
    Avatar de l’utilisateur
    fmarie
    Pilote
    Pilote
     
    Messages: 74
    Inscription: Mar Juil 06, 2010 12:07 pm
    Gouverneur: Fmarie



  • Pour ça, le code est très simple en effet ;)
    http://remysharp.com/demo/marquee.html
    Le génie, c'est quand ça va si vite qu'on ne sait pas comment c'est fait.

    Tout ce que je dis est dit en mon nom. L'interface derrière le clavier est un ignare qui ne pige rien à ce que je raconte. Je la contrôle. N'écoutez que moi...
    (HRP : Pour ceux qui ne comprennent toujours pas, le joueur ne parle jamais sauf dans la partie Hors-Jeu)
    Image
    Avatar de l’utilisateur
    fmarie
    Pilote
    Pilote
     
    Messages: 74
    Inscription: Mar Juil 06, 2010 12:07 pm
    Gouverneur: Fmarie



  • Le génie, c'est quand ça va si vite qu'on ne sait pas comment c'est fait.

    Tout ce que je dis est dit en mon nom. L'interface derrière le clavier est un ignare qui ne pige rien à ce que je raconte. Je la contrôle. N'écoutez que moi...
    (HRP : Pour ceux qui ne comprennent toujours pas, le joueur ne parle jamais sauf dans la partie Hors-Jeu)
    Image
    Avatar de l’utilisateur
    fmarie
    Pilote
    Pilote
     
    Messages: 74
    Inscription: Mar Juil 06, 2010 12:07 pm
    Gouverneur: Fmarie


Suivante


Retourner vers Discussions Hors Jeu




Informations
  • Qui est en ligne
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 68 invités