超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

學(xué)PHP5:session會(huì)話的使用和分析

admin
2012年4月4日 0:23 本文熱度 2829
Session的中文譯名叫做“會(huì)話”,其本來(lái)的含義是指有始有終的一系列動(dòng)作/消息,比如打電話時(shí)從拿起電話撥號(hào)到掛斷電話這中間的一系列過(guò)程可以稱之為一個(gè)session。目前社會(huì)上對(duì)session的理解非?;靵y:有時(shí)候我們可以看到這樣的話“在一個(gè)瀏覽器會(huì)話期間,...”,這里的會(huì)話是指從一個(gè)瀏覽器窗口打開(kāi)到關(guān)閉這個(gè)期間; 也可以看到“用戶(客戶端)在一次會(huì)話期間”這樣一句話,它可能指用戶的一系列動(dòng)作(一般情況下是同某個(gè)具體目的相關(guān)的一系列動(dòng)作,比如從登錄到選購(gòu)商品到結(jié)賬登出這樣一個(gè)網(wǎng)上購(gòu)物的過(guò)程;然而有時(shí)候也可能僅僅是指一次連接;其中的差別只能靠上下文來(lái)推斷了。

然而當(dāng)session一詞與網(wǎng)絡(luò)協(xié)議相關(guān)聯(lián)時(shí),它又往往隱含了“面向連接”和/或“保持狀態(tài)”這樣兩個(gè)含義,“面向連接”指的是在通信雙方在通信之前要先建立一個(gè)通信的渠道,比如打電話,直到對(duì)方接了電話通信才能開(kāi)始?!氨3譅顟B(tài)”則是指通信的一方能夠把一系列的消息關(guān)聯(lián)起來(lái),使得消息之間可以互相依賴,比如一個(gè)服務(wù)員能夠認(rèn)出再次光臨的老顧客并且記得上次這個(gè)顧客還欠店里一塊錢。這一類的例子有“一個(gè)TCP session”或者“一個(gè)POP3 session”。

鑒于這種混亂已不可改變,要為session下個(gè)定義就很難有統(tǒng)一的標(biāo)準(zhǔn)。而在閱讀session相關(guān)資料時(shí),我們也只有靠上下文來(lái)推斷理解了。不過(guò)我們可以這樣理解:例如我們打電話,從撥通的那一刻起到掛斷電話期間,因?yàn)殡娫捯恢北3种油ǖ臓顟B(tài),所以把這種接通的狀態(tài)叫做session。它是訪客與整個(gè)網(wǎng)站交互過(guò)程中一直存在的公有變量,在客戶端不支持COOKIE的時(shí)候,為了保證數(shù)據(jù)正確、安全,就采用SESSION變量。訪問(wèn)網(wǎng)站的來(lái)客會(huì)被分配一個(gè)唯一的標(biāo)識(shí)符,即所謂的會(huì)話 ID。它要么存放在客戶端的 cookie,要么經(jīng)由 URL 傳遞。

SESSION的發(fā)明填補(bǔ)了HTTP協(xié)議的局限:HTTP協(xié)議被認(rèn)為是無(wú)狀態(tài)協(xié)議,無(wú)法得知用戶的瀏覽狀態(tài),當(dāng)它在服務(wù)端完成響應(yīng)之后,服務(wù)器就失去了與該瀏覽器的聯(lián)系。這與HTTP協(xié)議本來(lái)的目的是相符的,客戶端只需要簡(jiǎn)單的向服務(wù)器請(qǐng)求下載某些文件,無(wú)論是客戶端還是服務(wù)器都沒(méi)有必要紀(jì)錄彼此過(guò)去的行為,每一次請(qǐng)求之間都是獨(dú)立的,好比一個(gè)顧客和一個(gè)自動(dòng)售貨機(jī)或者一個(gè)普通的(非會(huì)員制)大賣場(chǎng)之間的關(guān)系一樣。
因此通過(guò)SESSION(cookie是另外一種解決辦法)記錄用戶的有關(guān)信息,以供用戶再次以此身份對(duì)web服務(wù)器提起請(qǐng)求時(shí)作確認(rèn)。會(huì)話的發(fā)明使得一個(gè)用戶在多個(gè)頁(yè)面間切換時(shí)能夠保存他的信息。網(wǎng)站編程人員都有這樣的體會(huì),每一頁(yè)中的變量是不能在下一頁(yè)中使用的(雖然form,url也可以實(shí)現(xiàn),但這都是非常不理想的辦法),而SESSION中注冊(cè)的變量就可以作為全局變量使用了。

