当前位置:  编程技术>php
本页文章导读:
    ▪mysql查询与插入数据单引号的问题分析      本文主要介绍mysql_real_escape_string对用户提交的表单数据进行转义处理。 并介绍addslashes()以及mysql_escape_string这3个类似功能的函数用法区别。 Mysql查询带引号和不带引号区别 当数据库字段ID为.........
    ▪php 二维码的生成代码      方法1,使用google开放api <?php /* 二维码 */ $urlToEncode="http://www."; generateQRfromGoogle($urlToEncode); function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0') { $url = urlencode($url); ech.........
    ▪php单例模式为何只能实例化一次      php单例演示示例: <?php /** * php单例 * site www. */ class Example { // 保存类实例在此属性中 private static $instance; // 构造方法声明为private,防止直接创建对象 private function __construct() { ech.........

[1]mysql查询与插入数据单引号的问题分析
    来源: 互联网  发布时间: 2013-12-24

本文主要介绍mysql_real_escape_string对用户提交的表单数据进行转义处理。
并介绍addslashes()以及mysql_escape_string这3个类似功能的函数用法区别。

Mysql查询带引号和不带引号区别
当数据库字段ID为整型时
select ID from table where ID=1

select ID from table where ID='1'
两条sql都是可以的,但是第一条sql不用进行隐式转换,速度上比第二条sql略快一些

向mysql数据库中插入带单引号字符串,什么错也没报就是语句执行失败,原因在于单引号等要转义,可以使用函数:mysql_real_escape_string和addslashes函数;
在sql防注入方面,addslashes的问题在于黑客可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes无法成功拦截。

当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧。

php手册中get_magic_quotes_gpc的例子:

<?php
if (!get_magic_quotes_gpc()) {
$lastname = addslashes($_POST["lastname"]);
} else {
$lastname = $_POST['lastname'];
}
?>

在magic_quotes_gpc已经开放的情况下,还是对$_POST['lastname']进行检查一下。

mysql_real_escape_string和mysql_escape_string这2个函数的区别:
mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用。否则只能用 mysql_escape_string ,两者的区别是:
mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。

总结:
addslashes() 是强行加;
mysql_real_escape_string() 会判断字符集,但是对PHP版本有要求;
mysql_escape_string不考虑连接的当前字符集。


    
[2]php 二维码的生成代码
    来源: 互联网  发布时间: 2013-12-24

方法1,使用google开放api

<?php
/*
二维码
*/
$urlToEncode="http://www.";
generateQRfromGoogle($urlToEncode);
function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0')
 {
    $url = urlencode($url);
    echo '<img src="http://chart.apis.google.com/chart?chs='.$widhtHeight.'x'.$widhtHeight.'&cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.$chl.'" alt="QR code" widhtHeight="'.$size.'" widhtHeight="'.$size.'"/>';
 }
?>

方法2,使用php类库PHP QR Code

类库下载:http://sourceforge.net/projects/phpqrcode/
类库中的index.php为演示例子。

下面是自己写的一个例子。

<?php
/*
生成二维码
*/
 include('./phpqrcode.php');
   // 二维码数据
   $data = 'http://www..com';
   // 纠错级别:L、M、Q、H
   $errorCorrectionLevel = 'L';
    // 点的大小:1到10
   $matrixPointSize = 4;
   // 生成的文件名
   $path = "erwei/";
   if (!file_exists($path)){
        mkdir($path);
   }
   $filename = $path.$errorCorrectionLevel.'.'.$matrixPointSize.'.png';
   QRcode::png($data, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
   echo "<img src='/blog_article/$filename/index.html' />";
?>

    
[3]php单例模式为何只能实例化一次
    来源: 互联网  发布时间: 2013-12-24

php单例演示示例:

<?php
/**
 * php单例
 * site www.
*/
class Example
{
// 保存类实例在此属性中
private static $instance;
// 构造方法声明为private,防止直接创建对象
private function __construct()
{
echo 'I am constructed';
}
// singleton 方法
public static function singleton()
{
if (!isset()(self::$instance)) {//判断是否以前创建了当前类的实例
$c = __CLASS__;//获取类名
self::$instance = new $c;//如果没有创建,实例化当前类,这里实现类只实例化一次
}
return self::$instance;//返回类的实例
}
// Example类中的普通方法
public function bark()
{
echo 'Woof!';
}
// 阻止用户复制对象实例
public function __clone()
{
   trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}
// 这个写法会出错,因为构造方法被声明为private
$test = new Example;
// 下面将得到Example类的单例对象
$test = Example::singleton();
$test->bark();
// 下面将得到Example类的单例对象
$test = Example::singleton();
$test->bark();
// 复制对象将导致一个E_USER_ERROR.
$test_clone = clone $test;
?>

您可能感兴趣的文章:
php设计模式之单例模式的实例代码
学习php设计模式之单例模式
php实现的单例模式的例子
学习php单例模式及应用实例
php单例模式的演示代码
有关php单例模式介绍及例子
php设计模式之单例模式学习
php单例模式的例子


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3