PHP中何时使用POST 何时使用GET及表单的安全性

GET和POST区别

  1. get是从服务器上获取数据,post是向服务器传送数据。
  2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
  3. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  4. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
    何时使用 GET?
    通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大于 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。
    GET 可用于发送非敏感的数据。
    注释:绝不能使用 GET 来发送密码或其他敏感信息!
    何时使用 POST?
    通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制。
    此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。
    不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。
    提示:开发者偏爱 POST 来发送表单数据。

接下来让我们看看如何安全地处理 PHP 表单!

//定义变量并设置为空值
$name=$email=$gender=$comment=$website="";

if($_SERVER["REQUEST_METHOD"]=="POST"){//($_SERVER["REQUEST_METHOD"]表示的是表单提交数据的方式
$name=test_input($_post["name"]);//test_input 过滤提交的信息放置被攻击
$email = test_input($_post["email"]);
$website=test_input($_post["website"]);
$comment=test_input($_post["comment"]);
$gender=test_input($_post["gender"]);
}
function test_input($data){
$data=trim($data);//去除用户输入数据中不必要的字符(多余的空格键、制表符、换行)
$data=stripslasher($data);//删除用户输入数据中的反斜杠(\)
$data=hemlspecialchars($data);//把特殊字符转换为html实体。
return $data;
}
?>

你可能感兴趣的:(PHP中何时使用POST 何时使用GET及表单的安全性)