繁体   English   中英

php信用卡验证

[英]php credit card 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>

您仅尝试删除下划线( _ ),并且执行了两次。

尝试这个:

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

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

所有信用卡号均使用验证码来确定信用卡号是否有效或用户是否键入错误。 它通常包含要与算术运算和模运算链接的特定数字,以将输出空间缩小到一位数字。 一个示例将添加数字并为每3个数字执行一个modulo(10)-Operation。 假设输入的数字为“ 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)

此页面包含信用卡的说明和实现该功能的php源代码。

编辑:错误的数字,已更正。 谢谢,克里斯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM