• 2007-06-04

    ideablog 发布新版本 1.1

    Views: 15212 | 4 Comments

    大家好! ideablog 的使用者很少, 所以我从发布第一版后就没有更新. 今天发布新版本 1.1. 十分感谢 minahboy 朋友对 ideablog 的反馈信息, 是他的反馈让知道如何写新的版本. 同时我希望更多的人能够使用 ideablog, 向我提供关于功能要求等信息. 我将十分感谢.

    Posted by ideawu at 2007-06-04 14:12:06
  • 2007-05-25

    PHP LDAP连接微软活动目录进行身份验证

    Views: 24947 | 6 Comments

    如果使用活动目录(Active Directory)代替在数据库表中建立账号, 你可以使用原来Windows网络中的账号.

    LDAP, 轻量级目录访问协议(Lightweight Directory Access Protocol), 是用来访问微软的活动目录等目录服务器(DS, Directory Server)的协议. PHP默认支持LDAP.

    下面是使用LDAP进行用户身份验证的PHP程序. 在微软的活动目录中, 用户的唯一标识是"samaccountname", 有些DS是"uid". 方法是:

    1. 用有权限的账号的dn(形如 cn=user_name,ou=web,dc=ideawu,dc=com)连接LDAP Server.
    2. 根据登录用户的名字查询其dn.
    3. 用该dn连接LDAP Server. 如果连接上就是登录成功.

    注意! 微软的活动目录服务器可以使用空账号连接成功(设置问题? 默认? 特例?)!

    $userid = $_POST['userid'];
    $user_password = $_POST['password'];
    
    if($userid && $user_password){
    // config
    // $ldap_server = "ideawu.com";
    // $ldap_admin = "user_name";
    // $ldap_password = "xxx";
    // $base_cn = "ou=web,dc=ideawu,dc=com";
    	$conn = ldap_connect($ldap_server);
    	if(!$conn){
    		die("<br>Connection LDAP server error");
    	}
    	$bind = ldap_bind($conn, $ldap_admin, $ldap_password);
    	if(!$bind){
    		die("<br>Bind LDAP server error");
    	}
    
    	$filter = 'samaccountname=' . $userid;
    	$attributes = array('mail');	
    	$result = ldap_search($conn, $base_dn, $filter, $attributes);
    	$info = ldap_get_entries($conn, $result);
    
    	if(!$result){
    		die("<br>Search failed");
    	}
    
    	if($info["count"] != 0){
    		$user_dn = $info[0]["dn"];
    		unset($bind2);
    		$bind2 = @ldap_bind($conn, $user_dn, $user_password);
    		if($bind2){
    			// Login done. Set session
    		}
    	}
    
    	ldap_close($conn);
    }
    
    Posted by ideawu at 2007-05-25 18:20:49
  • 2007-05-14

    给博客做了换界面风格的功能

    Views: 10032 | No Comments

    今天有空, 就给博客做了换界面风格的功能, 好让大家不会觉得太单调.

    技术上很容易实现, 根据Cookie的某个不同变量选择相应的CSS和图片, 还有就是顶部菜单. 文章阅读因为是生成的静态文件, 所以不受主题选择的影响.

    Posted by ideawu at 2007-05-14 16:25:29
  • 2007-01-17

    开放源码的 ideablog 发布

    Views: 15516 | 4 Comments

    开放源码的 ideablog 发布, 在 http://www.ideawu.com/blog/ . 如果你无法访问, 请用Email向我索取源代码.

    Posted by ideawu at 2007-01-17 10:46:59
  • 2007-01-13

    让MSN收录我的网站的更多页面

    Views: 13183 | 3 Comments

    以前有段时间, Baidu收录我的网站ideawu.net页面有近5000页(事实上没这么多), Google收录了近300页(比较接近实际). 但是MSN只收录了我的网站3个链接, 而且还是不太重要的3个. 我想起来, 这3个连接就出现在我的MSN博客里. 原来MSN对自己旗下网站的搜索比较勤啊.

    我在MSN用site:ideawu.net搜索, 得到结果页面下面有一个连接"未获得期望的结果?请帮助我们改进服务。", 因为ideawu.net是这自己的网站, 我当然帮助你们改进了. 于是我点击这个链接, 进入一个反馈表单页面. 我将上面的情况如实地写了进去, 然后提交. 过了不久, 我的网站就开始大量被MSN收录了.

    所以, 不要错过搜索引擎提供给你的任何机会. 不过, MSN的搜索更新很慢, 很多错误的链接并没有及时清除. 所以技术上讲, 它还是在Google和Baidu之后的.

    Posted by ideawu at 2007-01-13 10:28:14
  • 2006-12-24

    用Javascript生成弹出窗口

    Views: 12562 | No Comments

    在Web开发中, 经常需要弹出一个窗口. 你可能想到使用alert, confirm 或者 window.open, 不过可以用自定义的窗口. 方法是建立一个绝对定位的层, 添加到body节点中. 需要关闭时就将它先移除.

    弹出一个窗口(在本文中, CSS未起作用)

    /*
     * 用来弹出一个窗口
     */
    function openPopWindow(title, content, top, left, width, height){
    	var pop = document.createElement('div');
    	popId = 'pop_' + (new Date()).getTime();
    	pop.setAttribute('id', popId);
    	pop.setAttribute('class','popwindow');
    	pop.setAttribute('className','popwindow');
    	if(height > 0){
    		pop.style.height = height + 'px';
    	}
    	pop.style.width = width + 'px';
    	pop.style.display = 'block';
    	pop.style.top = top + 'px';
    	pop.style.left = left + 'px';
    
    	document.getElementsByTagName('body')[0].appendChild(pop);
    	pop.innerHTML =
    		'<div class="closeButton"><a href="javascript: closePopWindow(\'' + popId + '\');">X</a></div>'
    		+ '<div class="head">' + title +  '</div>'
    		+ '<div class="content">' + content + '</div>';
    
    	return pop;
    }
    
    function closePopWindow(id){
    	var pop = document.getElementById(id);
    	document.getElementsByTagName('body')[0].removeChild(pop);
    }
    
    /*
     * 使用方法:
     */
    function popEditWindow(){
    	top = 100;
    	left = 100;
    	var text = '你好啊, 世界!';
    	openPopWindow('Hello world!', text, top, left, 220, -1);
    }
    

    配套的CSS样式表:

    .popwindow{
    	font-family: monospace;
    	position: absolute;
    	padding: 0;
    	border: 1px solid #369;
    	background: #def;
    }
    
    .popwindow .head{
    	text-align: center;
    	padding: 2px;
    	background: #6cf;
    	border-bottom:1px solid #369;
    }
    
    .popwindow .closeButton{
    	float: right;
    	margin: 2px 4px;
    	font-weight: bold;
    }
    
    Posted by ideawu at 2006-12-24 14:58:13
|<<<161718192021222324>>>| 20/28 Pages, 163 Results.