不再纠结div p span.

写html的时候, 在头脑中, 要等同于/实际上就相当于写一篇图文混排的word文档, 有主标题/子标题, 有正文段落等等.

要根据这些标签的本身的语义来使用!

div=division, 是块, 分块, 是用来表示结构布局的. table不应该作为结构布局, 而是应该用来表示表格化的数据

p是有具体语义的, 表示段落, 不一定只是用来表示文字的

h1, h2的语义就是用来表示标题的.

span是纯粹是为了应用样式而存在的, 它是行级内联元素. 当然你可以随意使用span, 但规范的,最好的方式是:

一般只把span用在h1,hx标题以及段落p中. 一般不直接放在div中!

  1. html叫标记语言,也就是说,真正显示/输出到浏览器的都是标记之外的内容/文字, 标记<...>都只是对这些

    文字的一种说明/规范/修饰/补充等等

  2. strlen和strcmp等都是二进制安全的?

    二进制安全, 是指在php函数操作二进制数据时能够保证得到预期的效果, 主要是因为zval结构体变量在保存字符串时

    既有char* 指向字符串, 又有一个int型的len成员保存了字符串的长度: strlen("abc\0d")=5; strlen('ab\0c')=5;

  3. form表单中的enctype编码空格和get编码空格的不同

    enctype是指表单在从浏览器post请求到服务器时要编码的方式, 有三种编码:

    application/x-www-form-urlencoded(这个是默认的编码): 空格编码成+号...

    multipart/form-data: 不编码

    text/plain: 空格编码成+号, 不编码特殊符号

    但是: 在get传递查询参数时的编码中,空格编码成:%20=0x20=(32)十进制

  4. 你编写的web应用程序, 除了img, 声音等资源文件, html等标记文件外, 其余的php脚本文件就是所谓的"程序文件"

  5. form表单的主要分类?

    html中的内容, 无非是两种, 一种是文字/img, 另一种就是表单.

    表单的形式无非就是三种:

  • 用input的单行输入的: text,passwd, radio,checkbox, hidden, submit,reset等等
  • 用来选择的: <select ...> (那中间自然就是要选择的选项吧: <option value="..." selected...>...</select>
  • 再就是用来收集大段文字的<textarea...>...</textarea>

    总之, 表单就是用来收集用户信息的,然后在请求telegram报文的请求数据中通过post传递到服务器上.

通过 var_dump($_REQUEST $_GET $_POST)

通过action=xx?xx=??方式传递到目标页面的变量保存在$_GET中,

同时$_REquest确实包含了$_GET和$_POST的集合.

要注意, 当POST和GET变量中有相同名称"键"的元素时, 在$_REQUEST中将只保留

$_POSt中的元素值. 但是, 在$_GET和$_POST中, 仍然各自保留着相应的元素

register_globals的含义

打开"注册全局变量: register_globals"后, 真的就是将action=index.php?para1=1&para2=2

的值传递到目标页面, 并作为可用的$变量, 如: 这里有$para1=1, $para2=2.

为什么要检查 if(isset($_POST['user'])?

因为在php.ini的配置文件中, 有这样的配置指令:

max_input_time=60 ; spending max-time to parse request data.

有最大input解析时间限制以及脚本最大执行时间post_max_size=8M等的限制,

所以, 从客户端传递过来的请求数据不一定每次都成功, 所以需要判断一下.

凡是数组, 如$_GET, $_POST 等的元素键--下标, 都应该加上"单"引号,###

否则, php将把下标当成"裸子面常量", 将会首先当作常量进行解析, 只有当常量解析失败后, 才当成

字符串来进行解析, 这样就太花时间, 绕弯子了.

跟安全等有关的验证?###

首先在客户端通过js进行验证

然后, 如果需要存入数据库的数据, 需要在服务器端进行验证, 验证的错误提示信息, 通常就发到当前页面!

html类型的写法###

PUBLIC 后面是三个双斜线 3个部分 : "-//W3C//DTD XTHML 1.0 Transitional//EN"

类型标志符的网站: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

org后面是TR和DTD中间的xhtml1.

字符集编码的写法(统一一下)###

可以是大写的, 用连字符-, 也可以是小写的: UTF-8 , utf8.

通常用小写的吧, 看mysql服务器的变量和设置中的 字符集就知道了.

apache2的alias?###

在目录/wamp/apache2/conf/alias/中, 直接删除某个alias好像会启动失败?

从1~N的数字中随机选出n个数字的算法?

算法步骤: range-> shuffle -> array_rand/array_slice

也可以直接用sql语句一次性的从mysql中取出/检索出多个随机的记录....

页面内分割区域的方式?

用空白区域;

水平线

方框

表格

mysql本身就提供了表 字段的comment属性功能,

但是, 要在browser浏览查看数据记录的时候, 才会显示.

mysql表中的auto_increment字段, 可以自动地自增1(如果你不手动地输入的话),

  • 也可以手动地输入! 而且, 输入的值可以是任意的, 不连续的.
  • 所以不一定是 连续的.

    至于字段的值, 是否可以重复(与前面的值相等), 则取决于该字段的属性, 如: 当它是primary key时,

    则不允许重复/相同, 如果不是则可以相同.

关于mysql_query的结果处理

mysql_query("$query_string")的结果:
对于select, show等语句, 成功时返回的是 resource标识符type(mysql result), 失败时返回false;
对于非select语句, 如: delete, insert, update, 成功时返回true, 失败时返回false. select的mysql_num_rows()返回结果集中的行数, delete等用mysql_affected_rows()返回被影响的行数 select的mysql_query("...")返回的是一个结果集, 是一个包含字段名和记录的二维数组样式的资源标识符...
所以, 是不能直接使用的. 要通过mysql_fetch_array等: 从结果集$resource中获取一行作为关联或数字数组... 标准的获取方法是: while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf ("ID: %s Name: %s", $row[0], $row[1]); //比 echo 'id:'.$row[0]...更好.
}
mysql_free_result($result);

blob存储的是什么?

blob大块类型, 存储的是二进制文件, 如图片/声音等

char(n), varchar(n)中的n指的是?

在声明表字段类型的时候, char(n)中的n指的是"字符"个数, 而不是存储字节!
一个中文文字和一个西文字母都只是算一个字符!
而我们说的, 字段类型的长度=存储所占的空间, 是说的多少个"字节".

默认的char和varchar所占的字节数?

char默认的是255个字节.
varchar默认的是65535个字节.

那么一个varchar类型的字段究竟可以存放多少个中文字符呢?

根据3个因素来确定:
首先,varchar不是从第一个字节/(而是从第二个字节)开始存放数据的, 而且大于255字节
时在头部还要用2个字节来表示该字段的实际长度, 所以要减3;
其次, 要看中文字符的编码;
最后, 还要遵守" 在一个记录行中, 行的最大字节总和不超过65535个字节.
所以, varchar(n)中的n最大为: (65535-1-2)/3 个utf8编码的中文字符.
所以一般"题干/答案选项" 用varchar(800)/varchar(300)完全足够了! char和varchar都不分大小写比较和转换.
char的内容如果不够长, 则在** 后面** 补空格 **
varchar不会补, 实际是多少就只分配多少存储空间.
char和varchar的存储和检索/更新/删除等原理不同. char用空间的牺牲为代价, 换来操作效率的提升.

巧记mysql字段的大小

都是根据字节长度来分配大小的.
text和int在字节分配上是不同的/相反的:
tinyint 占一个字节0~255./-128~127
smallint 占2个字节,0~ 2^16-1: 0~65535
mediumint 占3个字节: 0 ~ 2^24-1
int 占4个字节...
bigint 占8个字节, 基本上不会用到. 而text/blob的存储范围:
tinytext: 占1个字节长度, 最多为255个字符.
text: 最多占2个字节, 最多65535个字符
mediumtext: 最多3个字节...
longtext: 最多4个字节...

软件的版本号如何写?

GNU版

主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]]

Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]]

