回声不能在 PHP 中为 !is_numeric 工作

Posted

技术标签:

【中文标题】回声不能在 PHP 中为 !is_numeric 工作【英文标题】:Echo not working in PHP for !is_numeric 【发布时间】:2014-05-05 09:19:04 【问题描述】:

我有一个简单的 html 文本框,它只包含整数,它们必须是 6 个字符。如果不满足这些条件,则应该向用户提供适当的消息,并且该值不应该是 $_POST'ed。

$idLength = strlen($_POST['customerid']);

if ($_SERVER["REQUEST_METHOD"] == "POST")

if(empty($_POST['customerid']))
    
        $idErr = " *Enter ID";
    
else if(($idLength > 0) && ($idLength < 6))
       
       $idnErr = " ID must be exactly 6 Digits";
       if((!is_numeric($_POST['customerid'])))
       $idnumErr = " ID must only be numerical values";
       

else if ((is_numeric($_POST['customerid']))&&($idLength = 6)) 
    
        $id = $_POST['customerid'];
    
echo "$id";

因此,使用该代码,我检查输入框是否为空,如果是,则在框旁边显示“*输入 ID”。我检查该值是否大于 0 且小于 6(html 中的 maxlength = 6),如果是,则显示“ID 必须正好是 6 位”。我还检查字符是否为数字,如果不是,则显示“ID 只能是数值”。

如果用户输入了一个有效的 ID,那么只有这个 ID 才会存储在变量中。例如:- 123456。这一切似乎工作正常。

当我准确输入 6 个不打算使用的字符(例如 12345a 或 ABCDE3)时,就会出现我的问题。代码没有将它们存储到 $id 中,但它没有显示错误消息,我想知道我做错了什么。

如果用户输入不正确,我还想将用户输入的内容保存在文本框中。例如。如果用户在客户 ID 中输入“1234g”并单击提交,我希望它在页面刷新错误时出现在文本框中。

【问题讨论】:

你的代码中有一个未定义的变量 @Daan 你保守秘密而不告诉我们? ;) 什么变量未定义? @大安 都已经定义好了,我这里没有添加,没有必要 $idLength = strlen($_POST['customerid']); 您应该将其粘贴到 server_method 帖子中。 $_POST['customerid'] 未定义 【参考方案1】:

这里:

($idLength = 6)

您正在分配6 给变量。你应该这样做:

($idLength == 6)

== 是 comparison operator 并检查它是否等于 6。

【讨论】:

我之前尝试过,这就是我之前的想法,但这不是问题所在。我刚刚又试了一次,没有出现错误。 @roro 好的,您似乎缺少最后一个else,因为length&gt;6 但不是数字,我删除了多余的is_numeric(). 看看这个code. 谢谢你,我明白我做错了什么

以上是关于回声不能在 PHP 中为 !is_numeric 工作的主要内容,如果未能解决你的问题,请参考以下文章

验证信用卡号

在回声中回声 <?php ?> [重复]

intval 还是 is_numeric? PHP

php intval()函数漏洞,is_numeric() 漏洞,绕过回文判断

来自 php 的回声“按原样”

你如何删除以前的回声/表单 PHP