强撸项目系列总目录在000集

PHP要怎么学–【思维导图知识范围】

文章目录

本系列校训本项目使用技术

上效果图phpStudy 设置导数据库项目目录如图:代码部分:主页

配套资源作业:

本系列校训

用免费公开视频,卷飞培训班哈人!打死不报班,赚钱靠狠干! 只要自己有电脑,前后项目都能搞!N年苦学无人问,一朝成名天下知!

本项目使用技术

PHP无类PHP类写法ThinkPHP框架其它框架*

环境

PHP版本mysql版本运行工具编辑工具5.4.45+Apache5.5(phpstudy自带)phpstudy2018VSCode

上效果图

在php 当中,上传图片,上传照片这种小功能还是挺方便的。注意没有登陆 所以,在线相册这个小项目还是有一定的价值的。比如某宝(好象人家不会用这么LOW的)那就作业吧

修改了代码,可以搜索了。

phpStudy 设置

网站目录,不能有中文或空格,就乖乖的用C语言能识别的变量名

导数据库

打开mysql-front 或navicat 注意:数据库名:email 超级用户:root 密码:123456 运行本例附件即可。最后导入数据库成功的截图如下:

项目目录如图:

颜色主题:

代码部分:

主页

require './common/init.php';

// 接收参数

$id = input('get', 'id', 'd');

$sort = input('get', 'sort', 's');

$action = input('post', 'action', 's');

// 判断相册是否存在

if ($id && !album_data($id)) {

exit('相册不存在!');

}

// 新建相册

if ($action == 'new') {

album_new($id, input('post', 'name', 's'));

}

// 上传图片

elseif ($action == 'upload') {

album_upload($id, input($_FILES, 'upload', 'a'));

}

// 删除相册

elseif ($action == 'delete') {

album_delete(input('post', 'action_id', 'd'));

}

// 设为封面

elseif ($action == 'pic_cover') {

album_picture_cover(input('post', 'action_id', 'd'), $id);

}

// 删除图片

elseif ($action == 'pic_delete') {

album_picture_delete(input('post', 'action_id', 'd'));

}

// 查询相册名称作为网页标题

$title = album_data($id)['name'] ?: '首页';

// 查询导航栏

$nav = album_nav($id);

// 查询相册列表

$list = album_list($id, $sort);

// 载入模板

require './view/index.html';

主页的html

<?=htmlspecialchars($title)?> - 在线相册

该相册为空。

相册

开发语言 项目实例 PHP在线相册--【白嫖项目】  第1张">

()

开发语言 项目实例 PHP在线相册--【白嫖项目】  第2张">

后台关键逻辑代码:

/**

* 查询相册记录(缓存查询结果)

* @param int $id 相册ID

* @return array 查询结果数组,不存在时返回false

*/

function album_data($id)

{

static $data = [0 => false];

if (!isset($data[$id])) {

$data[$id] = db_fetch_row("SELECT `pid`,`path`,`name`,`cover`,`total` FROM `album` WHERE `id`=$id") ?: false;

}

return $data[$id];

}

/**

* 查询相册层级导航

* @param int $id 相册ID

* @return array 查询结果数组,不存在时返回空数组

*/

function album_nav($id)

{

$path = preg_replace('/^0,/', '', (album_data($id)['path'] . $id));

return $path ? db_fetch_all("SELECT `id`,`name` FROM `album` WHERE `id` IN ($path) ORDER BY FIELD(`id`,$path)") : [];

}

/**

* 查询当前相册所有的子相册和图片

* @param int $id 相册ID

* @param string $sort 排序(new、old)

* @return array 查询结果数组

*/

function album_list($id, $sort)

{

$sort = ($sort == 'old') ? 'ASC' : 'DESC';

return [

'album' => db_fetch_all("SELECT `id`,`name`,`cover`,`total` FROM `album` WHERE `pid`=$id ORDER BY `id` $sort"),

'picture' => db_fetch_all("SELECT `id`,`name`,`save` FROM `picture` WHERE `pid`=$id ORDER BY `id` $sort")

];

}

/**

* 创建相册

* @param int $pid 新相册的上级目录ID

* @param string $name 新相册的名称

*/

function album_new($pid, $name)

{

$data = album_data($pid);

if (substr_count($data['path'], ',') >= config('LEVEL_MAX')) {

return tips('无法继续创建子目录,已经达到最多层级!');

}

/* if (!preg_match('/^\w{1,12}$/', $name)) {

return tips('无法创建相册,只允许1~12位字母、数字、下划线组成。');

} */

$name = mb_strimwidth(trim($name), 0, 12);

db_exec('INSERT INTO `album` (`pid`,`path`,`name`) VALUES (?,?,?)', 'iss', [

$pid, ($data['path'] . $pid . ','), ($name ?: '未命名')

]);

}

