【问题标题】:PHP string validationPHP 字符串验证
【发布时间】:2013-05-04 00:35:52
【问题描述】:

我也一直在尝试使用 PHP 来验证我的表单。该表单要求用户输入详细信息,一旦表单被验证,这些详细信息将被输入到数据库中的表中。我在表单中有一个名字字段,我正在尝试验证它以确保它输入了一个值(必填字段)并且应该只包含字母字符或连字符 (-) 字符。

这是我目前所拥有的:

<?php
if (isset($_POST["submit"])) {

$flag = false;
$badchar = "";
$string = $_POST["fname"];
$string = trim($string);
$length = strlen($string);
$strmsg = "";

if ($length == 0) {
$strmsg = '<span class="error"> Please enter your first name</span>';
$flag = true;}
else {
for ($i=0; $i<$length;$i++){
    $c = strtolower(substr($string, $i, 1));
    if (strpos("abcdefghijklmnopqrstuvwxyz-", $c) == false){
        $badchar .=$c;
        $flag = true;
    }
}
if ($flag) {
    $strmsg = '<span class="error"> The field contained the following invalid characters: $badchar</span>';}
}
if (!$flag) {
    $strmsg = '<span class="error"> Correct!</span>';}
}
?>

<h1>Customer Information Collection <br /></h1>

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="custinfo" >
<table>
<tr>
    <td><label for="custid">Customer ID (integer value): </label></td>
    <td><input type="text" id="custid" name="custid" value="<?php echo $temp ?>" size=11 /><?php echo $msg; ?></td>
</tr>

<tr>
    <td><label for="customerfname">Customer First Name: </label></td>
    <td><input type="text" id="fname" name="fname" size=50/><?php echo $strmsg; ?></td>
</tr>

我遇到的问题是,当我输入正确的字符串(例如 John)时,它仍然给我错误“该字段包含以下无效字符:$badchar”,当输入不正确的字符时,我想要它会在错误消息中的 $badchar 位置显示不正确的字符,但它只显示“该字段包含以下无效字符:$badchar”。有没有办法做到这一点?

对于这些问题的任何帮助将不胜感激。

【问题讨论】:

    标签: php string forms validation


    【解决方案1】:

    您的问题是您已经完成了== falsestrpos 可以返回0(第一个字符的索引),其计算结果为false。将== false=== false 交换,这将检查该值是否为布尔假而不是评估为假的值。请参阅http://php.net/manual/en/function.strpos.php的“返回值”部分@

    要打印 $badchar 的值,请将行更改为

    $strmsg = '<span class="error"> The field contained the following invalid characters: '.$badchar.'</span>';
    

    这会将变量连接到您的字符串中

    【讨论】:

      【解决方案2】:

      您的代码存在一些问题。

      strpos() 返回文本中搜索字符串位置的从 0 开始的索引,或者返回 false。需要使用===操作符查看结果;否则,0 结果将被解释为 false。

      在您的错误字符串中,您会看到:
      该字段包含以下无效字符:$badchar

      在 php 中,变量只在双引号字符串中被解析出来。由于您使用的是单引号,它只会回显您输入的实际文本,而不是变量的内容。您可以切换字符串中的双引号和单引号来修复它。

      【讨论】:

        猜你喜欢
        • 2013-07-10
        • 2011-10-30
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        • 2011-02-21
        • 2014-03-12
        相关资源
        最近更新 更多