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:// ...
随机推荐
- 20145215《Java程序设计》第9周学习总结
20145215<Java程序设计>第九周学习总结 教材学习内容总结 整合数据库 JDBC入门 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操 ...
- Jenkins进阶系列之——07更改Jenkins的主目录
Jenkins默认会存放在用户主目录下的.jenkins文件夹中 如:Linux root用户:/root/.jenkins 注意:这是linux版本的.windows系统请自行更改.这个值在Jenk ...
- .NET Web开发初学者必知的四个网站
No.1 W3school 链接: http://www.w3school.com.cn/ 预览: 介绍: 全球最大Web前端技术教程网站.内容涵盖从基础的 HTML 到 CSS到进阶的XML.SQL ...
- 如何远程断点调试本地localhost项目
前言 对于一般开发网站的IDE自带的服务器是都跑在 localhost 地址上的.(如下图的asp.net) 而这种地址是只能在本机通过 localhost 或 127.0.0.1 地址访问到,而无法 ...
- Linux下高频命令分类辑录(基本使用篇)
本文目的:总结linux下常用命令的基本使用方法 文件权限: 文档权限设置命令:chmod 数字模式: 文档权限由-rwxrwxrwx十个字符组成,其中第一个代表文档类型,后面九个字符按照顺序分为三组 ...
- css3中transform的用法
transform:rotate旋转deg #box1{ -moz-transform:rotate(10deg); -webkit-transform:rotate(10deg); }transfo ...
- [bzoj 1064][NOI2008]假面舞会(dfs判断环)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1064 分析: 如果a看到b,则a->b 那么: 1.如果图中有环,则说明这个环的 ...
- 标准I/O
在程序运行时,会默认为我们打开三个流:标准输入流.标准输出流.标准出错流. 标准输入流一般对应我们的键盘 标准输出流一般对应显示器 标准出错流一般也对应显示器 1.标准输入流 在标准I/O中,java ...
- jQuery Mobile学习日记
本次主讲人是王思伦啦啦啦~ 框架特性 jQuery Mobile 以“Write Less, Do More”作为目标,为所有的主流移动操作系统平台提供了高度统一的 UI 框架:jQuery 的移动框 ...
- 软工实践练习一——使用Git进行代码管理心得
在github.com的操作 注册 创建Organization 将指定代码库fork到小组Organization下 在Organization下创建repository 这些操作在学校的机房已经完 ...