php,mysq,js的特殊字符

2 篇文章 0 订阅

双休日连续加班,真是好爽……痛苦的不是写不出代码,而是写出代码老板不满意要你重做啊。
最近赶一个网站项目,既然是做网站,那么js和HTML是一定要打交道的,至于服务器脚本语言我们用的是php,这两天加班的时候遇到了几个问题,而且竟然都是特殊字符的问题,好记性不如烂笔头,在这里做个记录免得忘记。
    1.js和php
    我试图把一个php变量传给js函数,作为url的参数,用js跳转,可没想到,经js这么一转手数据就变了,原来是因为变量的值中带了'+'字符,而js会把'+'字符当成字符串连接符而忽略掉它。而对这种情况一般的处理方法是替换,js对传入的数据进行处理,把加号进行替换,转成url编码的'%2B'即可,可以用replace函数。而这里还有一个问题,php如果在网址中读取GET参数中有加号,会把它当成空格,因为空格的url的一种编码是'+'。
    2.mysql和php
    我试图向mysql数据库中插入一条数据的时候,mysql却向我返回一个错误,检查后发现原来php的sql语句中的一个字符串变量带了单引号',而单引号在mysql中是特殊字符,导致了sql语句变化,结果出错了。这种情况很简单,只要把那个字符串变量进行转义处理即可,这里可以用php的addslashes()函数,其实,一个网站必须要对这类变量进行处理,不然是非常脆弱的,很容易被攻破。一个例子就是用户登录时可以在密码框输入"'' OR ''=''";这时如果网站没有对数据进行处理的话,任何人都可以轻易登录系统了。
    3.html和php
    我试图向网页打印一个已经带有数据的表单时,一个input框中数据却总是错误,检查后发现原来是双引号"搞的鬼,我们要使input一开始就带值的话只有设置它的value="某变量a",当a中有双引号时,很明显value=""这句话就被改变了,这种情况下处理的方法是要把变量a进行html的转义,对html有些了解就知道,html使用一些特殊的字符串表示一些特殊字符,而其中一个为大家所熟知的就是' '在html中表示的是一个空格,进行html转义用的php函数是htmlspecialchars()。
    魔鬼往往隐藏在细节中,这句话真是足以为一生的警句啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值