php后台多用户权限组思路与实现程序代码
先介绍一下文件,
adminconfig.php 这是后台系统中所有文件权限配置。
fun.php 这是一个功能函数
left.php 网站后台根据用户登录的ID来加载相对应的功能菜单
op.php 调用adminconfig.php 默认权限文件
opsava.php 保存用户权限成一个php文件
好了我们先来看看 fun.php文件吧。
代码如下 | 复制代码 |
<? //下面为生成用户的php权限文件 //数组转换成字串 //写入文件 ?> |
adminconfig.php 后台权限配置文件,以一个数组形式保存
代码如下 | 复制代码 |
<? |
left.php文件很简单就是根据用户登录后ID读出权限
代码如下 | 复制代码 |
<? foreach($bb as $key=>$submenu) |
如图
op.php这个文件就是要调用我们的adminconfig.php文件,然后利用fun.php文件中函数把提供过来的数据保存成数组如图
点击保存我们调用了opsava.php 文件,代码如下
代码如下 | 复制代码 |
<? } |
保存成功后文件内容如
代码如下 | 复制代码 |
<?php |
这样的话我们的left只要加载 7.php文件就只会显示这里在的文件,这样一个基本的后台权限就完成了。
原站原创教程转载注明来源:http://www.111cn.net/phper/php.html
static 是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了。1. 创建对象$object = new Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问。
2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件:
A. 如果是变量,需要该变量可访问。
B. 如果是方法,除了该方法可访问外,还需要满足:
b1) 如果是静态方法,没有特殊条件;
b2) 如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题。
然后我们再看一下使用$object->… 和使用class::… 都有什么区别:
1. 使用$object->… ,需要执行构造函数创建对象;
2. 使用class::… 调用静态方法/变量,不需要执行构造函数创建对象;
3. 使用class::… 调用非静态方法/变量,也不需要执行构造函数创建对象。
然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢?
静态 static
声明类成员或方法为 static ,就可以不实例化类而直接访问,不能通过一个对象来访问其中的静态成员(静态方法除外)。静态成员属于类,不属于任何对象实例,但类的对象实例都能共享。
例子:
代码如下 | 复制代码 |
<?php // 子类中输出成员属性值 |
运行该例子,输出:
中国
我是中国人
我是中国人
中国
我是中国人
小结
在类内部访问静态成员属性或者方法,使用 self::(注意不是 $slef),如:
代码如下 | 复制代码 |
slef:: $country slef:: myCountry() |
在子类访问父类静态成员属性或方法,使用 parent::(注意不是 $parent),如:
代码如下 | 复制代码 |
parent:: $country parent:: myCountry() |
外部访问静态成员属性和方法为 类名/子类名:: ,如:
代码如下 | 复制代码 |
Person::$country Person::myCountry() Student::$country |
但静态方法也可以通过普通对象的方式访问。
例子 声明静态变量
代码如下 | 复制代码 |
<?PHP |
例子 使用静态变量的例子
代码如下 | 复制代码 |
<?PHP function Test() { static $w3sky = 0; echo $w3sky; $w3sky++; } ?> |
现在,每次调用 Test() 函数都会输出 $w3sky 的值并加一。
静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心,因为可能会无穷递归下去。必须确保有充分的方法来中止递归。一下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止:
例子 静态变量与递归函数
代码如下 | 复制代码 |
<?PHP |
注: 静态变量可以按照上面的例子声明。如果在声明中用表达式的结果对其赋值会导致解析错误。
更多关于php静态变量用法
用PHP代码调用sockets,直接用服务器的网络攻击别的IP,以前我在apache下有碰到这样的问题,今天我们讲讲述一下关于在iis防止php ddos占完网络带宽与服务器资源的处理办法。php ddos的常见代码如下:
代码如下 | 复制代码 |
$packets = 0; $exec_time = $_GET['time']; $time = time(); ";
$fp = fsockopen("udp://$ip", $rand, $errno, $errstr, 5); |
表现特征:
一打开IIS,服务器的流出带宽就用光-----就是说服务器不断向别人发包,这个情况和受到DDOS攻击是不同的,DDOS是不断收到大量数据包.
解决办法:
在c:windowsphp.ini里设其值为Off
代码如下 | 复制代码 |
allow_url_fopen = Off |
并且:
代码如下 | 复制代码 |
;extension=php_sockets.dll |
前面的;号一定要有,意思就是限制用sockets.dll
然后:
代码如下 | 复制代码 |
; ignore_user_abort = On |
前面的;号要去掉
然后重启IIS
如果上述方式仍然无效,你可以在IIS中,允许的扩展中,禁止PHP的扩展测试.
注:如果你的服务器不要运行机制php可以关闭,如果需要的话可以把php_sockets.dll 给禁止,还有一种办法就是把udp端口全部封了,只要80等一些重要的端口开放就可以了。
本文章来介绍一下关于文件上传的方法,一个利用了php iframe来实现上传这个也是无刷新的哦,有需要的同学可以参考一下下哈。首先ajax不能上传文件,这误导了我有段时间,今晚睡不着就照着说明做了个无刷新上传文件
其实原理很简单
代码如下 | 复制代码 |
<form enctype="multipart/form-data" method="POST" target="upload" action="http://localhost/class.upload.php" > |
和一般的<form>标签相比多了一个target属性罢了,用于指定标签页在哪里打开以及提交数据。
如果没有设置该属性,就会像平常一样在本页重定向打开action中的url。
而如果设置为iframe的name值,即"upload"的话,就会在该iframe内打开,因为CSS设置为隐藏,因而不会有任何动静。若将display:none去掉,还会看到服务器的返回信息。
另外贴一下自己组织的类。
代码如下 | 复制代码 |
class upload public function __construct( $name =null) } |
调用示例:
代码如下 | 复制代码 |
$inputName = 'uploadfile'; |
在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利。这也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可
test.class.php
代码如下 | 复制代码 |
<?php |
load.php
代码如下 | 复制代码 |
<?php class LOAD { static function loadClass($class_name) { $filename = $class_name.".class.php"; if (is_file($filename)) return include_once $filename; } } /** * 设置对象的自动载入 * spl_autoload_register — Register given function as __autoload() implementation */ spl_autoload_register(array('LOAD', 'loadClass')); $a = new Test();//实现自动加载,很多框架就用这种方法自动加载类 ?> |
__autoload()
在实际项目中,不可能把所有的类都写在一个 PHP 文件中,当在一个 PHP 文件中需要调用另一个文件中声明的类时,就需要通过 include 把这个文件引入。不过有的时候,在文件众多的项目中,要一一将所需类的文件都 include 进来,一个很大的烦恼是不得不在每个类文件开头写一个长长的包含文件的列表。我们能不能在用到什么类的时候,再把这个类所在的 php 文件导入呢?
为此,PHP 提供了 __autoload() 方法,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。
__autoload() 方法接收的一个参数,就是欲加载的类的类名,所以这时候需要类名与文件名对应,如 Person.php ,对应的类名就是 Pserson 。
下面看个完整的实例
代码如下 | 复制代码 |
class ClassA{ public function __construct(){ echo “ClassA load success!”; } } //定义一个类ClassA,文件名为ClassA.php class ClassA{ public function __construct(){ echo “ClassA load success!”; } } class ClassB extends ClassA { public function __construct(){ //parent::__construct(); echo “ClassB load success!”; } } //定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA class ClassB extends ClassA { public function __construct(){ //parent::__construct(); echo “ClassB load success!”; } } |
定义两个测试用的类之后,我们来编写一个含有__autoload()方法的PHP运行程序文件如下:
代码如下 | 复制代码 |
function __autoload($classname){ $newobj = new ClassA(); |
相关文章
- php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面。 <?php $lan = substr( $HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' c...2015-11-08
- 小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
- 【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 s...2015-11-24
php导出csv格式数据并将数字转换成文本的思路以及代码分享
php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07- ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
- 本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13