那么SESSION到底有什么用處呢?網(wǎng)上購(gòu)物時(shí)大家都用過(guò)購(gòu)物車,你可以隨時(shí)把你選購(gòu)的商品加入到購(gòu)物車中,最后再去收銀臺(tái)結(jié)帳。在整個(gè)過(guò)程中購(gòu)物車一直扮演著臨時(shí)存貯被選商品的角色,用它追蹤用戶在網(wǎng)站上的活動(dòng)情況,這就是SESSION的作用,它可以用于用戶身份認(rèn)證,程序狀態(tài)記錄,頁(yè)面之間參數(shù)傳遞等。

SESSION的實(shí)現(xiàn)中采用COOKIE技術(shù),SESSION會(huì)在客戶端保存一個(gè)包含session_id(SESSION編號(hào))的COOKIE;在服務(wù)器端保存其他session變量,比如session_name等等。當(dāng)用戶請(qǐng)求服務(wù)器時(shí)也把session_id一起發(fā)送到服務(wù)器,通過(guò)session_id提取所保存在服務(wù)器端的變量,就能識(shí)別用戶是誰(shuí)了。同時(shí)也不難理解為什么SESSION有時(shí)會(huì)失效了。

當(dāng)客戶端禁用COOKIE時(shí)(點(diǎn)擊IE中的“工具”—“Internet選項(xiàng)”,在彈出的對(duì)話框里點(diǎn)擊“安全”—“自定義級(jí)別”項(xiàng),將“允許每個(gè)對(duì)話COOKIE”設(shè)為禁用),session_id將無(wú)法傳遞,此時(shí)SESSION失效。不過(guò)php5在linux/unix平臺(tái)可以自動(dòng)檢查cookie狀態(tài),如果客戶端設(shè)置了禁用,則系統(tǒng)自動(dòng)把session_id附加到url上傳遞。windows主機(jī)則無(wú)此功能。

Session常見(jiàn)函數(shù)及用法?

Session_start() :開(kāi)始一個(gè)會(huì)話或者返回已經(jīng)存在的會(huì)話。

說(shuō)明:這個(gè)函數(shù)沒(méi)有參數(shù),且返回值均為true。如果你使用基于cookie的session(cookie-based sessions),那么在使用Session_start()之前瀏覽器不能有任何輸出,否則會(huì)發(fā)生以下錯(cuò)誤:
Warning: Cannot send session cache limiter - headers already sent (output started at /usr/local/apache/htdocs/cga/member/1.php:2)…………
你可以在php.ini里啟動(dòng)session.auto_start=1,這樣就無(wú)需每次使用session之前都要調(diào)用session_start()。但啟用該選項(xiàng)也有一些限制,如果確實(shí)啟用了 session.auto_start,則不能將對(duì)象放入會(huì)話中,因?yàn)轭惗x必須在啟動(dòng)會(huì)話之前加載以在會(huì)話中重建對(duì)象。
請(qǐng)求結(jié)束后所有注冊(cè)的變量都會(huì)被序列化。已注冊(cè)但未定義的變量被標(biāo)記為未定義。在之后的訪問(wèn)中這些變量也未被會(huì)話模塊定義,除非用戶以后定義它們。

警告: 有些類型的數(shù)據(jù)不能被序列化因此也就不能保存在會(huì)話中。包括 resource 變量或者有循環(huán)引用的對(duì)象(即某對(duì)象將一個(gè)指向自己的引用傳遞給另一個(gè)對(duì)象)。

注冊(cè)SESSION變量 :

PHP5使用$_SESSION[‘xxx’]=xxx注冊(cè)SESSION全局變量。和GET,POST,COOKIE的使用方法相似。

注意:session_register(),session_unregister ,session_is_registered在php5下不再使用,除非在php.ini里把register_globle設(shè)為on,不過(guò)出于安全考慮,強(qiáng)烈建議關(guān)閉register_globle。HTTP_SESSION_VARS也不提倡使用了,官方建議用$_SESSION代替之。例如:

Page1.php
<?php
Session_start(); //使用SESSION前必須調(diào)用該函數(shù)。
$_SESSION[‘name’]=”我是黑旋風(fēng)李逵!”; //注冊(cè)一個(gè)SESSION變量
$_SESSION[‘passwd’]=”mynameislikui”;
$_SESSION[‘time’]=time();
echo '<br /><a href="page2.php">通過(guò)COOKIE傳遞SESSION</a>'; //如果客戶端支持cookie,可通過(guò)該鏈接傳遞session到下一頁(yè)。
echo '<br /><a href="page2.php?' . SID . '">通過(guò)URL傳遞SESSION</a>';//客戶端不支持cookie時(shí),使用該辦法傳遞session.
?>
Page2.php
<?php
session_start();
echo $_SESSION['name']; //
echo $_SESSION['passwd']; //
echo date('Y m d H:i:s', $_SESSION['time']);
echo '<br /><a href="page1.php">返回山一頁(yè)</a>';
?>

有兩種方法傳遞一個(gè)會(huì)話 ID:

cookie

URL 參數(shù)

會(huì)話模塊支持這兩種方法。cookie 更優(yōu)化,但由于不總是可用,也提供替代的方法。第二種方法直接將會(huì)話 ID 嵌入到 URL 中間去。

PHP 可以透明地轉(zhuǎn)換連接。除非是使用 PHP 4.2 或更新版本,需要手工在編譯 PHP 時(shí)激活。在 Unix 下,用 --enable-trans-sid 配置選項(xiàng)。如果此配置選項(xiàng)和運(yùn)行時(shí)選項(xiàng) session.use_trans_sid 都被激活(修改php.ini),相對(duì) URI 將被自動(dòng)修改為包含會(huì)話 ID。

● session_id

session_id() 用于設(shè)定或取得當(dāng)前session_id。php5中既可以使用session_id(),也可以通過(guò)附加在url上的SID取得當(dāng)前會(huì)話的session_id和session_name。

如果session_id()有具體指定值的話,將取代當(dāng)前的session_id值。使用該函數(shù)前必須啟動(dòng)會(huì)話:session_start();

當(dāng)我們使用session cookies時(shí),如果指定了一個(gè)session_id()值,每次啟動(dòng)session_start()都會(huì)往客戶端發(fā)送一個(gè)cookie值。不論當(dāng)前session_id是否與指定值相等。
session_id()如果沒(méi)有指定值,則返回當(dāng)前session_id();當(dāng)前會(huì)話沒(méi)有啟動(dòng)的話,則返回空字符串。

● 檢查session是否存在?

在以往的php版本中通常使用session_is_register()檢查session是否存在,如果您使用$_SESSION[‘XXX’]=XXX來(lái)注冊(cè)會(huì)話變量,則session_is_register()函數(shù)不再起作用。你可以使用
isset($_SESSION[‘xxx’])來(lái)替代。

● 更改session_id session_regenerate_id() 更改成功則返回true,失敗則返回false。
使用該函數(shù)可以為當(dāng)前session更改session_id,但不改變當(dāng)前session的其他信息。例如:

<?php
session_start();
$old_sessionid = session_id();
session_regenerate_id();
$new_sessionid = session_id();
echo "原始 SessionID: $old_sessionid<br />";
echo "新的 SessionID: $new_sessionid<br />";
echo"<pre>";
print_r($_SESSION);
echo"</pre>";
?>

● session_name() 返回當(dāng)前session的name或改變當(dāng)前session的name。如果要改變當(dāng)前session的name,必須在session_start()之前調(diào)用該函數(shù)。注意:session_name不能只由數(shù)字組成,它至少包含一個(gè)字母。否則會(huì)在每時(shí)每刻都生成一個(gè)新的session id.

session改名示例:

<?php
$previous_name = session_name("WebsiteID");
echo "新的session名為: $previous_name<br />";
?>

● 如何刪除session?

1、unset ($_SESSION['xxx']) 刪除單個(gè)session,unset($_SESSION['xxx']) 用來(lái)unregister一個(gè)已注冊(cè)的session變量。其作用和session_unregister()相同。session_unregister()在PHP5中不再使用,可將之打入冷宮。

