php常用代码

1.PHP 函数:阻止 SQL 注入

SQL 注入或者 SQLi 常见的攻击网站的手段,使用下面的代码可以帮助你防止

/**
 * 返回经addslashes处理过的字符串或数组
 * @param $string 需要处理的字符串或数组
 * @return mixed
 */
function new_addslashes($string){
    if(!is_array($string)) return addslashes($string);
    foreach($string as $key => $val) $string[$key] = new_addslashes($val);
    return $string;
}

/**
 * 返回经stripslashes处理过的字符串或数组
 * @param $string 需要处理的字符串或数组
 * @return mixed
 */
function new_stripslashes($string) {
    if(!is_array($string)) return stripslashes($string);
    foreach($string as $key => $val) $string[$key] = new_stripslashes($val);
    return $string;
}

/**
 * 返回经htmlspecialchars处理过的字符串或数组
 * @param $obj 需要处理的字符串或数组
 * @return mixed
 */
function new_html_special_chars($string) {
    $encoding = ‘utf-8‘;
    if(strtolower(CHARSET)==‘gbk‘) $encoding = ‘ISO-8859-15‘;
    if(!is_array($string)) return htmlspecialchars($string,ENT_QUOTES,$encoding);
    foreach($string as $key => $val) $string[$key] = new_html_special_chars($val);
    return $string;
}

对用户输入的数据做转义:

if (!get_magic_quotes_gpc()) {
$search=new_addslashes($search);

输出做stripslashes,htmlspecialchars是在输出HTML时防御XSS攻击的,区别于上面说的防御SQL注入

2.用php实例进行mysqli数据库连接

使用方法一:使用传统的面向过程的方法 
php代码如下:

<?php
$connect = mysqli_connect(‘localhost‘,‘root‘,‘‘,‘volunteer‘) or die(‘Unale to connect‘);
$sql = "select * from vol_msg";
$result = mysqli_query($connect,$sql);
while($row = mysqli_fetch_row($result)){
echo $row[0];
}
?> 

使用方法二:使用面向对象的方法调用接口(推荐使用) 
看php代码如下:

<?php
//创建对象并打开连接,最后一个参数是选择的数据库名称
$db= new mysqli(‘localhost‘,‘root‘,‘‘,‘volunteer‘);
//检查连接是否成功
if (mysqli_connect_errno()){
//注意mysqli_connect_error()新特性
die(‘Unable to connect!‘). mysqli_connect_error();
}
$sql = "select * from vol_msg";
//执行sql语句,完全面向对象的
$result = $db->query($sql);$num_results=$result->num_rows;echo ‘共有‘.$num_results.‘条记录‘
while($row = $result->fetch_array()){
echo $row[0];
}

$result->free();$db->close();
?> 

以上两个php实例运行的结果完全相同,可以清楚的看到使用mysqli类对象构建数据库连接的优势! 
插入和修改记录我就不用讲了,只要更改一下sql语句就行!

防御SQL注入(输入数据库):
PDO bindParam 或 mysqli_stmt_bind_param: 避免SQL注入.
addslashes: 用反斜杠转义所有的单引号,双引号,反斜杠和NUL‘s,一定程度上避免SQL注入.
mysqli_real_escape_string: 转义SQL语句中的特殊字符.
有了bind_param,就不需要使用addslashes,mysqli_real_escape_string,magic_quotes_gpc这些功能了.
比如:

PDO MySQL:
//方法1(问号占位符)
$stmt = $db->prepare(‘UPDATE posts SET post_title = ?, post_content = ? WHERE id = ?‘);
$stmt->execute(array($title,$content,$id)); //所有值视作PDO::PARAM_STR处理

//方法2(命名占位符)
$stmt = $db->prepare(‘UPDATE posts SET post_title = :title, post_content = :content WHERE id = :id‘);
$stmt->execute(array(‘:title‘ => $title,‘:content‘ => $content,‘:id‘ => $id)); //所有值视作PDO::PARAM_STR处理

//方法3
$stmt = $db->prepare(‘UPDATE posts SET post_title = ?, post_content = ? WHERE id = ?‘);
$stmt->bindParam(1, $title,   PDO::PARAM_STR);
$stmt->bindParam(2, $content, PDO::PARAM_STR);
$stmt->bindParam(3, $id,      PDO::PARAM_INT);
$stmt->execute();

//方法4
$stmt = $db->prepare(‘UPDATE posts SET post_title = :title, post_content = :content WHERE id = :id‘);
$stmt->bindParam(‘:title‘,   $title,   PDO::PARAM_STR);
$stmt->bindParam(‘:content‘, $content, PDO::PARAM_STR);
$stmt->bindParam(‘:id‘,      $id,      PDO::PARAM_INT);
$stmt->execute();

MySQLi:
//MySQLi只需执行一次bind_param,要比PDO简洁一些,MySQLi不支持命名占位符.
$stmt->bind_param(‘ssi‘, $title, $content, $id);
时间: 2024-10-14 07:23:43

php常用代码的相关文章

常用代码整理(重要)

常用代码整理: 1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATC

HTML入门常用代码

Html 常用代码1.文件类型<HTML></HTML> (放在档案的开头与结尾)2.文件主题<TITLE></TITLE> (必须放在「文头」区块内)3.文头<HEAD></HEAD> (描述性资料,像是「主题」)4.文体<BODY></BODY> (文件本体)5.层<DIV></DIV> 6.层的对齐<DIV ALIGN=LEFT|RIGHT|CENTER|JUSTIFY>

SqlServerDBA 常用代码

--查看partition的四个视图 select * from sys.partition_functions--查看分区函数 select * from sys.partition_parameters select * from sys.partition_range_values--查看分区函数对应的分区范围 select * from sys.partition_schemes--查看分区架构 SqlServerDBA 常用代码,布布扣,bubuko.com

ASP.NET MVC+EF5 开发常用代码

Asp.Net Mvc,EF 技术常用点总结 1.Asp.Net MVC a)获得当前控制器名和当前操作的名称(action) 1.Action 中 RouteData.Values["controller"].ToString(); RouteData.Values["action"].ToString(); 2.页面中(view) ViewContext.RouteData.Values["controller"].ToString().To

