webexam项目杂记
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项目杂记的更多相关文章
- webexam项目杂记2
strstr,stristr是返回匹配到的字符串,常规的字符串操作尽量避免使用正则, strstr是返回从匹配字符(串)开始(包括该匹配字符串)到结束的(或开头的)字符串 而如果仅仅只是判断是否包含匹 ...
- vue项目杂记
vue项目杂记 文件目录结构 src main.js app.vue package.json webpack_config_dev.js 需要安装的包 1. vue cnpm i vue --sav ...
- [ vue ] xxxProject项目杂记
2020.4.9 加入eCharts 2020.4.8 完成article的显示,其间碰到全局路由守卫写的有错误,导致跳转报错.已修复. 加入keep-alive功能,缓存视图数据 疑问:如果在全局组 ...
- Web 项目杂记(一)
1.Tomcat 多实例部署 在Tomcat下多实例部署后,发现如下问题,采用etc/init.d/tomcat start方式无法启动,而需要采用startup.sh.查找原因发现,是因为多实例部署 ...
- 项目杂记(MONTHS_BETWEEN,Having ,Spool)
1,oracle中计算年龄: select FLOOR(MONTHS_BETWEEN(SYSDATE, to_date('20130728', 'yyyymmdd')) / 12), trunc(mo ...
- pytorch从入门到放弃(目录)
目录 前置基础 Pytorch从入门到放弃 推荐阅读 前置基础 Python从入门到放弃(目录) 人工智能(目录) Pytorch从入门到放弃 01_pytorch和tensorflow的区别 02_ ...
- 数据结构与算法-江西师范大学865(针对考研or面试)
可以加我微信chenyoudea免费要江西师范大学865资料全套pdf 目录 第一篇 数据结构与算法(针对考研or面试) 第二篇 真题演练 第三篇 复试 第四篇 推荐阅读 第一篇 数据结构与算法(针对 ...
- MySQL数据库从入门到放弃(目录)
目录 MySQL数据库从入门到放弃 推荐阅读 MySQL数据库从入门到放弃 193 数据库基础 194 初识MySQL 195 Windows安装MySQL 196 Linux安装MySQL 197 ...
- 从Python到水一篇AI论文(核心 or Sci三区+)
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
随机推荐
- Gradle tip #1: tasks
With this post I would like to start series of Gradle-related topics I wish I knew when I first star ...
- SQL 语句大全
转载:http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html 经典SQL语句大全 一.基础 1.说明:创建数据库 CREATE ...
- 从实用主义深入理解c++虚函数
记得几个月前看过C++虚函数的问题,当时其实就看懂了,最近笔试中遇到了虚函数竟然不太确定,所以还是理解的不深刻,所以想通过这篇文章来巩固下. 装逼一刻: 最近,本人思想发生了巨大的转变,在大学的时候由 ...
- Mediator Pattern --中介者模式原理及实现(C++)
主要参考<大话设计模式>和<设计模式:可复用面向对象软件的基础>两本书.本文介绍中介者模式的实现. 中介者模式:What it is:Define an object that ...
- Android图像格式类及图像转换方法
Android图像格式类及图像转换方法介绍 一款软件的开发和图像密切相关,特别是移动应用程序,在视觉效果等方面是至关重要的,因为这直接关系到用户的体验效果.在Android程序开发的过程中,了解存在哪 ...
- node设置cookie
// 获得客户端的Cookie var Cookies = {}; req.headers.cookie && req.headers.cookie.split(';' ...
- css3中transform的用法
transform:rotate旋转deg #box1{ -moz-transform:rotate(10deg); -webkit-transform:rotate(10deg); }transfo ...
- [参考]Oracle 11g的安装
1.Linux中安装Oracle 11g http://www.cnblogs.com/gaojun/archive/2012/11/22/2783257.html 2.Windows中安装Oracl ...
- java操作mysql中的编码问题解决
要注意以下几点 1.在连接mysql数据库时 jdbc:mysql://localhost:3306/xiaonei?useUnicode=true&characterEncoding=utf ...
- zabbix_监控_端口
目的:监控web主机80端口是否在供提服务.如果不在发出报警.配置: 1.添加监控项(Items). 打开zabbix web管理界面:选择"Configurat ...