LoginSignup
9
9

More than 5 years have passed since last update.

クレジットカード不正番号チェックを作ってみた

Last updated at Posted at 2014-06-05

ここ を参考にクレジットカード不正番号チェックを作ってみました。動作ページ

ソースは以下。

<?php

function checkCreditNumber($input){
    $sum=0;
    for($i=1;$i<=4;$i++){
        if(strlen($input["no".$i])!=4 || !is_numeric($input["no".$i])){
            return "数字4桁入力してください。";
        }
    }
    for($i=1;$i<=4;$i++){
        $val= $input["no".$i];

        $sum += $val{0};
        $v = $val{1}*2;
        if($v>=10){
            $v -= 9;
        }
        $sum += $v;

        $sum += $val{2};
        $v = $val{3}*2;
        if($v>=10){
            $v -= 9;
        }
        $sum += $v;
    }


    if($sum !== 0 && $sum%10 === 0){
        return "カード番号 ". $input["no1"]."-".$input["no2"]."-".$input["no3"]."-".$input["no4"]." は不正ではありません。";
    }else{
        return "カード番号 ". $input["no1"]."-".$input["no2"]."-".$input["no3"]."-".$input["no4"]." は不正です。";
    }
}

$input = $_POST;
$result = "";

if(count($input)>0){
    $result = checkCreditNumber($input);
}


?>
<html>
<body>
<h1>クレジットカード不正番号チェック</h1>
<p>カード番号を入力すると、不正がどうか判定します。</p>
<form action="./" method="post">
<input type="text" maxlength=4 size=4 name="no1" value="<?php if(isset($input["no1"])) echo $input["no1"]; ?>" /> -
<input type="text" maxlength=4 size=4 name="no2" value="<?php if(isset($input["no2"])) echo $input["no2"]; ?>" /> -
<input type="text" maxlength=4 size=4 name="no3" value="<?php if(isset($input["no3"])) echo $input["no3"]; ?>" /> -
<input type="text" maxlength=4 size=4 name="no4" value="<?php if(isset($input["no4"])) echo $input["no4"]; ?>" />
<input type="submit" value="check" />
</form>

<?php
if($result){
?>
    <p><?php echo $result;?></p>
<?php
}
?>
</body>
</html>

phpの$変数{インデント}は文字列一文字ずつ扱うのに簡単で便利です。

9
9
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9