/**

* 上传图片

* @param int $pid 图片所属的相册ID

* @param array $file 上传文件 $_FILES['xx'] 数组

*/

function album_upload($pid, $file)

{

// 检查文件是否上传成功

if (true !== ($error = upload_check($file))) {

return tips("文件上传失败:$error");

}

// 检查文件类型是否正确

$ext = pathinfo($file['name'], PATHINFO_EXTENSION);

if (!in_array(strtolower($ext), config('ALLOW_EXT'))) {

return tips('文件上传失败:只允许扩展名:' . implode(', ', config('ALLOW_EXT')));

}

// 生成文件名和保存路径

$new_dir = date('Y-m/d'); // 生成子目录

$new_name = md5(microtime(true)) . ".$ext"; // 生成文件名

// 创建原图保存目录

$upload_dir = "./uploads/$new_dir";

if (!is_dir($upload_dir) && !mkdir($upload_dir, 0777, true)) {

return tips('文件上传失败:无法创建保存目录!');

}

// 创建缩略图保存目录

$thumb_dir = "./thumbs/$new_dir";

if (!is_dir($thumb_dir) && !mkdir($thumb_dir, 0777, true)) {

return tips('文件上传失败:无法创建缩略图保存目录!');

}

// 保存上传文件

if (!move_uploaded_file($file['tmp_name'], "$upload_dir/$new_name")) {

return tips('文件上传失败:无法保存文件!');

}

// 创建缩略图

thumb("$upload_dir/$new_name", "$thumb_dir/$new_name", config('THUMB_SIZE'));

// 保存到数据库

$name = mb_strimwidth(trim(pathinfo($file['name'], PATHINFO_FILENAME)), 0, 80);

db_exec('INSERT INTO `picture` (`pid`,`name`,`save`) VALUES (?,?,?)', 'iss', [$pid, $name, "$new_dir/$new_name"]);

$pid && album_total($pid, '+1');

}

/**

* 修改相册的total字段

* @param int $id 相册ID

* @param string $method 操作(+1、-1)

*/

function album_total($id, $method = '+1')

{

$path = preg_replace('/^0,/', '', (album_data($id)['path'] . $id));

$path && db_exec("UPDATE `album` SET `total`=`total`$method WHERE `id` IN ($path)");

}

/**

* 删除相册

* @param int $id 相册ID

*/

function album_delete($id)

{

$data = album_data($id);

if ($data['total'] > 0) {

return tips('删除失败:只能删除空相册!');

}

if (db_fetch_row("SELECT 1 FROM `album` WHERE `pid`=$id")) {

return tips('删除失败:该相册含有子相册!');

}

db_exec("DELETE FROM `album` WHERE `id`=$id");

$data['cover'] && is_file("./covers/{$data['cover']}") && unlink("./covers/{$data['cover']}");

}

/**

* 查询图片记录

* @param int $id 图片ID

* @return array 查询结果数组,不存在时返回null

*/

function album_picture_data($id)

{

return db_fetch_row("SELECT `pid`,`name`,`save` FROM `picture` WHERE `id`=$id");

}

/**

* 设置图片为相册封面

* @param int $id 图片ID

* @param int $pid 相册ID

*/

function album_picture_cover($id, $pid)

{

if (!$data = album_picture_data($id)) {

return tips('设置失败:图片不存在!');

}

$cover_dir = './covers/' . dirname($data['save']);

if (!is_dir($cover_dir) && !mkdir($cover_dir, 0777, true)) {

return tips('设置失败:无法创建封面图保存目录!');

}

$cover_del = album_data($pid)['cover'];

is_file("./covers/$cover_del") && unlink("./covers/$cover_del");

copy("./thumbs/{$data['save']}", "./covers/{$data['save']}");

db_exec("UPDATE `album` SET `cover`=? WHERE `id`=?", 'si', [$data['save'], $pid]);

tips('设置成功!');

}

/**

* 删除图片

* @param int $id 图片ID

*/

function album_picture_delete($id)

{

if (!$data = album_picture_data($id)) {

return tips('删除失败:图片不存在!');

}

db_exec("DELETE FROM `picture` WHERE `id`=$id");

is_file("./thumbs/{$data['save']}") && unlink("./thumbs/{$data['save']}");

is_file("./uploads/{$data['save']}") && unlink("./uploads/{$data['save']}");

$data['pid'] && album_total($data['pid'], '-1');

}

配套资源

PHP在线相册-强撸项目 https://download.csdn.net/download/dearmite/88084818

作业:

PHP在线相册,美化前台页面

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: