验证码不能用于PHP

时间:2015-06-25 10:46:05

标签: php

我验证我的文本框只包含数字,也可以为空或空白。但是当我将其留空或输入任何数字时,它始终显示错误消息“传递年份仅包含数字。”。我的代码是

<?php
include "config.php";
function is_valid_fname($postg_year)
{
if ( !preg_match ("/^[0-9\s]+$/",$postg_year)) {
     ?>
     <center><strong><font color="red">Passing Year Only Contain Numbers.</font></strong></center>
     <?php
     return false;
 }
}
if (isset($_POST['submit'])) {
$postg_year=$_POST['postg_year'];
if(is_valid_fname($postg_year))
{
//my code
}
<form method="post">
<input type="text" name="postg_year" class="small_text" width="60">
<input type="submit" name="submit" value="submit">
</form>
}

5 个答案:

答案 0 :(得分:2)

如果我理解正确的话...... 改变这个:

if ( !preg_match ("/^[0-9\s]+$/",$postg_year)) {

进入这个:

if ( !preg_match ("/^[0-9\s]*$/",$postg_year)) {

区别在于&#34; +&#34;需要至少一个字符,而&#34; *&#34;甚至接受0个字符。

答案 1 :(得分:1)

你的表单应该有一个带有name属性的提交按钮,你在php中检查它是否已设置但是在表单中你没有给它任何名字,所以is_valid_fname()永远不会在php中调用,使用以下代码:

<input type="submit" name = "submit" value="submit">

答案 2 :(得分:0)

尝试使用

(is_numeric($postg_year)

strlen($postg_year) == 0)

答案 3 :(得分:0)

尝试

function is_valid_fname($postg_year)
{
    if ( !preg_match ("/^[0-9\s]*$/",$postg_year))
    {
        return '<center><strong><font color="red">Passing Year Only Contain Numbers.</font></strong></center>';
    }
    else
        return false;
}

答案 4 :(得分:0)

不同之处在于“+”需要至少一个字符,而“star()”甚至接受0个字符。因此您必须替换“+”而不是“star()”。等,

if ( !preg_match ("/^[0-9\s]*$/",$postg_year)) {