【发布时间】:2013-09-25 19:02:46
【问题描述】:
我正在构建的网站是一个配置器,可让您选择某些项目的颜色。它将具有共享您的颜色配置的功能。它将生成一个带有查询字符串的 URL,例如 ?plate=red&cup=blue&napkin=white 我的代码读取查询字符串并更改 <img> src 值。比如……
<?php
//This stuff is just grabbing the query string values...
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$querystring = parse_url($url);
parse_str($querystring['query'], $color);
$availableColors = array("red","blue","white");
?>
这是我使用 PHP 输入查询字符串颜色值的 HTML。此代码还在检查以确保颜色位于可用颜色的数组中。
<div data-color="<?php if( in_array($color['plate'],$availableColors) ) {echo $color['plate'];} ?>">
<img src="img/tablesetting/<?php if( in_array($color['dinnerPlate'],$availableColors) ) {echo $color['plate']."_plate.png";} else {echo "dummy.gif";} ?>">
</div>
<div data-color="<?php if( in_array($color['napkin'],$availableColors) ) {echo $color['napkin'];} ?>">
<img src="img/tablesetting/<?php if( in_array($color['napkin'],$availableColors) ) {echo $color['napkin']."_napkin.png";} else {echo "dummy.gif";} ?>">
</div>
<div data-color="<?php if( in_array($color['cup'],$availableColors) ) {echo $color['cup'];} ?>">
<img src="img/tablesetting/<?php if( in_array($color['cup'],$availableColors) ) {echo $color['cup']."_cup.png";} else {echo "dummy.gif";} ?>">
</div>
我想做的是避免每次我想检查颜色值是否在我的数组availableColors 中时都有一个条件语句。我想我正在寻找一种更简洁/优雅的方式。
【问题讨论】:
-
如果你创建一个函数来做呢?
-
由于数据来自查询字符串,因此您需要确保对其进行验证以避免任何形式的注入。因此,我认为 fedorqui 是正确的,您应该只创建一个接受颜色参数的函数,然后返回该颜色(如果有效),或者不返回默认选项。然后,无论何时绘制 HTML,都可以使用该函数。
-
另外,我建议你改掉使用不带引号的字符串的习惯。 $_SERVER[HTTP_HOST] 只是出于巧合才为您正常工作,因为没有人定义 HTTP_HOST 常量,但如果他们定义了,它会破坏您的代码。使用字符串时,请始终在其周围使用单引号或双引号。如果您在启用所有 error_reporting 的情况下进行编码,您会看到 PHP 发出的警告警告您。
-
是的,我想这就是我正在寻求有关如何完成的帮助。如何创建一个检查所有查询字符串值的函数?
标签: php arrays query-string