unset($_SESSION) 此函數(shù)千萬(wàn)不可使用,它會(huì)將全局變量$_SESSION銷毀,而且還沒(méi)有可行的辦法將其恢復(fù)。用戶也不再可以注冊(cè)$_SESSION變量。

2、$_SESSION=array() 刪除多個(gè)session

3、session_destroy()結(jié)束當(dāng)前的會(huì)話,并清空會(huì)話中的所有資源。。該函數(shù)不會(huì)unset(釋放)和當(dāng)前session相關(guān)的全局變量(globalvariables),也不會(huì)刪除客戶端的session cookie.PHP默認(rèn)的session是基于cookie的,如果要?jiǎng)h除cookie的話,必須借助setcookie()函數(shù)。

返回值:布爾值。
功能說(shuō)明:這個(gè)函數(shù)結(jié)束當(dāng)前的session,此函數(shù)沒(méi)有參數(shù),且返回值均為true

session_unset() 如果使用了$_SESSION,則該函數(shù)不再起作用。由于PHP5必定要使用$_SESSION,所以此函數(shù)可以打入冷宮了。

下面是PHP官方關(guān)于刪除session的案例:

<?php
// 初始化session.
session_start();
/*** 刪除所有的session變量..也可用unset($_SESSION[xxx])逐個(gè)刪除。****/
$_SESSION = array();
/***刪除sessin id.由于session默認(rèn)是基于cookie的,所以使用setcookie刪除包含session id的cookie.***/
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// 最后徹底銷毀session.
session_destroy();
?>

由此我們可以得出刪除Session的步驟:

①session_start()
②$_SESSION=array()/unset($_SESSION['xxx'])
③session_destroy()

● SESSION安全:

會(huì)話模塊不能保證存放在會(huì)話中的信息只能被創(chuàng)建該會(huì)話的用戶看到。根據(jù)其存放的數(shù)據(jù),還需要采取更多措施來(lái)主動(dòng)保護(hù)會(huì)話的完整性。

評(píng)估會(huì)話中攜帶的數(shù)據(jù)并實(shí)施附加保護(hù)措施通常要付出代價(jià),降低用戶的方便程度。例如,如果要保護(hù)用戶免于受簡(jiǎn)單的社交策略侵害(注:指在 URL 中顯示的會(huì)話 ID 會(huì)被別人在電腦屏幕上看到,或被別的網(wǎng)站通過(guò) HTTP Referer 得到等),則應(yīng)該啟用 session.use_only_cookies。此情形下,客戶端必須無(wú)條件啟用 cookie,否則會(huì)話就不工作。

有幾種途徑會(huì)將現(xiàn)有的會(huì)話 ID 泄露給第三方。泄露出的會(huì)話 ID 使第三方能夠訪問(wèn)所有與指定 ID 相關(guān)聯(lián)的資源。第一,URL 攜帶會(huì)話 ID。如果連接到外部站點(diǎn),包含有會(huì)話 ID 的 URL 可能會(huì)被存在外部站點(diǎn)的 Referer 日志中。第二,較主動(dòng)的攻擊者可能會(huì)偵聽(tīng)網(wǎng)段的數(shù)據(jù)包。如果未加密,會(huì)話 ID 會(huì)以明文方式在網(wǎng)絡(luò)中流過(guò)。對(duì)此的解決方式是在服務(wù)器上實(shí)施 SSL 并強(qiáng)制用戶使用。

默認(rèn)情況下,所有與特定會(huì)話相關(guān)的數(shù)據(jù)都被存儲(chǔ)在由 INI 選項(xiàng) session.save_path 指定的目錄下的一個(gè)文件中。對(duì)每個(gè)會(huì)話會(huì)建立一個(gè)文件(不論是否有數(shù)據(jù)與該會(huì)話相關(guān))。這是由于每打開(kāi)一個(gè)會(huì)話即建立一個(gè)文件,不論是否有數(shù)據(jù)寫入到該文件中。注意由于和文件系統(tǒng)協(xié)同工作的限制,此行為有個(gè)副作用,有可能造成用戶定制的會(huì)話處理器(例如用數(shù)據(jù)庫(kù))丟失了未存儲(chǔ)數(shù)據(jù)的會(huì)話。