示例 : 1.2.1, 2.0, 5.0.0 build-13124

管理策略:

项目初版本时,版本号可以为 0.1 或 0.1.0,也可以为 1.0 或 1.0.0,如果你为人很低调,我想你会选择那个主版本号为 0 的方式;

当项目在进行了局部修改或 bug 修正时,主版本号和子版本号都不变,修正版本号加 1;

当项目在原有的基础上增加了部分功能时,主版本号不变,子版本号加 1,修正版本号复位为 0,因而可以被忽略掉;

当项目在进行了* 重大修改或局部修正累积较多,而导致项目** 整体发生全局变化时,主版本号加 1;

编译版本号一般是编译器在编译过程中自动生成的,我们只定义其格式,并不进行人为控制。

有的还有: 日期版本号, 希腊字母版本号

希腊字母版本号有5种: base, alpha, beta, RC, release. 表示"当前版本的软件处于哪个开发阶段".

借鉴ecshop的写法

类文件用cls_做前缀, 库公用文件, 用lib_做前缀

库函数文件, 类文件通常放在includes目录中, 通常是被其他文件所"包含的"

一般在/includes/的init.php中, 要完成所有的/绝大部分/大部分的初始化工作, 包括@ini_set("自定义的php.ini设置").

define和defined

define是定义常量.

