2012年2月15日 星期三

使用php 連結ad server 執行認證

先研究 LDAP
http://tw.php.net/ldap
或參考
http://www.developer.com/lang/php/article.php/3100951

下面程式來自
http://yu-minspace.blogspot.com/2007/04/php-windows-server-ad-windows-server-ad.html

以下的程式範例為精簡版,帳號和密碼不可為空的
<?php

$domain = 'domain.com'; //設定網域名稱
$user = 'user'; //設定欲認證的帳號名稱
$password = 'password'; //設定欲認證的帳號密碼

// 使用 ldap bind
$ldaprdn = $user . '@' . $domain; // ldap rdn or dn
$ldappass = $password; // 設定密碼

// 連接至網域控制站
$ldapconn = ldap_connect($domain) or die("無法連接至 $domain");

// 如果要特別指定某一部網域主控站(DC)來作認證則上面改寫為
// $ldapconn = ldap_connect('dc.domain.com) or die("無法連接至 dc.domain.com");
// 或
// $ldapconn = ldap_connect('dc2.domain.com)or die("無法連接至 dc2.domain.com");

//以下兩行務必加上,否則 Windows AD 無法在不指定 OU 下,作搜尋的動作
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);

if ($ldapconn) { // binding to ldap server
$ldapbind = @ldap_bind($ldapconn, $ldaprdn, $ldappass);
// verify binding
if ($ldapbind) {
$filter = "(sAMAccountName=$user)";
$result = @ldap_search($ldapconn, $dn, $filter);

if($result==false) echo "認證失敗";
else {
echo "認證成功...";
//取出帳號的所有資訊
$entries = ldap_get_entries($ldapconn, $result);
}
} else {
echo "認證失敗...";
}
}
?>

另外的網頁連結
Integrating Active Directory with PHP
http://www.developer.com/lang/php/article.php/3100951

Active Directory Authentication using LDAP + PHP
http://lists.nyphp.org/pipermail/talk/2004-February/008171.html

LDAP Functions
http://tw.php.net/ldap

More
http://www.google.com.tw/search?hl=zh-TW&q=php+ad+server+how+auth&meta=


另外的程式範例
使用環境:Windows Server 2008 (AD環境)

$user=設定欲認證的帳號名稱
$password=設定欲認證的帳號密碼
$domain = 設定網域名稱
$ldap_server = WINDOWS AD SERVER IP

$ds=ldap_connect($ldap_server) or die("SORRY~~Could not cnnect to AD SERVER!!");
$dn=$user."@".$domain;
@$ldapbind=ldap_bind($ds,$dn,$password);
if($ldapbind){
echo "SUCCESS!!";
}else{
echo "Fail!!";
}

2012年1月26日 星期四

2011年12月28日 星期三

My Plan

  1. Cache the PLC and save to SQL
  2. Refresh page when the table in SQL is change
  3. Cache the data of matel
  4. Monitoring and controling PLC
  5. Join to AD server

2011年12月25日 星期日

Web

##HTML


##網址連結
< a href="http://www.w3schools.com">This is a link</a>
##螢幕任一位置顯示圖片
<DIV id=Layer1 style="POSITION: absolute;TOP:250;LEFT:250">
<IMG name=Image1 src="smiley.gif">
</DIV>
##有數字的清單
<ol>
<li>清單1
<li>清單2
<li>清單3
</ol>
##Telnet模擬HTTP請求
  1. telnet www.hinet.net 80
  2. enter
  3. crtl ] //顯示What you type?
  4. enter
  5. GET / HTTP/1.1
  6. HOST:
  7. enter



2011年12月22日 星期四

PHP_FreeBSD

##插入圖片圖檔名
<IMG SRC="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqlwl5F2S6UelOXFkZm5X4UjH669RE0OnaEQnVcUAgXlJYkgjbVpOpmbYLLmcpEkHxfO768XJZRppLmht0Dm8A789tpS6pn-xHYUfFnn5nIbHhnWpoOG7rxBhr5DyG7_Hgv0O5iKnzGpE/s320/postTC5f.jpg" WIDTH="11" HEIGHT="11" BORDER="0" ALT="">
##秀HTML控制字元
<>
##使用PHP將Excel匯入mysql
http://tw.myblog.yahoo.com/jw!OX2_ioqRCRtlZ0O7WBuAAPpHJhIu/article?mid=1978
#雙引號圍住的字串,PHP會對該字串做「變數值傳入」的動作
<?php
$name = "Michael";
echo "姓名: $name ";
?>





2011年12月18日 星期日

Apache_FreeBSD

##啟動Apache
ee /etc/rc.conf
apache22_enable="YES"
重新啟動FreeBSD
##Apache根目錄
/usr/local/www
##設定Config檔
/usr/local/etc/apache22/httpd.conf
ee /usr/local/etc/apache22/httpd.conf/
ServerRoot "/usr/local"
Listen 80
User www
Group www
ServerAdmin 0455@twse.com.tw
ServerName www.trt.com.tw:80
DocumentRoot "/usr/local/www"