上面介紹函數(shù)下文將會(huì)用到,但還有一些有關(guān)session的函數(shù)也介紹一下:
session_encode
函數(shù)功能:sesssion信息編碼
函數(shù)原型:string session_encode(void);
返回值:字符串
功能說(shuō)明:返回的字符串中包含全局變量中各變量的名稱與值,形式如:a s:12:"it is a test\";c s:4:"lala"; a是變量名 s:12代表變量a的值"it is a test的長(zhǎng)度是12 變量間用分號(hào)”;”分隔。
session_decode
函數(shù)功能:sesssion信息解碼
函數(shù)原型:boolean session_decode (string data)
返回值:布爾值
功能說(shuō)明:這個(gè)函數(shù)可將session信息解碼,成功則返回邏輯值true
Php5不再使用session_id,而是把它變成一個(gè)常量SID,并保存在cookie中。如果客戶端禁用了cookie,php會(huì)自動(dòng)通過(guò)url自動(dòng)傳動(dòng)傳遞SID,其條件是設(shè)置php.ini中的session.use_trans_sid = 1。此時(shí)即使客戶端即使禁用了cookie也沒(méi)關(guān)系了。
用 strip_tags() 來(lái)輸出 SID 以避免 XSS 相關(guān)的攻擊。

Session跨頁(yè)傳遞問(wèn)題:

session跨頁(yè)傳遞需要考慮三種情況:

①客戶端禁用了cookie。
②瀏覽器出現(xiàn)問(wèn)題,暫時(shí)無(wú)法存取cookie
③php.ini中的session.use_trans_sid = 0或者編譯時(shí)沒(méi)有打開(kāi)--enable-trans-sid選項(xiàng)
為什么會(huì)這樣呢?下面解釋一下原因:

Session文件分為兩部分:session變量保存在服務(wù)器端(默認(rèn)以文件方式存儲(chǔ)session);而session id則以cookie形式保存在客戶端。(注意:session默認(rèn)是基于cookie的)。

當(dāng)用戶的瀏覽器向服務(wù)器提出請(qǐng)求時(shí),同時(shí)發(fā)送包含session id的cookie(默認(rèn)情況下)。服務(wù)器根據(jù)客戶端提供的session id來(lái)得到用戶的文件,即保存在服務(wù)器端的session變量值。事實(shí)上,session id可以使用客戶端的Cookie或者Http1.1協(xié)議的Query_String(就是訪問(wèn)的URL的“?”后面的部分)來(lái)傳送給服務(wù)器,然后服務(wù)器讀取Session的目錄……。也就是說(shuō),session id是取得存儲(chǔ)在服務(wù)上的session變量的身份證。當(dāng)代碼session_start();運(yùn)行的時(shí)候,就在服務(wù)器上產(chǎn)生了一個(gè)session文件,隨之也產(chǎn)生了與之唯一對(duì)應(yīng)的一個(gè)session id,定義session變量以一定形式存儲(chǔ)在剛才產(chǎn)生的session文件中。通過(guò)session id,可以取出定義的變量。跨頁(yè)后,為了使用session,你必須又執(zhí)行session_start();將又會(huì)產(chǎn)生一個(gè)session文件,與之對(duì)應(yīng)產(chǎn)生相應(yīng)的session id,用這個(gè)session id是取不出前面提到的第一個(gè)session文件中的變量的,因?yàn)檫@個(gè)session id不是打開(kāi)它的“鑰匙”。如果在session_start();之前加代碼session_id($session id);將不產(chǎn)生新的session文件,直接讀取與這個(gè)id對(duì)應(yīng)的session文件。

PHP中的session在默認(rèn)情況下是使用客戶端的Cookie來(lái)保存session id的,所以當(dāng)客戶端的cookie出現(xiàn)問(wèn)題的時(shí)候就會(huì)影響session了。必須注意的是:session不一定必須依賴cookie,這也是session相比cookie的高明之處。當(dāng)客戶端的Cookie被禁用或出現(xiàn)問(wèn)題時(shí),PHP會(huì)自動(dòng)把session id附著在URL中,這樣再通過(guò)session id就能跨頁(yè)使用session變量了。但這種附著也是有一定條件的,其一:“php.ini中的session.use_trans_sid = 1或者編譯時(shí)打開(kāi)打開(kāi)了--enable-trans-sid選項(xiàng)”;其二:運(yùn)行PHP的服務(wù)器必須是unix/linux系統(tǒng),windows不具備此項(xiàng)功能。

