PHP 的输 入 表单与 文件上传杨亮
Web 基本流程 请求 页 面 对应 文件 获取数据 PC Mobile HTTP 请求 html css javascript 服务器 (Apache) (IIS) html css javascript 后端脚本 (PHP) (JSP) (ASP) 数据库 (MySQL) (Oracle) (Access) 返回 页 面 返回 页 面 返回数据 客户端 服务器端
PHP 基本 角 色 前端 工程师 后端 工程师 PC Mobile html css javascript 后端脚本 (PHP) (JSP) (ASP) 数据库 (MySQL) (Oracle) (Access) html CSS JavaScript 页 面内容 页 面外观 页 面 行为 接受请求获取数据处理数据 组织数据 管理数据 拼接 页 面
如果我要做 一个学院课程的相关 网站 2014 101.htm 102.htm 2014 年算法分析与设计 2014 年 Linux 系统与应 用 www course 101.htm 2015 年算法分析与设计 2015 102.htm 2015 年 Linux 系统与应 用 103.htm 2015 年 PHP 语 言程序设计 添加 一 门课程需要做的 工作 : Ctrl-C +Ctrl-V 当我有了 100 门课程后, 学院要求在所有 网 页上都加上学校 logo DRY: Don t Repeat Yourself! 工作量貌似有点 大
URL (Uniform Resource Locator) 统 一资源定位符 protocol : hostname[:port] path [?query] [#fragment] http:127.0.0.1:8080courseinfo.php?id=101&year=2015#score http:127.0.0.1:8080courseinfo.php?id=102&year=2014#score 访问不同的 网 页 两个视 角 给同 一个程序传递不同的数据 id=101 year=2015 id=102 year=2015 id=103 year=2015 id=101 year=2014 id=102 year=2014 info.php 2015 年算法分析与设计 2015 年 Linux 系统与应 用 2015 年 PHP 语 言程序设计 2014 年算法分析与设计 2014 年 Linux 系统与应 用
另 一发送数据给后端的 方式 : 表单 6 <form action="form.php" method="get"> 7 用户名 : <input type="text" name="user"><br> 8 密码 : <input type="password" name="password"><br> 9 邮箱 : <input type="text" name="email"><br> 10 性别 :<input type="radio" name="sex" value="1"> 男 单选框 11 <input type="radio" name="sex" value="2"> 女 <br> 12 爱好 :<input type="checkbox" name= fav[] value="1"> 排球 &n 13 <input type="checkbox" name= fav[] value="2"> 足球 &n 14 <input type="checkbox" name= fav[] value="3"> 篮球 &n 多选框 数据提交位置 name=value 15 <input type="checkbox" name= fav[] value="4"> 羽 毛球 16 <input type="checkbox" name= fav[] value="5"> 广泛 17 所在城市 : <select name="city"> 18 <option value="1"> 北京 <option> 19 <option value="2"> 天津 <option> 20 <option value="3"> 成都 <option> 21 <option value="4"> 上海 <option> 22 <option value="5"> 深圳 <option> 23 <select><br> 24 自我描述 :<br> 25 <textarea name="desp" row="5" col="20"><textarea><br> 26 <input type="submit" name="btn1" value=" 提交 "> 27 <input type="reset" name="btn2" value=" 清除 "> 28 <form> 下拉框 按钮
两种提交数据的 方式 GET POST URL 参数 HTTP 报 文 (URL 中不可 见 ) 数据量 小 (1KB) 获取信息不安全可重现 $_GET[ name ] 数据量 大 (2MB) 发送数据相对安全不可重现 $_POST[ name ] 两种数据类型 单个 name= sex text password radio textarea select 多个 name= fav[] checkbox select(multiple)
表单隐藏元素 : 不会显 示, 但同样传值, 各种奇妙应 用保存虽然需要提交, 但不需要或者没必要让 用户看到的内容 <input type="hidden" name="name" value="stef"> 文本区域 (textarea) 的换 行 \n nl2br() 页 面中的换 行 <br> urlencode() URL 编码字符串 URL 中的变量值 urldecode() http:www.ruanyifeng.comblog201002url_encoding.html http:www.ruanyifeng.comblog200710ascii_unicode_and_utf-8.html 设定初始值的 方法 标签 text password hidden radio checkbox select textarea 初始值设定 value= checked selected 中间 文字
<form action="form.php" method="get"> 用户名 : <input type="text" name="user" value="yangliang"><br> 密码 : <input type="password" name="password" value="123456"><br> 邮箱 : <input type="text" name="email" value="yangliang@vip.qq.com"><br> 性别 :<input type="radio" name="sex" value="1" checked> 男 <input type="radio" name="sex" value="2"> 女 <br> 爱好 :<input type="checkbox" name= fav[] value="1" checked> 排球 p; <input type="checkbox" name= fav[] value="2"> 足球 <input type="checkbox" name= fav[] value="3" checked> 篮球 p; <input type="checkbox" name= fav[] value="4" checked> 羽 毛球 p; <input type="checkbox" name= fav[] value="5"> 广泛 p; <br> 所在城市 : <select name="city"> <form> 自我描述 :<br> <option value="1"> 北京 <option> <option value="2" selected> 天津 <option> <option value="3"> 成都 <option> <option value="4"> 上海 <option> <option value="5"> 深圳 <option> <select><br> <textarea name="desp" row="5" col="20">this is my introduction<textarea><br> <input type="submit" name="btn1" value=" 提交 "> <input type="reset" name="btn2" value=" 清除 ">
http:127.0.0.1:8888courseform.php? user=yangliang&password=123456&email=yangliang%40vip.qq.com &sex=1&fav%5b%5d=1&fav%5b%5d=3&fav%5b%5d=4 &city=2&desp=this+is+my+introduction&btn1=%e6%8f%90%e4%ba%a4 @ -> %40 空格 -> + [ -> %5B ] -> %5D 中 文 -> UTF-8 编码 form.php 文件 1 <pre> 2 <?php 3 var_dump($_get); 4?> 5 <pre> GET 传内容相当不安全,POST 也不安全 结果 password=123456 密码如何传输 存储才最为安全? 密码如何设定才最安全? <pre> 标签 按照 HTML 代码显 示
通过表单上传 文件 4 <form action="file.php" method="post" enctype="multipartform-data"> 5 <input type="file" name="mying"><br> 6 <input type="file" name="mycv"><br> 7 <input type="submit" value="upload"> 8 <form> 1 <?php 2 var_dump($_files); 4 foreach($_files as $file_type => $file_info) { 5 if(is_uploaded_file($file_info['tmp_name'])) { 6 $file_dest = 'upload'. DIRECTORY_SEPARATOR. $file_info['name']; 7 echo $file_dest; 8 if(!move_uploaded_file($file_info['tmp_name'], $file_dest)) { 9 echo "can not move file"; 10 } 11 }else{ 12 echo "is not uploaded file"; 13 } 14 } 15?> 每步都有可能出错 目录分割符 只是存为临时 文件系统默认删除
作业 一 学习与 文件操作相关的 PHP 函数 PMWD Chapter 2 and 19