mars073 Posted July 26, 2014 Report Posted July 26, 2014 (edited) Bonjour à tous, Je fais ce topic pour tout les petits codes pour éviter de faire plein de topic, si vous avez besoin de quelque chose en php vous le dites et je l'ajoute 1. Tester si un port est ouvert: -> fsockopen if (@fsockopen("127.0.0.1", 80, $errno, $errstr, 1) { // port ouvert } #en compact echo (@fsockopen("127.0.0.1", 80, $errno, $errstr, 1))? "En ligne":"Hors-ligne"; [/php] Notes: - le @ empêche de faire apparaître une erreur si une erreur est rencontré; "127.0.0.1" est à remplacer par l'ip ou le domaine; 80 est à remplacer par le port; $errno et $errstr servent à récupérer l'erreur mais je les mets que pour utiliser le paramètre suivant; 1 est le temps maximum pour que le serveur réponde en seconde (un serveur actuellement prend 0.002sec pour faire un ping à l'opposé du monde en moyen). 2. Vérification de base pour un include Le 27/07/2014 à 15:34, AlexMog a dit : Pour ma part, un petit bout de code (j'ai passé pas mal de temps à trouver des solutions pour éviter les failles includes, et j'ai trouvé mon bonheur en travaillant dur en sécu \o/) donc, pour ceux qui ont peur des failles includes: /* on change les // et les .. par rien \o/ (protection++) */ $file = str_replace(array("..", "//"), "", $_GET['file']); /* Ici, je vérifie que le fichier demandé a bien la même arboressence que l'endroit où je stock mes fichiers*/ if (!file_exists($file) || realpath(dirname($file)) == realpath(".")) { // A noter qu'il faudra changer "." par la racine du des fichiers echo "File error."; exit(); } 3. Afficher le visage d'un skin minecraft à partir du nom de compte et d'une dimension(optionnel) header('Pragma: public'); header('Cache-Control: max-age=86400'); header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 86400)); header("Content-type: image/png"); $size = (isset($_GET['size'])&&is_numeric($_GET['size'])&& $_GET['size']<=128&&$_GET['size']>=8) ? $_GET['size'] : 64; $name = (isset($_GET['name'])) ? $_GET['name'] : "char"; $img = imagecreate($size, $size); $src = @imagecreatefrompng("http://minecraft.net/skin/{$name}.png"); if(!$src){ $src = @imagecreatefrompng("http://www.minecraft.net/skin/char.png"); } imagecopyresized($img, $src, 0, 0, 8, 8, $size, $size, 8, 8); imagepng($img); imagedestroy($img); imagedestroy($src); Notes: - les paramètres (nom et dimension) sont dans l'url (donc en $_GET) la dimension reste carré est s'exprimer à l'aide d'un entier de 8 à 128, si l'utilisateur s'appel "Mars075" et que que l'on veut d'une taille de 32px sur 32px l'url ressemblera à "head.php?name=Mars075&size=32". Si le nom n'est pas spécifié ou si le compte "officiel" n'a pas de skin correspondant le skin par défaut est affiche, si aucune taille n'est spécifiée la taille par défaut est de 64pixels, le site pour les apparences étant assez lent les images sont mises en cache pendant 24 heures (86400 secondes). 4. Ma fonction pour charger une image $_FILES sans se soucier de tout les imagecreatefrom* function imagecreatefromfile($file) { $func = "imagecreatefrom".substr($file['name'], strrpos($file['name'], ".")+1); $func = stri_replace(array("jpg", "jpe"), "jpeg", $func); return (function_exists($func)) ? $func($file['tmp_name']) : false; } défaut principal: ne fonctionne pas avec imaged2part mais bon suffit de modifier un peu pour ceux qui l'utilise Edited July 25, 2016 by mars073 ajout ^-^ 4 Quote
Azad Posted July 26, 2014 Report Posted July 26, 2014 Merci, c'est pratique ça. Avec ça, tu peux carrément faire un scanneur entier de port, en PHP du coup. Quote
AlexMog Posted July 27, 2014 Report Posted July 27, 2014 Pour ma part, un petit bout de code (j'ai passé pas mal de temps à trouver des solutions pour éviter les failles includes, et j'ai trouvé mon bonheur en travaillant dur en sécu \o/) donc, pour ceux qui ont peur des failles includes: /* on change les // et les .. par rien \o/ (protection++) */ $file = str_replace(array("..", "//"), "", $_GET['file']); /* Ici, je vérifie que le fichier demandé a bien la même arboressence que l'endroit où je stock mes fichiers*/ if (!file_exists($file) || realpath(dirname($file)) == realpath(".")) { // A noter qu'il faudra changer "." par la racine du des fichiers echo "File error."; exit(); } Quote
mars073 Posted July 27, 2014 Author Report Posted July 27, 2014 Il faut même faire attention comme ça car on met aussi mettre du code ascii dans une requête ce qui confu ton script Quote
Azad Posted July 27, 2014 Report Posted July 27, 2014 Quitte à faire, rajoute les scripts ajoutés (notamment celui d'AlexMog) au premier message ? Quote
Scrypto Posted July 28, 2014 Report Posted July 28, 2014 Salut, bien des codes partagés généreusement je n'arrive pas à constater la vraie utilité de ce sujet. En effet tu nous partage des codes, mais malheureusement sans aucune précision tu nous balances des codes comme ça par-ci par-là. Si tu veux vraiment qu'un partage soit utile autant donner un code PRÉCIS pour un but PRÉCIS. Quote
mars073 Posted July 28, 2014 Author Report Posted July 28, 2014 Salut,bien des codes partagés généreusement je n'arrive pas à constater la vraie utilité de ce sujet.En effet tu nous partage des codes, mais malheureusement sans aucune précision tu nous balances des codes comme ça par-ci par-là.Si tu veux vraiment qu'un partage soit utile autant donner un code PRÉCIS pour un but PRÉCIS.Ce topic est là pour ne pas devoir faire un topic pour une seule fonction, précis? je donne un intitulé au "bout de code" et j'y ajoute une note pour expliquer et ne pas lacher ça comme ça... Quote
Azad Posted July 28, 2014 Report Posted July 28, 2014 Salut, bien des codes partagés généreusement je n'arrive pas à constater la vraie utilité de ce sujet. En effet tu nous partage des codes, mais malheureusement sans aucune précision tu nous balances des codes comme ça par-ci par-là. Si tu veux vraiment qu'un partage soit utile autant donner un code PRÉCIS pour un but PRÉCIS. Ce n'est pas du tout le but du sujet : pour une demande précise, il y a une réponse précise. Dans ce sujet sont partagés les codes trop petits pour être mis dans un sujet à part entière, qui peuvent être sortie de leur contexte. Il balance des codes par-ci par là, c'est exactement ça, le concept. Chacun peut y trouver une utilité dans un projet personnel, son partage est tout à fait utile, ce n'est pas la peine d'être si agressif. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.