PHP 網頁設計 技巧
經過蒐集資料同多次測試發現,在其他web程式編輯語言中相對路徑都係以當前處理文件目錄為基準,而在php中並非如此。php中相對路徑係以當前工作目錄為基準,並非以當前處理文件目錄為基準,咁樣在開發過程中帶來左唔少麻煩。
    用include或requice包含文件時,文件路徑前都加上dirname(__file__)。例如:現有a.php、b.php、c.php、d.php4個文件,他們關係為:
    b.php(與根目錄同一級)
    根目錄/a.php
    根目錄/c.php
    根目錄/dir/d.php
    現在a.php中要包含b.php、c.php。寫法如下:
<?php
include_once(dirname(__file__)."/../b.php");
include_once(dirname(__file__)."/c.php");
?>
    如果c.php中要包含d.php。寫法如下:
<?php
include_once(dirname(__file__)."/dir/d.php");
?>
    此方式在目前來說係解決路徑錯位最有效既方法

qiuqiu 發表在 痞客邦 留言(0) 人氣()

PHP  網頁設計 技巧
PHP向MySQL數據庫中寫入數據有三個步驟:
1,PHP和MySQL建立連接關係
2,打開MySQL數據庫
3,接受頁面數據,PHP錄入到指定的表中
1、2兩步可直接使用一個數據庫連結文件即可:conn.php

qiuqiu 發表在 痞客邦 留言(0) 人氣()

PHP  網頁設計 技巧
修改discuz,uchome,ucenter兼容自己開發既通行證
最近稍有接觸,修改其中既部分代碼,就貢獻其中既關鍵部分啦
目前discuz既會員註冊係在discuz自己既體系中完成,然後post(或者mysql直接操作,此處以post代稱)到ucenter既數據庫,其中會員密碼係md5(md5(真實密碼)+首次隨機字符sult),memberid由ucenter產生。然後得到改值,保存在discuz。
如果係自己已有通行證系統,產生id,保存密碼呢部分就在自己既系統完成,然後送回來到ucenter,然後保存到dizcuz。
在uc_center/client.php中加入代碼
//cjjer
function uc_user_registerCjjer($uid,$username, $password, $email, $questionid = '', $answer = '') {
    return call_user_func(UC_API_FUNC, 'user', 'register', array('uid'=>$uid,'username'=>$username, 'password'=>$password, 'email'=>$email, 'questionid'=>$questionid, 'answer'=>$answer));
}
function uc_user_updateCjjer($uid,$username, $password, $email, $questionid = '', $answer = '') {
    return call_user_func(UC_API_FUNC, 'user', 'myupdate', array('uid'=>$uid,'username'=>$username, 'password'=>$password, 'email'=>$email, 'questionid'=>$questionid, 'answer'=>$answer));
}
註冊的時候就用uc_user_registerCjjer。
在contol/user.php加入代碼:
    //    rewrite by cjjer
    function onregister() {
        $this->init_input();
        $username = $this->input('username');
        $myuserid = intval($this->input('uid'));
        $password =  $this->input('password');
        $email = $this->input('email');
        $questionid = $this->input('questionid');
        $answer = $this->input('answer');
        if(    (($status = $this->_check_username($username)) < 0) ||
            (($status = $this->_check_email($email)) < 0)||
            ($status = $_ENV['user']->get_user_by_uid($myuserid))
            ) {
            //開始更新會員資料
            $_ENV['user']->update_user($myuserid,$username, $password, $email, $myuserid, $questionid, $answer);
            return $myuserid;
        }else{
            $uid = $_ENV['user']->add_user($username, $password, $email, $myuserid, $questionid, $answer);
        }
        return $uid;
    }
    function onmyupdate() {
        $this->init_input();
        $username = $this->input('username');
        $myuserid = intval($this->input('uid'));
        $password =  $this->input('password');
        $email = $this->input('email');
        $questionid = $this->input('questionid');
        $answer = $this->input('answer');
        $status = $_ENV['user']->get_user_by_uid($myuserid);
        if(!$status) {
            return -1;
        }
        $uid = $_ENV['user']->update_user($myuserid,$username, $password, $email, $myuserid, $questionid, $answer);
        return $uid;
    }
然後在model/user.php加入
    function update_user($user_id,$username, $password, $email, $uid = 0, $questionid = '', $answer = '') {
        $salt = substr(uniqid(rand()), -6);
        $password = md5(md5($password).$salt);
        if(! $uid)return  0;
        $sqladd = $uid ? "uid='".intval($uid)."'," : '';
        $sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',";
        //不更新密碼,,salt='$salt'
        $this->db->query("update ".UC_DBTABLEPRE."members SET   username='$username', email='$email' where uid='$uid'");
        return $user_id;
    }
修改其中的add_user方法為:
    function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '') {
        $salt = substr(uniqid(rand()), -6);
        $password = md5(md5($password).$salt);
        $sqladd = $uid ? "uid='".intval($uid)."'," : '';
        $sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',";
        $this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', email='$email', regip='".$this->base->onlineip."', regdate='".$this->base->time."', salt='$salt'");
        $uid = $this->db->insert_id();
        $this->db->query("INSERT INTO ".UC_DBTABLEPRE."memberfields SET uid='$uid'");
        return $uid;
    }
咁樣在uchome註冊既用戶就能自動映射到discuz,唔需要激活。直接更新。
其中discuz系統既關鍵部分在include/common.inc.php裡面既140行左右的驗證用戶登錄的。呢度切入即可。就係在產生$sid=$discuz_pw= $discuz_secques= $discuz_uid這幾個變量既時候。包含自己既通行證,直接可以打通。
uchome在source/function_common.php這個function checkauth() 函數裡面直接切入就可以了

