mars073 Posté(e) July 26, 2014 Signaler Posté(e) July 26, 2014 (modifié) 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 Modifié July 25, 2016 par mars073 ajout ^-^ 4
Azad Posté(e) July 26, 2014 Signaler Posté(e) July 26, 2014 Merci, c'est pratique ça. Avec ça, tu peux carrément faire un scanneur entier de port, en PHP du coup.
AlexMog Posté(e) July 27, 2014 Signaler Posté(e) 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(); }
mars073 Posté(e) July 27, 2014 Auteur Signaler Posté(e) 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
Azad Posté(e) July 27, 2014 Signaler Posté(e) July 27, 2014 Quitte à faire, rajoute les scripts ajoutés (notamment celui d'AlexMog) au premier message ?
Scrypto Posté(e) July 28, 2014 Signaler Posté(e) 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.
mars073 Posté(e) July 28, 2014 Auteur Signaler Posté(e) 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...
Azad Posté(e) July 28, 2014 Signaler Posté(e) 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.
Recommended Posts
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant