sql 语句 数据库 本身 有数据类型的区分,对于mysql的字符串默认的用单引号''来表示,因此,整个sql 语句就要用双引号来括。

如:

 $sql = "SELECT * FROM user_verify
WHERE username='". $_POST['user'].
"' AND passwd='".$_POST['pw']."' limit 1";

为了防止sql注入攻击,如畸形密码,foo用户名,密码 ' or '1'='1 'or ''='等等 这样就会形成sql注入攻击

或者说,在尽可能的情况下,用单引号,实在不行,就用双引号

虚拟机使用的设备都是虚拟设备,所以不存在给“设备”装驱动的问题

虚拟机的显卡是虚拟的svga 2, 其显示性能肯定是达不到物理显卡的效果的,这是正常的

最好不要因为显示原因,去修改*.vmx配置文件,例如,添加svga.enable3d="TRUE"后,虚拟机将不能启动!

mysql_real_escape_string包装器?

转义:是指把字面上的字符,如n,改变它原来的意思:如\n

转义字符:只能是小写字母,转义字符仍然只是一个字符

有三种形式: \a, \ddd(8进制),\xhh(十六进制)

escape:就是“转义”的意思[计算机]. escape string 就是转义字符(串)的意思

**使用mysql_real_escape_string将会把 用户输入的字符串内容 中的特殊字符(包括:\n,\r ,, ',",\x00,\x41之类表示的字符常量a)转义,php-mysql编程中常用的主要是4个:',", \, null=\x00 **

magic_quotes魔术引号

在php5.4.0+去除了魔术引号

get_magic_quotes_gpc() 获取/(不能在运行时用set去设置)http请求数据:GET/POST/COOKIE的魔术引号的设置情况

如果magic_quotes_gpc设为on,则返回1,设为off(关闭),则返回0

PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on, 实际上所有的 GET、POST 和 COOKIE 数据都用被 addslashes() 了。 不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。 遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

对外部输入的数据/变量进行转义

有三个都可以进行转义:addslashes, htmlspecialchars, htmlentities

在magic_quotes_gpc为off时,

  • 要写入数据库的数据,一般对' " \ 进行转义,避免sql语句出错,用addslashes
  • 对从留言板等提交的数据,在php程序内处理,不写入数据库,一般用 htmlspecialchars(用在:显示源代码使标签失效;防止sql注入攻击)
  • 对所有的html标记进行转义,用htmlentities.

文件夹命名规则: 通常用单数,对于一些常见的,如images,scripts,logs等,以及明显的多个确切事物的,用复数

魔术引号magic_quotes主要是针对写入数据库的sql语句,虽然名字是针对引号,但是也针对\n,\r,,等。

写文档/写程序 应多使用英文,除非确实不能避免。 而且写文档的人称通常不用人,多使用分词短语,动名词,不定式(短语)等。

关于风格/样式; Allow ASP-style <% %> tags.

asp_tags = Off

bypass:n. 旁路,旁道,绕城公路; vt.绕过,绕行;忽略

itook the bypass. i bypassed the manager and went straight to the owner.

语言结构

即(语言构造器),并不是函数,/加括号的并不一定是函数!

有: echo print, include require, isset() unset(), empty(). 所以这些都不能用于可变函数。

empty()太笼统了,要尽量避免,要用 == 或 != 或 === !== 尽可能准确地、细致地判断变量的类型

isset(): 变量在内存中根本就没有, 没有定义; 或者显式地设置为null。

不再纠结xhtml

xhtml1.0 is A Reformulation of HTML 4 in XML 1.0

dtd就是关于元素定义的规则文件。通过查看dtd文件,可以看到dtd对 每个html元素和元素属性的规定,那么写xhtml的时候,

就要按这个规定来写...

如:

表示style样式和script脚本中的代码将会被解析器解析parsed character data.
表示img的类型为空元素:

不再纠结:用xhtml transitional

"http://www.w3.org/1991/xhtml1"和 PUBLIC "-//W3C//DTD XHMTL 1.0 Transtional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

中的TR可以认为是: type reformulation类型重生成...

在上面的声明中,声明了文档的根元素是 html,它在公共标识符被定义为 “-//W3C//DTD XHTML 1.0 Strict//EN”(注意,中间的内容是两个斜线// 的 DTD 中进行了定义。浏览器将明白如何寻找匹配此公共标识符的 DTD。如果找不到,浏览器将使用公共标识符后面的 URL 作为寻找 DTD 的位置。

php ini_set('safe_mode',on):

安全模式的目的,是为了限制:php操作外部系统命令,如system(...),和限制一些对关键文件/目录的操作。

安全模式启用时,命令字符串会被 escapeshellcmd() 转换。因此, echo y | echo x 会变成 echo y | echo x

php是不允许用var来定义变量的,只要有$, 就表示一个变量的定义。 unexpected T_VAR ...(T_表示类型?T_OBJECT...)

虽然不能用var来定义变量,但是变量应该在使用前初始化。

使用utf-8来写页面,需要做到几个一致:

  • 为什么会产生中文乱码? 是因为中文在存储和解析时,gbk/gb2312和utf-8解析字节的个数不同。

  • 页面内要规定文件的字符集 header(".... ;charset=utf-8");<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 这个是告诉浏览器显示这个页面应该使用的字符集

  • 页面文件本身要保存为utf-8:DW中,在“修改”-> “页面属性”中查看修改或CTRl+J,然后保存/另存为

  • unicode(utf-8):utf-8是unicode的一种形式,两者不是一样的:utf-8是变长的,英文是1个字节,汉字是3个字节。bom是unicode的签名...

  • (注意服务引擎的干扰)apache服务器引擎的charset也要设为utf-8,或者不设,这样apache就只输出text/html,而不会设定字符集,而浏览器根据header或meta的说明来选择字符集

  • 但是,外部来的数据,如浏览器用户输入,或system("执行客户端系统命令"),添加到html/php页面的内容的编码,将取决于客户端操作系统自身的字符集,如xp的默认字符集是gb2312,win7的默认字符集是,这样在浏览器中即使用utf-8也会是乱码。

  • 破除误解:utf-8并不”兼容”gb2312! 用utf-8编码来显示gb2312编码的中文内容时,仍然会是乱码!

print out errors(as a part of output),会“搞糟”浏览器输出。you are strongly encouraged to turn this feature off.

生产性website建议用logs日志代替display_errors=on

iconv和mb_convert_encoding

a). 两个都是字符集编码转换,都要对应的dll实体文件和php扩展配置;extension=php_iconv.dll php_mbstring.dll

