从查询字符串到BASE_DIR的键/值对的POST值

时间:2014-06-02 17:09:05

标签: php post get

我试图从以下1

发布密钥user_id的值url
www.site.com/directory/subdirectory/test.php?file=test.doc&user_id=1

定义基目录,如

$user= (isset($_REQUEST['user_id']));
define('BASE_DIR',"/home/user/public_html/directory/subdirectory/$user");

$user的值未在基目录中提取。

这里出了什么问题?有什么想法吗?

5 个答案:

答案 0 :(得分:0)

$user = isset($_REQUEST['user_id']) ? $_REQUEST['user_id'] : 0;
define('BASE_DIR',"/home/user/public_html/directory/subdirectory/$user");

$user分配用户ID值。

答案 1 :(得分:0)

问题是你在基础dir中放入了表达式的布尔值((isset($ _ REQUEST ['user_id'])),而不是值本身。

if((isset($_REQUEST['user_id']))
    $user = $_REQUEST['user_id'];
else
    $user = 0;

define('BASE_DIR',"/home/user/public_html/directory/subdirectory/" . $user);

答案 2 :(得分:0)

你需要这样做

$user= isset($_REQUEST['user_id'])?$_REQUEST['user_id']:'';

并且不包含来自网址的文件,它是不安全的

答案 3 :(得分:0)

试试这个

if(isset($_REQUEST['user_id'])) {
  $user = $_REQUEST['user_id'];
  define('BASE_DIR',"/home/user/public_html/directory/subdirectory/".$user);
} else {
   $user = 0;
}

答案 4 :(得分:0)

为了避免在这种情况下使用布尔值,我们可以简单地使用

$user = $GET['user_id'];

将查询字符串中的数值发布到BASE_DIR网址或其他内联网址的更好方法是修改变量,例如

$user = $_GET['user_id']);
$user = trim($user);

然后用

清理它

ctype_digit();功能

喜欢,

if (ctype_digit($user)) {
//do somethisng
}else{
//do some other things.

如果是字母数字字符串值,上述清理方法可以替换为

ctype_alnum();功能