js常用代码大全

Javascript常用代码大全 //打开模式对话框 <body><script language=javascript> function doSelectUser(txtId){ strFeatures="dialogWidth=500px;dialogHeight=360px;center=yes;middle=yes ;help=no;status=no;scroll=no"; var url,strReturn; url="selUser.a

Php mysql 常用代码、CURD操作以及简单查询

C/S:Client ServerB/S:Brower Server php主要实现B/S LAMP :Linux系统    A阿帕奇服务器    Mysql数据库   Php语言 mysql常用代码 创建表 1 create table CeShi1 2 ( 3 Uid varchar(50) primary key, 4 Pwd varchar(50), 5 Name varchar(50), 6 Nation varchar(50), 7 foreign key(Nation) refer

一些常用代码

1.地图大于屏幕大小,对camera进行控制,并不是简单地让player一直限制在屏幕中心,而是将player限制在屏幕中间的一个矩形区域内. 1 float rectangleWidth=GameVariables.WIDTH/3; 2 float rectangleHeight=GameVariables.HEIGHT/3; 3 float cameraX=stage.getCamera().position.x; 4 float cameraY=stage.getCamera().posi

GCD 常用代码

体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, 0); // 2. 任务 void (^task)() = ^ { NSLog(@"%@", [NSThread currentThread]); }; // 3. 指定执行任务的函数 // 异步执行任务 - 新建线程,在新线程执行 task dispatch_async(q, task); NSLog(

网页常用代码(转)

网页制作常用代码(文字颜色/字体/插入图片/flash等) 一:颜色代码如果你想使用某种颜色,取得它的颜色值即可.比如,您想改变某些文字的颜色,您可以使用下面的代码:<font color=#ffc060 size=2>改变#符号后的代码即可改变颜色</font> 000000 000020 000040 000060 000080 0000a0 0000c0 0000ff 008000 008020 008040 008060 008080 0080a0 0080c0 0080f

!!! jquery mobile常用代码

Jquery MOBILE: <!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script src="http://code.jq