有关PHP、HTML单引号、双引号转义以及转成HTML实体的那些事!

一、单引号和双引号转义在PHP的数据存储过程中用得比较多,即往数据库里面存储数据时候需要注意转义单、双引号;

先说几个PHP函数:

1、addslashes — 使用反斜线引用(转义)字符串;

  返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。

一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成on 时,意味着插入 ' 时将使用 ' 进行转义。默认情况下,PHP 指令 magic_quotes_gpc 为 on,它主要是对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。 

2、stripslashes — 去掉字符串的反斜杠引用(转义)

  即同addslashes()做相反的工作;

3、get_magic_quotes_gpc --- 检测魔术引用变量是否开启,倘若开启返回1,为开启则返回0;

 

复制代码
if (!get_magic_quotes_gpc()) {
$lastname=addslashes($_POST['lastname']);
} else {
$lastname=$_POST['lastname' ];
}
echo$lastname;  
$sql="INSERT INTO lastnames (lastname) VALUES ('$lastname')";
复制代码

 

 

二、谈转义实体问题:

我们经常会遇到关于留言板之类的可以让用户输入信息的地方,这些地方都是需要注意的,因为不做转实体之类的话,html代码、script脚本可以轻易的被输入保存,并被其他用户执行;

所以类似用户在输入文本内输入<a href="xxx">hello</a>之类的,我们尽量要屏蔽掉,否则用户会乱搞,比如调CSS样式等,那样,我们页面将一塌糊涂。废话不多说,这里有几个关于PHP转实体的函数需要详细了解:

