文档章节

开源一个企业官网

杭城小刘
 杭城小刘
发布于 01/26 15:46
字数 1069
阅读 19
收藏 4
点赞 0
评论 0

Company-Website

Build status Gitter

企业官方网站Pro版

特色

  • :gem: 响应式布局: 使用了BootStarp作为UI基础
  • :triangular_ruler: 跨平台: PHP作为后端开发语言
  • :rocket: 安全: PDO、关键信息配合数据加密操作
  • :iphone: 响应式布局: 使用了BootStarp作为UI基础
  • :art: UI美观大方: 自己设计的UI,简洁大方
  • :globe_with_meridians: 前后端分离: 前后端分离,前端通过接口访问并处理数据
  • :gear: REST风格的API: 自己基于PDO封装的数据库操作类以及数据处理类,方便滴制作出REST风格的API

封装代码

//数据操作
 <?php
//header('content-type:text/html;charset=utf-8');
class PdoMySQL{
	public static $config=array();//设置连接参数,配置信息
	public static $link=null;//保存连接标识符
	public static $pconnect=false;//是否开启长连接
	public static $dbVersion=null;//保存数据库版本
	public static $connected=false;//是否连接成功
	public static $PDOStatement=null;//保存PDOStatement对象
	public static $queryStr=null;//保存最后执行的操作
	public static $error=null;//报错错误信息
	public static $lastInsertId=null;//保存上一步插入操作产生AUTO_INCREMENT
	public static $numRows=0;//上一步操作产生受影响的记录的条数
	/**
	 * 连接PDO
	 * @param string $dbConfig
	 * @return boolean
	 */
	public function __construct($dbConfig=''){
		if(!class_exists("PDO")){
			self::throw_exception('不支持PDO,请先开启');
		}
		if(!is_array($dbConfig)){
			$dbConfig=array(
					'hostname'=>DB_HOST,
					'username'=>DB_USER,
					'password'=>DB_PWD,
					'database'=>DB_NAME,
					'hostport'=>DB_PORT,
					'dbms'=>DB_TYPE,
					'dsn'=>DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME
			);
		}
		if(empty($dbConfig['hostname']))self::throw_exception('没有定义数据库配置,请先定义');
		self::$config=$dbConfig;
		if(empty(self::$config['params']))self::$config['params']=array();
		if(!isset(self::$link)){
			$configs=self::$config;
			if(self::$pconnect){
				//开启长连接,添加到配置数组中
				$configs['params'][constant("PDO::ATTR_PERSISTENT")]=true;
			}
			try{
				self::$link=new PDO($configs['dsn'],$configs['username'],$configs['password'],$configs['params']);
			}catch(PDOException $e){
				self::throw_exception($e->getMessage());
			}
			if(!self::$link){
				self::throw_exception('PDO连接错误');
				return false;
			}
			self::$link->exec('SET NAMES '.DB_CHARSET);
			self::$dbVersion=self::$link->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));
			self::$connected=true;
			unset($configs);
		}
	}

	/**
	 * 得到所有记录
	 * @param string $sql
	 * @return unknown
	 */
	public static function getAll($sql=null){
		if($sql!=null){
			self::query($sql);
		}
		$result=self::$PDOStatement->fetchAll(constant("PDO::FETCH_ASSOC"));
		return $result;
	}
	/**
	 * 得到结果集中的一条记录
	 * @param string $sql
	 * @return mixed
	 */
	public static function getRow($sql=null){
		if($sql!=null){
			self::query($sql);
		}
		$result=self::$PDOStatement->fetch(constant("PDO::FETCH_ASSOC"));
		return $result;
	}
	/**
	 * 根据主键查找记录
	 * @param string $tabName
	 * @param int $priId
	 * @param string $fields
	 * @return mixed
	 */
	public static function findById($tabName,$priId,$fields='*'){
		$sql='SELECT %s FROM %s WHERE id=%d';
		return self::getRow(sprintf($sql,self::parseFields($fields),$tabName,$priId));
	}
  ...
  
  //接口制作
  <?php

class Response {
    const JSON = "json";
    /**
     * 按综合方式输出通信数据
     * @param integer $code 状态码
     * @param string $message 提示信息
     * @param array $data 数据
     * @param string $type 数据类型
     * return string
     */
    public static function show($code, $message = '', $data = array(), $type = self::JSON) {
        if(!is_numeric($code)) {
            return '';
        }
        //$type = isset($_GET['format']) ? $_GET['format'] : self::JSON;
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data,
        );

        if($type == 'json') {
            self::json($code, $message, $data);
            exit;
        } elseif($type == 'array') {
            var_dump($result);
        } elseif($type == 'xml') {
            self::xmlEncode($code, $message, $data);
            exit;
        } else {
            // TODO
        }
    }
    /**
     * 按json方式输出通信数据
     * @param integer $code 状态码
     * @param string $message 提示信息
     * @param array $data 数据
     * return string
     */
    public static function json($code, $message = '', $data = array()) {

        if(!is_numeric($code)) {
            return '';
        }

        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data
        );

        echo json_encode($result);
        exit;
    }

    /**
     * 按xml方式输出通信数据
     * @param integer $code 状态码
     * @param string $message 提示信息
     * @param array $data 数据
     * return string
     */
    public static function xmlEncode($code, $message, $data = array()) {
        if(!is_numeric($code)) {
            return '';
        }

        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data,
        );

        header("Content-Type:text/xml");
        $xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
        $xml .= "<root>\n";

        $xml .= self::xmlToEncode($result);

        $xml .= "</root>";
        echo $xml;
    }

    public static function xmlToEncode($data) {

        $xml = $attr = "";
        foreach($data as $key => $value) {
            if(is_numeric($key)) {
                $attr = " id='{$key}'";
                $key = "item";
            }
            $xml .= "<{$key}{$attr}>";
            $xml .= is_array($value) ? self::xmlToEncode($value) : $value;
            $xml .= "</{$key}>\n";
        }
        return $xml;
    }
}
?>

使用

1、下载或者clone工程到本地
2、修改数据库配置文件 config.php 
3、新建数据库 **db_cro**
4、将数据表导入并执行
5、预览查看效果并修改成自己需要的版本

主要功能

1、用户注册,填写邮箱 -> 登录邮箱点击链接激活账号 -> 登录
2、查看官网信息。具备多设备适配、图片预览
3、查看产品,根据不同检索条件查找,下单
4、完善收货地址
5、查看订单
6、公司招聘信息、FQA、位置、公司新闻、行业新闻、联系我们等诸多功能

演示视频

演示视频

联系

<h1>如果觉得项目对你有帮助,请给个star。虽然开源,但是用于商业用途请联系本人,否则承担相应的责任</h1>

© 著作权归作者所有

共有 人打赏支持
杭城小刘
粉丝 14
博文 108
码字总数 47960
作品 0
杭州
iOS工程师
2014 年中国开源优秀项目获奖

开源中国开源世界"高峰论坛(简称"论坛")每年6月由中国开源软件推进联盟(COPU)主办自2006年起,已成功举办八届,是我国开源界一年一度的盛 会,影响 深远,受到国内外开源组织、人士的高度...

965huahu ⋅ 2014/06/30 ⋅ 76

2015 年度新增开源软件排名 TOP 100

本榜单包含 2015 年开源中国新收录的 5977 款开源软件中,根据软件本身的关注度、活跃程度进行排名前 100 名的软件。从这份榜单中或许可以了解到最新业界的趋势。 1、SwitchyOmega 项目简介:...

oschina ⋅ 2016/01/12 ⋅ 48

Canonical和Zentyal基于Ubuntu Advantage进行合作

Canonical公司今天宣布了一个新的合作伙伴Zentyal 公司,两者将基于Ubuntu Advantage进行业务合作。 Zentyal是一个开源(GPL)的统一网络服务器(平台),运行在Ubuntu之上,整合了众多开源软件,...

AndroidMe ⋅ 2011/11/10 ⋅ 0

开源协同系统『然之』1.0 beta 发布!

历时半年开发,凝聚了禅道小伙伴们无数心血的『然之』系统于2014年5月3日正式发布啦!然之协同系统是一款面向中小企业的协同办公系统,它内置了客户管理、销售跟踪、日常办公、企业门户等功能...

开源春哥 ⋅ 2014/05/04 ⋅ 55

转帖:DotNet 资源大全中文版

(注:下面用 [$] 标注的表示收费工具,但部分收费工具针对开源软件的开发/部署/托管是免费的) API 框架 NancyFx:轻量、用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及...

李朝强 ⋅ 2016/11/08 ⋅ 0

