这是我的PHP脚本:
<?php
if (isset($_POST['account']))
{
$str = $_POST[account];
if ( !preg_match( "^[0-9]+$", $str ))
{
print "<p class=\"fadeout\" style=\"color:rgba(240, 240, 0, 1.0);\" >Enter numbers only!</p>";
}
else
{
exec('"cmd /c echo weee!"');
print "<p class=\"fadeout\" style=\"color:rgba(240, 240, 0, 1.0);\" >Your account has been added.</p>";
}
}
else {
if (isset($_POST['account']) || $account == "") {
print "<form method=\"post\"><p>Enter your account number below.</p>";
print "<input name=\"account\" type=\"text\" size=\"15\" maxlength=\"7\"><input value=\"Send\" type=\"submit\"></form>";
}
}
?>
我正在尝试通过他们的帐号获取访问者的输入,然后我希望PHP验证它是否是输入的数字并执行某些操作。
现在,它显示输入框和按钮,但点击提交按钮会使其显示“仅输入数字!”无论他们进入什么地方。
为什么不正确检测数字?
答案 0 :(得分:3)
在我看来,你的正则表达式是不对的。试试这个:
if (!preg_match("/^[0-9]+$/", $str))
答案 1 :(得分:2)
它看起来像你的帖子输入周围的简单语法错误。
if (isset($_POST['account']))
{
$str = $_POST[account];
应改为
if (isset($_POST['account']))
{
$str = $_POST['account'];
答案 2 :(得分:1)
你有两个问题:
$_POST
的价值。不正确:
$str = $_POST[account];
正确:
$str = $_POST['account'];
您可以在此处测试正则表达式:https://regex101.com/
如果您希望它只接受数字,那么改变这一行:
if ( ! preg_match( "^[0-9]+$", $str ))
对此:
if ( ! preg_match( "(^[0-9]+$)", $str))
答案 3 :(得分:0)