Selected Category: 程式 (47)

View Mode: Post List Post Summary

原 PO 問題如下

※ 引述《gyd (ipod touch之路)》之銘言:
: 以下是計數器的程式碼
: $c=file("counter.txt");
: $visit=$c[0]+1;
: echo "$visit";
: $fp=fopen("counter.txt", "w");

想請問一下
每過一段時間後我都會發現計數器又從0開始算

是code有bug還是?

請問如何解決或是有更佳的程式寫法?


bibo9901 的回答

問題在這個"w"

根據php.net
Open for writing only;place the file pointer at the beginning of the file
and truncate the file to zero length.
If the file does not exist, attempt to create it.

就是說,當執行到 $fp=fopen("counter.txt","w"); 之後
counter.txt 會被清空

這時如果有另一人執行同樣的 php
$c=file("counter") 會變成空的陣列
所以 fputs($fp,$c[0]+1); 會將 1 寫入 counter.txt
看起來就好像是歸零一樣XD

難怪以前我的計數器都會被歸 0

Posted by bojack at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(227)

AD 的部份

<?php
// connect to AD server
$ldapconn = ldap_connect("AD主機") or die("Could not connect to AD server.");
$set = ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);

$ldap_bd = ldap_bind($ldapconn,"Administrator@AD主機","密碼");
$result = ldap_search($ldapconn,"ou=employee,dc=ad,dc=bojack,dc=com,dc=tw","(CN=bojack)") or die ("Error in query");

$data = ldap_get_entries($ldapconn,$result);

echo $data["count"]. " entries returned\n";

for($i=0; $i<=$data["count"];$i++) {
        for ($j=0;$j<=$data[$i]["count"];$j++) {
                echo $data[$i][$j].": ".$data[$i][$data[$i][$j]][0]."\n<br>";
        }
}
ldap_close($ldapconn);
?>

LDAP 的部份

<?php
// connect to ldap server
$ldapconn = ldap_connect("LDAP 主機")  or die("Could not connect to LDAP server.");
$set = ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);

$ldap_bd = ldap_bind($ldapconn,"cn=root,dc=ldap,dc=bojack,dc=com,dc=tw","密碼");
$result = ldap_search($ldapconn,"ou=employee,dc=ldap,dc=bojack,dc=com,dc=tw","(uid=bojack)") or die ("Error in query");

$data = ldap_get_entries($ldapconn,$result);

echo $data["count"]. " entries returned\n";

for($i=0; $i<=$data["count"];$i++) {
        for ($j=0;$j<=$data[$i]["count"];$j++) {
                echo $data[$i][$j].": ".$data[$i][$data[$i][$j]][0]."\n<br>";
        }
}

/* 若要 show 出某個欄位 */
echo $data[0]["userpassword"][0] ."<br>";

ldap_close($ldapconn);
?>

若要比對密碼是否正確 (以LDAP為例)

<?php
if ($ldapconn) {

if(@ldap_bind($ldapconn,"uid=bojack,ou=employee,dc=ldap,dc=bojack,dc=com,dc=tw","密碼"))
{
        echo "password correct!";
} else {
        echo "wrong password!";
}

}

?>

參考資料

Integrating Active Directory with PHP

PHP程式使用 Windows Server AD 認證身份

Modifying Active Directory passwords through PHP and IIS ( 這一篇有說怎麼改 AD 的密碼,但我試不出來 -_- )

Posted by bojack at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(569)

header("HTTP/1.1 403 Forbidden");

感謝張學弟指導

 

Posted by bojack at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(159)

參考竹貓星球此篇文章 - [分享] phpBB 討論區由 2.0.23 轉換為 3.0.1 成功經驗

原本的環境是 MySQL 4.0.27,用的是 Big5 編碼

按照教學文章的做法相當順利,除了中間有遇到使用者 ID 重複的問題外 ( 進 phpbb_users Table  刪除即可 )

其它都還蠻順利的,升級完就是 3.0.1 + UTF-8 編碼了

希望這次升級能擋住機器人留言的攻擊

Posted by bojack at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(122)

前幾天在唸 PHP5 OO 的東西,邊看邊學邊練英文(有些看不太懂 Orz)

http://devzone.zend.com/manual/language.oop5.html

Posted by bojack at 痞客邦 PIXNET Comments(0) Trackback(0) Hits(207)