我正在处理的程序应该从输入框中删除破折号,空格等,然后将数字显示给用户。
我在php代码中收到一个未定义的变量和未定义的索引错误。错误在第35和41行。我猜这个功能超出了范围,但我不确定。
我用类似的代码制作了阶乘计算器,它运行良好。我已经尝试将该代码调整到这个问题,但我无法让它工作。我不知道为什么,但是我在理解php如何工作方面遇到了很多麻烦。
谢谢!
<?php
function getCardNum($cardNum) {
$ccNum = true;
if ($_POST) {
$number = $_POST['cardNum'];
$number = preg_replace('/[\-\" "]/', '', $number);
if (is_numeric($number)) {
$ccNum = true;
}
else {
$ccNum = false;
}
return $number;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Card Validator</title>
<link rel="stylesheet" type="text/css" href="common.css" />
</head>
<body>
<h3>Enter your credit card number!:</h3>
<form method="POST">
<table border="0">
<tr>
<td>Enter numeric character only</td>
<td><input type="text" name="cardNum" id="cardNum" size = "50" /></td>
<td>
<?php
if ($cardNum) {
echo '<p style="color:green;">Number is valid</p>';
echo '<p style="color:green;">' . getCardNum($_POST['cardNum']) . '</p>';
}
else {
echo '<p style="color:red;">Number contains non-numeric characters!</p><br />';
echo '<p style="color:red;">' . getCardNum($_POST['cardNum']) . '</p>';
}
?>
</td>
</tr>
<td><input type="submit" name="cardNum" id="cardNum" value="Submit" /></td>
<td><input type="reset" name="resetButton" id="resetButton" value="Reset" /></td>
</tr>
</table>
</form>
</body>
</html>
答案 0 :(得分:2)
if ($_POST) {
将始终评估为true,因为$_POST
超全局始终存在。你必须做更具体的测试,如if (isset($_POST['cardNum']))
答案 1 :(得分:1)
在解决您不确定它们是否存在于数组中的键之前,请使用isset()函数。
例如:
if (isset($_POST['cardNum'])) {
echo '<p style="color:green;">Number is valid</p>';
echo '<p style="color:green;">' . getCardNum($_POST['cardNum']) . '</p>';
}
答案 2 :(得分:1)
我不得不改变一些条件,但我认为这应该按预期工作。
submit
输入已重命名为submit
,因为它导致了冲突。
添加了if (is_numeric($_POST['cardNum'])) {
和if ((!is_numeric($_POST['cardNum'])) && (isset($_POST['cardNum']))) {
<?php
function getCardNum() {
$ccNum = true;
if(isset($_POST['submit'])) {
$number = $_POST['cardNum'];
$number = preg_replace('/[\-\" "]/', '', $number);
if (is_numeric($number)) {
$ccNum = true;
}
else {
$ccNum = false;
}
return $number;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Card Validator</title>
<link rel="stylesheet" type="text/css" href="common.css" />
</head>
<body>
<h3>Enter your credit card number!:</h3>
<form method="POST" action="">
<table border="0">
<tr>
<td>Enter numeric character only</td>
<td><input type="text" name="cardNum" id="cardNum" size = "50" /></td>
<td>
<?php
if (is_numeric($_POST['cardNum'])) {
echo '<p style="color:green;">Number is valid</p>';
echo '<p style="color:green;">' . getCardNum($_POST['cardNum']) . '</p>';
}
if ((!is_numeric($_POST['cardNum'])) && (isset($_POST['cardNum']))) {
echo '<p style="color:red;">Number contains non-numeric characters!</p><br />';
echo '<p style="color:red;">' . getCardNum($_POST['cardNum']) . '</p>';
}
?>
</td>
</tr>
<td><input type="submit" name="submit" id="cardNum" value="Submit" /></td>
<td><input type="reset" name="resetButton" id="resetButton" value="Reset" /></td>
</tr>
</table>
</form>
</body>
</html>