php网站开发总结_第1页
php网站开发总结_第2页
php网站开发总结_第3页
php网站开发总结_第4页
php网站开发总结_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 / 40 php 网站开发总结 河北科技师范学院 欧美学院 PHP网站开发 个人课程总结 指导教师 张文元 所在院 信息技术系 班 级 计本 1005 学生姓名 郭乾成 学 号 9210100707 一、 时间和地点 2 / 40 日期: 时间:每周四下午 地点:欧美学院 E707(授课 )、 F312(上机 ) 二、 课程内容 这学期,我们开设了 PHP 网站开发这门课程,由张文元老师主讲。老师在两个月里共讲述了五章,让我们对 PHP 这门语言有了一个大概的了解。这五章分别为: 第一章: PHP概述 第二章:预备知识: HTML与 JavaScript 第三章: PHP语言基础 第四章: PHP语言结构 第五章: PHP中的数组与数据结构 3 / 40 下面说说在这几章里,张老师在每一章都讲了些什么以及我领悟到了什么。 1.第一章 PHP的概念 PHP 是 PHP: Hypertext Preprocessor 的字母缩写,是一种跨平台的开放源代码的服务器端嵌入式脚本语言。与 HTML不同的是, PHP 代码是运行在服务端的,然后把结果返还到客户端来。使用 PHP 的一大好处是它对于初学者来说极其简单,可以很快的入门,只需几个小时就可以自己写一些简单的脚本,同时也给专业的程序员提供了各种高级的特性。 PHP与其它语 言的比较 PHP的特点 PHP 自产生以来一直都在发展中应用、在应用中发展,这是因为 PHP 不仅有着其它同类脚本所共有的功能,更有它自身的特色。 4 / 40 例如:完全免费,代码完全开放,语法结构简单,功能强大,强大的数据库支持,代码执行效率高,学习过程短,面向对象编程,可伸缩性等 。 我们所使用的运行环境是 Appserv,编辑工具是 Notepad+。 2.第二章 HTML的概念 HTML 即超文本标识语言,是 WWW 的描述语言。 HTML 只是一个纯文本文件。创建一个 HTML 文档,只需要两个工具,一个是 HTML编辑器,一个 WEB浏览器。 HTML 编辑器是用于生成和保存 HTML 文档的应用程序,如记事本、写字板。 WEB 浏览器是用来打开 WEB 网页文件,提供给我们查看 WEB资源的客户端程序,如 Internet Explorer,Netscape等。 HTML的标签及属性 5 / 40 一个 HTML 文档是由一系列的元素和标签组成。元素名不区分大小写, HTML用标签来规定元素的属性和它在文件中的位置。 “” 括起来的句子, 我们称它为标签,是用来分割和标签文本的元素,以形成文本的布局、文字的格式及五彩缤纷的画面。标签通过指定某块信息为段落或标题等来标识文档某个部件,属性是标志里的参数的选项。 HTML的特殊符号表示方法 JavaScript简介 JavaScript是一种轻型的、解释性的程序设计语言,而且具有面向对象的能力。该语言的通用核心已经潜入了Netscape、 Internet Explorer 和其他的 Web 浏览器中,它能使 Web 程序设计增色不少。 JavaScript 的客户端版本把可执行的内容添加到了网页中,这样一来,网页就不是静态的HTML了,而是包含与用户进行交互的程序、控制浏览器的程序以及动态的创建 HTML内容的程序。 对 JavaScript 的误解 6 / 40 JavaScript 是 Java 的一部分。 JavaScript 最常见的误解是认为它是 Sun Microsystems 公司的程序设计语言 Java的简化版本,但是除了语句上有一些相似之处以及都能提供网页中的可执行内容之外, JavaScript 和 Java是完全不相干的。相似的名称不过是一种行销策略罢了。 JavaScript只有客户端。这种说法是不全面的。 JavaScript 分为三类:核心版、客户端 JavaScript 和服务器端 JavaScript,例如客户端是嵌入网页的,服务器端是嵌入Netscape网络服务器中的,当然,我们这本书只介绍客户端JavaScript,有兴趣的同学可以参考专门的 JavaScript 书籍。 3.第三章 PHP动态网页概述 PHP动态网页就是混合使用 PHP和 HTML编写的 Web 页面。当访问者通过客户端浏览器必出 PHP 页请求时时,服务端会首先对页面中的 PHP 代码进行处理,然后把处理后的结果连同HTML内容一起传送到客户端浏览器。 7 / 40 PHP 动态网页的访问方式 PHP动态网页过输入 “http:/” 开头的虚拟路径来访问。通过虚拟路径访问 PHP 动态网页时,首先通过 Apache 服务器将 PHP代码转发给 PHP语言引擎进行处理,然后将执行结果连同 HTML代码一起发送到客户端浏览器。 PHP定界符 以 ” 结束,中间为 PHP 代码。 以开头,以结束,中间为 PHP 操作代码。 以 ” 结束,中间为 PHP 操作代码。变量嵌入使用格式。 以 “” 结束,中间是 PHP 操作代码。变量嵌入使用。 编写 PHP 注释 C+风格的单行注释 “/” , UNIX Shell 风格的单行注释“#” , C风格的多行注释 “/*?*/” 。 8 / 40 程序的注释主要分 3 类,即单行注释、多行注释和程序间注释。 “/” 标记仅仅注释到行末; “/* */” 标记则注释整个代码块 ;不能嵌套使用 “/* */” 标记; “#” 标记则能注释单行或者程序间的某一段代码。 PHP语言支持的 8 种原始数据类型 4 种 标量类型 布尔型、整型数、浮点数、字符串 两种复合类型 数组、 对象 两种特殊类型 资源、空值 定义变量 9 / 40 在 PHP语言中 规定,变量用一个美元符号后面跟变量名来表示,而且变量名是区分大小写的。变量名与其他标识符一样都遵循相同的命名规则:一个有效的变量名由字母或下划线开头,后面可以跟上任意数量的字母、数字或下划线。命名变量通常与对变量赋值一起进行。 PHP变量的命名规则: 变量名长度为 PHP操作符 1)赋值操作符: = 2)算术操作符: +, -, *, /, % 3)连接操作符: . ,无论操作数是什么,都当成 String,结果返回 String 4)合计赋值操作符 (Combined Assignment Operators): +=,*=, /=, -=, %=, .= 5)自动增减 操作符 (Automatically Incrementing and Decrementing): 10 / 40 $variable+=1 ?$variable+; $variable-=1 ?$variable-,跟 c 语言一样,先做其他操作,后 +或 - +$variable, -$variable,先 +或 -,再做其他操作 6)比较操作符: = =,! =, = = =, =, , 7)逻辑操作符: | or, & and,xor(当左右两边有且只有一个是 true,返回 true), ! PHP的表达式 表达式,就是由操作数、操作符以及括号等所组成的合法序列。简单地说, PHP 中的常量或变量通过运算符连接后就形成了表达式,例如 “$a=1” 为一个表达 式。表达式也有值,如上面的这个表达式的值就是 1。 根据表达式中运算符类型的不同我们又可以把表达式分成:算术表达式、字符串连接表达式、赋值表达式、位运算表达式、逻辑表达式、比较表达式、其他表达式等。 最常见的表达式是比较表达式和逻辑表达式,这种表达式的11 / 40 值只能是真或假,在下面一节的流程控 制中,会大量使用这两种表达式。 php网站设计与部署问题总结 作者:网站建设 发布时间: 2016-12-18 本文是本来在部署一套服装类网站时遇到的 问题,这些问题涉及到了 php程序设计问题和 php各个版本之间的差别引起的问题。特此做了个总结,希望能够对比人有所帮助,避免不必要的为问题。 1.矩阵网络遇到的第一个问题是 session问题。一不细心真会让人掉入陷阱里,摸索个老半天。 矩阵网络写了个 my_session_start($lifetime),除了启动一个会话外,它还完成了两个功能,一个是设定生存时间,也就是函数引入的 lifetime 变量 ;另一个是设定一个会话id,我们知道 session_start()已经可以自动恢复旧的会话 id了,但如果一个一个用户的 cookie 删除了,会话就无法恢复了,本文12 / 40 里是通过会员数据库里保存的 session_id 重新恢复到当前会话里。 问题就出在了保存 my_session_start($lifetime)这个公共函数的文件里。本人的服务器上是没有 php编辑器的,由于测试过程中要修改一个参数,直接使用了记事本修改这个文件。修改完之后原先没有什么问题的程序,突然一直报错了,数值改回去仍然报错,图片如下 (另外再模拟的一个文件 ): 而且通过输出 session_id(),会发现 session_id 不断的更改。 cookie的值一都为空。 PHPSESSID 值无法送到客户端。我们知道 session_start();这个函数在启动一个会话前会操作 cookie 的读取或写入,当发现 cookie 里保存有PHPSESSID(本人的 session_name,视个人配置有所不同 ),就读取并恢复,如果没有,就新建一个会话 id 然后传送到cookie 保 存 。 图 片 的 错 误 信 息 很 明 确 , 就 是 说session_start()执行前,已经有输出内容了,导致无法输出 phpsessid 到 cookie 里。但我仔细查 看了 my_session_start($lifetime)函数所在文件,无任何空行,无任何输出,到底是怎么回事呢。网络上找了老半天,试了很多方法都不行,最找到原因了。原来是编码搞的鬼。 utf-813 / 40 编码格式有分 无 BOM 和 带 BOM 信息的,而 PHP 是不识别BOM头得, utf-8的 bom信息是为了兼容 utf-16等之后的版本的,微软自带的记事本是支持 bom头得,当我用记事本修改该 php 文件的时候, php 文件自动就添加了 bom 头信息,这个头信息是隐藏的,所以程序才一直提示会话启动时无法发送 cookie到客户端。使用 uedit将该文件转换为 utf-8(无BOM)格式后问题解决。一切都是 BOM头惹的祸啊。 2.跟 php 版本相关的问题 本人的服务器 php 版本是版本,本人实际写程序的时候使用的是版本,归根结底太追时髦了,有不认真研究 php 各个版本之间的差别。 首先是 _DIR_常量,本人碰到的错误如下图所示, 本人的程序很多地方都有所使用这个常量,以绝对路径引用一个文件,有时候只有这样才能满足要求,本人习惯于使用这个常量,偏偏这次碰见一个的服务器,经查 _DIR_魔术常量是版本才引入的,其实还有其他很多方法可以取代它,如 14 / 40 dirname()/$_SERVERDOCUMENT_ROOT等等,没则只能是一个个的重改喽。 其次, session_status(),才引入的, 1 代表 session_write_close()调 用过,代表关闭 session 写入,这在带框架的页面有时可以提高加载速度。 总结这次问题, php 版本上不可太追时髦,尽量使用主流的版本和功能。很多时候,服务器不是我们能控制的 ;另外不要随便使用记事本来修改 php程序。 文章转自: /?ArtID=2267 PHP网站开发必用知识点总结,函数一览,开发必背 魔术方法 _construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。 _destruct() 当删除一个对象或对象操作终止的时候,调用该方法。 15 / 40 _get() 当试图读取一个并不存在的属性的时候被调用。 _set() 当试图向一个并不存在的属性写入值的时候被调用。 _call() 当试图调用一个对象并不存在的方法时,调用该方法。 _toString() 当打印一个对象的时候被调用 _clone() 当对象被克隆时,被调用 _isset() _unset() _autoload($classname) _sleep() _wakeup() 16 / 40 系统常量 _FILE_ 当前文件名 _LINE_ 当前行数 _FUNCTION_ 当前函数名 _CLASS_ 当前类名 _METHOD_ 当前对象的方法名 PHP_OS 当前系统 PHP_VERSION php 版本 DIRECTORY_SEPARATOR 根据系统决定目录的分隔符 / PATH_SEPARATOR 根据系统决定环境变量的目录列表分隔符 ; : E_ERROR 1 17 / 40 E_WARNING 2 E_PARSE 4 E_NOTICE 8 M_PI $_SERVER $_ENV 执行环境提交至脚本的变量 $_GET $_POST $_REQUEST $_FILES $_COOKIE 18 / 40 $_SESSION $_GLOBALS 输出 echo /Output one or more strings print /Output a string print_r() /打印关于变量的易于理解的信息。 var_dump() /打印变量的相关信息 var_export() /输出或返回一个变量的字符串表示 printf(%.1f,$num) /Output a formatted string sprintf() /Return a formatted string 编码转换 19 / 40 string mb_convert_encoding ( string $str , string $to_encoding , mixed $from_encoding ) iconv(); 时间 date_default_timezone_set(PRC); date(Y-m-d H:i:s); time(); date(Y-m-d H:i:s,time()+3600) ini_set(, PRC); msec sec microtime() 以秒返回时间戳 explode( , microtime() 错误处理 1/0 20 / 40 error_reporting(E_ALL) 显示所有错误 error_reporting(0) trigger_error(Cannot divide by zero, E_USER_ERROR); try throw new Exception(执行失败 ); catch (Exception $ex) echo $ex; 21 / 40 字符串处理 string trim(eee ) trim (ffffe,e) /ltrim rtrim array explode(., ) 按指定字符切割 string implode(., $array) 别名: join 把数组值数据按指定字符连接起来 array str_split(eeeeeeee,4) 按长度切割字符串 array split(-,fff-ff-f) 按指定字符切割 int strlen(ffffffff) 取字符长度 string substr ( string $string , int $start , int $length ) substr($a,-2, 2) 截取字符 int substr_count($text, is) 字符串出现的次数 22 / 40 string strstr($text, h) 第一次出现 h后的字符串 /别名: strchr int strpos($text, h) 第一次出现 h的位置 strrpos();最后一次出现 h的位置 str_replace(a, ttt, $t) 把 $t里的 a替换为 ttt strtr($t,is,ppp) 把 $t中 is替换成 ppp strtr(hi all, I said hello, array(hello = hi) 把 hello转换成 hi string md5_file(,false) 文件数据 md5 加密 int strcmp(string str1, string str2) 字符串比较 int strcasecmp(string str1, string str2) 忽略大小写 string str_pad($i, 10, -=, STR_PAD_LEFT) 在原字符23 / 40 左边补 -=,直到新字符串长度为 10 STR_PAD_RIGHT STR_PAD_BOTH string str_repeat(1, 5) 重复 5 个 1 vopertext language,programming); 按指定的字符切割 array pathinfo(string path , int options) 返回文件路径的信息 string basename ( string path , string suffix ) 返回路径中的文件名部分 string dirname ( string path ) $_SERVERPHP_SELF 返回路径中的目录部分 string nl2br(foo isntn bar) foo isnt bar 把换行转成 string chr ( int ascii ) * 24 / 40 mixed str_word_count ( string string , int format , string charlist ) string str_shuffle (abc) 打乱字符串顺序 string strrev($str) * 翻转一个字符串 string strtolower($str) * 将字符串 $str 的字符全部转换为小写的 string strtoupper($str) * 将字符串 $str 的字符全部转换为大写的 string ucfirst ($str) * 将字符串 $str 的第一个单词的首字母变为大写。 string ucwords($str) * 将字符串 $str 的每个单词的首字母变为大写。 string addslashes(Im) Im 使用反斜线引用字符串 这些字符是单引号、双引号、反斜线与 NUL string stripcslashes(Im) Im 将用 addslashes()函25 / 40 数处理后的字符串返回原样 strip_tags(tt , ) 去除 html、 xml、 php标记,第二个参数用来保留标记 string urlencode(string str) string urldecode(string str) string htmlspecialchars(Test, ENT_QUOTES) 转换特殊字符为 HTML 字符编码 Test ENT_COMPAT 对双引号进行编码,不对单引号进行编码 ENT_QUOTES 对单引号和双引号进行编码 ENT_NOQUOTES 不对单引号或双引号进行编码 string htmlentities(ff , ENT_QUOTES) 转换特殊字符为 HTML字符编码,中文会转成乱码 26 / 40 数组处理 int count( mixed var , int mode ) 别名: sizeof() 取数组长度 string implode(., $array) 别名: join 把数组值数据按指定字符连接起来 array explode(., ) 按指定字符切割 array range(0, 6, 2) 返回数组 array(0,2,4,6) 第一个参数为起使数,第二个参数为结束数,第三个参数为数据增加步长 int array_push($a, 3, 1) 把 3、 1压入 $a,将一个或多个单元压入数组 的末尾 ,第二个参数开始就是压入的数据 void unset ( mixed var , mixed var , . ) array array_pad ($a, 5, s)用 s将数组填补到指定长度 27 / 40 bool shuffle ( array $array ) 将数组打乱 mixed array_rand ( array input , int num_req )从数组中随机取出一个或多个单元的索引或键名 array array_count_values ( array input )统计数组中所有的值出现的次数 array array_combine ( array keys, array values ) 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 bool array_key_exists ( mixed key, array search )检查给定的键名或索引是否存在于数组中 mixed array_search ( mixed needle, array haystack , bool strict )在数组中搜索给定的值,如果成功则返回相应的键名 bool is_array ( mixed var ) bool in_array ( mixed needle, array haystack , bool 28 / 40 strict )检查数组中是否存在某个值 number array_sum ( array array )计算数组中所有值的和 array array_unique ( array array )移除数组中重复的值 mixed reset ( array &array )将数组的内部指针指向第一个单元 mixed current ( array &array ) mixed next ( array &array ) mixed prev ( array &array ) mixed end ( array &array ) mixed key ( array &array ) array array_keys ( array input , mixed search_value , bool strict ) 返回数组中所有的键名 array array_values ( array input ) 返回数组中所有的29 / 40 值 bool print_r ( mixed expression , bool return ) void var_dump ( mixed expression , mixed expression , . ) int array_unshift ( array &array, mixed var , mixed . )在数组开头插入一个或多个单元 mixed array_shift ( array &array )将数组开头的单元移出数组 mixed array_pop ( array &array )将数组最后一个单元弹出 array array_splice ( array $input, int offset , int length , array replacement ) 把数组中的一部分去掉并用其它值取代 array array_merge ( array array1 , array array2 , array . )合并一个或多个数组 array array_flip ( array trans )交换数组中的键和值 30 / 40 int extract( array var_array , int extract_type , string prefix ) 从数组中 将变量导入到当 前的符号表 array compact ( mixed varname , mixed . ) 建立一个数组,包括变量名和它们的值 bool sort ( array &array , int sort_flags )从最低到最高重新安排 bool natsort($a) 用 “ 自然排序 ” 算法对数组排序 bool rsort ( array &array , int sort_flags )对数组进行逆向排序 bool asort ( array &array , int sort_flags )对数组进行排序并保持索引关系 bool arsort ( array &array , int sort_flags ) 对数组进行逆向排序并保持索引关系 bool ksort ( array &array , int sort_flags )对数组按照键名排序 bool krsort ( array &array , int sort_flags )对数组按照键名逆向排序 31 / 40 array array_filter ( array input , callback callback ) 用回调函数过滤数组中的单元 bool array_walk ( array &array, callback funcname , mixed userdata ) 对数组中的每个成员应用用户函数 array array_map ( callback callback, array arr1 , array . )将回调函数作用到给定数组的单元上 array array_fill ( int start_index, int num, mixed value ) 用给定的值填充数组 array_fill(5, 3, a)array(5=a,6=a,7=a) array array_chunk ( array input, int size , bool preserve_keys )将一个数组分割成多个 其他 isset() 变量是否存在 boolean empty() 检查变量是否存在,并判断值是否为非空32 / 40 或非 0 void unset() 销毁变量 header(Content-Type: text/html; charset=utf-8); method_exists($obj, $method) 判断对象的方法是否可用 file_exists($file) 判断文件是否存在 function_exists(); class_exists($class_name); gettype();获取数据类型 set_magic_quotes_runtime() 0 for off, 1 for on 当遇到反斜杆、单引号,将会自动加上一个反斜杆,保护系统和数据库的安全 ini_set(); 33 / 40 安全 function strReplace($str) $strResult = $str; if(!get_magic_quotes_gpc()/判断设置是否开启 $strResult = addslashes($strResult);/转换 sql 语句特殊字符 return $strResult; PHP技巧教程 :PHP 网站开发常用 8 个小技巧 34 / 40 本文总结了 PHP日常开发中常用的 8 个小技巧。 PHP批最取得 checkbox的值 1、命名 2、使用 当计划 当作 sql指令的一部分时:如果参与控制的字段是数值型的,则 if(! empty(_POSTcheckbox) expr = join(, _POSTcheckbox); sql = select * from tbl_name where field in (expr); 如果参与控制的字段是数值型的,则 35 / 40 if(! empty(_POSTcheckbox) expr = .join(, _POSTcheckbox).; sql = select * from tbl_name where field in (expr); PHP判断 Form 表单是否提交 action=HTTP_POST_VARSButton1; if(action=提交 ) /执行表单操作 else 36 / 40 /读取默认值 PHP 获取字符串

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论