1、htmlspecialchars() 转义特别的字符为HTML实体;

  • '&' (ampersand) becomes '&amp;'
  • '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
  • ''' (single quote) becomes '&#039;' only when ENT_QUOTES is set.
  • '<' (less than) becomes '&lt;'
  • '>' (greater than) becomes '&gt;'

2、htmlspecialchars_decode()将实体转成HTML代码,函数1的反函数

 

3、 htmlentities()这个是全部转换html实体,和htmlspecialchars()区别在于,这个函数是转义全部的字符,而htmlspecialchars()仅仅转义上面限定的5个特殊字符!

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设为首页 和 收藏本站js代码 兼容IE,chrome,ff

设为首页 和 收藏本站js代码 兼容IE,chrome,ff//设为首页function SetHome(obj,url){try{obj.style.behaviorurl(#default#homepage);obj.setHomePage(url);}catch(e){if(window.netscape){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect&q…

android listview 数据数组制作,android – 从对象的数组列表中填充listview

在你的活动AdapterPerson adbPerson;ArrayList myListItems new ArrayList();//then populate myListItemsadbPerson new AdapterPerson (youractivity.this, 0, myListItems);listview.setAdapter(adbPerson);适配器public class AdapterPerson extends ArrayAdapter {privat…

centos 8 安装使用配置

服务端安装nfs 1、使用yum安装nfs yum install nfs-utils nfs-utils-lib -y 如果出现上述错误请安装lvm2 yum install -y lvm2 2、编辑文件exports vim /etc/exports 加入代码&#xff0c;如&#xff1a; /home *(insecure,rw,sync,no_root_squash) #参数详解 ro #只读共享…

linux内核笔记-内核同步

linux内核就相当于不断对请求进行响应的服务器&#xff0c;这些请求可能来自CPU&#xff0c;可能来自发出中断的外部设备。我们将内核看作两种请求的侍者。 &#xff08;1&#xff09;老板提出请求&#xff0c;侍者如果空闲&#xff0c;为老板服务。&#xff08;系统调用或异常…

ECshop 快捷登录插件 支持QQ 支付宝 微博

亲自测试可以使用&#xff0c;分享给大家。(承接各种EcShop改版&#xff0c;二次开发等相关项目 QQ:377898650) 安装的时候按照里面说明。安装即可。 代码下载&#xff1a;http://pan.baidu.com/s/1c0kUYIk -------------------------------- 代码修改过程-------------首先a…

Net连接mysql的公共Helper类MySqlHelper.cs带MySql.Data.dll下载

MySqlHelper.cs代码如下&#xff1a; using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Text;using System.Data;using System.Collections;using MySql.Data.MySqlClient;using MySql.Data.Types;using System.Configuration;…

有史以来最详细 安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题)

安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题) 官方文档&#xff1a;https://github.com/kubernetes/dashboard 参考文章&#xff1a;https://kuboard.cn/install/install-k8s-dashboard.html# 前言 Kubernetes Dashboard 是 Kubernetes 的官方 W…

技术者的好奇心和惯性

这回老孙讲讲好奇心。本杰明富兰克林&#xff0c;十八世纪美国最伟大的科学家和发明家&#xff0c;著名的政治家、外交家、哲学家、文学家和航海家以及美国独立战争的伟大领袖。有人称其为“资本主义精神最完美的代表”。富兰克林这个人或许衬不上这等称誉&#xff0c;但绝对是…

2s相机 android6,Android Camera2 使用总结

最近在做自定义相机相关的项目&#xff0c;网上查了资料都是有关android.hardware.Camera的资料&#xff0c;开始使用的才发现这个类已经废弃了。Android 5.0(21)之后android.hardware.Camera就被废弃了&#xff0c;取而代之的是全新的android.hardware.Camera2 。Android 5.0对…

简单的小工具wordlight——让VS变量高亮起来

前段时间一直在使用matlab&#xff0c;今天需要使用vs2008&#xff0c;而用惯了matlab&#xff0c;习惯了其中一项选中变量高亮的设置&#xff0c;突然回来使用VS&#xff0c;感到各种不适应&#xff0c;顿时想到了一个词&#xff1a;矫情 呵呵&#xff0c;于是在网上找各种插…

CentOS 7上搭建Spark3.0.1+ Hadoop3.2.1分布式集群

CentOS 7上搭建Spark3.0.1 Hadoop3.2.1分布式集群 VMWare 安装CentOS 7使用Xshell连接虚拟机集群设置安装JDK 1.8SSH 免密登陆安装hadoop 3.2安装Spark 3.0.1总结VMWare 安装CentOS 7 推荐使用VMware Workstation Pro 16&#xff0c;下载安装即可。下载最新的CentOS 7 Minimal…

微软的SQLHelper类(含完整中文注释)

using System; using System.Data; using System.Xml; using System.Data.SqlClient; using System.Collections; namespace Book.DAL { /// <summary> /// SqlServer数据访问帮助类 /// </summary> public sealed class SqlHelper { #region 私有构造函数和方法 p…

再见安卓 你好鸿蒙,安卓,再见!你好,鸿蒙系统!

今年9月份&#xff0c;华为宣布鸿蒙OS操作系统将面向手机发布&#xff0c;今年12月份正式开放开发者Beta版本。昨天&#xff0c;华为鸿蒙OS迎来里程碑式的新进展&#xff0c;开发者Beta版本如约而至&#xff0c;正式开启线上公测招募&#xff0c;我们也可以可以一睹鸿蒙系统真容…

Kubernetes 部署 Traefik Ingress 控制器 (1.7.12)

目录[-] . 一、Ingress 介绍. 二、Traefik 介绍. 三、部署 Ingress 控制器 Traefik. 1、Traefik 两种部署方式介绍. 2、创建 Traefik 配置文件. 3、将 Traefik 配置文件挂载到 ConfigMap. 4、设置 CA 证书. 5、给节点设置 Label. 6、创建 Traefik 服务账户与角色权限. 7、创建…

Android (cocos2dx 网络访问)访问权限设置

Android开发应用程序时&#xff0c;如果应用程序需要访问网络权限,需要在 AndroidManifest.xml 中加入以下代码: 同样的如果用到其它的权限&#xff0c;也需要作出声明,部分权限列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问”properties”表在 checki…

获取页面所有属性并生成html6,JavaScript基础练习题(三)

一、单选题1.以下关于Javascript中事件的描述中&#xff0c;不正确的是A click——鼠标单击事件B focus——获取焦点事件C mouseover——鼠标指针移动到事件源对象上时触发的事件D change——选择字段时触发的事件正确答案: D解析:change事件为input内容发生改变时触发的事件。…

Git本地缓存问题 修改密码后git无法拉取

Git本地缓存问题 修改密码后git无法拉取 问题描述&#xff1a;使用正确的用户名和密码可以登录到Git代码仓库&#xff0c;但是在本地无法使用Git bash命令行的方式拉取代码。 问题原因&#xff1a;第一次使用Git bash方式拉取代码时&#xff0c;会根据当前的用户和密码生成一串…

Ext.Net常用方法

1、js&#xff08;Ext&#xff09;操作 Ext.Msg.alert(系统提示, 未连接血站&#xff0c;该功能暂时不能使用。); Ext.getCmp("id").getValue();Ext.getCmp("id").focus();Ext.getCmp("id").selectText(); //选中修改 if (!GridPanel1.hasSelec…

表单 单击怪异事件

<input class"big" name"gohome" type"button" id"gohome" value"回到主页" οnclick"gohome()" /> 如果上面的name、ID属性跟后面的单击事件所调用的函数名一样。则无效&#xff01;&#xff01;&#xff…