b). 从转换效率来看,iconv比mb_convert_encoding更快一些,为什么,因为后者会自动检测侦查字符串的编码。

c). 从兼容性来说,iconv没有后者好,iconv要把字符串先转换编码后,再icon_substr截取中文字符,而mb_substr直接截取安全

d). iconv有一个bug,就是中文"一"从utf8转换成gb2312会失败,所以这时可以用mb来转换,后者没有这个bug

e). iconv可以添加后缀//translit,//ignore,这会处理不能被转换的字符,否则,默认的是如果不能转换当前字符,则其后面所有的内容都会被截断。

e). 从函数来说,iconv(string in_charset, string *out_charset*, string *$str*), 三个参数都是必须的,而 mb_convert_encoding(string *$str*, string *out_charset* [, string *in_charset*]) .两者的参数顺序刚好相反,为什么呢?因为mb...的参数in_charset可以缺省,而缺省只能放在最后

f). 所以, (两者都开启的情况下),一般情况下用iconv, 当"转换出错,或者不知道原字符编码”时,用mb_convert_encoding

webexam项目杂记的更多相关文章

  1. webexam项目杂记2

    strstr,stristr是返回匹配到的字符串,常规的字符串操作尽量避免使用正则, strstr是返回从匹配字符(串)开始(包括该匹配字符串)到结束的(或开头的)字符串 而如果仅仅只是判断是否包含匹 ...

  2. vue项目杂记

    vue项目杂记 文件目录结构 src main.js app.vue package.json webpack_config_dev.js 需要安装的包 1. vue cnpm i vue --sav ...

  3. [ vue ] xxxProject项目杂记

    2020.4.9 加入eCharts 2020.4.8 完成article的显示,其间碰到全局路由守卫写的有错误,导致跳转报错.已修复. 加入keep-alive功能,缓存视图数据 疑问:如果在全局组 ...

  4. Web 项目杂记(一)

    1.Tomcat 多实例部署 在Tomcat下多实例部署后,发现如下问题,采用etc/init.d/tomcat start方式无法启动,而需要采用startup.sh.查找原因发现,是因为多实例部署 ...

  5. 项目杂记(MONTHS_BETWEEN,Having ,Spool)

    1,oracle中计算年龄: select FLOOR(MONTHS_BETWEEN(SYSDATE, to_date('20130728', 'yyyymmdd')) / 12), trunc(mo ...

  6. pytorch从入门到放弃(目录)

    目录 前置基础 Pytorch从入门到放弃 推荐阅读 前置基础 Python从入门到放弃(目录) 人工智能(目录) Pytorch从入门到放弃 01_pytorch和tensorflow的区别 02_ ...

  7. 数据结构与算法-江西师范大学865(针对考研or面试)

    可以加我微信chenyoudea免费要江西师范大学865资料全套pdf 目录 第一篇 数据结构与算法(针对考研or面试) 第二篇 真题演练 第三篇 复试 第四篇 推荐阅读 第一篇 数据结构与算法(针对 ...

  8. MySQL数据库从入门到放弃(目录)

    目录 MySQL数据库从入门到放弃 推荐阅读 MySQL数据库从入门到放弃 193 数据库基础 194 初识MySQL 195 Windows安装MySQL 196 Linux安装MySQL 197 ...

  9. 从Python到水一篇AI论文(核心 or Sci三区+)

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

随机推荐

  1. [matlab]改变矩阵的大小并保存到txt文件

    要完成的任务是,加载一个保存在txt文件中的矩阵, 并把它扩大10倍,并且要再次保存回去 %加载txt文件 >load('Matrix.txt'); %扩大10倍 repmat(Matrix,r ...

  2. RocEDU.阅读.写作《图解TCP/IP》

    2015年11月21日 一.对本书的认识 信息通信社会这个词俨然是现代社会的一个名词.人们可以使用各种信息终端随时随地的进行交流,而这种环境正是以来网络才得以实现,使用最为广泛的协议就是TCP/IP协 ...

  3. 『转载』C# winform 中dataGridView的重绘(进度条,虚线,单元格合并等)

    原文转载自:http://hi.baidu.com/suming/item/81e45b1ab9b4585f2a3e2243 最近比较浅的研究了一下dataGridView的重绘,发现里面还是有很多东 ...

  4. flatbuffers 使用问题记录

    1. 命名空间的问题 ----------------------------- namespace 1.0.3 版本包含文件类型前面不需要加命名空间,但是1.1.0 中包含需要在类型前加命名空间 i ...

  5. mac使用笔记

    1.QQ多开 MAC中登录QQ后按CMD+N组合按键即可新打开一个QQ登录窗口 2.关闭左右摇晃鼠标放大 系统偏好设置>辅助功能>显示器,去掉“摇动鼠标以定位”前面的勾即可 3.使用ctr ...

  6. json和cookie兼容以前的

    'json': function(data) { try { if (typeof data === "string") { if (typeof JSON != 'undefin ...

  7. C#线程模型脉络

    今天在看同事新买到的<C#本质论 Edition 4>的时候,对比下以前Edtion3的新特性时针对Async/Await关键字时发现对一些线程方面的定义还理解的不是很透彻,脉络还不是很清 ...

  8. Bootstrap3.0学习第二十一轮(JavaScript插件——工具提示)

    详情请查看http://aehyok.com/Blog/Detail/27.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...

  9. jQuery理解之(二)功能函数

    在javascript编程中,开发者通常需要编写很多小程序来实现一些特定的功能.例如浏览器检测,字符串处理.数组的编辑等.jQuery对这些常用的程序进行了总结,提供了很多实用的函数. 1.检测浏览器 ...

  10. 网站开发技巧, 使用byte[]持久化用户个性设置

    场景, 网站用户的个性化配置较多, 而且容易发生增加和改变, 如何在数据库保存是个问题. 为了避免数据库表字段经常变更, 我们设计在表增加一个varbinary(max)字段存储个性化配置. 个性化的 ...