1:生成随机数
<?php
session_start();
//生成4个随机数
$arr = array(
"A","B","C","D","E","F","G","H","J","K","L","M",
"N","P","Q","R","S","T","U","V","W","X","Y","Z",
"0", "1","2","3","4","5","6","7","8","9");
$rand="";
for($i=0;$i<4;$i++){
$rand .= $arr[rand(0,count($arr)-1)]; //生成随机数
}
$_SESSION['check_pic'] = $rand;
//生成图片:imagecreatetruecolor(创建一张增彩色图片)
$img=imagecreatetruecolor(100,30);
//生产颜色:
(1):当第一次调用生成颜色的方法,是生成背景颜色,默认是黑色
//如果想自定义颜色,就要用到imagefill函数
$bg=imagecolorallocate($img,189,196,220);
imagefill($img,0,0,$bg);
(2):第二次调用这个方法,是可以生成图片上面的文字或者其他样式的颜色
$te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
$te2=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
$te3=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
//在图片上面生成文字:(第一个值是图片,第二个值是字体的大小,第三个值是横坐标,第四一个值是纵坐标,第五一个值是生成的字,第六一个值是颜色)
// imagestring($img,rand(5,10),rand(3,70),rand(3,15),$rand,$te);
$posX =rand(6,45);
for($i=0;$i<4;$i++){
$posY=rand(2,15);
//substr:返回字符串的子串
imagestring($img,rand(2,5),$posX,$posY,substr($rand,$i,1),$te);
$posX+=rand(8,25);
}
//生成干扰线,就是画线
$posLineX1=rand(6,30);
$posLineX2=rand(30,60);
//画4条线
for($i=0;$i<5;$i++){
$posLineY1=rand(2,10);
$posLineY2=rand(11,28);
//生成干扰线(第一个值是图片,第二个值是开始的横坐标,第三个值是开始的的坐标,第四个值是结束的横坐标,第五个值是结束的纵坐标,第六一个值是颜色) imageline($img,$posLineX1,$posLineY1,$posLineX2,$posLineY2,$te2);
$posLineX1+=rand(30,60);
$posLineX2 +=rand(61,98);
}
//生成点
for($i=0;$i<50;$i++){
//生成点(第一个值是图片,第二个值是随机在横坐标生成点,第三个值是随机在纵坐标生成点,第四一个值是颜色)
imagesetpixel($img,rand(2,100),rand(0,50),$te3); }
//要把php当成图片输出,必须给文件一个头申明
header("Content-type:image/jpeg");
//最终生成图片
imagejpeg($img);
?>
2:定义常量(两种)
(1):define():随便定义在哪里
(2):const():只能定义在最前面
3:想在函数里用全局变量必须用global申明一下
例:$conn = ""; //全局变量
function get_conn(){
global $conn;
$conn = mysql_connect(HOST,USER,PWD) or die(mysql_error());
mysql_select_db("bbs",$conn);
mysql_query("set names 'utf8'");
}
4:调用函数(两种方法):
(1):require_once("function.php");
(2):include("mysql.php");
5:函数的参数不只有一个可以有多个
6:explode():把字符串分割成数组;
implode():把数组分割成字符串
例:$arr = array(1,2,3,4,5);
$str = "1982-4-2";
test1($str,$arr);
function test1($str1="",$str2=array()){
//把数组分割成字符串 implode
//下个这个方法的意思是:$str2应该是个数组
//然后把这个数组按照逗号来分割组成一个新的字符串
$s1 = implode(",",$str2);
// echo $s1;
//把字符串分割成数组 explode
//这个函数的意思就是:首先$str1是一个字符串,这个字符串是按照一个规格组装出来的
//这个规格就是必须符合前面第一个参数的样式
$s2 = explode("-",$str1);
print_r($s2);
}
7:函数的参数默认值
例:test2("test");
//函数的默认值
function test2($db="bbs"){
$conn = mysql_connect(HOST,USER,PWD) or die(mysql_error());
mysql_select_db($db,$conn);
mysql_query("set names 'utf8'");
}
8:vsprintf():把一个数组格式化字符串,可以用你自己想用的格式化
例:$arr=[1,2,3];
echo vsprintf("%d-%d-%02d",$arr);
9:调用自己的时间格式化方法
例:function formatDateTime($date){
$arr = explode("-",$date);
$str = vsprintf("%04d-%02d-%02d",$arr);
return $str;
}
$time = formatDateTime("99-8-8");
echo $time;
10: func_num_args():获取传过来的数量
func_get_args():获取所有传入的参数,返回的是一个数组
例: //获取函数全部参数
test4("select * from users where userName=?","pangpang");
//获取传过来的所有参数 function test4(){
//获取传过来参数的数量
$num = func_num_args();
echo $num;
//获取所有传入的参数,返回的是一个数组
$arr = func_get_args();
var_dump($arr);
}
11:str_replace:替换
例: function mysql_ping(){
//获取传入的所有参数的数组
$arr = func_get_args();
//获取第一个参数,在我们这个列子里面,第一个参数其实就是sql语句
$sql = $arr[0];
//传入的sql语句,其实开始是用?替代的变量的位置
//这里需要将变量转化为可以替换格式化字符串的'%s'这样的符号
$sql = str_replace("?","'%s'",$sql);
//array_shift,是将数组最开始的元素移出。返回移出的值,然后数组剩下其余的部分
$values = array_shift($arr);
$sql = vsprintf($sql,$arr);
echo $sql;
}