qiuqiu 發表在 痞客邦 留言(0) 人氣()

PHP 網頁設計 技巧
識PHP既都知道strlen與mb_strlen係求字符串長度既函數,但係對於一d初學者黎講,如果唔睇手冊,或者會唔多清楚其中既區別。
先看呢一段代碼吧(先決條件是:字符編碼為UTF-8):

qiuqiu 發表在 痞客邦 留言(0) 人氣()

PHP  網頁設計 技巧
一、 變量命名
a) 所有字母都用小寫

qiuqiu 發表在 痞客邦 留言(0) 人氣()

PHP 網頁設計 技巧
Google小組共享左其網站加速係技巧大全,其中包括左一dPHP性能技巧。然而呢dPHP性能技巧在PHP社區中引起左一陣軒然大波,PHP小組立刻寫左一篇公開信比呢d性能技巧“抓蟲”。有關Google既建議,51CTO呢幾日做左整理,做出文章《加速,加速,再加速:來自Google的網站加速技巧大全》。其中第四頁既後半部分就是專門講PHP相關既性能技巧,在閱讀本文之前可以先熟悉一下。
  以下係來自PHP小組既信件譯文:

qiuqiu 發表在 痞客邦 留言(0) 人氣()

PHP 網頁設計 技巧
大量既PHP開源(開放源代碼/Open Source)應用改變左呢個世界,改變左網際網路,以下我們總結從數據庫到購物、博客等眾多類型既開源PHP軟體,供網站開發者們參考。
  博客:WordPress

qiuqiu 發表在 痞客邦 留言(0) 人氣()

PHP 網頁設計 技巧
PHP基本上就係一種陣列語言。時常要進行大量既陣列循環操作,主要有兩種方式,一種係foreach,另一種係while,到底邊種好邊種壞一直有爭論,雖然我好早就意識到呢個問題,但係一直冇細究,懵懂的感覺一直持續到現在,為左以後能節省點CPU時間,下面總結一下:
在循環裡進行既係陣列“讀”操作,則foreach比while快:

qiuqiu 發表在 痞客邦 留言(0) 人氣()


PHP 網頁設計 技巧
2008年1月13日,CNNIC 發布《第23次中國互聯網路發展狀況統計報告》。最新報告顯示截至2008年底,中國網頁總數超過160億個,較2007年增長90%。PHP 網頁數量最多,位居第一位,PHP網頁應用範圍最廣泛。
中國的網站數,即域名註冊者在中國境內既網站數(包括在境內接入和境外接入)達到287.8萬個,較2007年增長91.4%,係2000年以黎增長最快既一年。網頁既增長速度與網站既增速基本一致。

qiuqiu 發表在 痞客邦 留言(0) 人氣()

PHP 網頁設計技巧
AJAX無疑係2005年炒既最熱的Web開發技術之一,當然,呢個功勞離唔開Google。我只係一個普通開發者,使用AJAX既地方唔係特別多,我就簡單既將我使用既心得講下。(本文假設用戶已經具有JavaScript、HTML、CSS等基本的Web開發能力)
  [AJAX介紹]
  Ajax係用客戶端腳本與Web伺服器交換數據既Web應用開發方法。Web頁面唔用打斷交互流程進行重新加裁,就可以動態地更新。使用Ajax,用戶可以創建接近本地桌面應用既直接、高可用、更豐富、更動態既Web用戶介面。
  異步JavaScript和XML(AJAX)唔係咩新技術,而係用幾種現有技術 包括級聯樣式表(CSS)、JavaScript、XHTML、XML和可擴展樣式語言轉換(XSLT),開發外觀及操作類似桌面軟體既Web應用軟件。
  [AJAX執行原理]
  一個Ajax交互從一個稱為XMLHttpRequest既JavaScript對象開始。如同名字所暗示,它允許一個客戶端腳本來執行HTTP請求,並且將會解析一個XML格式既伺服器響應。Ajax處理過程中的第一步是創建一個XMLHttpRequest實例。使用HTTP方法(GET或POST)來處理請求,並將目標URL設置到XMLHttpRequest對象上。
  當你發送HTTP請求,你唔希望瀏覽器掛起並等待伺服器既響應,取而代之既係,你希望通過頁面繼續響應用戶既介面交互,並在伺服器響應真正到達後處理它們。要完成它,你可以向XMLHttpRequest註冊一個回調函數,並異步地派發XMLHttpRequest請求。控制權馬上就被返回到瀏覽器,當伺服器響應到達時,回調函數將會被調用。
  [AJAX實際應用]
  1. 初始化Ajax
  Ajax實際上就係調用了XMLHttpRequest對象,咁首先我們既就必須調用呢個對象,我們構建一個初始化Ajax既函數:

qiuqiu 發表在 痞客邦 留言(0) 人氣()

PHP 網頁設計 技巧
10句話
1.唔好依賴register_global=ON既環境,從你剛懂配置php運行環境甚至仲未明白register_global既ON/OFF會對自己有咩影響既果日起,就應該勇敢地把它設為OFF.

qiuqiu 發表在 痞客邦 留言(0) 人氣()

PHP 網頁設計 技巧
在PHP編碼果陣,如果考慮到一d比較基本既安全問題,首先一點:
1. 初始化你既變量

qiuqiu 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。