我对 PHP 相当陌生,并且正在使用几个 _GET 变量来确定页面布局/Web 服务数据和页面上的一些其他逻辑。我没有存储数据或写入任何类型的数据库。我应该为此使用哪种消毒方法?
例如,我正在使用的一个 var 是这样的:
$querystring = $_SERVER['QUERY_STRING'];
if(isset($_GET['semester']) && $_GET['semester'] != ''){
$listxml = simplexml_load_file("http://path/to/webservice/?".str_replace('semester','term',$querystring));
如果查询字符串设置了 ?semester= 而不是空白,那么我将其替换为 'term' 并按原样通过查询字符串传递给 Web 服务 URL(Web 服务使用 term 变量但 term 变量会干扰使用 wordpress 并重定向到该“术语”(WP 中的标签/类别)的帖子页面,因此我将其作为学期传递给 WP,然后将其更改为用于 Web 服务调用的术语。
因此,在这种情况下,除了将它按原样传递给 Web 服务之外,我没有对 _GET 做任何事情,Web 服务对查询字符串所做的事情不在我的掌控之中,但我应该以任何方式为他们“准备”它吗?
--
我也遇到过类似的情况:
$display = '';
if (isset($_GET['display'])) {
$display = $_GET['display']; //set sort via querystring
} else {
$display = 'interest'; //set to default by interest
}
之后:
<div id='byalphabet' class='<?php global $display; if($display != 'alphabet'){echo 'hide';} ?>'>
和
<div id="byinterest" class="<?php global $display; if($display != 'interest'){echo 'hide';} ?>">
--
还用于一些动态javascript:
$view = '';
if (isset($_GET['view'])) {
$view = $_GET['view']; //set view via querystring
}
之后:
<script>
<?php if ($view != ''){ $view = str_replace('/','',$view); ?>
jQuery('#<?php echo $view; ?>').trigger('click'); //activate view option accordion pane
jQuery('html,body').animate({'scrollTop':jQuery('#<?php echo $view; ?>').offset().top - 50},500); //scrollTo view
</script>
--
其他情况包括在数组中搜索 _GET 值array_search($_GET['major'], $slugs);
并使用以下方法重定向页面:
$parts = explode('/',$_SERVER['REQUEST_URI']);
Header( "HTTP/1.1 301 Moved Permanently" ); //SEO friendly redirect
Header( "Location: http://www.site.ca/programs/outline/".$parts[3]."/" );
编辑:我已经阅读了许多弹出的建议的类似问题,但它们主要是指以其他方式使用数据,例如插入数据库。