isset()用于检验变量是否设置。我有个疑问,首先表单里,如<input type=“text” name="age">这个表单,我就算不填任何东西,提交到后台,isset($_REQUEST["age"])也是true呀。。那你到底检测什么?用户自己造参数访问?减少不必要假请求?还有就是设置个隐藏域,来检测表单是否提交,那用户检查元素,查到了<input type="hidden" name="sub">这里的name,也是可以伪造一个提交的过程呀?isset()的意义到底在哪?
解决方案 »
- 读EXCEL时出现Detected an illegal character in input string in
- fastdfs在nginx上面用http://访问得不到connection的问题!
- onmouseover="hot('a1','b1')"作用
- ASP.NET是一门不适合制作网站的语言
- 新手一问(千万别骂我笨)
- 如何让别人访问我的PHP网页?
- 再次提问:如何使一个php不能被客户端浏览,但可以通过另外一个网页在客户端通过script src方式引用
- 如何用Javascript提交PHP变量?
- PHP如何将拼音转换成汉字?
- php如何备份mssql数据库
- 文件上传编码问题
- php给文章加关键字连接,文章内容自动加链接效果 怎样控制链接次数?
这个时候就需要你对提交的 name数据做一个校验了
最简单的 验证码 /token/加密 不都可以吗?
但如果是直接 url 进入表单处理页,那你还觉得 isset 多余吗?
$a='';
var_dump(isset($a)); //true
var_dump(!empty($a)); //false
var_dump(isset($a['test']));
var_dump(empty($a['test']));
var_dump(array_key_exists('test',$a));$a['test']=NULL;
var_dump(isset($a['test']));
var_dump(empty($a['test']));
var_dump(array_key_exists('test',$a));$a['test']='';
var_dump(isset($a['test']));
var_dump(empty($a['test']));
var_dump(array_key_exists('test',$a));$a['test']='text';
var_dump(isset($a['test']));
var_dump(empty($a['test']));
var_dump(array_key_exists('test',$a));
我知道是在检测”是否设置“,但为什么要检测呢,如果没设置,我去判断它干什么,何况后台也没提供专门的函数来处理呀,所以检测的意义在什么地方?
name的数据,打开firebug工具,不都能看到吗,直接粘在url后头,不能模拟一个get访问吗?那既然我都可以直接url模拟,那我咋知道到底是url过来的,还是表单提交的。回2楼:
但如果是直接 url 进入表单处理页,那你还觉得 isset 多余吗?
比如有两个页面
1.php里有:
<a href="2.php?name=xx">我们</a>
2.php里有:
if(isset($_REQUEST["name"])){
echo 1;
};
做了测试,无论是链接过来的,还是表单过来的,isset($_REQUEST["name"]的结果都是true呀,所以意义在哪?
对呀,你都已经提到,而且异常捕捉来处理,那跟isset有什么关系?
<a href="2.php">我们</a>
<a href="2.php?names=xx">我们</a>
还有你说的表单,一般都会有一些隐藏域数据。比如数据库表里的id=10.当你提交表单去更新数据的时候你必须要判断一下isset($_POST['id']) && $_POST['id'] != '' 只有存在的时候采取更新,不存在直接404.
我说的只是简单的一种可能还有很多的,判断也不仅限于isset。判断的意义就是防止出错。
我知道是在检测”是否设置“,但为什么要检测呢,如果没设置,我去判断它干什么,何况后台也没提供专门的函数来处理呀,所以检测的意义在什么地方?
name的数据,打开firebug工具,不都能看到吗,直接粘在url后头,不能模拟一个get访问吗?那既然我都可以直接url模拟,那我咋知道到底是url过来的,还是表单提交的。
//===
上面有人跟你说了 如果别人给你瞎提交数据的话你的程序就会不停的出错。另外判断是否设置是为了下一步继续操作的条件.一般直接判断是否为空即可.name打开firebug能看到 所以我跟你说了 token 加密 验证码 的解决方法就能基本上杜绝这种人肉模拟get.
如果他要去读取你的参数例如验证码,然后再拼装起来发送给你那已经属于可以接受的范围了.一个简单的加密方法用户访问你的表单页面 session 产生一个加密串。提交的时候判断加密串是否存在,不存在或者解密后与加密内容不符那么就可以判断为非法提交内容.最后如果你还不放心 使用ssl吧.使用证书来管理你的访问
echo "true";
}else{
echo "false";
}Request 变量:$_REQUEST
注意: 在 PHP 4.1.0 及以后版本使用。之前的版本,没有等价的数组。注意: 在 PHP 4.3.0 之前,$_FILES 也被包括在 $_REQUEST 数组中。此关联数组包含 $_GET,$_POST 和 $_COOKIE 中的全部内容。经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义。