我正在構建的網站是一個配置器,可讓您選擇某些項目的顏色。它將具有共享您的顏色配置的功能。它會做的是生成一個帶有查詢字符串的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");
?>
這是我的HTML,我用PHP放入查詢字符串顏色值。此代碼也在檢查以確保顏色處於可用顏色的數組中。
<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
由於數據來自查詢字符串,因此您需要確保驗證它以避免任何類型的注入。所以,我認爲fedorqui是正確的,你應該創建一個函數,它接受一個顏色參數,然後返回該顏色(如果有效)或默認的選擇不是。然後,無論何時您繪製HTML,都可以使用該功能。 – jrebs
此外,我建議你擺脫使用未加引號的字符串的習慣。 $ _SERVER [HTTP_HOST]只能爲你正常工作,因爲沒有人定義了HTTP_HOST常量,但如果他們這樣做了,它會破壞你的代碼。在使用字符串時,請始終使用單引號或雙引號。如果你啓用了所有的error_reporting代碼,你會看到來自PHP的通知警告你。 – jrebs