而defined是判断某个字符串是否定义为常量?

在markdown中: 段落的反引号 === 每行的tab缩进, 都是将内容当作代码来处理(有语法highlight)

编程风格和格式约定

大中小括号跟单词紧邻, !-句尾的分号; ->成员运算符等紧邻单词

函数或结构if while等的大括号单独占一行

其他每个单词, 包括运算符如== !== . 等都隔一个空格, 函数的参数每个也要隔空格

!!! 注意行与行的内容的缩进, 在对多个变量进行赋值, 特别是类内部的变量进行赋值的时候, 注意对齐(风格需要).

简单的if---else语句通通用 ?:三元运算符来代替.

URI和URL

uri: 是统一资源标识符identifier, url是统一资源定位符locator

uri可以表示所有的资源, 包括网络和本地的资源, 本地资源可以使用相对路径, 如: ./ ../

还可以使用 #:指向当前资源内部的片段标识符(anchor标识符)

url: 则是uri的子集, 主要是用来表示/定位网络资源.

php对文件的目录函数

FILE:表示当前文件本身

basename: index.php=filename+extension

dirname: c:\wamp\www\wes, 没有最后的反斜线

pathinfo: 关于文件目录的数组.

两种注释的使用?

/* */这种注释是对下面的代码片段进行注释时使用的

// 则主要是对单个语句进行注释, 写在语句后面的.

预格式化文本标签
=preformat

使用

标签, 就不再为空格和换行而烦恼!

通常有两种情况使用
标签:

  • 要保留输出中的空格和换行...
  • 要输出计算机代码

tty

tty是teletype电传打字机, 由键盘/收发报器/印字机组成, 是传真之前的主要"收发有文字内容的电报"

的主要设备, 后来成为计算机的实时"输入/输出"设备. 后被键盘和显示器代替.

teletype使用的最广泛的是ibm公司的Bud Kettler等宽(a monospaced typeface)字体:courier:

Courier: 小写的i和大写的W宽度都是一样的. Courier代表的是一种尊严, 威望和稳重.

courier: n. 送快递的人, 信差; 导游; 情报员. he worked as a motorcyle courier.

php的单引号转义?

单引号不会替换$变量

但是, 单引号会转义, 但是:只转义两个: 反斜线, 和单引号'本身.其他都不转义!

