【问题标题】:Empty input type not being posted in html空输入类型未在 html 中发布
【发布时间】:2013-02-24 17:04:42
【问题描述】:

我创建了一个 PHP 函数,它将为您在数据库中的任何表创建一个表单。此功能允许您指定表格的名称和您想要在 html 表单中的所有列的列表。如果用户为文本输入输入一些东西,一切都很好。如果他们不这样做,那么在尝试检索列名时会发生奇怪的事情。请看下面的函数...

function generateSubmissionFromTable($db, $tablename, $rowstoinclude,$action)
    {
        $query = 'SHOW COLUMNS from '.$tablename;   
        $colsresult = mysql_query($query,$db);

        $table = array();
        while($row = mysql_fetch_array($colsresult))
        {
            array_push($table,$row[0]);
        }

        $finalcolumns = array();
        foreach($table as $row)
        {
            foreach($rowstoinclude as $inc)
            {
                if($row == $inc)
                {
                    array_push($finalcolumns,$row);
                }
            }
        }
        echo '<form name="loginy" method="post" action="'.$action.'">';
        foreach($finalcolumns as $column)
        {
            echo 'Please enter the '.$column.'<br/>';
            echo '<input type=text name=column['.$column.'] value="blah"/><br/>';
        }
        echo '<input type="hidden" name="tablename" value="'.$tablename.'" />';         
        echo '<button type="button" size="4" style="font-size:35px;" onClick="document.loginy.submit()">Submit</button>';
        echo '</form>';
    }

现在,奇怪的部分来了...我有另一个函数,它将根据自动生成的表单生成查询语句。

function submitDataToTable($post)
    {
        $query = 'INSERT INTO '.$post['tablename'].'(';
        $buf = "";
        while($col = current($post['column']))
        {
            $query = $query.$buf.key($post['column']);
            $buf=",";
            next($post['column']);
        }

        $buf = "";
        $query = $query.') VALUES (';
        foreach($post['column'] as $val)
        {
            $query = $query.$buf.$val;
            $buf = ",";
        }
        $query = $query.')';
        echo 'QUERY='.$query;
    }

例如,现在我有一个表,我想输入 3 列(名称、链接、描述),我填写顶部 2 而不是底部,查询生成如下...

QUERY=INSERT INTO LinksWebsites(name,link) VALUES (blah,blah,) 

如您所见,查询缺少列(名称、链接、描述),但如果您查看帖子,会发现很奇怪...

POST =Array ( [column] => Array ( [name] => blah [link] => blah [description] => ) [tablename] => LinksWebsites )

它显示了所有的键,但是我提取键的 PHP 方法没有显示所有的键! (可能与 current($array) 和 key($array) 调用有关?)

【问题讨论】:

  • 哇。我永远不会使用此代码,并建议您也停止使用它。它容易受到 SQL 注入的攻击。 mysql_ 函数已弃用,您应该使用 mysqli_PDO
  • 为什么ah,blah,) 分隔符, 在和行上?
  • @AarolamaBluenk 除了发出 SQL 语句的实际调用之外,代码还有什么问题吗?我正在为傻瓜使用 PHP,所以我对这段代码没有太多经验。

标签: php html post input


【解决方案1】:

尝试在您的 html 中放置一个 java 脚本,您将在其中放置文本输入不能为空的 php 函数,然后再尝试提交。

    <script>
    function validateForm()
    {
    if (inputbox==null || inputbox=="")
    {alert("Input should not be empty");
    return false; 
    }
    }
    </script>

只需在表单标签中包含onsubmit="return validateForm()"

【讨论】:

    猜你喜欢
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    相关资源
    最近更新 更多