写一个博客所需的知识

一 lib(library常用代码库)文件夹下的代码

4个init.php初始,config.php配置,func.php函数,mysql.php数据库;

init.php代码:<?php
header('Content-type:text/html;charset=utf8');//header — 发送原生 HTTP 头,输出格式。
define('ROOT' , dirname(__DIR__));//define()定义常量;__DIR__是魔术常量,表示文件所在的目录

php -- 取路径:getcwd()、__DIR__、__FILE__ 的区别

G:\demo\test01\blog\lib\init.php

getcwd() :取得当前工作目录。         G:\demo\test01\blog\lib

__DIR__ :当前内容写在哪个文件里就显示这个文件的目录 G:\demo\test01\blog\lib        ( \init.php)

__FILE__ : 当前内容所在文件的目录+/文件名                     G:\demo\test01\blog\lib\init.php

;dirname()给出一个包含有指向一个文件的全路径的字符串,

本函数返回去掉文件名后的目录名如echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc;PHP_EOL是php中的换行符,随机应变unix系列用 /n

windows系列用 /r/n

mac用 /r换行;
/*echo __FILE__ , '<br>';
echo __LINE__;*/
require(ROOT . '/lib/mysql.php');
require(ROOT . '/lib/func.php');
//require,include 语句包含并运行指定文件。
$_GET = _addslashes($_GET);
$_POST = _addslashes($_POST);
$_COOKIE = _addslashes($_COOKIE);

//

/**
* 使用反斜线 转义字符串
* @param arr 待转义的数组    //@param指明一个函数的参数
* @return arr 被转义后的数组   //@return指明一个方法或函数的返回值
*/

function _addslashes($arr) {
    foreach($arr as $k=>$v) {
        if(is_string($v)) {
            $arr[$k] = addslashes($v);
        }else if(is_array($v)) {
            $arr[$k] = _addslashes($v);
        }
    }

    return $arr;
}


?>

config.php配置代码<?php
return array(
'host'=>'localhost',
'user'=>'root',
'pwd'=>'',
'db'=>'blog',
'charset'=>'utf8',
'salt'=>'L&#7sd":Adfqef]'
);


?>

 

 

func.php代码<?php

/**
* 成功的提示信息
*/

function succ($res) {
    $result = 'succ';
    require(ROOT . '/view/admin/info.html');
    exit();
}

/**
* 失败返回的报错信息
*/

function error($res) {
    $result = 'fail';
    require(ROOT . '/view/admin/info.html');
    exit();
}

/**
* 获取来访者的真实IP
*
*/

function getRealIp() {
    static $realip = null;
    if($realip !== null) {
        return $realip;
    }

    if(getenv('REMOTE_ADDR')) {
        $realip = getenv('REMOTE_ADDR');
    } else if(getenv('HTTP_CLIENT_IP')) {
        $realip = getenv('HTTP_CLIENT_IP');
    } else if (getenv('HTTP_X_FROWARD_FOR')) {
        $realip = getenv('HTTP_X_FROWARD_FOR');
    }

    return $realip;    
}

/**
* 生成分页代码
* @param int $num 文章总数
* @param int $curr 当前显示的页码数      $curr-2 $curr-1 $curr $curr+1 $curr+2
* @param int $cnt 每页显示的条数
*/

function getPage($num,$curr,$cnt) {
    //最大的页码数
    $max = ceil($num/$cnt);
    //最左侧页码
    $left = max(1 , $curr-2);

    //最右侧页码
    $right = min($left+4 , $max);

    $left = max(1 , $right-4);

/*    (1 [2] 3 4 5) 6 7 8 9
    1 2 (3 4 [5] 6 7) 8 9
    1 2 3 4 (5 6 7 [8] 9)*/
    $page = array();
    for($i=$left;$i<=$right;$i++) {
        $_GET['page'] = $i;
         $page[$i] = http_build_query($_GET);
    }

    return $page;
}

//print_r(getPage(100,5,10));

