当前位置:  编程技术>php
本页文章导读:
    ▪PHP简洁函数(PHP简单明了函数语法)       1、与mysql相关 mysql_connect 建立一个与MySQL服务器的连接 语法 resource mysql_connect(string server[,string usingname[,string password[, bool new_link[,int client_flags]]]]) eg: 代码如下: $DB_HOST ="localhost"; $DB_LOGIN ="root";.........
    ▪php数字游戏 计算24算法       算法思路:把每一个数字看做一个独立的数学表达式,表达式之间加上标点符号组合成新表达式,一共组合4次,表达式之间的所有组合可以通过递归来实现. 代码如下: 代码如下: <?php /*.........
    ▪细谈php中SQL注入攻击与XSS攻击       例如: SQL注入攻击 XSS攻击 代码如下: 任意执行代码 文件包含以及CSRF. } 关于SQL攻击有很多文章还有各种防注入脚本,但是都不能解决SQL注入的根本问题 见代码: 代码如下: <?php mysql_connect(".........

[1]PHP简洁函数(PHP简单明了函数语法)
    来源: 互联网  发布时间: 2013-11-30

1、与mysql相关

mysql_connect
建立一个与MySQL服务器的连接
语法


resource mysql_connect(string server[,string usingname[,string password[, bool new_link[,int client_flags]]]])
eg:

代码如下:

$DB_HOST ="localhost";
$DB_LOGIN ="root";
$DB_PASSWORD =" 123456";
$conn=mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASSWORD);


mysql_data_seek
将内部查询指针移动至查询行上
语法

bool mysql_data_seek(resource result_indetifier,int row_number)
eg:
代码如下:

$DB_HOST ="localhost";
$DB_LOGIN ="root";
$DB_PASSWORD ="123456";
$DB_NAME ="flag";
$conn=mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASSWORD);
mysql_select_db($DB_NAME);
$res=mysql_query("SELECT * FROM PRODUCT");
$row=mysql_fetch_array($res);
for($i=0;$i<$num;$i++)
$row=mysql_fetch_array($res);
mysql_data_seek($res,0);//移动指针回到查询果的第一行




mysql_fetch_array
将查询的结果存在数组中(每一个数组元素存一个记录)
语法

array mysql_fetch_array(resource result[,int result_type])
eg
代码如下:

$DB_HOST ="localhost";
$DB_LOGIN ="root";
$DB_PASSWORD ="123456";
$DB_NAME ="flag";
$conn=mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASSWORD);
mysql_select_db($DB_NAME);
$res=mysql_query("SELECT * FROM PRODUCT");
$row=mysql_fetch_array($res);



mysql_fetch_object
取得查询结果一行,并以对象类型存储之,与MySQL_fetch_array()使用方法完全相同,不同的是mysql_fetch_object()只能通过字段名称来取得查询结果
echo $row->fieldname; //正确用法
echo $row->0; //错误用法
语法

object mysql_fetch_object(resource result)
eg
代码如下:

$DB_HOST ="localhost";
$DB_LOGIN ="root";
$DB_PASSWORD ="123456";
$DB_NAME ="flag";
$conn=mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASSWORD);
mysql_select_db($DB_NAME);
$res=mysql_query("SELECT * FROM PRODUCT");
$row=$mysql_fetch_object($res);
while($row)
{
echo $rowàp_id;
echo $rowàp_name;
}



mysql_insert_id
在使用INSERT命令增加完一条信息后,可利用此函数取得刚刚增加记录的unique id
语法

int mysql_insert_id([esource link_identifier])
eg
代码如下:

$DB_HOST ="localhost";
$DB_LOGIN ="root";
$DB_PASSWORD ="123456";
$DB_NAME ="flag";
$conn=mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASSWORD);
mysql_select_db($DB_NAME);
$SQLStr"INSERT INTO produce (p_id,p_name)VALUES('','PHP书')";
$res=mysql_query($res);
$p_id=mysql_insert_id();


mysql_num_rows
取得查询结果里有几行
语法

int mysql_num_rows(resource result)
eg
代码如下:

$DB_HOST ="localhost";
$DB_LOGIN ="root";
$DB_PASSWORD ="123456";
$DB_NAME ="flag";
$conn=mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASSWORD);
mysql_select_db($DB_NAME);
$res=mysql_query("SELECT * FROM PRODUCT");
$num=mysql_num_rows($res);


mysql_query
送出一个SQL语法的查询语句
语法

resource mysql_query(string query[,resource link_identifier])
eg
代码如下:

$DB_HOST ="localhost";
$DB_LOGIN ="root";
$DB_PASSWORD="123456";
$DB_NAME ="flag";
$conn=mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASSWORD);
mysql_select_db($DB_NAME);
$res=mysql_query("SELECT * FROM PRODUCT");



mysql_select_db
选择欲存取的数据库名称
语法

bool mysql_select_db(string database_name[,resource link_identifier])
eg
代码如下:

$DB_HOST ="localhost";
$DB_LOGIN ="root";
$DB_PASSWORD ="123456";
$DB_NAME ="flag";
$conn=mysql_connect($DB_HOST,$DB_LOGIN,$DB_PASSWORD);
mysql_select_db($DB_NAME);

2、文件系统函数
copy
复制文本
语法
bool copy(string source,string dest)
eg
代码如下:

copy("abc.txt","/tmp/newabc.txt");

fclose
关闭一个打开文件的指针
语法
bool fclose(resource handle)
eg
代码如下:

$fp=fopen("abc.txt","w");
fclose($fp);

fgets
从文件指针所指位置取得列的内容
语法
string fgets(resource handle[,int length])
eg
代码如下:

$fp=fopen("abc.txt","w");
$txtdata= fgets($fp,4096);

file
将整个文件内容读到数组中
语法
array file(string filename[,int use_include_path[,resource context]])
eg
代码如下:

$content=file("abc.txt");


file_exists
检查文件是否存在
语法

bool file_exists(string filename)
eg
代码如下:

if (file_exists("abc.txt"))
echo "此文件存在";
else
echo"此文件不存在";

filesize
取得文件大小
语法
int filesize(string filename)
eg
代码如下:

$size=filesize("abc.txt");

fopen
打开一个文件或者url
语法
resource fopen (string filename,string mode[,bool use-include_path[,resource zcontext]])
eg
代码如下:

$fp=fopen("abc.txt");
$fp=fopen("http://www./bacteroid/","r");


fputs
将数据写至文件中
语法
int fputs(resource handle,string string[,int length])
eg
代码如下:

$fp=fopen("abc.txt");
fputs($fp,"helloworld!");


fseek
设置文件指针所指的位置
语法
int fseek(resource handle,int offset[,int whence])
eg
代码如下:

$fp=fopen("abc.txt","w");
$txtdata=fgets($fp,4096);
fseek($fp,0);//将指针指回起始处


mkdir
建立一个目录
语法
bool mkdir(string pathname[,int mode[,bool recursive[,resource context]]])
eg
代码如下:

mkdir("ljt/newfolder");


unlink
删除文件
语法
int unlink(string filename);
eg
代码如下:

unlink("abc.txt");

3、日期与时间函数
data
返回指定格式的当地时间/日期
语法
string date(string format[,int timestamp])
eg
代码如下:

$time =date("Y-m-d g:i:s");


getdate
取得日期与时间的信息
语法
array getdata([int timestamp])
eg
代码如下:

$now=getdate();
$year=$now["year"];
$month=$now["month"];


gettimeofday
取得目前的时间(包括格林尼治时间)
语法
array gettimeofday(void)
eg
代码如下:

$time=gettimeofday();

4、字符串处理函数
explode
根据指定的分隔符将字符串拆分成一个数组
语法
array explode(string separator,string string[,int limit])
eg
代码如下:

$str="a,b,c";
$res=explode(",",$str);//$res[0]=a


implode
将数组内容连接成一个字符串
语法
string implode(string glue,array pieces)
eg
代码如下:

$newarray=array('a','b','c');
$res=implode(",",$newarray);//$res=a,b,c

strlen
取得字符串的长度
语法
int strlen(string string)
eg
代码如下:

strlen("www.");//传回15
[c/ode]
substr
取得字符串指定的某部分字符(子字符串)
语法
string substr("www.gxnu.edu.cn",1,7); //返回"ww.gxnu"
5、数学函数库
将浮点数的小数部分无条件进位
语法
float ceil(float value)
eg
[code]
echo ceil(9.99);//返回10
echo ceil(9.12);//返回10

cos
取得浮点数值的余弦值
语法
float cos(float arg)
eg
代码如下:

$numcos=cos(0.5);

floor
将浮点数的小数部分无条件去掉
语法
float floor(floor value)
eg
代码如下:

echo floor(9.12);//返回9
echo floor(9.99);// 返回9

rand
产生一个范围的随机数值
语法
i
nt rand([int min,in max])
eg
代码如下:

$num=rand(0,100);//产生一个介于1到100间的随机数值

round
将浮点数的小数部分四舍五入进位
语法
float round(float value)
eg
代码如下:

float round(9.99)//返回10
float round(9.12)//返回9

sin
取得浮点数值的正弦值
语法
float sin(float arg)
eg
代码如下:

$numsin=sin(0.5);


6、Session函数
session_register
说明一或多个Session里的变量
语法
bool session_register(mixed name[,mixed...])
eg
代码如下:

$name="flag";
session_register("name");


session_start
初始化Session 信息
语法
bool session(void)
eg
代码如下:

session_start();


7、数组函数
count
计算数组中共有几个数组函数
语法
int count(mixed var[,int mode])
eg
代码如下:

count($array);

list
将数组中的元素值分配给变量
语法
void list(mixed varname,mixed...)
eg
代码如下:

$array=array(a,b,c);
list($str1,$str2,$str3)=$array;//$str1=a


range
建立一个在指定范围内的数组
语法
array range(int low,int high[,int step])
eg
代码如下:

$array=array(0,9);

shuffle
将数组中的元素重新随机排序
语法
bool shuffle(array array)
eg
代码如下:

shuffle($array);


作者:类菌体

    
[2]php数字游戏 计算24算法
    来源: 互联网  发布时间: 2013-11-30
算法思路:把每一个数字看做一个独立的数学表达式,表达式之间加上标点符号组合成新表达式,一共组合4次,表达式之间的所有组合可以通过递归来实现.
代码如下:
代码如下:

<?php
/**
* A 24 maker
* @version 1.0.0
* @author laruence<laruence at yahoo.com.cn>
* @copyright (c) 2009 http://www.laruence.com
*/
class TwentyFourCal {
public $needle = 24;
public $precision = '1e-6';
function TwentyFourCal() {
}
private function notice($mesg) {
var_dump($mesg);
}
/**
* 取得用户输入方法
*/
public function calculate($operants = array()) {
try {
$this->search($operants, 4);
} catch (Exception $e) {
$this->notice($e->getMessage());
return;
}
$this->notice('can\'t compute!');
return;
}
/**
* 求24点算法PHP实现
*/
private function search($expressions, $level) {
if ($level == 1) {
$result = 'return ' . $expressions[0] . ';';
if ( abs(eval($result) - $this->needle) <= $this->precision) {
throw new Exception($expressions[0]);
}
}
for ($i=0;$i<$level;$i++) {
for ($j=$i+1;$j<$level;$j++) {
$expLeft = $expressions[$i];
$expRight = $expressions[$j];
$expressions[$j] = $expressions[$level - 1];
$expressions[$i] = '(' . $expLeft . ' + ' . $expRight . ')';
$this->search($expressions, $level - 1);
$expressions[$i] = '(' . $expLeft . ' * ' . $expRight . ')';
$this->search($expressions, $level - 1);
$expressions[$i] = '(' . $expLeft . ' - ' . $expRight . ')';
$this->search($expressions, $level - 1);
$expressions[$i] = '(' . $expRight . ' - ' . $expLeft . ')';
$this->search($expressions, $level - 1);
if ($expLeft != 0) {
$expressions[$i] = '(' . $expRight . ' / ' . $expLeft . ')';
$this->search($expressions, $level - 1);
}
if ($expRight != 0) {
$expressions[$i] = '(' . $expLeft . ' / ' . $expRight . ')';
$this->search($expressions, $level - 1);
}
$expressions[$i] = $expLeft;
$expressions[$j] = $expRight;
}
}
return false;
}
function __destruct() {
}
}
/* demo */
$tf = new TwentyFourCal();
$tf->calculate( array(4,8,8,8) );
?>

    
[3]细谈php中SQL注入攻击与XSS攻击
    来源: 互联网  发布时间: 2013-11-30
