1、PHP获取表单各项数据 --- 与表单提交的方式有关
GET方式,格式:$_GET[“formelement”]
POST方式,格式:$_POST[“formelement”]
REQUEST方式,格式:$_REQUEST[“formelement”]
2、表单中上传文件的数据
数组:$_FILES["file_name"] //其中file_name表示表单file元素对应的名称
包含error,name,type,size,tmp_name等数据项
3、表单本身所在文件(HTML,PHP等)的数据
$_SERVER["HTTP_REFERER"]表示请求的文件信息,是URL地址,如http://localhost/login.html
可以采用如下方式处理:
$uri=$_SERVER['HTTP_REFERER']; //无法获得默认页面index.html等形式的文件名称
$arr=explode('/',$uri);//把字符串分割为数组
也可以将URL地址当做文件路径,使用basename($_SERVER["HTTP_REFERER"])来获得请求文件名
4、表单处理文件(本文件)的信息
__FILE__获得文件的完整路径;
$_SERVER['REQUEST_URI']和$_SERVER['PHP_SELF']获得文件名;
注:单引号串和双引号串在PHP中的处理是不相同的。
双引号串中的内容(如变量,特殊字符)可以被解释而且替换,而单引号串中的内容总被认为是普通字符。
$foo = 2;
echo "foo is $foo"; // 打印结果: foo is 2
echo 'foo is $foo'; // 打印结果: foo is $foo
echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行)
echo 'foo is $foo\n'; // 打印结果: foo is $foo\n
需要说明的是,在脚本中使用单引号串处理速度会更快,PHP语法分析器对单引号串的处理方式比较单纯,而双引号的处理由于串内部也需要解析,因此更复杂,所以处理速度略慢。
示例:
file1.html
--------------------------------------------------------------------------------------------------
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body bgcolor=#FFFFFF>
<div id="bigbox" align="center" class="top">
<br /><h2>开心一刻<h2><br />
<hr>
<b><h2 align="LEFT">第一次杀鱼</h2></b>
<div id="content" align="left">
姐姐第一次杀鱼,犹豫了半天也不敢下手。
过了一会,再去看时,只见她两手握着鱼,把鱼按在水底,我问她要干嘛?<br />
她说:“等把它淹死了再杀……淹死了再杀!”
<br /></div>
<hr>
<form id="usercomments" method="post" action="./formdeal.php" align="left">
简评:<input id="mycomment" name="mycomment" type="text" size=100 ></input><br>
文件:<input id="myfile" name="myfile" type="file"></input>
<input type="submit" id="submit" name="submit" value="提交" ></input>
</form>
</div>
</body>
</html>
--------------------------------------------------------------------------------------------------
formdeal.php
--------------------------------------------------------------------------------------------------
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>处理页面!</title>
</head>
<body>
<?php
/*
*
* Created on 2014-04-11
*
* author:wenqing
*/
?>
<?php
/********************
* 处理表单数据
********************/
echo "<font size=5px>";
echo "<p>";
$comment=$_POST['mycomment']; //获取表单数据
/**
* empty()函数是用来测试变量是否已经配置:
* 若变量不存在,则返回 TRUE;
* 若变量存在且其值为""、0、"0"、NULL、FALSE、array()以及无属性对象,则返回 TURE;
实例:
$value="0";
if(empty($value)){
echo "我是空值!";
}
**/
//if(empty($comment)){
if($comment==""){
print("您没有评论!");
}else{
print("您的评论是:".$comment);
}
echo "<br /></p>";
?>
<?php
/********************
* 处理上传文件
********************/
echo "<p>";
if(empty($_FILES["myfile"]))
print("您没有上传文件!");
else if(($_FILES["myfile"]["type"] == "text/plain")
&& ($_FILES["myfile"]["size"] < 20000))
{
if ($_FILES["myfile"]["error"] > 0)
echo "Return Code: " . $_FILES["myfile"]["error"] . "<br />";
else{
echo "Upload: " . $_FILES["myfile"]["name"] . "<br />";
echo "Type: " . $_FILES["myfile"]["type"] . "<br />";
echo "Size: " . ($_FILES["myfile"]["size"] / 1024) . " Kb<br />";
echo "Temp-file: " . $_FILES["myfile"]["tmp_name"] . "<br />";
if(file_exists("upload/" . $_FILES["myfile"]["name"]))
echo $_FILES["myfile"]["name"] . " already exists. ";
else{
move_uploaded_file($_FILES["myfile"]["tmp_name"],
"upload/" . $_FILES["myfile"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["myfile"]["name"];
}
}
}
echo "</p>";
?>
<?php
/********************
* 处理页面文件
********************/
echo '<p>';
$servername=$_SERVER['SERVER_NAME'];
$subpage=$_SERVER["HTTP_REFERER"];
// __FILE__ and $_SERVER['PHP_SELF'] achive same feature!
$dealpage=$_SERVER["REQUEST_URI"];
$urlpath=substr($subpage,(7+strlen($servername)));
echo "服务器名称是:".$servername;
echo '<br />';
echo "URL路径是:".$urlpath;
echo '<br />';
echo "提交表单的页面是:".basename($subpage);
echo '<br />';
echo "处理表单的页面是:".$dealpage;
echo '</p>';
echo "</font>";
?>
</body>
--------------------------------------------------------------------------------------------------
对于第三种处理页面文件部分,有网上朋友说采用$_SERVER["HTTP_REFERER"]方式获取不太可靠,提出在表单中加入Hidden属性项来获得,对此我表示知识有限无法解答,抱歉…
本文仅是学习笔记,用于自己复习参看,谨记之。