开发者必备:基于 Linux 生态的十大AI开源框架盘

本文将从开发者的角度出发,特别是针对开发者中为数众多的Linux系统和Mac系统用户,奉上一篇针对泛Linux生态的顶级人工智能开源工具盘点(当然,有些工具也并非只兼容Linux)。 1. Deeplearn...

两味真火 ⋅ 2017/01/15 ⋅ 6

国内一些值得推荐的免费CMS建站系统

CMS(网站内容管理系统)已经成为互联网中重要的组成部分。CMS可以应用于企业网站、政府机关、教育机构、媒体机构、个人站长等不同领域,还可以很方便的制作新闻网站、软件下载、图像动画、在...

炒蚕豆吃蹦豆 ⋅ 2014/02/20 ⋅ 10

MoMoCMS_4.4.7 发布,2015 新年全面开源

MoMoCMS 是一个快速企业建站系统,根据自己对企业站点的认知和对优秀源码的结构分析数月开发而成。 2015新年全面开源系统,让用户思维不受定势,感受到别样的企业站建站风格 整个系统分为电脑...

YouYaX开发者 ⋅ 2015/01/04 ⋅ 90

DotNet 资源大全中文版(Awesome最新版)

目录 API 应用框架(Application Frameworks) 应用模板(Application Templates) 人工智能(Artificial Intelligence) 程序集处理(Assembly Manipulation) 资源(Assets) 认证和授权(...

李朝强 ⋅ 2016/09/20 ⋅ 0

2017年最具潜力的前端开源项目Top20

1.Bootstrap 作者:Twitter 官网:http://getbootstrap.com/ Github:https://github.com/twbs/bootstrap Star:10W+ 最近更新:4.0.0-alpha.5(2016.10.19) 介绍:作为老牌的前端框架,Bootstrap......

945996501 ⋅ 2017/01/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Mahout推荐算法之SlopOne

一、 算法原理 有别于基于用户的协同过滤和基于item的协同过滤,SlopeOne采用简单的线性模型估计用户对item的评分。如下图,估计UserB对ItemJ的偏好 图(1) 在真实情况下,该方法有如下几个...

xiaomin0322 ⋅ 30分钟前 ⋅ 0

LVM讲解

LVM是什么 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地...

李超小牛子 ⋅ 39分钟前 ⋅ 0

mysql更改密码、连接mysql、mysql常用命令

1. 更改mysql的root账户密码: mysql中root账户和系统root不是一个账户 1.1 更改环境变量PATH,增加mysql绝对路径 由于mysql安装目录为/usr/local/mysql/,所以系统不能直接使用mysql,需把/...

laoba ⋅ 40分钟前 ⋅ 0

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP、电商系统等软件开发,商标、商品LOGO、VI、产品包装设计、营销推广、大数据人...

猫耳m ⋅ 40分钟前 ⋅ 0

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP、电商系统等软件开发,商标、商品LOGO、VI、产品包装设计、营销推广、大数据人...

阿里云云栖社区 ⋅ 44分钟前 ⋅ 0

1.03-Maven中使用ueditor富文本编辑器

起因:在maven仓库未找到百度的ueditor的jar包 操作: 1.下载百度的ueditor的jar包 2.打开命令行,切换到ueditor的下载位置,运行一下命令: mvn install:install-file -Dfile=ueditor-1.1....

静以修身2025 ⋅ 49分钟前 ⋅ 0

几道Spring 面试题

1、BeanFactory 接口和 ApplicationContext 接口有什么区别? ApplicationContext 接口继承BeanFactory接口 Spring核心工厂是BeanFactory BeanFactory采取延迟加载,第一次getBean时才会初始...

职业搬砖20年 ⋅ 59分钟前 ⋅ 0

包饺子

http://storage.slide.news.sina.com.cn/slidenews/77_ori/2018_24/74766_826131_625489.gif

霜叶情 ⋅ 今天 ⋅ 0

xml解析

方法一: String s_xml1 = "<xml>" + "<head>lalalalal</head>" + "<body>1234</body>" + "</xml>"; try { DocumentBuilderFactory documentBuilderFactory......

GithubXD ⋅ 今天 ⋅ 0

reuse stream

Although Java streams were designed to be operated only once, programmers still ask how to reuse a stream. From a simple web search, we can find many posts with this same issue ......

idoz ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部