如何使用PHP将URL插入MySQL数据库?

时间:2014-12-18 04:21:02

标签: php mysql

我有一个表单,可以将信息提交到数据库中。表单包含3个输入 - 名称,描述和URL。这三个工作正常并将数据提交到数据库中,但URL输入仅在输入的文本不包含http://时才有效,这不是我想要的。我需要它包含http://

目前,如果我在没有http://的情况下提交表单,那么它会很好,但如果确实包含http://,我会收到406不可接受的错误。

我已经阅读了一些关于mysqli_real_escape_string的文章,但我还没有运气好运。目前我有以下内容:

$dbh = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$code_name = filter_var($_POST['code_name'], FILTER_SANITIZE_STRING);
$code_desc = filter_var($_POST['code_desc'], FILTER_SANITIZE_STRING);
$code_dest = filter_var($_POST['code_dest'], FILTER_SANITIZE_STRING);

$stmt = $dbh->prepare("INSERT INTO qr_codes (code_name, code_desc, code_dest ) VALUES (:code_name, :code_desc, :code_dest )");

$stmt->bindParam(':code_name', $code_name, PDO::PARAM_STR);
$stmt->bindParam(':code_desc', $code_desc, PDO::PARAM_STR, 40);
$stmt->bindParam(':code_dest', $code_dest, PDO::PARAM_STR, 40);

$stmt->execute();

以下是表格:

<form id="newQR" method="post" action="create-qr-code.php" onSubmit="return validateForm();">
    <ul class="new-qr-form">
        <li><label>Name</label><br><input id="code_name" name="code_name" type="text" class="form-control" ></li>
        <li><label>Description</label><br><input id="code_desc" name="code_desc" type="text" class="form-control" ></li>
        <li><label>Destination</label><br><input id="code_dest" name="code_dest" type="text" class="form-control" ></li>
        <li class="img-src-preview"><label>Preview Source</label><br><input value="test" id="code_img_src" name="code_img_src" type="text" class="form-control" ></li>
    </ul>
</form>

关于它为何不允许使用网址的任何想法?

2 个答案:

答案 0 :(得分:0)

一个简单的解决方法是在validateForm()中删除http:// onSubmit。或者您可以用某种方式对其进行编码,例如使用encodeURIComponent()。

答案 1 :(得分:0)

$url= filter_var($_POST['url'], FILTER_SANITIZE_URL);

为您的网址使用FILTER_SANITIZE_URL-Constant