例如: SQL注入攻击
XSS攻击
代码如下:

任意执行代码
文件包含以及CSRF.
}


关于SQL攻击有很多文章还有各种防注入脚本,但是都不能解决SQL注入的根本问题
见代码:

代码如下:

<?php
mysql_connect("localhost","root","123456")or die("数据库连接失败!");
mysql_select_db("test1");
$user=$_post['uid'];
$pwd=$_POST['pass'];
if(mysql_query("SELECT * from where
admin
= `username`='$user' or `password`='$pwd'"){
echo "用户成功登陆..";
} eles {
echo "用户名或密码出错";
}
?>

很简单的一段代码,功能是用于检测用户名或密码是否正确,可是在一些恶意攻击者中提交一些敏感代码.后果可想而知.. post判断注入的方式有2种。
1.在form表单的文本框输入 "or‘1'=1"或者"and 1=1"
在查询数据库的语句就应该是:
SELECT admin from where login = `user`=''or‘1'=1' or `pass`=‘xxxx'
当然也不会出现什么错误,因为or在sql的语句中代表和,或的意思。当然也会提示错误。
当时我们已经发现了可以执行SQL语句之后就可以查询当前表的所有信息。例如:正确的管理员账户和密码进行登录入侵。。
修复方式1:
使用javascript脚本过滤特殊字符(不推荐,指标不治本)
如果攻击者禁用了javascript还是可以进行SQL注入攻击。。
修复方式2:
使用mysql的自带函数进行过滤。
见代码:
代码如下:

<?php
// 省略连接数据库等操作。。
$user=mysql_real_escape_string($_POST['user']);
mysql_query("select * from admin whrer `username`='$user'");
?>

既然前面说道了xss攻击,我们再来说说XSS攻击以及防范吧。。
提交表单:
代码如下:

<form method="post" action="">
<intup tyep="text" name="test">
<intup tyep="submit" name="sub" value="提交">
</form>

接收文件:
代码如下:

if(empty($_POST['sub'])){
echo $_POST['test'];
}

很简单的一段代码,在这里只是模拟了下使用场景..
加入攻击者提交
<script>alert(document.cookie);</script>
在返回的页面就应该显示当前页面的cookie信息。
我们可以运用到某些留言板上(提前是没过滤的),然后当管理员审核改条信息时盗取COOKIE信息,并发送到攻击者的空间或者邮箱。。攻击者可以使用cookie修改器进行登陆入侵了。。
当然解决方案也有很多。。下面就介绍一个最常用的方式吧。
修复方案1:使用javascript进行转义
修复方案2:使用php内置函数进行转义
代码如下:
[code]
if(empty($_POST['sub'])){
$str=$_POST['test'];
htmlentities($srt);
echo $srt;
}
[html]
好了,关于SQL注入攻击和XSS攻击的案例与修复方法就讲的差不多了。
当然还有其他的解决方法:
例如:使用php框架
还有其他的一些方法。。当然了,XSS的运用范围与攻击方式很多也很广。本文只针对php的提交方式进行过滤,还有其他的需要自己去研究 ^_^~
此文出此:Aey uhost team(team.hake.cc),转载请带上版权。

y0umer
2012/6/7

    
最新技术文章:
▪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