IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> OSSIM项目研究记录(十二) -> 正文阅读

[PHP知识库]OSSIM项目研究记录(十二)

2021SC@SDUSC


前言

在分析这个项目的源码时,我对php还不太了解,所以先了学习一些基础知识,然后根据代码自行理解遇到具体问题再去查阅。

PHP 是 PHP Hypertext Preprocessor(超文本与处理器)的首字母缩写。
PHP有多种用途,特别是web网站开发。快速,灵活,实用使得php能够更好的开发任何网站。
PHP 是一种 HTML 嵌入式的脚本语言。php文件以.php结尾。它的很多语法来自 C,Java 和 Perl,并具有几个 PHP 独有的特点。该语言的主要目标是让 Web 开发人员快速地书写动态生成的网页。
几个基本常识:

  • 指令分隔符 “;”
  • 输出语句:echo() 、 print()、 print_r()、var_dump()
  • 变量是弱类型的,即不需要实现声明类型、unset()函数释放指定的变量
  • 变量以$ 开始,常量不能加$
  • 脚本以<?php开始 ,以 ?>结束
  • 注释 // /* … */

一、php部分

<?php
require_once 'av_init.php';

Session::logcheck("configuration-menu", "PolicyActions");

// load column layout
require_once '../conf/layout.php';

$category    = "policy";
$name_layout = "actions_layout";
$layout      = load_layout($name_layout, $category);

?>

1、require_once()是php文件中作用是引入,此行为和require()语句类似,但区别是如果该文件中的代码已经被包含了,则不会再次包含。
2、Session::logcheck检查登录用户的访问权限
3、load_layout加载页面

二、html部分

2.1、head部分

1)

<title> <?php echo gettext("OSSIM Framework"); ?> </title>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    	<meta http-equiv="Pragma" content="no-cache"/>
    	<meta http-equiv="X-UA-Compatible" content="IE=7" />
    	
    	<link rel="stylesheet" type="text/css" href="../style/av_common.css?t=<?php echo Util::get_css_id() ?>"/>
    	<link rel="stylesheet" type="text/css" href="../style/flexigrid.css"/>
    	
    	<script type="text/javascript" src="../js/jquery.min.js"></script>
    	<script type="text/javascript" src="../js/jquery.flexigrid.js"></script>
    	<script type="text/javascript" src="../js/urlencode.js"></script>
  • meta中的http-equiv="X-UA-Compatible"是针对IE8新加的一个设置,避免制作出的页面在IE8下面出现错误,将IE8使用IE7进行渲染。其余的信息,可以参考meta的使用文档。
  • link和script都是在引入.css文件和.js文件

2)style部分是页面渲染的内容,我对此进行略过,重点分析script部分。
scipt部分有五个function,分别对应五个不同功能

            function menu_action(com,id,fg,fp) 
            {
                if (com=='modify') 
                {
                    if (typeof(id) != 'undefined')
                    {
                        document.location.href = 'actionform.php?id='+id;
                    }
                    else
                    {
                        alert('<?php echo Util::js_entities(_("Action unselected"))?>');
                    }
                    
                }
                else if (com=='delete') 
                {
                    if (typeof(id) != 'undefined') 
                    {
                        if (confirm("<?php echo Util::js_entities(_('Are you sure you want to delete the selected action?')) ?>"))
                        {
                            $("#flextable").changeStatus('<?=_("Deleting action")?>...',false);
                            $.ajax({
                                type: "GET",
                                url: "deleteaction.php?id="+urlencode(id),
                                data: "",
                                success: function(msg) {
                                    $("#flextable").flexReload();
                                }
                            });
                        }
                    }
                    else 
                    {
                        alert('<?php echo Util::js_entities(_("Action unselected"))?>');
                    }
                    
                }
                else if (com == 'new')
                {
                    document.location.href = 'actionform.php';
                }
            }

负责目录修改和删除事件的响应。

        	function action(com,grid) 
        	{
        		var items = $('.trSelected', grid);
        		
        		if (com=='<?php echo _("Delete selected");?>') 
        		{
        			//Delete host by ajax
        			if (typeof(items[0]) != 'undefined') 
        			{
                        if (confirm("<?php echo Util::js_entities(_('Are you sure you want to delete the selected action?')) ?>"))
                        {
            				$("#flextable").changeStatus('<?=_("Deleting action")?>...',false);
            				
            				$.ajax(
            				{
        						type: "GET",
        						url: "deleteaction.php?id="+urlencode(items[0].id.substr(3)),
        						data: "",
        						success: function(msg) {
        							$("#flextable").flexReload();
        						}
            				});
                        }
        			}
        			else 
        			{
            			alert('<?php echo Util::js_entities(_("Action unselected"))?>');
        			}
        			     
        		}
        		else if (com=='<?php echo _("Modify");?>') 
        		{
                    if (typeof(items[0]) != 'undefined')
                    {
                        document.location.href = 'actionform.php?id='+urlencode(items[0].id.substr(3))	
                    } 
                    else 
                    {
                        alert('<?php echo Util::js_entities(_("Action unselected"))?>');
                    }
                    
        		}
        		else if (com=='<?php echo _("New");?>') 
        		{
        			document.location.href = 'actionform.php'
        		}
        	}
        	

负责修改和删除的实现。


            function apply_changes()
            {
                <?php $back = preg_replace ('/([&|\?]msg\=)(\w+)/', '\\1', $_SERVER["REQUEST_URI"]);?>
                document.location.href = '../conf/reload.php?what=policies&back=<?php echo urlencode($back);?>';
            }

切换到新的路由,且用 document.location.href切换后,可以退回到原页面。

2.2、body部分

实现了一个按钮

 <?php
            if (Web_indicator::is_on("Reload_policies"))
            {
                echo "<button class='button' οnclick='apply_changes()'>"._("Apply Changes")."</button>";
            }
        ?>

对应前文的修改删除等操作目录。

 <ul id="myMenu" class="contextMenu" style="width:110px">
            <li class="hostreport"><a href="#new" class="greybox" style="padding:3px"><img src="../pixmaps/tables/table_row_insert.png" align="absmiddle"/> <?=_("New Action")?></a></li>
            <li class="hostreport"><a href="#modify" class="greybox" style="padding:3px"><img src="../pixmaps/tables/table_edit.png" align="absmiddle"/> <?=_("Modify")?></a></li>
            <li class="hostreport"><a href="#delete" class="greybox" style="padding:3px"><img src="../pixmaps/tables/table_row_delete.png" align="absmiddle"/> <?=_("Delete")?></a></li>
        </ul>

总结

OSSIM本质上通过对各种探测器和监控产生的告警进行格式化处理,再进行关联分析,通过后期处理 ,通过图形化界面展示给用户。这里www目录主要实现web界面的设计,同时绑定了一些事件响应。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 11:50:17  更:2021-12-07 11:50:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 20:34:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计