明白了以上的道理,我們就可以得出解決session跨頁(yè)傳遞問(wèn)題的三條途徑:

1、設(shè)置php.ini中的session.use_trans_sid = 1或者編譯時(shí)打開(kāi)打開(kāi)了--enable-trans-sid選項(xiàng),讓PHP自動(dòng)跨頁(yè)傳遞session id。

2、手動(dòng)通過(guò)URL傳值、隱藏表單傳遞session id。

3、用文件、數(shù)據(jù)庫(kù)等形式保存session_id,在跨頁(yè)過(guò)程中手動(dòng)調(diào)用。

下面舉例說(shuō)明:

第一種情況:

page1.php
<?php
session_start();
$_SESSION['var1']="中華人民共和國(guó)";
$url="<a href="."\"s2.php\">下一頁(yè)</a>";
echo $url;
?>
page2.php
<?php
session_start();
echo "傳遞的session變量var1的值為:".$_SESSION['var1'];
?>

運(yùn)行以上代碼,在客戶端cookie正常的情況下,應(yīng)該可以在得到結(jié)果“中華人民共和國(guó)”。
現(xiàn)在你手動(dòng)關(guān)閉客戶端的cookie,再運(yùn)行,可能得不到結(jié)果了吧。如果得不到結(jié)果,再“設(shè)置php.ini中的session.use_trans_sid = 1或者編譯時(shí)打開(kāi)打開(kāi)了--enable-trans-sid選項(xiàng)”,又得到結(jié)果“中華人民共和國(guó)”

第二種途徑:

s1.php
<?php
session_start();
$_SESSION['var1']="中華人民共和國(guó)";
$sn = session_id();
$url="<a href="."\"s2.php?s=".$sn."\">下一頁(yè)</a>"; //PHP5定義了一個(gè)常量SID來(lái)表示session_id(),$url還可以寫成$url='<a href="page2.php?' . SID . '">下一頁(yè)</a>';
echo $url;
?>
s2.php
<?php
session_id($_GET['s']);
session_start();
echo "傳遞的session變量var1的值為:".$_SESSION['var1'];
?>

第三種途徑:

login.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=??????">
</head>
<body>
請(qǐng)登錄:

<form name="login" method="post" action="mylogin1.php">
用戶名:<input type="text" name="name"><br>
口 令:<input type="password" name="pass"><br>
<input type="submit" value="登錄">
</form>
</body>
</html>
mylogin1.php
<?php
$name=$_POST['name'];
$pass=$_POST['pass'];
if(!$name    !$pass) {
echo "用戶名或密碼為空,請(qǐng)<a href=\"login.html\">重新登錄</a>";
die();
}
if (!($name=="laogong" && $pass=="123")) {
echo "用戶名或密碼不正確,請(qǐng)<a href=\"login.html\">重新登錄</a>";
die();
}
//注冊(cè)用戶
ob_start();
session_start();
$_SESSION['user']= $name;
$psid=session_id();
$fp=fopen("e:\\tmp\\phpsid.txt","w+");
fwrite($fp,$psid);
fclose($fp);
//身份驗(yàn)證成功,進(jìn)行相關(guān)操作
echo "已登錄<br>";
echo "<a href=\"mylogin2.php\">下一頁(yè)</a>";
?>
mylogin2.php
<?php
$fp=fopen("e:\\tmp\\phpsid.txt","r");
$sid=fread($fp,1024);
fclose($fp);
session_id($sid);
session_start();
if(isset($_SESSION['user']) && $_SESSION['user']="laogong" ) {
echo "已登錄!";
}
else {
//成功登錄進(jìn)行相關(guān)操作
echo "未登錄,無(wú)權(quán)訪問(wèn)";
echo "請(qǐng)<a href=\"login.html\">登錄</a>后瀏覽";
die();
}
?>

該文章在 2012/4/4 0:23:34 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved