没有HTTP的帖子FORM

时间:2014-12-24 15:29:51

标签: php mysql forms post

我的脚本是一个发布文本框值的表单:

<?PHP 
if(isset($_POST['add'])){
  $code = "https://" . $_POST['code']. "";
  $sql = mysql_query( "INSERT INTO names VALUE( '','$code')" ) or die ( mysql_error() );
}
?>


<form method="post" action="<?php $_PHP_SELF ?>">
<table width="600" border="1" cellspacing="1" cellpadding="2">
<tr>
</td><font class="sep"></font>
<br>
<input class="inputs" placeholder="Link" name="code" type="text" id="code">
<br>
<center><input class="btnExample" name="add" type="submit" id="add" value="Add Name!"></center>
</tr>
</table>
</form>

我添加了一个http部分但是必须有一种方法让我输入http://部分的链接并发布它而不会给我错误并允许我在文本框中输入完整链接{{1不仅http://example.com?如果您还可以解释为什么在使用example.com时会出现错误,谢谢!

1 个答案:

答案 0 :(得分:3)

首先,用正则表达式替换httphttps,然后重新附加它:

if (isset($_POST['add'])) {
    $url = preg_replace('@(http://|https://)@i', '', $_POST["add"]);
    $code = "https://" . $url . "";
    $sql = mysql_query("INSERT INTO names VALUES (NULL,'".mysql_real_escape_string($code)."')") or die(mysql_error());
}

备注

  • 通过从外部转义变量来避免sql注入,或者使用准备好的语句。

  • 但最重要的是:不要使用mysql函数,不推荐使用它们,而是使用mysqli或PDO。 (在我的例子中,我不使用它们,不要混淆你,但请听听这个建议)

你的HTML无效。它应该是这样的:

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
    <table width="600" border="1" cellspacing="1" cellpadding="2">
        <tr>
            <td>
                <div>
                    <input class="inputs sep" placeholder="Link" name="code" type="text" id="code">
                </div>
                <div style="text-align: center;">
                    <input style="display: block" class="btnExample" name="add" type="submit" id="add" value="Add Name!">
                </div>
            </td>
        </tr>
    </table>
</form>