Heim >Backend-Entwicklung >PHP-Tutorial >PHP入门-表单处理有关问题总结

PHP入门-表单处理有关问题总结

WBOY
WBOYOriginal
2016-06-13 12:16:241034Durchsuche

PHP入门-表单处理问题总结

这几天的学习下来.PHP和C/C++有太多的相似之处了.所以简单的入门现在看来已经没有问题了.但是因为选取的是一本快速入门的书籍,难免有些知识点比较粗糙.比如下面两个问题就让我吃了点亏.

1. 表单的文件标签无法获取到文件名.

在书籍里面了解到,表单

有三个属性,method, action,name .其中那么标记表单的名字,method表示使用哪种方式提交表达,可选get/post.action指定处理表单的动作.可以指定一个php页面或者干脆就在当前页面处理.这一点实在很神奇并且方便.因为表单只要指定了php的页面,变量什么的都是和php共享的.

表单下面可选的标签有input   select   option   textarea ,  其中option是select的一个子标签.

而input又可以拓展成很多类别的标签,通过input的type属性指定.目前我接触到的主要有text  password   file   submit   reset   image .  从左到右,依次是文本,密码,文件,提交,重置,图片. 这里图片的意思不是用来展示的,而是用来替换submit使用的.而file属性即提供一个供用户上传文件的渠道.书中给出的例子,我对照着敲了一下,也试着获取了一下文件信息,但是总是失败,返回的一直是空.书中完全没有给出任何解释.源码如下:

<title>  注册您的个人信息</title><meta http-equiv="content-type" content="text/html;charset=utf-8"><h1>  请输入您的个人信息 </h1>
姓名:
学号:
邮箱:
密码:
确认密码:
头像:

通过搜集资料,发现很多同学也遇到了相同的问题.可能和我看的是一样的书吧.不过总算是经过一番努力以后找到了原因,原来是因为默认情况下,html仅仅支持text/html格式的文件传输.而表单需要多格式支持.所以解决办法就是.在form中添加属性 enctype="multipart/form-data" . ok问题解决.

我的regist.php的内容如下:

<?phpheader ("Content-Type:text/html;charset=utf-8");echo "user info is as follow: <br>";echo "name is ".$_POST[username]."<br>";echo "number is ".$_POST[id]."<br>";echo "mail is ".$_POST[mail]."<br>";echo "password is ".$_POST[password]."<br>";print_r($_FILES);?>
上传一个文件,测试一下:

输入界面如下,我写入一些信息,因为是字符界面,所以头像部分是我手写进去的.

输出界面如下.可以看到文件是有信息的.其中name表示在客户端的文件名,type表示文件类型.tmp_name表示在服务器端的临时文件名

2. 表单的图像标签不显示图像.

这个问题在大学的时候也遇到过,当时解决了.但是转眼这么多年过去了.哪里还记得住啊.不过运气号,试了几下就又想起解决办法了.

最初我指定的路径是我其它的目录.所以图片无法显示,后来我把图片放在了apache工作的根目录,即/var/www/html目录下,就可以正常显示了.想想也是,如果哪里的文件都能显示,apache何必还要我们配置工作ROOT_DIRECTORY呢.

3. php乱码问题

我们知道在html页面中,编码问题是通过meta标签指定http-equiv的方式来指定的.但是跳转到php页面以后,这个标签失效了.php又成了乱码.怎么办,想必是一定有现成的函数可以使用的.所以就网上查了一下,果然.

在PHP文件的开头处加入 header("Content-Type="text/html;charset=utf-8");问题解决.


ok.这就是这几天学习PHP遇到的一些的问题.总结一下,尤其是第一个问题,查了很久才找到一个合理的解释.接下来的几天我会继续加深理解,争取本周能够写出一个小东西.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn