2011-11-03 73 views
0

我是新來的PHP和閱讀幾本PHP書以及去一些教程。 我似乎無法得到這個PHP驗證項目工作寫。它似乎沒有擺脫任何空間或破折號。不知道我做錯了什麼。php信用卡驗證

<html> 
<body> 
    <h1>Validate Credit Card</h1><hr /> 

<form action="ValidateCreditCard.php" method="get" encytype="application/x-www-form -urlencoded"> 
<p><input type="text" name="ccnumber" size="20" value="<?php if(!empty($_GET['ccnumber']))  echo $_GET['ccnumber'] ?>" /></p> 
    <p><input type="submit" value="Validate Credit Card" /> 
</form><hr /> 
    <?php 
     if (!isset($_GET['ccnumber'])) 
    echo "<p>Enter your credit card number.</p>"; 
    else{ 
    $Payment = $_GET['ccnumber']; 
    $ValidPayment = str_replace("_", "", $Payment); 
    $ValidPayment = str_replace("_", "", $ValidPayment); 
    if (!is_numberic($ValidPayment)) 
     echo "<p>You did not enter a valid credit card number!</p>"; 
     else 
     echo "<p>Your credit card number is $ValidPayment.</p>"; 
    } 
?> 

</body>  
</html> 
+0

如果您正在構建一個從用戶處獲取信用卡號碼的應用程序,則需要確保您符合安全標準,即PCI合規性標準。 https://www.pcisecuritystandards.org/ – nickb

回答

4

你只是試圖刪除下劃線(_),你做了兩次。

試試這個:

$Payment = preg_replace("/[^0-9]/","",$_GET['ccnumber']); 
// do stuff with $Payment value, which is now only numbers 
+0

感謝Kolink幫助。 –

3
$ValidPayment = preg_replace('/\D/', '', $_GET['ccnumber']); 

這將取代任何事情不是數字,什麼也沒有

0

所有信用卡號碼實現驗證數字來確定,如果信用卡號碼是否有效,如果用戶輸錯了它。它通常包含與算術運算和模數運算相關聯的特定數字,以便將輸出空間縮小爲單個數字。一個例子就是添加數字併爲每個3位數字執行模(10)操作。據稱,輸入的數字將是「2855-9649-2915」,每4位塊的最後一位是校驗數:

2+8+5=15 => modulo10(15)=5 (correct) 
9+6+4=19 => module10(19)=9 (correct) 
2+9+1=12 => module10(12)=2 (not 5, so incorrect number was entered) 

This page包含信用卡的解釋和PHP源代碼,它實現了它。

編輯:錯誤的數字,更正。 Thx,克里斯!

+1

2 + 8 + 5 = 14 – CrisDeBlonde