免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
php學(xué)習(xí)(三)關(guān)于身份驗證、以及require路徑問題
分類: php 2013-06-16 23:09 273人閱讀 評論(0) 收藏 舉報

1、首先是時間格式的數(shù)據(jù)插入:

如果數(shù)據(jù)庫中數(shù)據(jù)的格式是:datetime,

$currentTime = date('Y-m-d H:i:s');之前是直接插入$currentTIme,無用。需要在插入的數(shù)據(jù)前后加上單引用號,用來和int型的數(shù)據(jù)做區(qū)分。


2、數(shù)組如何轉(zhuǎn)換為字符串

$vegetables[0] = "corn";
$vegetables[1] = "broccoli";
$vegetables[2] = "zucchini";
$text = implode(",", $vegetables);
echo $text;

這樣可以格式化的輸出數(shù)組


3、身份驗證

其余的字段根據(jù)不同的需求去考究,我這里是有兩個字段:

token varchar(32)    

timeout int(10) unsigned

token是生成的在timeout時間段內(nèi)有效的令牌,每個api請求都需要通過token進行驗證來保證具有網(wǎng)絡(luò)訪問的權(quán)限,進行校驗的時候,先根據(jù)token查出timeout來,
如果無法找到該token的用戶證明是無效用戶需要重新登錄,如果是有該token但是當(dāng)前時間的time()已經(jīng)大于數(shù)據(jù)庫中的timeout就證明是賬號的token過期,也需要用戶重新登錄
token的生成算法如下:
function genToken( $len = 32, $md5 = true ) {
            # Seed random number generator
            # Only needed for PHP versions prior to 4.2
            mt_srand( (double)microtime()*1000000 );
            # Array of characters, adjust as desired
            $chars = array(
            'Q', '@', '8', 'y', '%', '^', '5', 'Z', '(', 'G', '_', 'O', '`',
            'S', '-', 'N', '<', 'D', '{', '}', '[', ']', 'h', ';', 'W', '.',
            '/', '|', ':', '1', 'E', 'L', '4', '&', '6', '7', '#', '9', 'a',
            'A', 'b', 'B', '~', 'C', 'd', '>', 'e', '2', 'f', 'P', 'g', ')',
            '?', 'H', 'i', 'X', 'U', 'J', 'k', 'r', 'l', '3', 't', 'M', 'n',
            '=', 'o', '+', 'p', 'F', 'q', '!', 'K', 'R', 's', 'c', 'm', 'T',
            'v', 'j', 'u', 'V', 'w', ',', 'x', 'I', '$', 'Y', 'z', '*'
                    );
                    # Array indice friendly number of chars;
                    $numChars = count($chars) - 1; $token = '';
                    # Create random token at the specified length
                    for ( $i=0; $i<$len; $i++ )
                        $token .= $chars[ mt_rand(0, $numChars) ];
                    # Should token be run through md5?
                    if ( $md5 ) {
                        # Number of 32 char chunks
                        $chunks = ceil( strlen($token) / 32 ); $md5token = '';
                        # Run each chunk through md5
                        for ( $i=1; $i<=$chunks; $i++ )
                            $md5token .= md5( substr($token, $i * 32 - 32, 32) );
                        # Trim the token
                        $token = substr($md5token, 0, $len);
                    } return $token;
        }
而timeout入庫的大小可以自己定義:
time()是獲取當(dāng)前時間,如果設(shè)置一周過期的話,那么在用戶Login或者register的時候插入的timeout時間就是:time()+60*60*24*7;

4、require路徑的問題

require這個問題之前一直困擾我很久,我的文件夾是這種情況:

       app,dao,exception是平行目錄

app下有user,dao下有core文件夾,文件夾里也有user負責(zé)數(shù)據(jù)庫操作,并且返回user的數(shù)據(jù)結(jié)構(gòu)給app,exception中有自定義的db_exception

這個時候app下的user,引用core里面的user是require_once('../dao/core/user.php');

而core里面的user又相對引用了一個自定義的exception,require_once('../../exception/db_exception');

這個時候我訪問app下的user,php就開始報錯,報錯的地方是core里面對exception的require是有問題的---找不到,我就覺得很奇怪。

       后面發(fā)現(xiàn)原因在,當(dāng)你通過app中的user訪問的,當(dāng)前的路徑就是app的路徑,而core中又是相對引用的db_exception,由于當(dāng)前的路徑是app的路徑所以相對路徑就無法找到exception這個文件夾了。解決問題的方法如下:

       dirname(__FILE__),通過他獲取當(dāng)前文件夾的絕對路徑,通過這個方式,在app中的user的路徑是app,那么require core中的user,這個時候core中的user的dirname(__FILE__)他的值是dao/core,通過這樣的方式保證文件路徑的決定性,保證了require_once引用的正確性。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
PHP中require和include路徑問題總結(jié)
使用Composer 安裝Yii2
深入掌握include
prestashop商城系統(tǒng)autoload自動載入類
用戶登錄驗證方案
[PHP小課堂]搞明白PHP中include和require
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服