因此: str_replace('\', '/', FILE);会替换反斜线为正斜线.

code>只是暗示是代码, 但不能保持空格和换行等等

pre>跟code都会显示等宽电传字体courier...

pre>中不能包含引起段落变化的标签如:p> div>等


NULL既是一种类型:NULL类型,

也是一个值, 是NULL类型的唯一一个值, 尽管大小写不分, 但通常作为专有名词大写之

<<<str 和str的用法

这种perl风格的字符串, <<< 和str开始标识符之间可以有空格, 也不一定跟echo在同一行,

但是: 结束标识符一定要顶行写. 否则, 不认而报错.

在php中, &&和and, ||和or两种写法都是可以的. 通常逻辑量用true/false小写的表示.

html-php深入理解的更多相关文章

  1. 理解CSS视觉格式化

    前面的话   CSS视觉格式化这个词可能比较陌生,但说起盒模型可能就恍然大悟了.实际上,盒模型只是CSS视觉格式化的一部分.视觉格式化分为块级和行内两种处理方式.理解视觉格式化,可以确定得到的效果是应 ...

  2. 彻底理解AC多模式匹配算法

    (本文尤其适合遍览网上的讲解而仍百思不得姐的同学) 一.原理 AC自动机首先将模式组记录为Trie字典树的形式,以节点表示不同状态,边上标以字母表中的字符,表示状态的转移.根节点状态记为0状态,表示起 ...

  3. 理解加密算法(三)——创建CA机构,签发证书并开始TLS通信

    接理解加密算法(一)--加密算法分类.理解加密算法(二)--TLS/SSL 1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下. ...

  4. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  5. 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念

    一.前言     DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...

  6. 学习AOP之透过Spring的Ioc理解Advisor

    花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...

  7. ThreadLocal简单理解

    在java开源项目的代码中看到一个类里ThreadLocal的属性: private static ThreadLocal<Boolean> clientMode = new Thread ...

  8. JS核心系列:理解 new 的运行机制

    和其他高级语言一样 javascript 中也有 new 运算符,我们知道 new 运算符是用来实例化一个类,从而在内存中分配一个实例对象. 但在 javascript 中,万物皆对象,为什么还要通过 ...

  9. 深入理解JS 执行细节

    javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.全局对象.执行环境.变量对象.活动对象.作用域和作用域链等 ...

  10. 浅谈我对DDD领域驱动设计的理解

    从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...

随机推荐

  1. 执行mount命令时找不到介质或者mount:no medium found的解决办法

    使用vmware时,在虚拟机设置里,设置CD/DVD为系统镜像,挂载时,有时会有找不到介质或者no medium found之类的提示. 根本原因是iso镜像并没有加载到虚拟机系统内. 解决办法: 首 ...

  2. timeSeries db之:使用Metrics监控应用程序的性能 (zz)

    在编写应用程序的时候,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析.在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如当前系统中对 ...

  3. [CareerCup] 12.4 Test a Webpage 测试一个网页

    12.4 How would you load test a webpage without using any test tools? 这道题问我们如何不用任何测试工具来加载测试一个网页.加载测试可 ...

  4. Fedora 12 环境搭建

    又来折腾发行版了. 这一回是Fedora12,搞的挺艰难的 下载了Fedora-12-i386-DVD.iso,无论使用ultraiso还是dd都无法安装. 后来下载了一个ImageWriter.ex ...

  5. 关于git托管的一些心得

    GIT托管的一些心得 熟练运用软件进行GIT托管的好处 在上一周的学习中,我提出来了一个疑惑,就是为什么一定要用软件托管而不选择web托管,在这周的学习中,我通过实践体会到了一些运用软件托管的好处: ...

  6. EF实体框架之CodeFirst四

    在EF实体框架之CodeFirst二中也提到数据库里面一般包括表.列.约束.主外键.级联操作.实体关系(E-R图).存储过程.视图.锁.事务.数据库结构更新等.前面几篇博客把表.存储过程.视图这些算是 ...

  7. Android调用系统相册和拍照的Demo

    最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有问题,没有一个完整的.确实是,我记得一个月前,我一同学也遇到了这样的问题,在低版本的系统中没问题 ...

  8. jdbc基础 (四) 批处理

    批处理,就是字面上的意思,一次性处理一批sql语句. 直接看例子吧: package com.cream.ice.jdbc; import java.sql.Connection; import ja ...

  9. redis学习笔记——(2)

    4.Redis中的string类型 String类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比如jpg图片或者序列化的对 ...

  10. yield实例

    如下 # __author__ = liukun # coding:utf-8 def it(): print ('hello') yield 1 yield 1 a= it() print(&quo ...