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

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

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

在书籍里面了解到,表单<form>有三个属性,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属性即提供一个供用户上传文件的渠道.书中给出的例子,我对照着敲了一下,也试着获取了一下文件信息,但是总是失败,返回的一直是空.书中完全没有给出任何解释.源码如下:

<html>
<head>
<title>
  注册您的个人信息
</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<h1>  请输入您的个人信息 </h1>
<form name=regist method=post action="php/regist.php" >
  姓名: <input type=text name=username maxlength=20 size=20 value=请输入用户名 /> <br>
  学号: <input type=text name=id maxlength=20 size=20/><br>
  邮箱: <input type=text name=mail maxlength=20 size=20/><br>
  密码: <input type=password name=password maxlength=40 size=20/><br>
  确认密码: <input type=password name=conform maxlength=40 size=20/><br>
  头像: <input type=file name=pic /><br>
        <input type="image" name="image1" src="pic222094.jpg" alt="submit" width=60 height=60 /><br>
  <input type=reset value=重置>
</form>
</body>
</html>

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

我的regist.php的内容如下:

<?php
header("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遇到的一些的问题.总结一下,尤其是第一个问题,查了很久才找到一个合理的解释.接下来的几天我会继续加深理解,争取本周能够写出一个小东西.

时间: 2024-08-03 07:29:32

PHP入门-表单处理问题总结的相关文章

Flask入门 表单Flask-wtf form原生 Bootstrap渲染(七)

(1) 原生的表单 模板页面,form表单form.html <form action="{{ url_for('/check/') }}" method='post'> <p>用户名: <input type='text' name='username'></p> <p>密码: <input type='password' name='userpass'></p> <p><input

Bootstrap入门(五)表单

先引入本地的CSS文件 <link href="css/bootstrap.min.css" rel="stylesheet"> 一.内联表单 单独的表单控件会被自动赋予一些全局样式.所有设置了 .form-control 类的 <input>.<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;. 而内联表单,要为 <form> 元素添加 .form-inli

Extjs表单控件入门

ExtJs表单控件用formPanel来做为表单元素的容器.默认情况下,是使用Ajax异步提交. 大家知道要使用Extjs必须引入他的库,所以我们要引入以下几个文件: ext-all.css ext-base.js ext-all.js PS:笔者采用的是extjs3.0版本 那怎么加载插件呢?放心,extjs有自己加载的方法: Ext.onReady(function(){ //coding... } 实例代码: var formPanel=new Ext.form.FormPanel({ t

04. Web大前端时代之:HTML5+CSS3入门系列~HTML5 表单

Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html ? 待续.... 04. Web大前端时代之:HTML5+CSS3入门系列~HTML5 表单

天河微信小程序入门《四》:融会贯通,form表单提交数据库

天河在阔别了十几天之后终于又回来了.其实这篇文章里的demo是接着(天河微信小程序入门<三>)后面就做了的,但是因为最近在做别的项目,所以就偷懒没有发出来.放到今天来看,从前台提交数据到数据库已经是没有什么可写的了.不过既然开篇了就不能太监么,所以还是分享出来给大家.我当时的目的是为了实验api的功能和跟后台数据的通讯存储,所以没有考虑到美观之类的,界面非常丑请大家包涵.一个带form表单的页面在这里定义好自己form表单的元素名称 01 02 03 04 05 06 07 08 09 10

OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据

OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的分析,探索OkHttp这个框架的使用和封装 一.追其原理 Android系统提供了两种HTTP通信类 HttpURLConnection HttpClient Google推荐使用HttpURLConnection,这个没必要多说,事实上,我这篇写的应该算是比较晚了,很多优秀的博文都已经提出了这些观

jquery validate.js表单验证的基本用法入门--不用写繁琐的验证代码了...

jquery.validate.js是jquery下的一个验证插件,功能比较强大,早就有所耳闻但是一只没有动手用过,现在在于能够研究一下了. 这里转载一篇前辈写的文章,在我自己的理解上修改了一下,仅作记录. 先贴一个国内某大公司的代码: 1 <script type="text/javascript"> 2 function lang(key) { 3 mylang = { 4 'ls_input_myb': '请输入您的账户', 5 'ls_myb_email': '漫游

Web---演示Servlet的相关类、表单多参数接收、文件上传简单入门

说明: Servlet的其他相关类: ServletConfig – 代表Servlet的初始化配置参数. ServletContext – 代表整个Web项目. ServletRequest – 代表用户的请求. ServletResponse – 代表用户的响应. 本篇博客讲解: ServletRequest – 代表用户的请求. ServletResponse – 代表用户的响应. 表单中的多选框参数接收. 文件的上传技术. ServletRequest : ServletRequest

无废话ExtJs 入门教程四[表单:FormPanel]

无废话ExtJs 入门教程四[表单:FormPanel] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在窗体里加了个表单.如下所示代码区的第28行位置,items:form. 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&