通信人家园

标题: PHP+SQL2008组建ONT自动开通系统  [查看完整版帖子] [打印本页]

时间:  2013-7-23 15:09
作者: hylin     标题: PHP+SQL2008组建ONT自动开通系统

测试帖,潜水多年,冒泡一下


时间:  2013-7-23 15:17
作者: hylin

没想到多年不用的号竟然还能发帖,开8.
本人小地市网络中心,搞网络综合维护,就是人太少,传输交换疏通电源一起让人抓狂的专业,多少接触点通信设备,前两年单位上来不少华为中兴的GPON设备,因人员太少,手动维护让人疲于奔命,想想还是开发点小软件吧。当时懂点VB,也是只负责室内,琢磨了个用VB连接OLT开通的东东,很简单的SOCKET连接设备23端口,发送点命令。
时间:  2013-7-23 15:27
作者: hylin

VB连接通信交换机设置比较简单,当时把用户资料先固定格式,比如用户名、SN、QINQVlan和子VLAN复制后粘贴进VB窗口的输入框内,点击开通后自动向OLT内灌数据,还减少了点工作量,后来随着用户发展逐渐增多,分光器的帐不好搞,一塌糊涂,寻思还是做个系统好,搞个小OA一类的东西,连分光器的管理也搞进来。每添加一个设备都在拓扑上体现出来。
时间:  2013-7-23 15:33
作者: hylin

寻摸了段时间,感觉VB实现这功能不很顺手,首先电脑都要下载程序还有插件,还是网页版的用着顺手,做网站的语言该学那个好点,又蛋疼了好久,选了PHP。听说这速度快,代码开源,学习不花钱,貌似很好的东东啊,一步步来,学会了搭建服务器,装mysql,echo "hello world",离做系统还挺远的,慢慢啃吧
时间:  2013-7-23 15:40
作者: hylin

php看的是张恩民老师的视频,将的还挺细,到现在也没看完,一激动从TB上买了本PHP的书,70大洋~开始投资了。。单单PHP肯定不行,学着学着就没劲了,从数据库echo到前台少不了html和css,又跑w3c里啃了点皮毛,还是不够,js看来张孝祥老师的视频,可那视频实在太模糊了,看的人直流泪。
时间:  2013-7-23 17:18
作者: hylin

为张孝祥老师流泪是必须的,何况本人区区菜鸟,每次看张老师的视频都如朝鲜人民见了三胖一样,不过人家是民族的,咱这的确确是真心的惋惜。
说了本人是个菜鸟,开始正式唠叨下一个小页面的架构吧,大家多多拍砖!
架构大致如下图: 架构

apache也需要限制些IP访问
<Directory "/var/www">
Options All
AllowOverride None
Order Deny,Allow
Deny From all
Allow From 本网网段如11.22.1.0/24
</Directory>

