php信用卡验证

时间:2011-11-03 14:06:23

标签: php validation

我是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>

3 个答案:

答案 0 :(得分:4)

您只是尝试删除下划线(_)并且您正在执行两次。

试试这个:

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

答案 1 :(得分:3)

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

这将替换任何非数字的东西

答案 2 :(得分: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源代码。

编辑:错误号码,已更正。谢谢,克里斯!