Jump to content

ZeBrian

Webmaster Régulier
  • Content Count

    77
  • Joined

  • Last visited

Community Reputation

0 Neutre

About ZeBrian

  • Birthday 10/16/1989

Contact Methods

  • Website URL
    http://

Profile Information

  • Genre
    Homme
  • Localisation
    Montpellier
  1. A vrai dire d'après les différents tests que j'ai fait, c'est tout de même très rapide (de l'ordre de 5 ms sur mon PC qui n'est pas un foudre de guerre). Mais j'en parle à la toute fin de l'article : pour un environnement de production, il vaut mieux sauvegarder toutes les images générées et les utiliser directement, sans passer par le script.
  2. Bonjour, Je voudrais mettre en commun l'article que je viens de finir, et qui je l'espère pourrait se révéler utile pour certaines personnes qui n'arrivent qu'à faire des sites moches comme moi Ce sont les étapes de conception d'un générateur de dégradés avec PHP/GD, qui permet d'éviter d'ouvrir Photoshop à chaque fois qu'on veut créer un dégradé pour mettre en fond d'un bloc HTML, et croyez-moi les dégradés c'est très utile pour faire un joli site sans se casser la tête Je vous renvoie à mon article pour plus d'infos : http://www.web2master.com/graphic/ A noter que j'ai aussi inclus un petit script qui permet de s'entraîner à créer des couleurs directement à partir de leur syntaxe en hexadécimal, vous vous rendrez compte que ce n'est pas tellement sorcier au final ! Bonne lecture
  3. Salut, Essaie de remplacer "setInterval" par "window.setInterval" ! Bonne journée
  4. Salut, Ton explication me semble très valable en effet ! JavaScript est décidément un langage très bien foutu quand on le connaît bien
  5. Bonjour tout le monde, J'utilise souvent dans mes codes JavaScript la syntaxe suivante, qui fait que a vaut b, sauf s'il n'est pas défini ou est de valeur nulle (quel que soit son type) et dans ce cas on recommence avec c et, à défaut, on stocke la valeur de d : var a = b || c || d; Cela me permet de réduire considérablement la taille des codes destinés à la compatibilité entre navigateurs, par exemple pour obtenir le style d'un objet : var computedStyle = this.currentStyle || window.getComputedStyle(this, ''); Seulement, je ne vois jamais cette syntaxe utilisée sur tous les bouts de code que j'ai pu voir sur le net ! Est-elle déconseillée et si oui pourquoi ? Merci
  6. C'est pas pour moi alors Enfin je regarderai quand même Merci ! Edit : Ca m'a l'air bien compliqué tout cela, et nécessiter des tonnes de paperasse ! Je crois que je vais plutôt me porter vers le portage salarial :-)
  7. Merci, en effet ça a l'air intéressant comme système ! Même s'ils ont l'air de prendre une bonne petite marge, mais c'est un peu normal... A ton avis, je peux m'y inscrire en étant mineur ?
  8. Bonjour, Ayant acquis un bon lot de connaissances en PHP/JS, j'aimerais occasionnellement développer et vendre des sites web en tant qu'indépendant. Seulement, je n'ai aucune idée des déclarations que je dois faire, ainsi que de la manière dont on délivre une facture, etc... Petit hic : je n'ai que 17 ans (mais au pire, je peux attendre mes 18 ans qui arrivent dans quelques mois) Voilà, si certains d'entre vous pouvaient m'aiguiller sur les démarches à suivre, je vous en serais reconnaissant ! Merci
  9. Si ce n'est que ça, c'est possible de reconstituer également la réactivité aux touches du clavier ! Je reposterai un message quand j'aurai rajouté toutes les fonctionnalités dont tu me parles
  10. Petite correction fingolfin : ce serait plutôt "+=" que ".=" en JavaScript
  11. Bonsoir tout le monde, Un peu exaspéré par la (presque) impossibilité de styler en CSS les balises <select> et <option>, j'ai décidé d'y créer une alternative à peu près équivalent en JavaScript. Le principe est simple : au chargement de la page, si l'utilisateur a JavaScript, on remplace tous ses <select> par des <div> qui se comportent de la même manière, et qui sont donc par nature skinnables. Cela donne ceci : http://88.167.224.84/project_select/ Au niveau de la structure HTML de ce que j'ai appelé les "fakeSelect", on a un <div class="fSelect"> qui contient principalement un <div class="fContainer"> qui lui-même contient toutes les options (qui sont des <div class="fOption">), mais aussi, si l'on n'utilise pas un select multiple, un <div class="fSelectHead"> qui correspond à l'option sélectionnée actuellement. Il est à noter que la classe de certains de ces objets peut changer : par exemple, une option sélectionnée sera de classe "fOption_selected". De plus, si la souris passe dessus, ce sera "fOption_selected_hover" (car le hover CSS n'est pas supporté par IE6 sur des <div>, et je trouvais assez sale de mettre des <a>). De même pour les autres classes (à part fSelect et fContainer bien sûr), pour mieux comprendre voyez le fichier CSS ! Si jamais ce gadget vous semble utile, merci de me le faire savoir, je prendrai la peine de le publier pour que vous ne soyez pas les seuls à en profiter
  12. Non, je ne lis pas que la dernière ligne bien sûr ! En fait je lis toutes les lignes qui ont été écrites moins de $intervalle secondes auparavant... Et étant donné que le fichier ne dépassera que rarement les 20 lignes (il est convenablement vidé à chaque fois), je ne pense pas qu'il soit trop long à exécuter ! Je vais faire un petit bench pour tester EDIT : Après quelques benchs, j'ai fait une nouvelle version un peu plus "intelligente" dirons-nous, qui parse beaucoup moins de chaînes que la précédente et se révèle donc plus rapide. Lors de plus d'une centaine d'accès en moins d'une seconde, le calcul reste de l'ordre de 0.5 à 1 millisecondes sur un serveur mutualisé de 1&1 $intervalle = 3; $max_acces = 10; if (!file_exists('cache')) $cache = ''; else { $cache = false; while ($cache === false) $cache = _AT_file_get_contents('cache'); } $good = false; $current = time(); for ($i = $intervalle; $i >= 0; $i--) { $pos = strpos($cache, "\n".($current - $i).' '); if ($pos !== false) { $good = true; $last = substr($cache, $pos); break; } } if (!$good) $last = ''; $f = false; while ($f === false) $f = _AT_fopen('cache', 'w'); fputs($f, $last."\n".$current.' '.str_replace("\n", null, $_SERVER['REMOTE_ADDR'])); fclose($f); str_replace(' '.$_SERVER['REMOTE_ADDR']."\n", null, $last, &$nb); if ($nb > $max_acces) die('Trop d\'accès en peu de temps ! Seriez-vous un méchant ? Ou pire ? Une méchante ???');
  13. Bonjour, Dans le cadre de la programmation d'un forum, se pose à moi le problème du flood : en effet, j'aimerais empêcher les petits hackers de faire trop de requêtes à la fois, et ce sans utiliser MySQL dans mon script antiflood puisqu'un serveur MySQL est vite saturé J'aimerais donc votre avis sur un petit script que j'ai écrit : y a-t-il des failles possibles, si oui lesquelles, et quels seraient les éléments à améliorer pour m'en sortir sans base MySQL ? Le principe est simple : à partir des variables $intervalle et $max_acces, le script empêche un visiteur de charger plus de $max_acces fois une page pendant $intervalle secondes. Voici donc le code ! <?php $intervalle = 3; $max_acces = 10; if (!file_exists('cache')) $cache = ''; else $cache = file_get_contents('cache'); $good = false; $current = time(); $temp = $cache; while (true) { $pos = strrpos($temp, "\n"); $time = substr($temp, $pos + 1, 10); if ($time < $current - $intervalle) break; $temp = substr($temp, 0, $pos); } $last = substr($cache, $pos)."\n"; $f = fopen('cache', 'w'); fputs($f, $last.$current.' '.str_replace("\n", null, $_SERVER['REMOTE_ADDR'])); fclose($f); str_replace(' '.$_SERVER['REMOTE_ADDR']."\n", null, $last, &$nb); if ($nb > $max_acces) die('Trop d\'accès en peu de temps ! Seriez-vous un méchant ? Ou pire ? Une méchante ???'); /* A partir d'ici, on écrit le reste du code (ou bien sûr, on utilise un include) */ ?> Auriez-vous des conseils à me donner pour améliorer le script ? Peut-être que je ne devrais surtout pas faire comme cela, qui sait Bonne soirée et merci d'avance ! EDIT : Voir plus bas (post #3) pour la nouvelle version
  14. Excuse-moi de ne pas avoir été clair, en fait le problème est que je ne peux pas avec ce code connaître le numéro de la page à laquelle on se situe actuellement ! En tout cas merci des tes réponses EDIT : Ehm excuse du dérangement, je viens de penser que cela fonctionnera à merveille : SELECT COUNT(*) FROM `messages` WHERE parent='3' AND id < $n Encore désolé d'avoir posé une question aussi bête :S
×
×
  • Create New...