[閒聊] 關於建帳號的程式,大家如何理解

看板PHP作者 (吹笛牧童)時間15年前 (2009/05/20 01:00), 編輯推噓15(150153)
留言168則, 8人參與, 最新討論串1/1
我手上有一支同事寫的程式讓我學習,我們是用 CakePHP,寫 web 2.0 規格 這個網站有建帳號的動作 當 user 點了建帳號的要求之後,我們導向建帳號的網址 http://localhost/user/create 為了避免被機械人大量建立帳號,我們有利用程式產生一張圖 user 必需讀這張圖裏面的字,打在 form 裏面傳回 這樣的做法還算經典,常見吧.. 所以 function create 裏有呼叫一個產生圖的程式,該程式其實是另一個內部網址 http://localhost/random 使用這個網址,就可以繪出一張圖,並且傳回圖內的密碼 當 create function 被呼叫時,它內部才去呼叫 function random 繪圖 random 必需執行完畢,我們才知道這次產生了什麼密碼 而 create function 在按下 submit 後我才能從 POST 變數裏取回 user 看到的值 兩值相等則允許 user 註冊 我曾質疑同事: random 返回時就有值了,在 submit 跳轉後比較兩值並沒有困難 為什麼繞一大圈,還必需把值儲存在外部 同事說: ramdom 的返回值怎麼取得?那是一個網址,網址有 return value 嗎? 我們可以把 return value 存在檔案裏,但同時有很多人註冊怎麼辦?互相蓋寫? 這裏我們可以看到,兩個網頁間有互動關係 http://localhost/user/create 會去呼叫 http://localhost/random ( 大概就是有一段 <img src='random'> 這樣搞出來的 ) 但是 random 的傳回值必需先出現,儲存,且能分辨不同 session, create 才能再往下執行 也許我們可以寫出沒互動關係的程式來 但當合作對象弄出這種東西 我也是被迫接受呀.. 然後我就開始想像兩個不同網址間怎麼傳遞變數溝通 比如利用 session 內的變數,也許是個好方法 而兩個不同網址如果可以想像成兩個 thread,其實一下就了解了 如果想像成副程式,我會認為 random 要返回後,create 網頁才能顯示 而我也一直以為既然 random 要返回,怎麼不直接把值傳回 caller 網頁呢? 但其實不是,辦不到 create 網頁一下就顯示了,然後才慢慢的補其他沒抓完的圖,包括 random (就好像相簿網頁,網頁本身一下就顯示完了,然後 img src 還繼續抓其他圖補進來) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.179.152

05/20 01:10, , 1F
為啥要用在兩隻程式上呀 .. create的頁面
05/20 01:10, 1F

05/20 01:11, , 2F
自已就可以用GD產生縮圖,自已決定random值是多少呀
05/20 01:11, 2F

05/20 01:12, , 3F
如果硬要分兩支程式來做 ~ 我還是會選擇由create頁面
05/20 01:12, 3F

05/20 01:13, , 4F
產生random值 告訴另一支程式產生圖檔
05/20 01:13, 4F

05/20 01:14, , 5F
這跟multi-thread有啥關聯呢? QQ
05/20 01:14, 5F

05/20 01:15, , 6F
我怎麼覺得 我在結帳上做的progressbar還比較像 QQ
05/20 01:15, 6F

05/20 01:15, , 7F
w 大,真的算了,這已經是走火入魔混淆亂用了…
05/20 01:15, 7F

05/20 01:15, , 8F
從最早一開始就已經是這樣,把各種觀念拉混在一起
05/20 01:15, 8F

05/20 01:16, , 9F
client的pg-bar 跟另一支程序處理資料的進度同步更新
05/20 01:16, 9F

05/20 01:16, , 10F
不相干的理解也可以抓來抓去用
05/20 01:16, 10F

05/20 01:17, , 11F
gpmm大 我剛是想打住呀 ~ 可是他就在發文了
05/20 01:17, 11F

05/20 01:17, , 12F
還寫了將近半個小時 XD
05/20 01:17, 12F

05/20 01:20, , 13F
由他去吧,我也藉 H 大的文章磨練耐性好段時間了 XD
05/20 01:20, 13F

05/20 01:20, , 14F
已經數不清幾次衝動的想回文,卻又想想於是又放下
05/20 01:20, 14F

05/20 01:21, , 15F
咦?儼然變成閒話家常? XDD
05/20 01:21, 15F

05/20 01:22, , 16F
H 大 其實也是熱心的人啦 ~ 就聊聊吧 XD
05/20 01:22, 16F

05/20 01:27, , 17F
你就給我一段 sample code 用單一程式完成吧..
05/20 01:27, 17F

05/20 01:28, , 18F
另外,大型專案裏,同事丟什麼副程式給你就要用,沒得選
05/20 01:28, 18F

05/20 01:28, , 19F
擇;我會不得已研究前景背景多網頁架構,是 PayPal逼的
05/20 01:28, 19F

05/20 01:29, , 20F
除非我寫結帳時不用 PayPal,否則這架構是非用不可
05/20 01:29, 20F

05/20 01:31, , 21F
搞不好也有高手說 w 兄的 progressbar 不必同步來做
05/20 01:31, 21F

05/20 01:31, , 22F
但如果他和你合作,他就要用這樣的架構,不是嗎?
05/20 01:31, 22F

05/20 01:32, , 23F
寫程式絕對不只一種寫法,但別人有主導權時,也只好跟.
05/20 01:32, 23F

05/20 01:33, , 24F
SA幹嘛去了 ~ 怎麼會降子分配大型專案呀
05/20 01:33, 24F

05/20 01:33, , 25F
我說的progressbar 在結帳過程是分好幾個STEP
05/20 01:33, 25F

05/20 01:33, , 26F
另外,我同事有提到,他不想讓密碼值在 POST,GET 間飄
05/20 01:33, 26F

05/20 01:34, , 27F
在畫面的部份 ~ 還要同時得知結帳過程到哪個STEP
05/20 01:34, 27F

05/20 01:34, , 28F
當然也不能在 HTML source 中飄;所以要藏好
05/20 01:34, 28F

05/20 01:34, , 29F
...... RANDOM值只能存在一個檔案上 就可議了
05/20 01:34, 29F

05/20 01:35, , 30F
頁面載入不能賦與一個雜湊值? 存的RANDOM由雜湊值命
05/20 01:35, 30F

05/20 01:35, , 31F
名嗎?
05/20 01:35, 31F

05/20 01:36, , 32F
更別說 為啥不能用sessions存?
05/20 01:36, 32F

05/20 01:36, , 33F
其實我們用 DB 做;但講檔案也可以,總之多人註冊不能
05/20 01:36, 33F

05/20 01:36, , 34F
互相覆蓋
05/20 01:36, 34F

05/20 01:36, , 35F
方法就你說的 有很多種 ~ 甲跟乙配合專案 也不是只有
05/20 01:36, 35F

05/20 01:37, , 36F
也要有個SA來協調吧
05/20 01:37, 36F

05/20 01:38, , 37F
那意思一樣呀 ~ 就算存資料庫 不能由雜湊值當索引?
05/20 01:38, 37F

05/20 01:38, , 38F
那個同事應該就是SA的身份了;如果這是決策,只好用了
05/20 01:38, 38F

05/20 01:38, , 39F
一定要寫在同個欄位上?
05/20 01:38, 39F
還有 95 則推文
還有 1 段內文
05/20 11:43, , 135F
哪裡閒 ... 昨晚我是邊coding邊回的 ... 0.0
05/20 11:43, 135F

05/20 11:43, , 136F
看看別人是怎麼做的? 當然處理手法不止一種.
05/20 11:43, 136F

05/20 11:48, , 137F
另外, captcha這東西有很大的商機存在,不過可能需要
05/20 11:48, 137F

05/20 11:49, , 138F
更高的技術門檻.
05/20 11:49, 138F

05/20 20:35, , 139F
其實問題還是在的,只是不算嚴重
05/20 20:35, 139F
前面才想通,第一個網頁內部用 img src 呼叫第二個網頁,不會有叉燒包的問題 但是等待第二個網頁完成卻的確會是問題;只是不嚴重 比如,如果我很在乎連縮圖都不存在,你就根本不能建帳號的話 那麼 OK 鍵應該要 disable 說不嚴重是因為,user 不可能沒看到圖就猜鍵值 就算猜了按 OK,我回應他猜錯了重來也就算了 (真要解的話,就是同步;想得到的利用 js 及變數等等其實充滿同步的精神) 總之,這樣的問題存不存在,多少是有 也能用 multi-thread 的概念來思考 計較的話就不說這個叫 thread 了 比如兩輛車同時從台中到台北,我不是說寫這樣的程式,只是說現實世界這樣一件事 然後這兩輛車為了車隊,為了協調,我可能就借用這樣的字眼了 字眼只是字眼罷了 一個網頁開啟,因為可以一直在內部用 link 向外連 其實這樣的問題比單機板常見很多啊 一個網頁沒開好,停止是小事 開到一半已經開始寫資料留殘渣就是大事 (用在交易,搞不好已付款但無法交貨 XD) 一直有碰到啊.. ※ 編輯: HuangJC 來自: 61.219.65.16 (05/20 20:43)

05/21 14:12, , 140F
這是怎樣... 你去學FLASH的AS3好了 ~ 觀念不清嘛= =
05/21 14:12, 140F

05/21 14:18, , 141F
這和 AS3 又有什麼關係了..
05/21 14:18, 141F

05/21 14:23, , 142F
網頁又不是保持連線的東西 ~ 哪來那麼多程序一直在
05/21 14:23, 142F

05/21 14:23, , 143F
主機端進行的
05/21 14:23, 143F

05/21 14:23, , 144F
你不如去學AS3 ~ keep alive的狀況下 ~ 你講的理論才
05/21 14:23, 144F

05/21 14:24, , 145F
有必要性
05/21 14:24, 145F

05/21 14:25, , 146F
明明就很簡單的東西 被你講的好像很複雜一樣
05/21 14:25, 146F

05/21 18:00, , 147F
樣子H根本沒搞清php session 是幹嘛的...
05/21 18:00, 147F

05/21 18:00, , 148F
只想這樣說而已. 觀念清楚就不會這麼多鬼問題...
05/21 18:00, 148F

05/21 19:13, , 149F
這個例子當然是簡單的,不過舉例就是要舉簡單的例
05/21 19:13, 149F

05/21 19:13, , 150F
另外,multi-thread 並沒規定一定有 while loop
05/21 19:13, 150F

05/21 19:14, , 151F
一個 thread 呼叫另一個 thread,它很快結束,也是成立
05/21 19:14, 151F

05/21 19:14, , 152F
對單一快速結束的程序而言,不就是在賭碰撞率嘛
05/21 19:14, 152F
說很簡單就來看看更簡單的吧! int *p=new int; //其值不重要,我只是想交代有這樣一個指標 void del(){ delete p; //我把它刪除 p=new int; //再把它的空間產生 //繼續 use p } 以上,是很簡單的程式 但如果 p 的值別人有用,就有危險 當 p 被刪除成為無效指標時,另一個 thread 有可能來存取,產生錯誤 因此如上的撰寫風格適用在 single-thread 當有風險時,需另外改寫 { int *p1=p; p=new int;//直接產生新空間並指定其值,別問我幹麻不續用舊空間,這只是例子 delete p1;//刪除舊空間 } 這麼一小段程式裏,示範了如何迴避 multi-thread 裏的風險 不必拘於於這是 C code,觀念只是觀念,換別種語言一樣可用 所謂的 multi-thread 並不是說一定要見到 create thread 這種指令 如果你要這樣講,我就換個字眼和你談; multi-process,task,.. 總之最嚴格的定義當然會先說什麼叫 'thread',但其實它的觀念到處可見,也不叫難 只是你必需不斷的迴避風險而已 如果用原程式,那麼很簡單的就是'我用的資源,無論如何不讓別人同時存取' 知道 multi-thread 只是知道這種事而已,而書上有時就像我一樣,舉的例很短,不到十行 要先把它講成很難,再說我想太多..怕是在網路端反而想太少吧.. ※ 編輯: HuangJC 來自: 61.219.65.16 (05/21 19:26)

