2009-12-13 37 views
11

是否存在技術/法律/財務/合同/設計理由不接受其中有空格的信用卡號碼?有沒有好的理由很多網站將不接受信用卡與空格和破折號?

許多網站不允許您在信用卡號碼中輸入空格或短劃線。我總是把這個問題放在草率的編程上,但我之前使用過商業API。如果你能弄清楚如何處理信用卡,你可以弄清楚如何去除字符串中的字符。設計師知道他們正在產生用戶的挫敗感,因爲他們在網站上發出了警告。他們就在卡上!這甚至有一個wall of shame

虛假的懶惰,糟糕的編程,無情,虐待......所有這些都是假設代碼中最糟糕的人。我能想出的最慷慨的是,他們正在真的保守與涉及金錢的任何東西。我一直在想,爲什麼你不應該接受帶有空格的信用卡號碼,是否有一些深層和真正重要的原因?爲什麼你絕對不應該嘗試應用任何啓發式。也許可以追溯到電報時代的一些奇怪的金融法?也許他們是無名英雄,保護我們免受某種未知的邪惡,免得我們三次輸入Hastur的信用卡號碼。

+2

那麼,它不能肯定是帶寬限制。 – 2009-12-13 20:23:01

+7

我認爲這裏的「編程相關」的定義會變得有點法西斯。與編程的技術方面沒有直接關係的問題,顯然很多程序員在工作過程中需要處理的事情在SO上有合法的位置。這顯然是編程相關的任何合理的定義,因爲他試圖找出爲什麼網站是**編程**的方式。 – dsimcha 2009-12-13 21:37:40

+3

請重新打開。請參閱:http://meta.stackexchange.com/questions/5018/describing-close-reasons「不是編程相關的」:「關於stackoverflow.com問題預計將主要涉及編程這個問題很遙遠的節目。 「說這個問題是*非常恐怖*是荒謬的。 – 2009-12-13 21:47:12

回答

0

並非所有事情都有正當理由。我只是認爲,做這件事的第一個人不容許空間,因爲它更容易;然後每個人都遵循,並沒有質疑它。

+2

一切都有理由。並非所有事情都有好的或有效的原因。 :) – 2009-12-13 20:24:36

0

我不記得在規定我商戶協議哪些用戶有一個表單字段要求輸入信用卡號碼輸入任何內容。我不盡全力去規範化它,但我會刪除空格和連字符。關於你可以重新展示的規則有一些規則,但這只是一個內容而不是確切的形式。

雖然您會看到類似的電話號碼和社會安全號碼,但我認爲這不是信用卡號碼問題。

我大多認爲這主要是一箇中間件問題。你有前端由一組開發,由另一開發的後端,和插圖中有沒有人喜歡和每個人都有目標關閉的,現成的中間件組件。中間件的編寫儘可能嚴格,認爲任何一方都有責任規範化所有數據。然後,指點開始,每個人都會回家哭泣,並且您不能在您的信用卡號碼中使用空格。

8

真的沒有什麼好的理由,除了懶惰或時間限制。

良好的用戶界面應該適應用戶和用戶對他們數據的多種思考方式。

這是很容易的UI,以適應在信用卡進入破折號或空格的用戶。

+1

是的,這只是糟糕的用戶界面。將它與地址字段組合在一起,這些地址字段不要求您在名稱後添加逗號,以便最後使用雙逗號。和日期字段,這迫使你鍵入「02 09 2009」時2 9 09將是一樣有意義和正確。如果您遇到上述任何「錯誤」,那麼頁面會忘記您輸入的一半細節。 – 2009-12-13 20:45:14

1

我的第一個回答是「將複雜度降低到絕對最小值」,但我想你也可以爭辯說,如果某處存在攻擊面,則會混淆數據 - 一個狡猾的路由器/嗅探器/中間人 - 「XXXX XXXX XXXX XXXX」幾乎可以肯定是一個信用卡號碼,但「xxxxxxxxxxxxxxxx」,這可能是許多事情。當然,這不會憋多少決定黑客攻擊,並希望由SSL等在很大程度上減輕

我強調,我不認爲這是一個很好的原因,但它可能是一個原因...

+0

當然,處理可以(也應該在這種情況下)完成客戶端,所以格式化的版本永遠不會離開機器...但我認爲以純文本發送信用卡號碼是離譜的。 – KernelJ 2009-12-13 20:29:58

+0

@KernelJ - 誰提到明文?我說SSL。 – 2009-12-13 20:31:30

+0

如果您的狡猾路由器正在生成有效的信用卡號碼,請將其放入eBay並退出。 :P – Schwern 2009-12-13 21:00:04

-1

我認爲它只是一個懶惰和較少編程的問題,因爲人們可以使用AND來接受而不用破折號。或者甚至爲每個部分製作不同的文本框(使用4或5個小文本框而不是使用巨大的文本框) 或者僅僅因爲人們可能會感到困惑

+1

哦,由於信用卡號碼的長度和佈局不一致,單個盒子比邪惡更好。例如,AmEx卡使用3組。我相信你可以想出一些聰明的Javascript的東西,改變了基於信用卡類型的盒子佈局,但我相信你會留下一些用戶,他們不會認爲先設置類型數字感到困惑。 – Schwern 2009-12-13 21:04:29

-1

我一直覺得這很奇怪,因爲它很平凡從字符串中刪除非數字字符。

這是更加混亂,因爲每種卡類型(VISA/MC/AMEX/Discover)和具有使用check digits一個唯一的編碼,所以當我輸入信用卡號碼,並選擇VISA的卡類型的智能驗證將驗證號碼是簽證數量。所以,如果你要正確地驗證CC號,你將不得不從所有用戶提供的字符串中刪除非數字字符。

有三個主要的原因,我能想到的爲什麼卡驗證執行不力:

不預期非數字
  • 校驗位驗證。
  • 懶惰/心疼的程序員將沒有預先驗證的所有參數傳遞給支付網關,並讓網關驗證信用卡信息。支付網關的參數/數據驗證比用戶界面應該更嚴格。
  • 誤會的有關修改用戶提供的CC數據的虛法律後果。
+2

實際上,卡中的校驗數字並不相同。幾乎所有的人都使用Luhn算法(並且不會編碼任何東西)。您可以通過第一位數字區分有效的卡號,有時甚至可以識別髮卡銀行。 – 2009-12-13 21:50:37

相關問題