多数大学生出来选择的工作和专业无关
首页 > 专业知识

深入探讨PHP表单的实现方法

时间:2018-07-30 16:56:48 [来源]:郑州PHP培训学校

   深入探讨PHP表单的实现方法

  PHP表单的实现实际上非常简单,下面这篇文章就给出了具体的代码示例。希望初学者能够自己实践一回,充分掌握这方面的知识。
  大家在通过对PHP语言的学习中,可以了解到这是一个功能非常强大的计算机语言。目前有很多程序员都在使用这一语言来帮助他们开发程序。我们今天要为大家介绍的是有关PHP表单的相关内容介绍。
  $_GET 和 $_POST 用于检索表单中的值,比如用户输入。
  PHP表单处理
  PHP表单实例:
  < html>
  < body>
  < form action="welcome.php" method="post">
  Name: < input type="text" name="name" />
  Age: < input type="text" name="age" />
  < input type="submit" />
  < /form>
  < /body>
  < /html>
  上面的 HTML 页面实例包含了两个输入框和一个提交按钮。当用户填写该PHP表单并单击提交按钮时,表单的数据会被送往 "welcome.php" 这个文件。
  "welcome.php" 文件类似这样:
  < html>
  < body>
  Welcome
  < ?php echo $_POST["name"];
  ?>.< br />
  You are
  < ?php echo $_POST["age"];
  ?>
  years old.
  < /body>
  < /html>
  PHP Substr库函数的功能介绍
  PHP substr截取中文字符出现乱码的问题解
  深入探讨如何提高PHP运行效率
  详谈如何实现PHP HTML截取代码
  为你剖解PHP序列化格式
  上面这个脚本的输出样本类似这样:
  Welcome John.
  You are 28 years old.
  注:$_GET 和 $_POST要大写,你可以试下写成小写会出什么错误我们将在下一章解释 PHP $_GET 和 $_POST。
  PHP表单验证
  应该在任何可能的时候对用户输入进行验证。客户端的验证速度更快,并且可以减轻服务器的负载。
  不过,任何流量很高以至于不得不担心服务器资源的站点,也有必要担心站点的安全性。如果表单访问的是数据库,就非常有必要采用服务器端的验证。
  在服务器验证PHP表单的一种好的方式是,把表单传给它自己,而不是跳转到不同的页面。这样用户就可以在同一张表单页面得到错误信息。用户也就更容易发现错误了。
  详谈如何实现PHP HTML截取代码
  PHP HTML截取代码的方法并不是很难,只要我们了解了其中的含义,就能灵活运用这一方法在其他地方。希望本文涉及的内容对又需要的朋友有所帮助。
  我们今天将为大家带来的是关于PHP HTML截取代码的主要实现方式,希望初学者能通过本文介绍的内容对这方面有一个深刻的认识。
  需求:将一段文字截取一定的物理长度显示,注意,要截取的不是字符串的字节数,UFT-8 的编码中文字符是3个字节或者4个字节的,而显示的时候中文会占两个字符的长度,英文字符只占一个,全角的时候又有不同。
  而且给的数据是HTML代码串,比如这样:
  < div class=”aaa”>
  < a href=”/aaa.php?id=1″>
  张三
  < /a>
  评论了
  < a href=”/aaa.php?id=444″>
  李四
  < /a>
  分享的
  < a href=”bbb.html”>
  一篇文章文章一长串的东西
  < /a>
  < /div>
  PHP HTML截取代码的时候是要截取 div 标签内部的东西,而且要保留HTML标签,只是对其中的文字做处理。比如我可能只是截取到“李四”的“李”字,但是如果就这样放到前端的话,“李四”前面的 a 标签是没有闭合的,所以截取之后要保证HTML的语法正确。
  这个问题确实不太好搞,让我郁闷了两天。请注意,这只是一个字符串,只不过内容是HTML代码,是没有什么DOM的。如果是在前端处理就好办了,直接DOM获取,然后对里面的节点进行处理,最后把innerHTML 之类的东西输出就搞定了。现在可不行了,得换个思路。同事的思路是这样的:
  遍历字符串的每一个字符。设置一个标记,碰到标签开始的标记< 就置为1,接下来的字符都不记数,然后碰到>之后再开始计数。对标签内部的字符串处理的时候,还要先判断当前字符的编码是不是可能是中文,一般来说PHP中 UTF-8 编码的中文字符的长度都是3,所以如果碰到是中文字符编码,就要跳过两个不记数……说到这里我自己头已经开始大了。个人认为这种方法很不爽,首先这种精致的逻辑不太容易控制,而且 UFT-8 编码下中文产生的长度有可能是3个或4个 所以代码的严密性值得怀疑。
  我个人的思路是,用 Tidy 来搞(具体用法请看PHP手册吧)。昨天研究了一下那个 Tidy ,发现这个东西还是挺好用的。首先,把这个字符串转换成 Tidy 对象,这样:
  $tidy = tidy_parse_string
  ($str, array(), ‘utf8′);
  // 最后一个是设置编码的,注意,
  这里是utf8 ,不是utf-8,没有中间那个连线。
  然后获取$tidy中的 body(因为转换之后$tidy会自动加上<head><body>等标签):
  $body = tidy_get_body($tidy);
  这个时候你可以用 var_dump 看一些 $body 的结构,会发现它把每个标签都变成了一个对应的对象,里面有相应的属性。举例来说,比如 <a href=”#”>sdf</a> ,这么一条语句对应的一些属性有:
  name=>”a”
  value => “<a href=”#”>sdf</a>”
  child=> array{[0]=>一个文本节点对象,value是 sdf}
  attribute=array{”href”=>”#”}
  …..其他属性
  可以看到,我们其实是可以单独去处理 a 标签对应节点下面的文字节点的值的,那样PHP HTML截取代码就不会破坏任何HTML完整性。原来我以为改变 a 标签中文字节点的值之后, a 标签的value也会跟着改变,那样我直接返回a标签对应节点的value就OK了,没想到不是那个样子,哎,所以处理过其中的文字之后还是要自己拼出新的HTML。
  PHP生成访问计数器的主要实现方法
  PHP生成访问计数器的步骤对于初学者来说还是比较难掌握的。希望大家能够通过本文介绍的相关方法,基本掌握这一功能的实现方式。
  现在用PHP语言来进行网站建设的程序员越来越多。随着网站的发展,肯定需要诸如访问计数器方面的功能。下面我们就为大家介绍PHP生成访问计数器的相关方法。
  有的朋友可能认为它很难,不敢去尝试,其实有了PHP这个工具,它并不难,甚至可以说它很容易。 首先,让我来谈一谈访客计数器的思路:一位访问者浏览此页,服务器(如Apache)从一个文档(下文以num.txt为例)中读取该页已被浏览的次数,加一,然后存回num.txt,并在浏览器中显示加一后的次数。
  如果又一位访问者浏览此页,服务器又重复上述过程,从而实现了PHP生成访问计数器。 PHP没有直接的计数器函数,但利用它强大的功能,我们可以很容易地自己编写一个计数器。
  现对程序需要用到的函数进行说明:
  1. 打开文件操作:int fopen(string filename, string mode); 其中string filename 是要打开的文件名,必须为字符串形式。例如\"num.txt\"。 string mode 是打开文件的方式,必须为字符形式。
  ’r’,只读形式,文件指针指向文件的开头。 ’r+’,可读可写,文件指针指向文件的开头。 ’w’,只写形式,文件指针指向文件的开头,把文件长度截成0,如果文件不存在,将尝试建立文件。 ’w+’,可读可写,文件指针指向文件的开头,把文件长度截成0,如果文件不存在,将尝试建立文件。
  ’a’,追加形式(只可写入),文件指针指向文件的最后,如果文件不存在,将尝试建立文件。 ’a+’,可读可写,文件指针指向文件的最后,如果文件不存在,将尝试建立文件。
  2. 读文件操作:string fgets(int fp, int length); 其中 int fp 是要读入数据的文件流指针,由fopen函数返回数值。 int length 是要读入的字符个数,实际读入的字符个数是length-1。
  3. 写文件操作:int fputs(int fp, string str, int [length]); 其中int fp 是要写入信息的文件流指针,由fopen函数返回数值。 string str 是要写入文件的字符串。 int length 是写入的长度,可选,如果不选length,则整个串将被写入。否则,写入length长度个字符。
  4. 关闭文件操作:int fclose(int fp); 其中int fp是fopen函数返回的文件流指针。 下面,我们来看一下PHP生成访问计数器的原型:(假设num.txt文件存在)< ?php $fp = fopen(\"num.txt\", \"r\");
  //只读方式打开num.txt文件
  $num = fgets($fp,5);
  //读取4位数字
  $num++;
  //浏览次数加一
  fclose($fp);
  //关闭文件
  $fp = fopen(\"num.txt\", \"w\");
  //只写方式打开num.txt文件
  fputs($fp, $str1);
  //写入加一后结果
  fclose($fp);
  //关闭文件
  echo \"$num\";
  //浏览器输出浏览次数
  ?>
  需要说明的是,这只是计数器的原型,它只能以文本方式显示次数,并不美观,而PHP具有极其强大的图像处理能力,用它可以很轻易的动态生成WEB图像。
  下面对上述原型加以修改,使之成为一个真正实用的计数器。 PHP生成访问计数器的思路是这样的:用原型中的方法得到访问次数,把此数字转为标准格式,进行图象处理,并输出成图片,显示。 如果要生成记数图象,需要以下函数:
  1. 字符串长度函数:int strlen(string str); 其中string str 是要计算长度的字符串。
  2. 字符串相加: 如,把 $string1和$string2相加: $string = $string1.$string23. 新建图像函数:int imagecreate(int x_size, int y_size); 其中x_size,y_size分别是新建图像的宽度和高度(以像素为单位)。
  4. 颜色函数:int imagecolorallocate(int im, int red, int green, int blue); 其中int im 是图像识别号。 int red、green、blue分别是红绿蓝三种颜色的分量,取值范围 0 - 255,即相应颜色的RGB。
  5. 给图像填充颜色的函数:int imagefill(int im, int x, int y, int col); 其中int x, int y为开始填充颜色的图像坐标,以图像的左上角为(0,0)。 int col是颜色的识别号。
  6. 在图像中写入水平文字的函数:int imagestring(int im, int font, int x, int y, string s, int col); 其中int im 是图像的识别号。 int font 是字体识别号。 int x,int y 是开始写入字体的坐标,(0,0)为左上角。 string s 是要写入的字符串。 int col 是字体的颜色识别号。
  7. 在图像中划直线的函数:int imageline(int im, int x1, int y1, int x2, int y2, int col); 其中int im 是图像的识别号。 int x1,int y1,int x2,int y2是划线的起止坐标。 int col 是线的颜色识别号。
  8. 把图像输出成GIF格式的函数:int imagegif(int im, string filename); 其中int im 是图像的识别号。 string filename是生成图片的名字,可选,如果filename为空,则直接的输出。
 

上一篇:探讨PHP表单重复提交的预防法则

下一篇:推荐几款功能强大的PHP编辑器