您的位置:首页 > 产品设计 > UI/UE

获取表单数据的两种方法(post,get,request)

2016-10-31 17:37 549 查看
$_REQUEST 变量
PHP 的 $_REQUEST 变量包含了 $_GET, $_POST 以及 $_COOKIE 的内容。
PHP 的 $_REQUEST 变量可用来取得通过 GET 和 POST 方法发送的表单数据的结果。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>An HTML Form that Calls Itself</title>
</head>
<body>
<div>
<?php
header("Content-Type: text/html; charset=utf-8");
if ( ! empty( $_POST['guess'] ) ) {
print "last guess: ".$_POST['guess'];
}
?>
<form method="post" action="<?php print $_SERVER['PHP_SELF']?>">
<p>Type your guess here:
<input type="text" name="guess" />
</p>
<input type="submit" name="Submit" value="提交">
</form>
</div>
</body>
</html>


<?php
$self = $_SERVER['PHP_SELF'];
$username = $_POST['username'];
$useraddr = $_POST['useraddr'];
$comments = $_POST['comments'];
$sent = $_POST['sent'];
$form ='<form action="$self" method="post">';
$form.='Name:<input type="text" name="username"';
$form.=' size="30" value="$username" >';
$form.='Email:<input type="text" name="useraddr"';
$form.=' size="30" value="$useraddr">';
$form.='Comments:<textarea name="comments" >';
$form.='$comments</textarea><br/>';
$form.='<input type="submit" name="sent" value="Send Form">';
$form.='</form>';
if( $sent ){
$valid=true;
if( !$username ){
$errmsg.="Enter your name...<br />";
$valid = false;
}
if( !$useraddr ){
$errmsg .="Enter your email address...<br />";
$valid = false;
}
if( !$comments ){
$errmsg.="Enter your comments...<br />";
$valid = false;
}
$useraddr = trim($useraddr);
$_name = "/^[-!#$%&'*+./0-9=?A-Z^_'{|}~]+";
$_host = "([-0-9A-Z]+.)+";
$_tlds = "([0-9A-Z]){2,4}$/i";
if( !preg_match( $_name."@".$_host .$_tlds,$useraddr ) ){
$errmsg.="Email address has incorrect format!<br />";
$valid=false;
}
}
if( $valid != true ){
echo( $errmsg.$form );
} else {
$to = "php@h.com";
$re = "Feedback from $username";
$msg = $comments;
$headers  = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html;";
$headers .= 'charset="iso-8859-1"rn';
$headers .= "From: $useraddr rn";
if(mail($to,$re,$msg, $headers)){
echo("Your comments have been sent - thanks $username");
}
}
?>


$_POST 变量
$_POST 变量是一个数组,内容是由 HTTP POST 方法发送的变量名称和值。
$_POST 变量用于收集来自 method="post" 的表单中的值。从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。


后面是追记

PHP中获取表单数据的三种方法,及其差别之处如下所示

表单部分代码:
<form name="form1" method="post" action="">
<input type="text" name="username">
<input type="submit" name="Submit" value="提交">
</form>

获取表单:
<?php
echo ($HTTP_POST_VARS["username"]);
echo ($_REQUEST["username"]);
echo ($username);
?>

方法一是4.0以下版本常用的方法,而不管register_globals如何设置;
方法二是4.2以上版本常用的方法,而不管register_globals如何设置;
方法三是在php.ini设置register_globals = On 的时候才适用。

补:
$_REQUEST中间的内容实际上还是来源于$_GET $_POST $_COOKIE,缺点是无法判断变量到底来自于get post 还是cookie,对要求比较严格的场合不适用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: