包含来自URL参数的文件?

时间:2014-07-28 23:37:08

标签: php

这就是我通常包含文件的方式:

<?php include 'paypal/file.php'; ?>

但是,我需要从我的URL获取service参数,并将其与要包含的正确文件进行匹配。例如,页面mywebsite.com/?service=12345应包含此文件:

<?php include 'paypal/12345.php'; ?>

在我的语句中引用URL参数需要做什么?

2 个答案:

答案 0 :(得分:1)

<?php include 'paypal/' . $_GET['service'] . '.php'; ?>

应该这样做,但(像约翰评论的那样),这是一种风险安全风险。如果您最终这样做,请务必先清理您的输入!

答案 1 :(得分:0)

1 - 使用$service = isset($_GET['service']) ? $_GET['service'] : '';

从网址获取数据

2 - 扫描包含目录并检查是否有与该网址匹配的文件

$scan = scandir('paypal/');

$offscan = array('.','..','.htaccess','.DS_Store','thumbs.db'); //etc depends what you can have in there

if( !in_array($service, $offscan) && in_array($service, $scan) && !is_dir('paypal/'.$service) ){
    include 'paypal/'.$service.'.php';
}
else{
    die('This service does not exists');
}

但正如约翰在评论中告诉你的那样,这仍然存在安全风险。最好的方法是从数据库中获取列入白名单的“服务”列表,并只接受它们。

相关问题