05/21 19:49, , 153F
奇怪的劇情發展 呵呵 .... (繼續看戲)
05/21 19:49, 153F

05/21 20:03, , 154F
就算他拿 multi-thread 來解釋萬有引力和太空梭航道
05/21 20:03, 154F

05/21 20:03, , 155F
我也已經不覺得奇怪了…
05/21 20:03, 155F
你自己知道這些問題,只是愛用別的字眼,這不過是 RD 的通病 昨天 w 兄還質疑 captcha 我同事怎麼這麼寫,說 SA 混哪裏去了 結果找到的經典還不是一樣這麼寫? 有自己的想法,要蓋掉別人程式當然做得到 是'都對',而不是'只有我對' 我一直不懷疑用另一套邏輯寫程式 但我不認為別人的一定錯了 沒這樣的態度,那怎麼看我,我也不覺得奇怪了 ※ 編輯: HuangJC 來自: 61.219.65.16 (05/21 20:55)

05/21 20:59, , 156F
找到的經典? ~ 啥鬼?
05/21 20:59, 156F
你可以回去找舊文呀 網友隨便一搜尋就有 sample,我同事做法一模一樣 而這一模一樣的就被你批評'SA 混到哪去了' 這不就證明,你不會欣賞別人程式,喜歡把別人想法蓋掉嗎?

05/21 21:00, , 157F
我盡可能的建議了 ~ 我還很忙 ~ 別拖我下水 3Q
05/21 21:00, 157F

05/21 21:01, , 158F
w 大 XDDD
05/21 21:01, 158F

05/21 22:20, , 159F
我還在公司,你說咧..
05/21 22:20, 159F

05/21 22:21, , 160F
為了你的想法,tmp file,結果搞出NFS架構或是cluster
05/21 22:21, 160F

05/21 22:22, , 161F
有比較快嗎?不用DB用 session,結果 session 存回DB?
05/21 22:22, 161F

05/21 22:22, , 162F
我不會去笑這叫繞一大圈,這是你的直覺,你的方便
05/21 22:22, 162F

05/21 22:22, , 163F
我一向不主張蓋掉別人程式呀 :P
05/21 22:22, 163F

05/21 22:33, , 164F
傻眼 ~ 我是舉你所謂的multi-server 一般常見的架構
05/21 22:33, 164F

05/21 22:33, , 165F
提出解決方案 ~ 莫非 ~ 你連你們公司的主機架構都不
05/21 22:33, 165F
我熟不熟和你提的對不對有何關係? 是你在我們 multi-server 上,又硬要實現你原本的想法,才開始繞圈圈

05/21 22:33, , 166F
熟嗎? ~ 什麼multi-server 聽不懂 OK ?
05/21 22:33, 166F

05/21 22:34, , 167F
拜託 麻煩不要跟我雞同鴨講 ~ 這是我最後一次回你文
05/21 22:34, 167F

05/21 22:34, , 168F
以上
05/21 22:34, 168F
我也怕和你再談了 因為你欣賞別人少,嘲笑別人多.. 對旁觀第三者而言,只覺得在大系統下鑽這小小的 captcha 會不會太浪費時間了 要不要聽聽這種講法 '你想的也許對,有空時寫個 sample 來測試一下':這是我同事說的 '你好像很喜歡用XXXXX':這是你的語氣 唔..你最行 我還是要講我前主管,他就把別人程式蓋掉,被蓋的馬上就離職了 別人真的不會寫?只不過寫法不同而已吧.. 你參考看看 ※ 編輯: HuangJC 來自: 61.219.65.16 (05/21 22:46)
文章代碼(AID): #1A4kMR9X (PHP)