附件: [架构] web.jpg (2013-7-23 17:18, 30.26 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=MjE2MjUyfDc2Nzg4ZWY3fDE3MzE5OTA2OTl8MHww
时间:  2013-7-23 17:32
作者: hylin

可能外网访问是为了让员工能随时随地工作,有大侠说WEB服务器上对外只留80端口开放,也照做了,对内WEB服务器上只留页面的数据库,正经的有关OLT或交换机信息的数据库放在存储服务器上,或许那样更安全点。毕竟运营商的东东,最主要的就是安全,菜鸟以为做些网络端口限制很有必要的,还有,从网上抄了些POST过滤代码,感觉很有用,防SQL注入的,某些知名的软件商卖给我们的软件竟然不做防SQL注入,数据库轻易暴露,也有点软件不设会话机制,不防伪POST,简直是万能的数据提取机,不过人家的公关能力是非常厉害的,骗钱没商量。防SQL注入如下:
function php_sava($str)
{     $farr = array(
        "/s+/",                                                                                          
        "/<(/?)(script|i?frame|style|html|body|title|link|meta|?|%)([^>]*?)>/isU",   
        "/(<[^>]*)on[a-zA-Z]+s*=([^>]*>)/isU",   );
   $tarr = array(
        " ",
        "<>",         
        "", );
$str = preg_replace( $farr,$tarr,$str);
   return $str; }
class sqlin
{function dowith_sql($str){
   $str = str_replace("and","",$str);
   $str = str_replace("execute","",$str);
   $str = str_replace("update","",$str);
   $str = str_replace("count","",$str);
   $str = str_replace("chr","",$str);
   $str = str_replace("mid","",$str);
   $str = str_replace("master","",$str);
   $str = str_replace("truncate","",$str);
   $str = str_replace("char","",$str);
   $str = str_replace("declare","",$str);
   $str = str_replace("select","",$str);
   $str = str_replace("create","",$str);
   $str = str_replace("delete","",$str);
   $str = str_replace("insert","",$str);
   $str = str_replace("meta","",$str);
   $str = str_replace("'","‘",$str);
   $str = str_replace("\"","“",$str);
   $str = str_replace(" ","&nbsp",$str);
   $str = str_replace("or","",$str);
   $str = str_replace("=","=",$str);
   $str = str_replace("%20","",$str);
   return $str;}
function sqlin()
{   foreach ($_GET as $key=>$value)
   {       $_GET[$key]=$this->dowith_sql($value);   }
   foreach ($_POST as $key=>$value)
   {       $_POST[$key]=$this->dowith_sql($value);   }}}
$dbsql=new sqlin();

时间:  2013-7-23 17:36
作者: hylin

当然还要让服务器每个页面都有会话认证,并根据HTTP报文内容看是否直接连接,代码如下:
session_start();
if(!isset($_SESSION['u_name']) || $_SESSION['is_on'] != 1)
        echo "<script>alert('您无权访问');location='../index.php';</script>";
if($_SERVER['HTTP_REFERER'] == "")
        echo "<script>alert('本系统不允许从地址栏访问');location='index.php';</script>";

其他安全措施真不知道了,菜鸟在此向各位讨教!
时间:  2013-7-23 17:45
作者: hylin

开始时想用php_mysql架构,一方面mysql备份大文件效果不如sql,一方面mysql在插入部分汉字时数据库不支持,在这方面观察SQL还少强点,找了个盗版的2008,设置维护任务自动备份很爽,可php版本也跟着下去了,选了php5.3.8(不支持HTTP报文中的HTTP_REFERER,郁闷),据说5.4以上的不对接SQL了。
如果大家开发,一定要做一个数据库连接的类,菜鸟从mysql向sql转换时,费死了劲。。特别强调的是,本人在WIN2003服务器上安装PHP5.3.8,安装时错误多多,一定要看事件管理器和APACHE错误,以及IE或CHROME开发工具,并在PHP页面将所有错误ECHO出来,很起作用的,不得不说老外非常牛B,点点滴滴细致入微的错误都给分析的很透彻,并指定解决方法。

时间:  2013-7-23 17:54
作者: hylin

计划系统后台分部门管理、员工管理、权限管理和系统管理四部分,在其中对各分项进行增加删除修改:
1、php配置数据库连接代码,
<?php
$db_host='主机名\实例名,端口';
$db_user='用户名';
$db_pwd='密码';
$db_name='数据库名可以不写';
?>
连接代码
<?php
include "../../conn/config.php";
$connectionInfo = array("UID"=>$db_user, "PWD"=>$db_pwd, "Database"=>$db_name);
$conn = sqlsrv_connect( $db_host, $connectionInfo);
if( $conn == false)
{
echo "起始连接数据库失败!";
}
?>
时间:  2013-7-23 18:08
作者: hylin

本帖最后由 hylin 于 2013-7-23 18:13 编辑

USE [oa_sys]
GO
/****** Object:  Table [dbo].[tb_users]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_users](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [u_user] [varchar](50) NULL,
        [u_pwd] [varchar](50) NULL,
        [u_name] [varchar](50) NULL,
        [u_sex] [char](10) NULL,
        [u_regdate] [date] NULL,
        [u_address] [varchar](50) NULL,
        [u_tel] [varchar](50) NULL,
        [u_email] [varchar](50) NULL,
        [u_depart] [varchar](50) NULL,
        [is_on] [int] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[tb_spliter]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_spliter](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [spliter_name] [varchar](50) NULL,
        [spliter_city] [varchar](50) NULL,
        [up_spliter] [int] NULL,
        [p_name] [varchar](50) NULL,
        [i_state] [int] NULL,
        [complet_date] [date] NULL,
        [relate_depart] [varchar](50) NULL,
        [up_lever] [int] NULL,
        [cell_name] [varchar](50) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[tb_sortlist]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_sortlist](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [sort] [varchar](100) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[tb_lyb]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_lyb](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [l_title] [varchar](50) NULL,
        [l_content] [text] NULL,
        [l_time] [datetime] NULL,
        [l_city] [varchar](50) NULL,
        [r_backid] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[tb_list]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_list](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [f_name] [varchar](50) NULL,
        [f_type] [varchar](50) NULL,
        [o_url] [varchar](50) NULL,
        [o_group] [varchar](200) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[tb_group]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_group](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [u_group] [varchar](50) NULL,
        [u_member] [text] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[tb_ftth]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_ftth](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [olt_ip] [varchar](20) NULL,
        [au_sn] [varchar](100) NULL,
        [olt_port] [varchar](10) NULL,
        [ont_id] [int] NULL,
        [user_vlan] [varchar](10) NULL,
        [sub_vlan] [int] NULL,
        [virtual_vlan] [varchar](50) NULL,
        [line_id] [varchar](15) NULL,
        [srv_id] [varchar](15) NULL,
        [gemport] [varchar](15) NULL,
        [ont_desc] [varchar](100) NULL,
        [spliter] [varchar](100) NULL,
        [depart] [varchar](50) NULL,
        [main_user] [varchar](50) NULL,
        [complete_date] [date] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[tb_depart]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tb_depart](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [d_name] [nchar](20) NOT NULL,
        [top_depart] [int] NULL,
        [up_depart] [int] NULL,
        [remark] [nchar](50) NULL
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[tb_controller]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_controller](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [manager] [varchar](50) NULL,
        [mana_pwd] [varchar](50) NULL,
        [purview] [int] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[tb_company]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_company](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [f_name] [varchar](50) NULL,
        [f_content] [text] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[tb_cell]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_cell](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [cell_name] [varchar](50) NOT NULL,
        [city_name] [varchar](50) NULL,
        [up_cell] [int] NULL,
        [p_name] [varchar](50) NULL,
        [istate] [int] NULL,
        [complete_date] [date] NULL,
        [relate] [varchar](50) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[tb_account]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tb_account](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [user_name] [varchar](150) NULL,
        [istae] [varchar](10) NULL,
        [user_cell] [varchar](150) NULL,
        [user_account] [varchar](20) NULL,
        [user_port] [varchar](250) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[Splitter_Info]    Script Date: 07/23/2013 18:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Splitter_Info](
        [id] [int] NOT NULL,
        [O_Cellname] [nvarchar](50) NULL,
        [OLT_Address] [nvarchar](50) NULL,
        [OLT_Port] [nvarchar](50) NULL,
        [F_Splitter] [nvarchar](50) NULL,
        [F_S_Port] [int] NULL,
        [S_Splitter] [nvarchar](50) NULL,
        [S_S_Port] [int] NULL,
        [City_Name] [nvarchar](50) NULL,
        [Description] [nvarchar](50) NULL
) ON [PRIMARY]
GO


时间:  2013-7-23 18:15
作者: hylin

USE [oa_sys]
GO
/****** Object:  Table [dbo].[Olt_Info]    Script Date: 07/23/2013 18:15:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Olt_Info](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [OLT_Office] [nvarchar](50) NULL,
        [OLT_Address] [nvarchar](50) NULL,
        [OLT_Type] [nvarchar](50) NULL,
        [OLT_Version] [nvarchar](50) NULL,
        [OLT_Username] [nvarchar](50) NULL,
        [OLT_Password] [nvarchar](50) NULL,
        [City_Name] [nvarchar](50) NULL
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[Cell_Info]    Script Date: 07/23/2013 18:15:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Cell_Info](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [O_Cellname] [nvarchar](50) NULL,
        [Qinq_Vlan] [nchar](10) NULL,
        [OLT_Address] [nvarchar](50) NULL,
        [City_Name] [nvarchar](50) NULL,
        [line_proid] [char](8) NULL,
        [srv_proid] [char](8) NULL,
        [gemport_id] [char](8) NULL,
        [F_Sub_Vlan] [char](8) NULL,
        [L_Sub_Vlan] [char](8) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

时间:  2013-7-23 19:23
作者: hylin

源代码如下:[attach]216275[/attach][attach]216274[/attach][attach]216273[/attach][attach]216272[/attach][attach]216271[/attach][attach]216270[/attach]
时间:  2013-7-23 20:02
作者: hylin

本帖最后由 hylin 于 2013-7-23 20:07 编辑

首页.jpg 查看ONT.jpg 新建局向.jpg 局向对应.jpg 新增1级分光.jpg olt维护.jpg 拓扑图开通.jpg 营业厅开通.jpg 网络拓扑.jpg

附件: 首页.jpg (2013-7-23 19:46, 117.45 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=MjE2Mjc3fDFkODA2N2MxfDE3MzE5OTA2OTl8MHww

附件: 查看ONT.jpg (2013-7-23 19:46, 117.44 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=MjE2Mjc4fGMzZWNhM2Q0fDE3MzE5OTA2OTl8MHww

附件: 新建局向.jpg (2013-7-23 19:46, 111.17 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=MjE2Mjc5fGExOWI1NGMzfDE3MzE5OTA2OTl8MHww

附件: 局向对应.jpg (2013-7-23 19:46, 130.26 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=MjE2MjgwfDgzMzliNWM5fDE3MzE5OTA2OTl8MHww

附件: 新增1级分光.jpg (2013-7-23 19:46, 111.06 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=MjE2MjgxfDk2N2YyNDEzfDE3MzE5OTA2OTl8MHww

附件: olt维护.jpg (2013-7-23 19:46, 51.28 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=MjE2MjgyfDIzNTYyY2MyfDE3MzE5OTA2OTl8MHww

附件: 拓扑图开通.jpg (2013-7-23 19:46, 108.57 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=MjE2MjgzfDAzMzU4YmI0fDE3MzE5OTA2OTl8MHww

附件: 营业厅开通.jpg (2013-7-23 19:46, 77.68 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=MjE2Mjg0fDlkYTFiNDQzfDE3MzE5OTA2OTl8MHww

附件: 网络拓扑.jpg (2013-7-23 19:46, 61.94 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=MjE2Mjg1fDYwMDg0Zjc5fDE3MzE5OTA2OTl8MHww
时间:  2013-7-23 20:05
作者: hylin

代码还有两部分,没法上传了,明日继续,拜求各位给提供好点的php制作拓扑图工具
时间:  2013-7-23 20:24
作者: wsy3258

高手,拜读了,期待中!!
时间:  2013-7-24 13:47
作者: hylin

本帖最后由 hylin 于 2013-7-25 23:13 编辑

dddddddddddddd
时间:  2013-7-24 13:50
作者: hylin

因本人实在菜鸟,里面几乎未涉及类代码,初学者非常容易看懂,连接通信交换机的就是fsockopen函数,望高手给予指点,拜谢大家~
时间:  2013-7-24 21:17
作者: hylin

数据库其实是两个数据库,从代码中可以看出来,大家自己改下即可,另外,因其他原因,引用函数中,inc文件夹下func和func1中,需要改下服务器名称,代码中服务器名称和密码等都没有设置为全局变量,所以在函数中需要重新你设定下
时间:  2013-7-24 21:20
作者: hylin

本帖最后由 hylin 于 2013-7-24 21:23 编辑

后台管理用的清雅苑oa,比较适合新手练习,CSS引用的老版的pageadminCSS,毕竟本人水平不高,部分JS代码没有开发,不过那没用,主要网页基本都是自己写的很低哇的ajax代码,很适合初学者一起讨论
时间:  2013-7-24 21:29
作者: hylin

环境搭建不用说,graphviz需要安装,数据库看代码建设俩,代码中可以看到,func中修改下数据库,,另外该网页注册页面没开发,自己用的也没必要开发,第2个数据库就就俩表,oltinfo和cellinfo, ueeditor基本没用,jpgraph没开发,不很懂,望大家改进后跟帖发上来,一起完善,拜托了。
时间:  2013-7-26 09:20
作者: 飞象过河

高人啊!能做这个出来很不容易了!
时间:  2013-7-27 02:00
作者: puding

建议楼主直接奔去c#了

时间:  2013-7-31 15:53
作者: 飞象过河

楼主强人啊,佩服!
时间:  2013-10-1 11:10
作者: 飞象过河

楼主给回个信啊!你是多长时间不上了!唉!
时间:  2013-10-30 21:40
作者: laohao

好东西呀,我也想学习做一个呢
时间:  2014-9-22 09:47
作者: createelement

正好需要参考这方面的资料,非常感谢您的分享!
时间:  2014-9-22 09:49
作者: createelement

看看,如果简单的话,我加上个snmp管理,就能看到设备实时信息了
时间:  2014-9-22 13:45
作者: createelement

rar附件不全,没法解压~~~
时间:  2015-6-3 15:29
作者: Anneyu


时间:  2015-6-3 15:35
作者: Anneyu


时间:  2015-12-13 15:20
作者: alpinist2004

正想学下PHP 谢谢





通信人家园 (https://www.txrjy.com/) Powered by C114