Php 无法从$\u GET设置特定参数

Php 无法从$\u GET设置特定参数,php,nginx,qr-code,php-5.3,Php,Nginx,Qr Code,Php 5.3,注意-我不确定这是一个库问题还是我的代码问题-请对此提出建议 我曾经创建过一个参数化PHP页面,这样我们就可以从url中的参数生成QR码: include( '/qrlib/qrlib.php' ); if (isset($_GET['fg'])&&!empty($_GET['fg'])) { $fore_color = $_GET['fg']; } else { $fore_color = 0x000000; } if (isset($_GET['bg'])&&!empty

注意-我不确定这是一个库问题还是我的代码问题-请对此提出建议

我曾经创建过一个参数化PHP页面,这样我们就可以从url中的参数生成QR码:

include( '/qrlib/qrlib.php' );

if (isset($_GET['fg'])&&!empty($_GET['fg'])) {
    $fore_color = $_GET['fg'];
} else {
    $fore_color = 0x000000;
}

if (isset($_GET['bg'])&&!empty($_GET['bg'])) {
    $back_color = $_GET['bg'];
} else {
    $back_color = 0xFFFFFF;
}

QRcode::png($_GET['url'], false, $_GET['err'], $_GET['size'], $_GET['pixel'], false, $back_color, $fore_color);
这非常适用于
url
err
size
pixel
,但只要我尝试从url设置颜色,相应的颜色变化(fg或bg)就会默认为黑色

但是,如果变量
$fore\u color
$back\u color
是显式设置的(不是通过URL,而是使用
else
语句,则它们可以工作。(我应该注意,如果您查看上面的内容,如果未设置参数,它们将默认为黑色FG和白色BG)

我已回显了
$fore\u color
$back\u color
以检查值是否正确传递,它们是否完全按照预期显示-当URL中填充了一个或两个颜色参数时,会发生此行为

我在这里举了几个例子:


对于这种奇怪的行为,请给出任何建议。(使用PHP-FPM 5.3.10在NginX 1.3.8上运行的服务器)

我注意到您正在使用的库接受int,并且从$\u GET获得的值将是一个字符串,请尝试:

if (isset($_GET['fg'])&&!empty($_GET['fg'])) {
    $fore_color = settype($_GET['fg'], "integer"); 
} else {
    $fore_color = 0x000000;
}

if (isset($_GET['bg'])&&!empty($_GET['bg'])) {
    $back_color = settype($_GET['bg'], "integer");
} else {
    $back_color = 0xFFFFFF;
}

您需要以十进制而不是十六进制传递参数

例如,对于浅灰色背景和绿色背景:

在代码中,参数是整数,而不是十六进制

因此,这是无效的: 0x20921F 这是有效的: 2134559

或者您需要添加PHP代码来将十六进制转换为Dec。
您可以使用

恐怕没有骰子-相同的症状(查看上面的URL,并进行相应的更改)。MyLes库是否允许您设置背景和背景颜色?查看它,情况似乎并非如此……第66行之后根据自述文件,它是这样做的?