百度空间 | 百度首页 
 
查看文章
 
LDAP 类--转载 (转载请注明:原创QQ405214421)
2008-06-12 14:19
<?
class ldap
{
private $hostName; //服务器地址
private $userDn; //用户名
private $pwd; //密码
private $port; //端口号
private $link; //返回的连接对象
public $state; //返回的一个公共的连接状态

//------------ 定义联接类的构造函数 ------------------
function __construct($hostName,$userDn,$pwd,$port=80)
{
$this->hostName=$hostName;
$this->userDn=$userDn;
$this->pwd=$pwd;
$this->port=$port;
$this->state=0;
}
//--------------- end conStruct -------------------

//-------------- 定义link方法 连接并BIND数据库 ----------------
function open()
{
/////////////////////*********加上@阻止错误********///////////////////////////////
$this->link = @ldap_connect($this->hostName);
@ldap_set_option($this->link, LDAP_OPT_PROTOCOL_VERSION, 3);
if ($this->link && @ldap_bind($this->link,$this->userDn,$this->pwd)) {
$ldapbind = @ldap_bind($this->link,$this->userDn,$this->pwd);
$this->state=1;
return $this->link;
@ldap_unbind($this->link); //关闭数据库
@ldap_close($this->link); //关闭连接
} else {
return $this->link;
//echo "抱歉,无法连上 LDAP 服务器。";
exit;
}
}
//--------------end open()--------------------------

}
//--------------------定义基类recordSet------------------------------
class recordSet
{
public $link;
private $result;
function __construct($conn)
{
$this->link=$conn->open();
}
//------ 定义execute 方法--------
public function execute($dn,$who)
{
$tdn=$dn;
$twho=$who;
$sr=ldap_search($this->link,$tdn,$twho);
$this->result = ldap_get_entries($this->link, $sr);
return $this->result;
}
//////////////红色所标为关键部分///////////////////////
public function arrsort($arr,$column)
{
for($j=0;$j<=$arr["count"];$j++){
for($i=0;$i<=@count($column);$i++){
if($column[$i]=="dn"){
$array[$j][$i]=$arr[$j][$column[$i]];
} else {
$array[$j][$i]=$arr[$j][$column[$i]][0];
}
}
}
@sort($array);
return $array;
}
}
//-------------------- END 基类recordSet------------------------------
class selectRs extends recordSet
{
private $result; //返回的查询结果数组
//public $dn;
//public $who;
///////////////// 执行继承类recordSet的execute($dn,$who)方法////////////////////
function getArray($dn,$who)
{
$this->result=$this->execute($dn,$who);
return $this->result;
}
//---------*****************END EXECUTE($dn,$who)****************************-----------
//------ 定义 delete 方法--------
function delete($dn) // 传入一个详细的组织结构DN 删除成功则返回TRUE,否则返回FALSE
{
$state=@ldap_delete($this->link,$dn);
if($state){
return true;
} else {
return false;
}
}
//------ end delete 方法--------
//------ 定义 update 方法--------
function update($dn,$column) // 传入一个详细的组织结构DN及成员数组 成功则返回TRUE,否则返回FALSE
{
$state=ldap_modify($this->link,$dn,$column);
if($state){
return true;
} else {
return false;
}
}
//------ end update 方法--------
//------ 定义 insert 方法--------
function insert($dn,$column) // 传入一个详细的组织结构DN及成员数组 插入成功则返回TRUE,否则返回FALSE
{
$state=ldap_add($this->link,$dn,$column);
if($state){
return true;
} else {
return false;
}
}
//------ end insert 方法--------
/////////////////传回查询数据的总行数getRowNum()////////////////////
function getRowNum()
{
return $this->result["count"];
}
////////////////end-------getRowNum()////////////////////

///////////////// 分页结果 START////////////////////
function page($page,$arr,$column,$num=5)
{
if($page<1) $page=1;
$rownum=$this->getRowNum();
$pagecount=ceil($rownum/$num);
if($page>$pagecount) $page=$pagecount;
$a=$this->arrsort($arr,$column);
$start=($page-1)*$num+1;
$end=$page*$num;
for($i=$start;$i<=$end;$i++)
{
if($i>$rownum)
{
continue;
}
for($j=0;$j<=count($column)-1;$j++)
{
$array[$i][$j]=$a[$i][$j];
}
}
return $array;
}
/////////////////分页结果 END()////////////////////

}
/* 以下是我想对分页的一个简化,可惜时间不够,没有能够完成,不过上面的代码对一般的增删改查分页都巳足够了
//-------------------- 继承 基类selectRs----执行分页类 待完善 今后会更新--------------------------
class pselectRs extends selectRs
{
private $result; //返回的查询结果数组
private $currentPage; //当前页码
public $absoultpage=5; //每页的记录数
private $isSystemPage; //是否用系统默认分页,否则需要自己定制
public $pagecount; //总页数
///////////////// 重写继承类selectRs的getArray($dn,$who)方法////////////////////
function getArray($dn,$who,$column,$currentPage=1,$isSystemPage=true)
{
$this->result=$this->execute($dn,$who);
$this->currentPage=$currentPage;
$this->isSystemPage=$isSystemPage;
$this->pagecount=ceil($this->getRowNum/$this->absoultpage);
if($this->currentPage<0) $this->currentPage=1;
if($this->currentPage>$this->pagecount) $this->currentPage=$this->pagecount;
$row=$this->arrsort($this->result,$column);
$start=($this->currentPage-1)*$this->absoultpage+1;
$end=$this->currentPage*$this->absoultpage;
for($i=$start;$i<=$end;$i++)
{
for($j=0;$j<=count($column)-1;$j++)
{
$arr[$i][$j]=$row[$i][$j];
}
}
return $arr;
}
//---------*****************END selectRs($dn,$who)****************************-----------

} */
?>


转载请注明:原创QQ405214421:

类别:分享php | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu