我试图从以下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
的值未在基目录中提取。
这里出了什么问题?有什么想法吗?
答案 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();
功能