2011-11-03 209 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