大家好! ideablog 的使用者很少, 所以我从发布第一版后就没有更新. 今天发布新版本 1.1. 十分感谢 minahboy 朋友对 ideablog 的反馈信息, 是他的反馈让知道如何写新的版本. 同时我希望更多的人能够使用 ideablog, 向我提供关于功能要求等信息. 我将十分感谢.
-
2007-06-04
ideablog 发布新版本 1.1
Views: 15212 | 4 Comments -
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". 方法是:
- 用有权限的账号的dn(形如 cn=user_name,ou=web,dc=ideawu,dc=com)连接LDAP Server.
- 根据登录用户的名字查询其dn.
- 用该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); }
-
2007-05-14
给博客做了换界面风格的功能
Views: 10032 | No Comments今天有空, 就给博客做了换界面风格的功能, 好让大家不会觉得太单调.
技术上很容易实现, 根据Cookie的某个不同变量选择相应的CSS和图片, 还有就是顶部菜单. 文章阅读因为是生成的静态文件, 所以不受主题选择的影响.
-
2007-01-17
开放源码的 ideablog 发布
Views: 15516 | 4 Comments开放源码的 ideablog 发布, 在 http://www.ideawu.com/blog/ . 如果你无法访问, 请用Email向我索取源代码.
-
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之后的.
-
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; }