ErrorLog "/var/log/httpd-error.log"
LogLevel warn
CustomLog "/var/log/httpd-access.log"
ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin"
DefaultType text/plain
Include etc/apache22/Includes/*.conf

##重新啟動Apache
/usr/local/sbin/apachectl restart
##不中斷連線重新啟動Apache
/usr/local/sbin/apachectl graceful



##參考
http://ftp.ncnu.edu.tw/Documentation/FreeBSD/FreeBSD_eBook/ch26-1.pdf
## FreeBSD筆記 http://www.weithenn.org/cgi-bin/wiki.pl?FreeBSD_%E7%AD%86%E8%A8%98

Mysql_FreeBSD

##啟動Mysql
ee /etc/rc.conf
mysql_enable="YES"
mysql_dbdir="/home/db/mysql"
##改密碼
mysqladmin -u root password YOUR_PASSWORD
##重新啟動Mysql
/usr/local/etc/rc.d/mysql-server restart
點選--安裝Apache Mysql PHP
##登入Mysql
mysql -u root -p
##顯示所有資料庫
mysql> show databases;
##建立資料庫
CREATE DATABASE 資料庫名;
##切換資料庫
mysql> use databases_name;
##刪除資料庫
drop database 資料庫名;
##顯示 Tables
mysql> show tables;
##建立資料表
CREATE table 資料表名 (欄位1 資料型態, 欄位2 資料型態, ......);
##查詢指令的 Tables 內容
select * from tables_name
##插入新資料列
mysql> INSERT INTO `Table_Name` ( `欄位1` , `欄位2`) VALUES ( `值1` , `值2` );
##更新資料列
mysql> UPDATE `Table_Name` SET `欄位1` = `值1` , `欄位2` = `值2` WHERE where_definition;
##離開Mysql
exit
##建立Table
CREATE TABLE customer (First_Name char(50), Last_Name char(50), Address char(50), City char(50), Country char(25), Birth_Date date)
create table Company (System char(10), CompanyName char(10), PersonName char(5), PersonTelephone char(15), LeaderName char(5), LeaderTelephone char(15), Note char(30));
##改變現有表格架構來設定主鍵
ALTER TABLE TableName ADD PRIMARY KEY (欄位名);
##
mysql_connect($dbhost, $dbuser, $dbpass) or die('Error with MySQL connection');

http://itgroup.blueshop.com.tw/towns/hc?n=convew&i=153
##填入資料
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
##Show 表格 欄位
show columns from TableName;
##查Mysql版本
#mysql -V //在终端下
mysql> status; //在mysql中
mysql> select version(); //在mysql中
##中文不顯示
CREATE DATABASE `utf8_sql` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;






















資料結構(type):

資料型態 說明
TINYINT 有符號的範圍是-128到127, 無符號的範圍是0到255。
SMALLINT 有符號的範圍是-32768到32767, 無符號的範圍是0到65535。
MEDIUMINT 有符號的範圍是-8388608到8388607, 無符號的範圍是0到16777215。
INT 有符號的範圍是-2147483648到2147483647, 無符號的範圍是0到4294967295。
INTEGER INT的同義詞。
BIGINT 有符號的範圍是-9223372036854775808到 9223372036854775807,無符號的範圍是0到18446744073709551615。
FLOAT 單精密浮點數字。不能無符號。允許的值是-3.402823466E+38到- 1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。
DOUBLE 雙精密)浮點數字。不能無符號。允許的值是- 1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。
DOUBLE PRECISION DOUBLE的同義詞。
REAL DOUBLE的同義詞。
DECIMAL DECIMAL值的最大範圍與DOUBLE相 同。
NUMERIC DECIMAL的同義詞。
DATE 日期。支援的範圍是'1000-01-01'到'9999-12-31'。
DATETIME 日期和時間組合。支援的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'
TIMESTAMP 時間戳記。範圍是'1970-01-01 00:00:00'到2037年的某時。
TIME 一個時間。範圍是'-838:59:59'到'838:59:59'。
YEAR 2或4位數字格式的年(內定是4位)。允許的值是1901到2155。
CHAR 固定長度,1 ~ 255個字元。
VARCHAR 可變長度,1 ~ 255個字元。
TINYBLOB

TINYTEXT 最大長度為255(2^8-1)個字符。
MEDIUMBLOB

MEDIUMTEXT 最大長度為16777215(2^24-1)個字符。
LONGBLOB

LONGTEXT 最大長度為4294967295(2^32-1)個字符。
ENUM 一個ENUM最多能有65535不同的值。  
SET 一個SET最多能有64個成員。