php表单学习

php超全局变量
$GLOBALS用于在任意位置访问全局变量,在名为$GLOBALS[index]中存储全局变量,变量名字就是数组的键。
$_SERVER保存关于报头,路径和脚本位置信息。
<?php
echo $_SERVER[‘PHP_SELF‘]."<br>";//当前执行脚本的文件名
echo $_SERVER[‘SERVER_NAME‘]."<br>";//当前运行脚本所在服务器的主机名
echo $_SERVER[‘HTTP_HOST‘]."<br>";//来自当前请求的Host头
echo $_SERVER[‘HTTP_REFERER‘]."<br>";//返回从哪个页面连接过来的
echo $_SERVER[‘HTTP_USER_AGENT‘]."<br>";//检查访问这用的什么操作系统(包括版本号),浏览器(包括版本号)和用户个人偏好
echo $_SERVER[‘SCRIPT_NAME‘]."<br>";//当前脚本路径
?>
php表单
<form method="post" action="<?php echo $_SERVER[‘PHP_SELF‘];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php
$name = $_REQUEST[‘fname‘];
echo $name;
?>
get方法
2.php:<a href="1.php?subject=PHP&web=W3school.com.cn">test $GET</a>
1.php:
<?php
echo "Study ".$_GET[‘subject‘]." at ".$_GET[‘web‘];
?>

get,post,request的区别:
$_GET变量接受所有以get方式发送的请求,及浏览器地址栏中的?之后的内容
$_POST变量接受所有以post方式发送的请求,例如,一个form以method=post提交,提交后php会处理post过来的全部变量
而$_REQUEST支持两种方式发送过来的请求,即post和get它都可以接受
显示不显示要看传递方法,get会显示在url中(有字符数限制),post不会在url中显示,可以传递任意多的数据(只要服务器支持)

GET vs. POST
GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, ...))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。
GET 和 POST 被视作 $_GET 和 $_POST。它们是超全局变量,这意味着对它们的访问无需考虑作用域 - 无需任何特殊代码,您能够从任何函数、类或文件访问它们。
$_GET 是通过 URL 参数传递到当前脚本的变量数组。
$_POST 是通过 HTTP POST 传递到当前脚本的变量数组。

get发送的信息对任何人都是可见的,不超过2000字符,不适合发送敏感数据。
htmlspecialchars()把特殊字符转换为html实体,可以防止跨站点脚本攻击(实体字符对大小写敏感)
trim()去除用户输入数据中不必要的字符(多余的空格,制表符,换行)
stripslashes()删除用户输入数据中的反斜杠

<html>
<body>
<?php
$name=$email=$gender=$comment=$website="";
if($_SERVER["REQUEST_METHOD"]=="POST"){
$name=test_input($_POST[‘name‘]);
$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=stripslashes($data);
$data=htmlspecialchars($data);
return $data;
}

?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER[‘PHP_SELF‘]);?>">
Name:<input type="text" name="name"><br>
E-mail:<input type="text" name="email"><br>
Website:<input type="text" name="website"><br>
Comment:<textarea name="comment" rows="5" cols="40"></textarea><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male<br>
<input type="submit" name="submit" value="submit">
</form>

<?php
echo "<h2>your input:</h2>";
echo $name."<br>";
echo $email."<br>";
echo $website."<br>";
echo $comment."<br>";
echo $gender."<br>";
?>

</body>
</html>
不知道为什么无法进行过滤,w3school上的源码也无法进行过滤。。。等以后在解决吧

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。