/**
* 生成随机字符串
* @param int $num 生成的随机字符串的个数
* @return str 生成的随机字符串
*/
function randStr($num=6) {
    $str = str_shuffle('abcedfghjkmnpqrstuvwxyzABCEDFGHJKMNPQRSTUVWXYZ23456789');
    return substr($str, 0 , $num);
}

//echo randStr();

/**
* 创建目录 ROOT.'/upload/2015/01/25/qwefas.jpg'
*
*/
function createDir() {
    $path = '/upload/'.date('Y/m/d');
    $fpath = ROOT . $path;
    if(is_dir($fpath) || mkdir($fpath , 0777 , true)) {
        return $path;
    } else {
        return false;
    }
}

/**
* 获取文件后缀
* @param str $filename 文件名
* @return str 文件的后缀名,且带点.
*/
function getExt($filename) {
    return strrchr($filename, '.');
}


/**
* 生成缩略图
*
* @param str $oimg /upload/2016/01/25/asdfed.jpg
* @param int $sw 生成缩略图的宽
* @param int $sh 生成缩略图的高
* @return str 生成缩略图的路径 /upload/2016/01/25/asdfed.png
*/

function makeThumb($oimg , $sw=200 , $sh = 200) {
    //缩略图存放的路径的名称
    $simg = dirname($oimg) . '/' . randStr() . '.png';

    //获取大图和缩略图的绝对路径
    $opath = ROOT . $oimg;//原图的绝对路径
    $spath = ROOT . $simg;//最终生成的小图

    //创建小画布
    $spic = imagecreatetruecolor($sw, $sh);

    //创建白色
    $white = imagecolorallocate($spic, 255, 255, 255);
    imagefill($spic, 0, 0, $white);

    //获取大图信息
    list($bw , $bh ,$btype) = getimagesize($opath);
    //1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,
    //7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,
    //11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM
    $map = array(
        1=>'imagecreatefromgif',
        2=>'imagecreatefromjpeg',
        3=>'imagecreatefrompng',
        15=>'imagecreatefromwbmp'
    );
    if(!isset($map[$btype])) {
        return false;
    }
    $opic = $map[$btype]($opath);//大图资源
    //imagecreatefromjpeg(filename)

    //计算缩略比
    $rate = min($sw/$bw , $sh/$bh);
    $zw = $bw * $rate;//最终返回的小图宽
    $zh = $bh * $rate;//最终返回的缩略小图高

    //imagecopyresampled(dst_image, src_image, dst_x, dst_y,
        //src_x, src_y, dst_w, dst_h, src_w, src_h)
    //echo $rate ,  '<br>' , $zw , '<br>' , $zh ;exit();
    //imagecopyresampled($spic, $opic, 0, 0, 0, 0, $zw, $zh, $bw, $bh);

    imagecopyresampled($spic, $opic, ($sw-$zw)/2, ($sh-$zh)/2, 0, 0, $zw, $zh, $bw, $bh);

    imagepng($spic , $spath);

    imagedestroy($spic);
    imagedestroy($opic);

    return $simg;
}


/**
* 检测用户是否登录
*/

function acc() {
    if(!isset($_COOKIE['name']) || !isset($_COOKIE['ccode'])){
        return false;
    }
    return $_COOKIE['ccode'] === cCode($_COOKIE['name']);
}



/**
* 加密用户名
* @param str $name 用户登陆时输入的用户名
* @return str md5(用户名+salt)=>md5码
*/

function cCode($name) {
    $salt = require(ROOT . '/lib/config.php');
    return md5($name . '|' . $salt['salt']);
}

?>

 

mysql.php代码 <?php

/**
* mysql.php mysql系列操作函数
* @author nianbaibai
*/

/**
* 连接数据库
*
* @return resource 连接成功,返回连接数据库的资源
*/
function mConn() {
    static $conn = null;
    if($conn === null) {
        $cfg = require(ROOT . '/lib/config.php');
        $conn = mysqli_connect($cfg['host'] , $cfg['user'] , $cfg['pwd']);

  if (!$con)
     {
     die("连接错误: " mysqli_connect_error());
     }

        mysqli_query('use '.$cfg['db'] , $conn);
        mysqli_query('set names '.$cfg['charset'] , $conn);
    }

    return $conn;
}

