跳到主要內容

發表文章

目前顯示的是 2012的文章

推算日期使用strtotime超好用

要推算日期首推strtotime函數。  echo  date('Ymd', strtotime("+1 day")); strtotime未加注日期,表示當天。上式所得到的結果為 20121205     ※本文發佈日期為2012-12-04  echo  date('Ymd', strtotime("-1 day")); >> 20121203  echo  date('Ymd', strtotime("+1 month")); >> 20130104  echo  date('Ymd', strtotime("+1 week")); >> 20121211  echo  date('Ymd', strtotime("thursday -1 week")); >> 20121129   ※當日之前的第一個星期四(不含當日)  echo  date('Ymd', strtotime("thursday 0 week")); >> 20121206   ※當日之後的第一個星期四(含當日)  echo date('Ymd', strtotime("tuesday 0 week"); >> 20121204   ※ 當日之後的第一個星期二(含當日)

計算日期差

由於資料庫習慣將日期存成文字格式。 所以取得的日期均為"YYYYMMDD"; 如果要計算兩個日期差幾年、差幾月、差幾日... 則需要轉換格式並相減。 自訂函數: DateDiff ($stdate, $endate, $type) {     // $stdate-起始日期, $endate-終止日期, $type-日期單位     $eyear   =   date("Y", strtotime(substr($endate, 0, 4)."-".substr($endate, 4, 2)."-".substr($endate, 6, 2)));     $syear   =   date("Y", strtotime(substr($stdate, 0, 4)."-".substr($stdate, 4, 2)."-".substr($stdate, 6, 2)));     $emonth   =   date("m", strtotime(substr($endate, 0, 4)."-".substr($endate, 4, 2)."-".substr($endate, 6, 2)));     $smonth   =   date("m", strtotime(substr($stdate, 0, 4)."-".substr($stdate, 4, 2)."-".substr($stdate, 6, 2)));     $eday   =   date("d", strtotime(substr($endate, 0, 4)."-".substr($endate, 4, 2)."-".substr($endate, 6, 2)));     $sday   =   date("d", strtotime(substr($stdate, 0, 4)."-".substr($stda

特殊字元處理

在開發PHP專案中,總是會遇到表單輸入中文字或是特殊字元的情況。 為使用該表單的內容正確的存放到資料庫,必需經過一些處理才可能達成。 1. 首先將特殊字元加上『\』。    EX: 'abc'是一個代號,請相關部門\人員注意。    此段字串存在兩個特殊字元,『'』及『\』。    使用PHP 字串函數:addslashes("'abc'是一個代號,請相關部門\人員注意。"); 將會變成    『\'abc\'是一個代號,請相關部門\\人員注意。』 2. 一昧的使用的addslashes()函數,將會造成『\』的累加。存放此資料多次將會出現這個結果...    『\\\\'abc\\\\'是一個代號,請相關部門\\\\\\\\人員注意。』    為了避免此情況發生。我們可以使用get_magic_quotes_gpc()來判斷處理不必要的『\』。    EX:    echo get_magic_quotes_gpc();         // 1    echo $_POST['lastname'];             // O\'reilly    echo addslashes($_POST['lastname']); // O\\\'reilly    if (!get_magic_quotes_gpc()) {      $lastname = addslashes($_POST['lastname']);    } else {      $lastname = $_POST['lastname'];    }    echo $lastname; // O\'reilly    $sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";    來源- php手冊

PHP 字串切割

PHP 切割字串 explode('切割旗標', '欲處理字串'); ex: 欲將$p_string切割,切割旗標為','。    $p_string = 'aaa,aab,aac,aad,aae,aaf';    $ar_string = explode(',',$p_string);    echo $ar_string[0]."[br]";    echo $ar_string[1]."[br]"; 結果    aaa    aab

清除網路芳鄰密碼記錄

要變更網路芳鄰認證的使用者帳密,已提升或限制儲存權限。 請於cmd模式下指令執行 net use * /delete [enter] Y [enter] 如下圖

CentOS 6.3 設定Samba加入AD SERVER

AD SERVER 環境     OS: windows 2003     IP: 192.168.0.10     網域名稱: Myads     網域全名:adserver.Myads.local File Server for Samba      OS: linux CentOS 6.3      主機名稱: MyFS 1. 安裝Samba及配合模組     $ yum install -y samba samba-common samba-winbind krb5-server krb5-workstation ntp     samba-winbind: 幫Samba認證AD SERVER所傳來的登入資訊。     kerberos: AD Server所使用的認識機製。 2. 維護Samba的設定檔     $ vi /etc/samba/smb.conf     [global]         workgroup = Myads  #網域名稱         realm = adserver.Myads.local  # 或是直接輸入ip位址:192.168.0.10         server string = file server    #主機說明         netbios name = MyFS    #主機名稱         security = ads    #設定安全等級,由AD Server執行帳號認證         password server = adserver.Myads.local  # 或是直接輸入ip位址:192.168.0.10 ,指定比對密碼的地點。         encrypt passwords = yes    #密碼傳輸是否先編碼過         idmap uid = 16777000-33550000    #指定AD 網域帳號的uid使用範圍         idmap gid = 16777000-33550000    #指定AD 網域帳號的gid使用範圍         winbind enum users = yes     #是否允許winbind在系統上建立網域使用者         winbind enum grou

區塊圓角

CSS 3 實現區塊圓角的語法為:       border-radius: 左上角度 右上角度 右下角度 左下角度       ex:       border-radius: 90px 0px 90px 0px;       精簡寫法 -- border-radius:10px; (則四方均為10度圓角)       詳細資料請參考: 圓形角與陰影

文字陰影

CSS 3 實現文字陰影的語法為      text-shadow:X徧移值 Y徧移值 模糊值 顏色;      ex:      text-shadow: 3px 3px 6px #CCC;      詳情請參考: 文字陰影      此語法不支援IE 9。

mysql 數值排序

mysql 的排序很奇怪,由1排到10會出現以下結果 1, 10, 2, 3, 4, 5, 6, 7, 8, 9 真是搞不懂為何要這樣排列。 解決方案,是將數值型態轉為字元型態。 order by cast( 排序欄位 as unsigned)

安裝mysql+php

於CentOS 上安裝Apache + mysql + php + phpmyadmin 狠簡單 執行以下指令即可完成。再透過webmin或是phpmyadmin輕鬆維護。 yum install httpd mysql-server php php-mysql php-mbstring php php-devel php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-mcrypt php-mhash php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 php-cli phpMyAdmin

安裝webmin

Webmin是一套透過網頁的界面來維護linux主機各項伺服器的程式,非常的好用方便。 其安裝方式如下: 1. 在yum.repos.d資料夾下新增一個設定檔。     vi /etc/yum.repos.d/webmin.repo     [Webmin]       name=Webmin Distribution Neutral       baseurl=http://download.webmin.com/download/yum       enabled=1 2. 匯入GPGkey     rpm --import http://www.webmin.com/jcameron-key.asc     如果系統顯示匯入失敗。可改下列做法     wget http://www.webmin.com/jcameron-key.asc     rpm --import jcameron-key.asc 3. 執行安裝     yum install -y webmin 4. 設定使用者及密碼     /usr/libexec/webmin/changepass.pl /etc/webmin 帳號 密碼

apache 出現 Forbidden時

當安裝好LAMP(linux + apache + mysql + php)時, 網頁出現 Forbidden You don't have permission to access /~web on this server. Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. 解決方向: 1. 檢查apache 設定檔 httpd.conf (centOS 套件路徑為 /etc/http/conf/httpd.conf) 之內容是否為    〈Directory /〉        Options FollowSymLinks        AllowOverride None        Order deny, allow        Allow from all     〈/Directory〉 2. 下個指令修改其安全屬性       chcon -R -t httpd_user_content_t 網頁放置資料夾/  

取得各欄位長度-mysql

mysql_fetch_lengths() 回傳值為array $sql_desc = "SELECT user_id, user_name FROM userinfo "; $rs_desc = mysql_query($sql_desc); $column_len = mysql_fetch_lengths($rs_desc); echo $column_len[0]."〈br〉 "; echo $column_len[1]; ------------------------------------------------------------------ 4 12

readOnly

某些時刻,我們都會想要做到在某一個狀態之下,限制特定的輸入欄位的輸入權限。 我們可以使用readOnly來達到要求。 如程式碼: if (document.getElementById('pro_flag').value == 1) {     document.getElementById('node_memo').readOnly = true; } else {      document.getElementById('node_memo').readOnly = false; }

samba安裝與設定

安裝samba指 令 → sudo apt-get install samba (需連上網路) 設定samba 1. sudo vi /etc/samba/smb.conf 2. [global]       workgroup = WORKGROUP       security = user       encrypt passwords = yes 3. [website]       comment = web site program update (分享說明)       path = /home/www       browseable = yes       read only = no       create mask = 0775       directory mask = 0775 4. 測試設定檔是否有問題 → testparm     Load smb config file from /etc/samba/smb.conf     Processing section "[printers]"     Processing section "[print$]"     Processing section "[website]"     Loaded services file OK.     Server role: ROLE-STANDALONE     Press enter to see a dump of your service definitions     (出現以上訊息,應該就沒問題了) 5. 將分享的資料夾權限設為 chmod 775 /home/www 6. 重新啟動samba → sudo /etc/init.d/samba restart 7. 新增samba使用者 → sudo smbpasswd -a 帳號       

簡化IF條件式

如果變數supply為A,則變數price等於10;否則1變數price等於12。 IF ($supply == 'A') {     $price = 10; } ELSE {     $price = 12; } 簡化後 $price = $supply == 'A' ? 10 : 12;

javascript字串轉換

當我們在執行網頁間的傳送資料時,字串間常會有出現『/#+!...』的特殊字眼。 而接收方的網頁上常常會以空白的方式呈現,或是直接消失。造成錯誤的資料傳遞。 為避免此情況發生,我們可以使用 javascript encodeURIComponent() 函式先將傳送方的資料做一次utf-8編碼。 使用方法: 傳送方網頁 send.html <html>   < head>    < title> 傳方送方 < /title>    < script type="text/javascript">     function query_send() {      tourl = 'doquery.php';      send_variable = "supply_id=" + document.getElementById('supply_id').value;      send_variable += "&memo_key=" +  encodeURIComponent (document.getElementById('memo_key').value);      post_ajax(tourl, show_list, send_variable);     }      function show_list() {        if (http_request.readyState == 4) {          if (http_request.status == 200) {            document.getElementById('list_area').innerHTML = http_request.responseText;          }        }     }   < /script> </HEAD> <BODY>    查詢條件:            廠商:  < INPUT TYPE='text' id=

動態變更事件函數

因為供應型態的變更,會影響查詢選單的內容。為使用者方便,我們會使用到動態變更的方法來達成。 HTML 採購(INPUT TYPE='radio' id='purchase' name='purchase' value='0' onclick='change_menu(this)' checked) 製程(INPUT TYPE='radio' id='workcenter' name='purchase' onclick='change_menu(this)' value='1') 提供單位:(INPUT TYPE='text' id='supply_id' style='width:90px' ondblclick='search_supply(this)') Javascript function change_menu(topost) {   if (topost.id == 'purchase') {     node('supply_id').ondblclick = new Function("search_supply(this)");   } else {     node('supply_id').ondblclick = new Function("menu_terms(this, '1')");   } } 如果變更的Function 不需要參數,則直接填入Function 名稱即可。如: function change_menu(topost) {   if (topost.id == 'purchase') {     node('supply_id').ondblclick = search_supply;   } else {     node('supply_id').ondblclic