今天开始学习WEB应用方面的知识,挺兴奋的,学了那么久的东西终于能实际拿出来用了,主要有益的方面就是能了解到WEB的一些功能的实现目标和方式,虽然自认为逻辑思维好,但是细节方面还是比不上经验老到的人。
首先是WEB的整体运行结构,先是用户请求PHP文件,PHP文件通过一定的规则从SQL中调用出数据并通过HTML展示。总的老说,HTML用于显示内容,PHP用于运算(动态网页的根本),SQL用于存储需要的数据。
===============================================================================
对HTML表单的复习
对于HTML的表单标签from(表单),通过自带的属性action=”PHP文件”来将整个表单的数据提交给指定的PHP文件处理,而属性method=’post’指定了数据的提交方式(一般用post,至少表单是如此)。而在PHP中通过常量$_POST来接受HTML提交的数据。
对于表单内的元素,通过给其指定name=’名(根据数据意义命名)’来指定需要提交数据的部分,而Value指定提交数据的默认值(这样理解更好记忆),value几乎只用于单选radio和多选checkbox。举例说明如下:
<input type=”radio” name=”gender” value=”male”>男
<input type=”radio” name=”gender” value=”female”>女
<input type=”radio” name=”gender” value=”secret”>保密
单选radio使用方法如上,因为radio没有确定的输出值,所以每个选项都需要定义自己的value值,如上:男=male;女=female;保密=secret。而每个选项提交的值也就是value所定义的值
还需要把各个选项的name值都设置为同一个来标识这几个radio属于一块,HTML会把name值相同的radio认为是一个选项列。
在接收radio传递的值时要在SQL的字段属性中设置 enum(‘male’,’female’,’secret’) 来限制写入的数据,虽然实际意义不大,但是能作为一个很好的标识。
Form中的多项选项同样需要定义同一个name值来标识多个多选选项为同一列,但是多选需要传递多个值,所以把name作为多选下标只能传递一个值。因此,多选选项的值传递的实现方法为把多选的值存入关联数组之后再通过name下标把数组传递出去:
<input type=”checkbox” name=”hobby[]” value=””>
也就是在定义name值时,使用数组来进行定义。
(存储时把数组转化为字符串存入SQL中[SQL不能存储数组])
Implode(‘,’$数组变量)用于把数组的元素拼接为字符串
===========================================================================
关于PHP接受数据
对于表单form来说,通过$_POST接受到的数据是一个数组,而元素的下标为各项定义的name值,元素的值为各项输入或者计算的值,像radio这种没有值的将会用value定义的值来使用。
(一般定义一个变量来独个存储$_POST中的元素值,e.g.:$user_gender=$_POST[gender]).
关于表单数据处理:
Empty()用于清除用户键入的空格。
Md5()用于对密码的加密,一般对密码加密后存储在数据库中,md5加密是一个不可逆的操作,但是同一串字符的md5码固定,所以当用户登陆需要进行密码比对时,将会把用户键入的密码经过md5加密操作后与数据库中的md5码比对,以此来达到技能验证密码,又保护了用户的数据安全。
===============================================================================
关于页面的问题
WEB的整个搭建一般遵从展示与运算分开的结构,也就是说HTML用于展示,而HTML里的动态展示方面由PHP实现,而PHP专门用于数据的处理。
也就是说,HTML的展示要建立在PHP之后,所以HTML不应该能被用户直接访问到,而应该是PHP请求才能访问。
通过APACHE的分布式配置文件(httpd-vhosts.conf)来实现:
<virtualhost *:80>
<Directory>
Allowoverride all
</Directory>
</ virtualhost >
文件.htaccess:
Deny from All
设置完毕后那么对应虚拟站的HTML就能实现拒绝访问的功能了。
===============================================================================
WEB应用
初始化文件
保存了最常用的基本代码,基本每个脚本都要用到。
Header(“content-type:text/html;charset=utf-8”);
Define(“DIR_ROOT”,str_replace(‘\\’,’/’,_DIR_).’/’);
Define(“DIR_CONFIG”,DIR_ROOT.’CONFIG/’);
Define(“DIR_CON”,DIR_ROOT.’controller/’);
Define(“DIR_CORE”,DIR_ROOT.’core/’);
Define(“DIR_MODEL”,DIR_ROOT.’model/’);
Define(“DIR_VIEW”,DIR_ROOT.’view/’);
Define(“DIR_PUBLIC”,’/public’); //此处的/表示根目录
把需要重复多次使用的路径定义为常量方便使用。
===============================================================================
连接数据库
$link = mysql_connect(“localhost:3306”,’root’,’zhouyang’)
Mysql_query(‘set names utf8’);
Mysql_query(‘use 库名’);
===============================================================================
PHP使用函数
Trim()——去空格。
Empty()——判断是否为空,空则返回true、否则返回fales。
Header(“refresh:等待秒数;url=跳转到的文件”)——设置网页跳转。
Strlen()——返回字符串长度。
Mysql_query()——在SQL中运行指定命令。
目前项目还处于复习和重复设置阶段,期待项目之后的内容.