Web Server程序編寫學習筆記(一)

2004-12-28 19:12 開始一直在網上找資料,問問題:
:網站上常用的生成“驗證碼”程序是如何實現的? 用C能不能實現?

一:需要解決兩個問題:
1。、生成gif圖片的cgi
2。隨機數

隨機數很簡單吧?生成gif的用libgd.再聯個數據庫,自己做個SESSION,OVER.
問:樓上幾位大哥們能不能說明白點,gd是什麼?linux下的庫函數嗎?是系統自帶的還是要下啊?
:google的第一個,那我就不給你地址了.
還是FREEBSD好,PORTS太方便了.嘿嘿.

       libgd是一套C語言庫函數,可以直接用C語言進行編程.從這個方面來說,你根本不需要APACHE+PHP這兩個東西. 但顯然你的題目要求提供圖片供別的網頁調用,那至少得裝APACHE了.然後用C語言編寫CGI.
至於隨機變量的產生,你還得和客戶端保持聯繫,使得客戶端確認數字並返回給你的時候,你還能認得這個隨機數字是你什麼時候產生的,是給誰產生的,這就是所謂的SESSION.因爲HTTP是不保持連接的協議,連完就斷.這個SESSION你是用文件實現呢,還是用數據庫呢,又牽扯到一些東西.煩.
所以如果你是爲了學習,這樣做值得,如果是爲了使用,還是用PHP等專門的WEB語言吧.

:我還想問下libgd中的函數如何使用,有沒有介紹說明。還有就是assiss
精靈王剛纔提到“HTTP是不保持連接的協議,連完就斷,”那SESSION是如何實現客戶端辨認的呢?
給別人回覆的帖子,轉到這裏來吧,看對你有沒有幫助:
SESSION技術其實很簡單,它的出現是爲了解決HTTP不保持連接的問題(凡事有好就有壞).思路一般如下:
客戶端向服務器端發送申請的時候,服務器端給客戶端發送一個SESSIONID,要保證這個SESSIONID在一定時間/範圍內不會重複(重複了就完了),以後客戶端給服務器端發送請求的時候,都帶上這個SESSIONID(可以用GET,POST,或者COOKIE,取決於服務器端怎麼想了),這樣服務器端就可以通過這個SESSIONID識別是哪個客戶端了. 然後服務器端就可以通過這個SESSIONID讀取相關的數據,可以存在文件裏,也可以存在數據庫裏,隨便你了.

哦,就是URL地址中的那個“id=?????”嗎。如果客戶在與服務器通信後,第二次用同一個瀏覽器頁面向服務器發請求,就會帶上這個SESSIONID,如果客戶關掉這個頁面並重新開個頁面向服務器發請求,服務器就會重新產生一個SESSIONID。是這樣嗎?
答:如果是URL中的,那的確就沒了.如果是COOKIE中的,你可以設定該COOKIE的生存時間.
反正一切都在你的掌握中,呵呵.libgd的主頁上有HELP的,很簡單.我初學的時候光看HELP就會編它的程序了,和PHP裏的一樣簡單.現在大多數論壇等都是用COOKIE.因爲簡單.呵呵.如果用GET,那需要在每個URL後面都加上這個SESSIONID,挺煩的.
*******************************************************************************
凌晨4:00,裝完寫出了libgd,寫出了第一個生成PNG格式圖片的程序,暫且叫他newgd.c,可是很失望,gcc通不過:
下面是出錯提示:
www# gcc newgd.c
newgd.c: In function `main':
newgd.c:17: warning: assignment makes pointer from integer without a cast
/tmp/ccwXdRum.o: In function `main':
/tmp/ccwXdRum.o(.text+0x20): undefined reference to `gdImageCreate'
/tmp/ccwXdRum.o(.text+0x58): undefined reference to `gdImageColorAllocate'
/tmp/ccwXdRum.o(.text+0x71): undefined reference to `gdImageFill'
/tmp/ccwXdRum.o(.text+0x84): undefined reference to `gdImagePng'
/tmp/ccwXdRum.o(.text+0x93): undefined reference to `gdImageDestroy'
www#
我的/usr/local/lib/目錄下libpng.so,libpgd.so,libpng.a,libpgd.a文件都有。
還不知道這是怎麼回事?
*******************************************************************************

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章