一、源码简介

一套纯手写原生的PHP网站管理后台,前端利用LayUI实现,实现PHP初学者专研学习使用,对于PHP学习的人,只有熟悉了原生的PHP开发,才适合利用其它框架搭建自己的网站平台。封城期间,百无聊赖,于是利用PHP8手写了一套原生的管理系统,以供新手学习参考使用。同时,利用nodejs也写了一套,两套共用一个数据库。功能和操作界面基本一样。

本系统最大的难点一是安全策略,另一个就是递归分类的算法,要实现的功能有很多,有的是列出出树形结构,有时候需要根据子ID查询父级,有时候,需要父ID查询所有子级,还有根据子级查询兄弟级等很多算法,研究了很久。大概经历了两月左右,其间还有其它事情要做,陆陆续续将所有的问题一一解决,最后,终于出了第一版。还有第二版,第三版,不断在改进中。另外,还写了一个NODEJS版本。方便不同的用户需要。

后台登录界面

二、部分代码演示

这是简单的登录管理后台界面,登录后,登录代码很简单,即可进入管理首页。

session_start();
	include("../inc/sql.php");
	//登录页专用防SQL注册函数
	function str_check( $value ) { 
	    if(!get_magic_quotes_gpc()) { 
	        // 进行过滤 
	        $value = addslashes($value); 
	    }
	    $value = str_replace("'", "\'", $value); 
	    $value = str_replace("-", "——", $value); 
	    $value = str_replace("%", "\%", $value); 
	    return $value; 
	} 

	if (isset($_GET['action']) && $_GET['action'] == 'logout' ) {
		setcookie('id','',time()-3600);
		setcookie('account','',time()-3600);
		session_destroy();
		header('location:login.php');
	}
	if(trim($_COOKIE['id']) and trim($_SESSION['account'])) {
		echo '<script>window.location.href="home.php";</script>';
    	return false;
	}
	if(!empty($_POST)){
		if ($_POST['vcode'] !== $_SESSION["vcode"]) {
			echo '<script>window.alert("验证码不正确");history.back();</script>';
	    	return false;
		}
		
		if(empty($_POST['account'])){
			echo '<script>window.alert("请输入账号");history.back();</script>';
	    	return false;
		}
		if(empty($_POST['password'])){
			echo '<script>window.alert("请输入密码");history.back();</script>';
	    	return false;
		}
		
		$stmt = $pdo->prepare('SELECT * From admin WHERE `account`="'.str_check($_POST['account']).'"');
	    $stmt->execute();
	    $admin = $stmt->fetchAll();
	    if(empty($admin)){
	    	echo '<script>window.alert("账号不存在");history.back();</script>';
	    	return false;
	    }
		$find = $admin[0];
		/*--------------------*/

		/*--------------------*/
	    if($find['password'] != md5($_POST['password'])){
	    	echo '<script>window.alert("密码不正确");history.back();</script>';
	    	return false;
	    }

	    setcookie('id',$find['id']);
		setcookie('account',$find['account']);
		$_SESSION['account'] = $find['account'];
	    echo '<script>window.alert("登录成功");window.location.href="home.php";</script>';
	    return false;
    }

三、运行截图

​​​​​​​

 登录后主页 

文章列表管理界面 

 

分类列表管理界面 

分类添加界面 

 

新闻发布界面 

产品发布界面 

友情链接列表管理 

前端读产端读取数据展示 

先从数据库中获取到数据,构建树型分组,然后,构建导航,再利用JQ实现多级的显示。

function getTreeMenu($data , $pId =0) {
	$tree = [];
	foreach ( $data as $k => $v ) {
		if ( $v['pid'] == $pId ){
			//父亲找到儿子
			$v['children'] = getTreeMenu ( $data ,  $v['id']);
			$tree[] = $v ;
			//unset($data[$k]);
		}
	}
	return $tree ;
}
//$tree  = getTree( $data , 0);
//构建导航,需要这套系统的朋友可以寇寇 190151304
function buildMenu($menuArray) { 
    foreach ($menuArray as $node) {
    	if(empty($node['links'])) {
			$links = 'list.php?id='.$node['id'];
		}else{
			$links = $node['links']; 
		}
		if ($node['isblank'] == '1') {
			$blank = ' target="_blank"';
		}
	    echo '<li><a href="'.$links.'" '.$blank.'>' . $node['name'] . '</a>'; 
		    if (!empty($node['children'])) { 
			    echo '<ul>'; 
			    buildMenu($node['children']); 
			    echo '</ul>'; 
		    } 
	    echo '</li>'; 
    } 
}
<nav class="main-navigation">
    <ul class="nav-menu d-flex">
	<?php
		$stmt = $pdo->prepare('SELECT * FROM class WHERE isnav="1" ORDER BY sort,id ASC');
	    $stmt->execute();
	    $menu = $stmt->fetchAll();
	    $nav_arr = getTreeMenu($menu);
	    //print_r($nav_arr) ;
	?>
		<li><a href="index.php">首页</a></li>
		<?php echo buildMenu($nav_arr);	?>
    </ul>
</nav>
<script>
	$(function(){
		$('.nav-menu li').hover(function(){
			$(this).children('ul').stop(true).slideDown();
		},function(){
			$(this).children('ul').stop(true).slideUp();
		})
	});
</script>

 对于大神来说,这些技术都是弱鸡,但是对于初学者来说,很难的。每一步的实现都是经过耗费了无数脑细胞才能完成的。

经过两个多月的努力,第一版终于完成了,而且还给很多客户应用了很多次,没有任何错误。只是在实践中,发现很多不完美的地方,于是又更新为第二版。后来,又参考很多CMS的做法,现在已经正在完善第三版。

初学者有一套参考的完整的代码,是一件非常幸运的事情,可以省去很多查找资料的麻烦。代码拿来就用,或者直接在原基础上完善修改,完全可以实现一套全新的自己开发的独立系统。

需要获取源码的朋友请关注VX公众号:比特网络服务

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