php_bu

一、上传图片

  1、上传图片必须代码“enctype="multipart/form-data”,还必须是post提交

    写法:<form action="提交网页地址" method=“post” enctype="multipart/form-data">

  2、固定的选择文件按钮

     <input type="file" name="uploadFile" id="upload"/>

    显示样式:

  3、$file = $_FILES['uploadFile'];  uploadFile为选择按钮的name=" ";

     获得你选择上传图片的信息,是一个二维数组

    var_dump($file);输出获得的值,显示如下:   

 array (size=5)

     'name' => string '1.jpg' (length=5)   //图片名

     'type' => string  'image/jpeg' (length=10)   //图片类型

      'tmp_name' =>  string  'E:\Program Files\Apache2.2\wamp\tmp\phpCCE1.tmp' (length=47)  //图片虚拟路径
      'error' =>  int 0    //代表上传成功
     'size' =>  int 6542   //代表图片大小

  4、将文件上传到服务器的哪里

    move_uploaded_file($tmp_name,"img/".$name);

    img是建在统一路径下的空文件夹,意思是将上传的图片上传到文件夹img下

 

二、验证验证码

  1、随机生成验证码    

<?php
session_start();   //打开session
$arr = array(   //创建一个数组
    'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x',
    'y','z','0','1','2','3','4','5','6','7','8','9'
);
$rand = "";
for($i=1;$i<=4; $i++){
    $rand .= $arr[rand(0,count($arr)-1)];
}
$_SESSION['check_pic'] = $rand;
//生成图片
$im = imagecreatetruecolor(100,30);
//生成颜色,当第一次调用生成颜色的方法,是生成背景颜色,默认是黑色
//如果想自定义背景颜色,用到imagefill函数
$bg = imagecolorallocate($im,200,200,200);
//$aa = imagecolorallocate($im,123,543,100);
$ss = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));

imagefill($im,0,0,$bg);
//第二次调用这个方法,是可以生成图片上面的文字或其他样式的颜色
$te = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));

$te2 = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));

//生成干扰线,就是画线
$posLineX1 = rand(6,30);
$posLineX2 = rand(30,60);
for($i=0;$i<5;$i++){
    $posLinY1=rand(2,10);
    $posLinY2=rand(11,28);
    imageline($im,$posLineX1,$posLinY1,$posLineX2,$posLinY2,$te2);
    $posLineX1 += rand(30,60);
    $posLineX2 += rand(61,98);
}

for($i=0;$i<90;$i++){   //随机生成字体颜色
    $te3 = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
    imagesetpixel($im,rand(2,100),rand(2,30),$te3);
}

//在图片上面生成文字
//imagestring($im,5,rand(3,70),rand(3,15),$rand,$te);

$posX = rand(6,45);
for($i=0;$i<4;$i++){
    $posY = rand(2,15);
    imagestring($im,rand(2,5),$posX,$posY,substr($rand,$i,1),$te);
    $posX += rand(8,20);
}

//要把php当成图片输出,必须给文件一个头申明

ob_clean();
header("Content-type:image/jpeg");   //固定写法,头申明
//最终生成图片
imagejpeg($im);   //生成图片格式jpeg,png等都行
?>

  2、验证上面生成的验证码

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
<?php
session_start();
if(isset($_POST['check'])){
    if($_POST['check'] == $_SESSION['check_pic']){
        echo "验证成功";
    }else{
        echo "验证失败";
    }
}
?>

<form action="check2.php" method="post">
    <input type="text" name="check"/>
    <img src="check1.php" alt="" onclick="refreshImg()" id="chk" style="cursor: pointer"/>
    <br/>
    <input type="submit" value="提交"/>
</form>
<script>
function refreshImg(){
////避免浏览器认为一直访问的同一个页面,所以用随机数传一个值,让它以为访问的是不同页面
    var rand = Math.round(Math.random()*10000);   //固定写法
    var chk = document.getElementById("chk");
    chk.src = "check1.php?num="+rand;  //赋给num的值是为了让浏览器误以为访问的是不同的页面,才可以一直不停地访问
//  chk.src = "check1.php";
}
</script>
</body>
</html>

 

三、封装函数,方便调用

 <?php
 function test1($str1="",$str2=array()){
     //把数组分割成字符串 implode
     //下个这个方法的意思是:$str2应该是个数组
     //然后把这个数组按照逗号来分割组成一个新的字符串
     $s1 = implode(",",$str2);
 //    echo $s1;
 
     //把字符串分割成数组 explode
     //这个函数的意思就是:首先$str1是一个字符串,这个字符串是按照一个规格组装出来的
     //这个规格就是必须符合前面第一个参数的样式
     $s2 = explode("-",$str1);
 
     print_r($s2);
 }
 
//函数的默认值
 function test2($db="bbs"){
     $conn = mysql_connect(HOST,USER,PWD) or die(mysql_error());
     mysql_select_db($db,$conn);
     mysql_query("set names 'utf8'");
 }
 
 function test3($str="hello world"){
     echo $str;
 }
 
 function formatDateTime($date){
     $arr = explode("-",$date);
     $str = vsprintf("%04d-%02d-%02d",$arr);
     return $str;
 }
 //获取函数全部参数
 //获取传过来的所有参数
 function test4(){
     //获取传过来参数的数量
     $num = func_num_args();
     //获取所有传入的参数,返回的是一个数组
     $arr = func_get_args();
     var_dump($arr);
 }
 
 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;
 }
 ?>

 

posted @ 2014-05-20 19:41  微笑进行时  阅读(178)  评论(0编辑  收藏  举报