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

$_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,对要求比较严格的场合不适用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值