我使用以下代码获得了12个.php文件:
if($_GET['u']){
$srcp = imagecreatefrompng("http://www.minecraft.net/skin/".$_GET['u'].".png");
$destp = imagecreate(1200, 1800);
imagecopyresampled($destp, $srcp, 0, 0, 20, 20, 1200, 1800, 8, 12);
header('Content-type: image/png');
imagepng($destp);
}
是的,只有分隔不同文件的是图像的位置。现在,我可以在PHP中拥有许多这样的行吗?我尝试从另一个文件中取出该行和一行,然后在这种情况下将 u 重命名为 b ,但它不起作用....
我尝试这样做没有任何好结果(只有你工作):
if($_GET['u']){
$srcp = imagecreatefrompng("http://www.minecraft.net/skin/".$_GET['u'].".png");
$destp = imagecreate(1200, 1800);
imagecopyresampled($destp, $srcp, 0, 0, 20, 20, 1200, 1800, 8, 12);
header('Content-type: image/png');
imagepng($destp);
}
if($_GET['b']){
$srcp = imagecreatefrompng("http://www.minecraft.net/skin/".$_GET['b'].".png");
$destp = imagecreate(600, 1800);
imagecopyresampled($destp, $srcp, 0, 0, 16, 20, 600, 1800, 4, 12);
header('Content-type: image/png');
imagepng($destp);
}
那么有谁知道如何将12个PHP文件的所有12行代码放入1个php文件中? :/
提前致谢,enji
答案 0 :(得分:3)
首先,我想解决代码中一个紧迫的安全漏洞。使用任何请求参数而不进行过滤会产生麻烦。在使用变量之前,请务必过滤$_GET
,$_POST
,$_REQUEST
等变量。简而言之,请确保您对$_GET['u']
和$_GET['b']
进行某种转义/过滤。例如,如果您知道两个参数仅包含字母数字字符,请使用以下命令:
// Remove non-alphanumeric characters from $_GET['u']
$filtered = preg_replace("/[^a-zA-Z0-9\s]/", "", $_GET['u']);
虽然陈腐,但在开发时应始终考虑以下格言:
永远不要信任用户!
答案 1 :(得分:2)
欢迎使用功能以及可重复使用代码的世界。将该代码放入一个函数中,将该函数放入一个文件中,将该文件包含在其他文件中,调用该函数:
// thumbnail.php
function outputSkinThumbnail($skin) {
$srcp = imagecreatefrompng("http://www.minecraft.net/skin/$skin.png");
$destp = imagecreate(1200, 1800);
imagecopyresampled($destp, $srcp, 0, 0, 20, 20, 1200, 1800, 8, 12);
header('Content-type: image/png');
imagepng($destp);
}
// some other file
require_once 'thumbnail.php';
if (!empty($_GET['u'])) {
outputSkinThumbnail($_GET['u']);
}
答案 2 :(得分:1)
我认为,在这种情况下,由于文件始终是相同的路径,您应该添加第二个$_GET
并将其用作带开关的类型:
image.php?u=water&position=2
if($_GET['u']){
$srcp = imagecreatefrompng("http://www.minecraft.net/skin/".$_GET['u'].".png");
switch($_GET['position']){
case '1':
$destp = imagecreate(1200, 1800);
imagecopyresampled($destp, $srcp, 0, 0, 20, 20, 1200, 1800, 8, 12);
break;
case '2':
$destp = imagecreate(600, 1800);
imagecopyresampled($destp, $srcp, 0, 0, 16, 20, 600, 1800, 4, 12);
break;
}
header('Content-type: image/png');
imagepng($destp);
}
我将第二次发出webjawns.com的警告,从不相信$_GET
的输入值。 serialworm提供了一种使用$u = strip_tags($_GET['u']);
答案 3 :(得分:0)
你可以创建一个函数:
function showThumb($u){
if($u){
$srcp = imagecreatefrompng("http://www.minecraft.net/skin/". $u .".png");
$destp = imagecreate(1200, 1800);
imagecopyresampled($destp, $srcp, 0, 0, 20, 20, 1200, 1800, 8, 12);
header('Content-type: image/png');
imagepng($destp);
}
}
您应该检查恶意代码的$ _GET值
$u = strip_tags($_GET['u']);
并称之为:
showThumb($u);