/**
* 查询的函数
* @return mixed resoure/bool
*/
function mQuery($sql) {
    $rs  = mysqli_query($sql , mConn());
    if($rs) {
        mLog($sql);
    } else {
        mLog($sql. "\n" . mysql_error());
    }

    return $rs;
}


/**
* log日志记录功能
* @param str $str 待记录的字符串
*/
function mLog($str) {
    $filename = ROOT . '/log/' . date('Ymd') . '.txt';
    $log = "-----------------------------------------\n".date('Y/m/d H:i:s') . "\n" . $str . "\n" . "-----------------------------------------\n\n";
    return file_put_contents($filename, $log , FILE_APPEND);
}


/**
* select 查询多行数据
*
* @param str $sql select 待查询的sql语句
* @return mixed select 查询成功,返回二维数组,失败返回false
*/

function mGetAll($sql) {
    $rs = mQuery($sql);
    if(!$rs) {
        return false;
    }

    $data = array();
    while($row = mysqli_fetch_assoc($rs)) {
        $data[] = $row;
    }

    return $data;
}

/*$sql = "select * from cat";
print_r(mGetAll($sql));
*/

/**
* select 取出一行数据
*
* @param str $sql 待查询的sql语句
* @return arr/false 查询成功 返回一个一维数组
*/

function mGetRow($sql) {
    $rs = mQuery($sql);
    if(!$rs) {
        return false;
    }

    return mysqli_fetch_assoc($rs);
}

/*$sql = "select * from cat where cat_id=1";
print_r(mGetRow($sql));*/

/**
* select 查询返回一个结果
*
* @param str $sql 待查询的select语句
* @return mixed 成功,返回结果,失败返回false
*/
function mGetOne($sql) {
    $rs = mQuery($sql);
    if(!$rs) {
        return false;
    }

    return mysqli_fetch_row($rs)[0];
}


/*$sql = "select count(*) from art where cat_id=1";
echo mGetOne($sql);*/
/**
* 自动拼接insert 和 update sql语句,并且调用mQuery() 去执行sql
*
* @param str $table 表名
* @param arr $data 接收到的数据,一维数组
* @param str $act 动作 默认为'insert'
* @param str $where 防止update更改时少加where条件
* @return bool insert 或者update 插入成功或失败
*/

function mExec($table , $data , $act='insert' , $where=0) {
    if($act == 'insert') {
        $sql = "insert into $table (";
        $sql .= implode(',' , array_keys($data)) . ") values ('";
        $sql .= implode("','" , array_values($data)) . "')";
        return mQuery($sql);
    } else if ($act == 'update') {
        $sql = "update $table set ";
        foreach($data as $k=>$v) {
            $sql .= $k . "='" . $v . "',";
        }

        $sql = rtrim($sql , ',') . " where ".$where;
        return mQuery($sql);
    }
}
//$data = array('title'=>'今天的空气' , 'content'=>'空气质量优' , 'pubtime'=>12345678,'author'=>'baibai');
//insert into art (title,content,pubtime,author) values ('今天的空气','空气质量优','12345678','baibai');
//update art set title='今天的空气',conte='空气质量优',pubtime='12345678',author='baibai' where art_id=1;
//cho mExec('art' , $data , 'update' , 'art_id=1');;
//insert into cat (id,catname) values (5 , 'test');

/**
* 取得上一步insert 操作产生的主键id
*/
function getLastId() {
    return mysql_insert_id(mConn());
}

/**
* 使用反斜线 转义字符串
* @param arr 待转义的数组
* @return arr 被转义后的数组
*/

function _addslashes($arr) {
    foreach($arr as $k=>$v) {
        if(is_string($v)) {
            $arr[$k] = addslashes($v);
        }else if(is_array($v)) {
            $arr[$k] = _addslashes($v);
        }
    }

    return $arr;
}

?>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


 

posted @ 2017-06-23 18:09  winningbuddha  阅读(179)  评论(0编辑  收藏  举报