私は Codeigniter で基本的なクレジット カード バリデーターを構築しています。これが私の HTML です。
<input type="text" id="ccard" />
<input type="submit" onClick="check_cc()" name="submit_cc" value="Validar cartão!" id="checkcc" />
<div id="result"></div>
JavaScript 関数:
function check_cc() {
var cc;
cc = $("#ccard").val();
$.ajax({
url: '<?php echo base_url() . "js_tests/check_cc_string"; ?>',
type: 'POST',
data: {credit_card : cc},
success: function(output_string) {
setTimeout(function() {
$('#result').append(output_string);
}, 1000);
}
});
}
(この時点で、URL で行っていることが実際に正しいかどうかは完全にはわかりません。関数はコントローラーでトリガーされるようですが、cc
変数が渡されているかどうかはわかりません)
これは私のコントローラーです:
function check_cc_string() {
$check = check_cc($_POST['cc'], true);
if ($check !== false) {
$output_string = $_POST['cc'] . " - " . $check;
} else {
$output_string = " - Not a match";
}
echo json_encode($output_string);
}
また、コントローラー内のクレジット カード チェッカー:
function check_cc($cc, $extra_check = false) {
$cards = array(
"visa" => "(4\d{12}(?:\d{3})?)",
"amex" => "(3[47]\d{13})",
"jcb" => "(35[2-8][89]\d\d\d{10})",
"maestro" => "((?:5020|5038|6304|6579|6761)\d{12}(?:\d\d)?)",
"solo" => "((?:6334|6767)\d{12}(?:\d\d)?\d?)",
"mastercard" => "(5[1-5]\d{14})",
"switch" => "(?:(?:(?:4903|4905|4911|4936|6333|6759)\d{12})|(?:(?:564182|633110)\d{10})(\d\d)?\d?)",
);
$names = array("Visa", "American Express", "JCB", "Maestro", "Solo", "Mastercard", "Switch");
$matches = array();
$pattern = "#^(?:" . implode("|", $cards) . ")$#";
$result = preg_match($pattern, str_replace(" ", "", $cc), $matches);
if ($extra_check && $result > 0) {
$result = (validatecard($cc)) ? 1 : 0;
}
return ($result > 0) ? $names[sizeof($matches) - 2] : false;
}
残念ながら、これは私にこれを返しています:
致命的なエラー: 未定義関数 check_cc() の呼び出し
私はこれらの専門家ではありませんが、jQuery に渡された URL がその PHP 関数に直接アクセスしていると信じるのは正しいでしょうか? したがって、ファイルの残りの部分を読み取ることができませんか?
これを確認する実用的な方法はありますか、それとも関数を再構築してすべてのクレジット カード検証コードを含める必要がありますか?