php表单之在Web页面中嵌入php代码
1. 在HTML标记中添加PHP脚本
在 Web 编码的过程中,PHP是可以与HTML混合使用的嵌入式语言,可以随时在HTML添加PHP脚本标记<?php...?>,两个标记之间的所有文本都会被解释成PHP,而标记之外的任何文本都会被认为是普通的HTML。
举个例子,在<body>标记中添加PHP标识符,使用 include 语句引用外部文件 index.php, 代码显示如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <?php include('header.php');?> index page </body> </html>
header.php
<?php echo 'i am header<br>';
有四种分解符可以让PHP嵌入到HTML。
(1)<?php 和?>:PhP标准的分解符。
(2)<?和?>:简写的分解符。
(3)<script language="php">和</script>:JavaScript/VBScript风格分解符
(4)<%和%>:ASP分解符。
其中第一种与第二种是最常用的方法;第三种方法类似于JavaScript嵌入方式;第四种方式类似于ASP嵌入方式。
注意:要想使用PHP支持<??><%%>方式,需要分别在配置文件PHP.ini中进行如下设置:
short_open_tag = on;
asp_tags = on;
2. 对表单元素的 value 属性进行赋值
在 Web 开发的过程中,通常需要对表单元素的 value 属性进行赋值,以获取该表单元素的默认值。例如,为表单元素隐藏域进行赋值,只需要将所赋的值添加到 value 属性后就可以了,其代码实例如下:
<input type="hidden" name="id" value="<?php echo $hidden;?>">
下面来简单介绍一下什么是隐藏域
隐藏域的优点
1、不需要任何服务器资源。
2、支持广泛,任何客户端都支持隐藏域。
3、实现简单,隐藏域属于HTML控件,无需像服务器控件那样有需要编程知识。
隐藏域的不足
1、具有较高的安全隐患。
2、存储结构简单。
3、如果存储了较多的较大的值,则会导致性能问题。
4、如果隐藏域过多,则在某些客户端中被禁止。
5、隐藏域将数据存储在服务器上,而不存储在客户端。
注意,如果开发中,页面的隐藏域过多,这些隐藏域被存储在服务器。当客户端浏览页面的时候,会有一些防火墙扫描页面,以保证操作系统的安全,如果页面的隐藏域过多,那么这些防火墙可能会禁止页面的某些功能。
php获取form表单单选按钮和复选框的值
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>form</title> </head> <body> <form action="" method="post" name="form1"> <table width="500" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="500" height="30"> <input type="radio" name="sexy" value="男" checked>男 <input type="radio" name="sexy" value="女">女 <input type="submit" name="submit" value="提交"> </td> </tr> </table> </form> </body> </html>
说明:checked 属性用来设置表单元素默认选中的意思,当表单页面被初始化时,有checked 属性的表单元元素为选中状态。
应用$_POST[]全局变量来获取单选按钮组的值,最后通过echo语句进行输出
<?php error_reporting(0); echo "您选择的性别为:"; //输出字符串 echo $_POST["sexy"]; //输出被选中的单选按钮的值 ?>
获取复选框的值
复选框能够进行项目的多项选择。浏览者填写表单时,有需要选择多个项目。例如:在线听歌中需要同时选取多首歌曲等,就会用到复选框。复选框一般都是多个选项同时存在,为了便于传值,name 的名字可以是一个数组形式,格式为:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>form</title> </head> <body> <form action="index.php" method="post" name="form1"> <table width="500" cellpadding="0" cellspacing="0"> <tr> <td width="500" height="40" align="center" valign="top">喜欢的图书类型: <input type="checkbox" name="mrbook[]" value="php" >php <input type="checkbox" name="mrbook[]" value="thinkphp" >thinkphp <input type="checkbox" name="mrbook[]" value="laravel" >laravel <input type="submit" name="submit" value="提交"> </td> </tr> </table> </form> </body> </html> <?php if($_POST["mrbook"]!= null){ //判断复选框如果不为空,则执行下面的操作 echo "您选择的结果是:"; //输出字符串 for($i = 0; $i < count($_POST["mrbook"]);$i++){ //通过 for 循环语句输出选中复选框的值 echo $_POST["mrbook"][$i]." "; //循环输出用户选择的图书类别 } } ?>
在浏览器中输入运行地址,按回车键,得到如下图所示的运行结果:
php获取form表单文件域的值
在实现开发过程中,文件或者图片上传在一些网站应用中是必不可少的一部分。比如个人博客上传个性头像,一些论坛分享好的学习资料等等,这就涉及到使用表单处理文件上传的知识,在php中 我们可以使用$_FILES这个全局数组来处理。
$_FILES数组内容如下:
$_FILES['myFile']['name'] 客户端文件的原名称。
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但用 putenv() 函数设置是不起作用的。
$_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。
$_FILES["file"]["error"]中的["error"]值情况:
UPLOAD_ERR_OK 值:0; 没有错误发生,文件上传成功
UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值
UPLOAD_ERR_FORM_SIZE 值:2;上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值
UPLOAD_ERR_PARTIAL 值:3; 文件只有部分被上传
UPLOAD_ERR_NO_FILE 值:4;没有文件被上传, 值:5; 上传文件大小为0 。
php对URL传参进行编码和解码解析
urlencode(string)
urlencode()函数实现将字符串 string 进行 URL 编码。
在下面的实例中,应用 urlencode()函数对 URL 传递的参数值进行编码,显示的字符串是
URL 编码后的字符串,其实现的代码如下所示:
<?php $url = urlencode('cyy超可爱'); echo 'index.php?id='.$url;
在浏览器中输入运行地址,按回车键,得到如下所示的运行结果:
index.php?id=cyy%E8%B6%85%E5%8F%AF%E7%88%B1
说明:
对于服务器而言,编码前后的字符串并没有什么区别,服务器能够自动识别。这里主要是为了讲解 URL编码的使用方法。在实际应用中,对一些非保密性的参数不需要进行编码,读者可根据实际情况有选择的使用。
urldecode(string)
urldecode() 函数可将 URL 编码后的 string 字符串进行解码。
这里的例子应用urlencode() 函数对获取的编码进行解码,将解码后的结果输出来。其实现的代码如下所示:
<?php $url = '%E8%B6%85%E5%8F%AF%E7%88%B1'; echo urldecode($url);
运行的结果如下所示:
超可爱
php表单提交获取数据到当前页的简单综合应用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="" method="post" name="form1" enctype="multipart/form-data"> <table width="400" border="1" cellpadding="1" bgcolor="#999999"> <tr bgcolor="#FFCC33"> <td width="103" height="25" align="right">姓名:</td> <td height="25"> <input name="user" type="text" id="user" size="20" maxlength="100"> </td> </tr> <tr bgcolor="#FFCC33"> <td height="25" align="right">性别:</td> <td height="25" colspan="2" align="left"> <input name="sex" type="radio" value="男" checked>男 <input name="sex" type="radio" value="女" >女 </td> </tr> <tr bgcolor="#FFCC33"> <td width="103" height="25" align="right">密码:</td> <td width="289" height="25" colspan="2" align="left"> <input name="pwd" type="password" id="pwd" size="20" maxlength="100"> </td> </tr> <tr bgcolor="#FFCC33"> <td height="25" align="right">学历:</td> <td height="25" colspan="2" align="left"> <select name="select"> <option value="专科">专科</option> <option value="本科" selected>本科</option> <option value="高中">高中</option> </select> </td> </tr> <tr bgcolor="#FFCC33"> <td height="25" align="right">爱好:</td> <td height="25" colspan="2" align="left"> <input name="fond[]" type="checkbox" id="fond[]" value="php">php <input name="fond[]" type="checkbox" id="fond[]" value="thinkphp">thinkphp <input name="fond[]" type="checkbox" id="fond[]" value="laravel">laravel </td> </tr> <tr bgcolor="#FFCC33"> <td height="25" align="right">照片上传:</td> <td height="25" colspan="2"> <input name="image" type="file" id="image" size="20" maxlength="100"> </td> </tr> <tr bgcolor="#FFCC33"> <td height="25" align="right">个人简介:</td> <td height="25" colspan="2"> <textarea name="intro" cols="30" rows="10" id="intro"></textarea> </td> </tr> <tr align="center" bgcolor="#FFCC33"> <td height="25" colspan="3"> <input type="submit" name="submit" value="提交"> <input type="reset" name="reset" value="重置"> </td> </tr> </table> </form> </body> </html> <?php if($_POST['submit']!= ""){ //判断是否提交了表单 echo "您的个人简历为:".'<br>'; echo "姓名:".$_POST['user'].'<br>'; //输出用户名 echo "性别:".$_POST['sex'].'<br>'; //输出性别 echo "密码:".$_POST['pwd'].'<br>'; //输出密码 echo "学历:".$_POST['select'].'<br>'; //输出学历 echo "爱好:"; for($i=0;$i<count($_POST["fond"]);$i++){ //获取爱好的复选框的值 echo $_POST["fond"][$i].' '; } echo "<br>"; $path = './uploads/'.$_FILES['image']['name']; // 指定上传的路径和文件名 move_uploaded_file($_FILES['image']['tmp_name'],$path); //上传文件 echo "照片:"."$path".'<br>'; //输出个人照片的路径 echo "个人简介:".$_POST['intro']; //输出个人简介的内容 } ?>