php - 客户端和服务器端验证

标签 php javascript mysql

大家好,我想知道如何验证服务器端和客户端的 3 件事。

数据库表产品

我的数据库看起来像这样,但里面有超过 400 条数据。

pid   name   size            
1     grey   12 inch          
2     blue   16 inch     
database table category

pid    category
1        vans
2        nike
database table itemised

pid      price
1        30.00
2        50.00

我有一些字段需要验证。我已经完成了验证以检查它是否不为空。

我的表中的一个字段如下所示

  <select id="Category" name="Category">
<?php
        dbconnect(); 
        $stmt = $conn->prepare("SELECT Name FROM Category WHERE pid=:id");
        $stmt->bindParam('id',$id);
        $stmt->execute();
        $i = 0;
         $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
          foreach ($rows as $row) { 
        if ($i == 0) {

        echo '<option SELECTED value="'.$row['Name'].'">'.$row['Name'].'</option>
        ';
        }
        else {
        echo '<option value="'.$row['Name'].'">'.$row['Name'].'</option>';
        }
        $i++;
        }
    ?>
      </select>

它不是表单而是表格。如果您注意到尺寸是数字并用字母表示。

我的问题 或多或少大家都熟悉开发者工具来改变发布值。我想验证客户端(JS)和客户端(php)以确保没有人弄乱该值。

我这样做是为了检查它是否为空 举个例子,如果有 正常

<option value="blue vans">blue vans</option>

不正常

<option value="">blue vans</option> // in this one the value is `BLANKET` 

下面的js检查这个

function isEmpty(aTextField,errormessage) //null may be used for errormessage to only change the colour of matching fields
{
    if (aTextField.value.length<=0)
    {
        if (lfield != aTextField || lfield === null) { fields[fields.length] = [aTextField,false]; } else { fields[fields.length-1] = [aTextField,false]; }
        lfield = aTextField;
        if (errormessage !== "")
        {
            if (counter < error_count || error_count == 0) { errors += errormessage+'\n'; } counter++;
        }
        return true;
    }
    else
    {
        if (lfield != aTextField || lfield === null) { fields[fields.length] = [aTextField,true]; }
        lfield = aTextField;
        return true;
    }
}

在 PHP 中

function notEmpty($inputname,$error_message)
    {
        $this->js.='if (!isEmpty(formname.'.$inputname.',"'.$error_message.'")) return false;';
        if ( isset($_POST[$inputname]) && ( strlen($_POST[$inputname]) <= 0 ))
        {
            if ($error_message != null)
            {
                $this -> error_message .= $error_message.'<br>';
            }
        }
    }

现在您可以看到我如何验证表中所有选项的总值(value) 我如何在js和php中验证

对于大小,如果我最后没有inch,那会很简单,但更改数据库中的 1000 多个数据将是一件痛苦的事情。

知道我该怎么做吗???

我希望我已经清楚地解释了这一点,如果没有,请发表评论,我会尝试重新表述这个问题。

谢谢

最佳答案

我会在 Javascript 和 php 中使用正则表达式。您可以在两种语言中使用相同的模式,因此不必编写两次。

php-检查大小:

<?php
if(!preg_match("/^[0-9]+ (inch|othervalue1|othervalue2)$/",$_POST[$inputname]){
    $this -> error_message .= 'Wrong Value<br>';
}
?>

对于JS,你可以看一下这个:http://www.w3schools.com/jsref/jsref_obj_regexp.asp

这可能在 JS 中起作用,但尚未测试:

function checkSize(value){
    var patt=new RegExp("^[0-9]+ (inch|othervalue1|othervalue2)$");
    return patt.test(value);   //returns false for wrong value
}

此外,我建议为值和单位制作两列。它会给你带来几个好处。

关于php - 客户端和服务器端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17896794/

相关文章:

PHP/Linux shell 文本颜色

javascript - 使用 Puppeteer.js 截取 URL 列表的屏幕截图

javascript - 保留 jquery ui 选项卡的状态

php - 无法通过 phpmyadmin Debian 8 禁用 root 登录

javascript - 我们如何让 swagger-js 库保存 web 服务接口(interface)定义?

php - 使用 mysql 和 PHP 从本地主机连接到远程数据库

mysql - 在 JOIN 2 次同一个表的查询中使用单个表实例的更智能方法是什么?

php - 为 jQuery 显示正确格式化数组

php - 如何为 Mandrill API 创建动态数组

javascript - 是否可以动态导入节点模块?