【发布时间】:2025-12-06 22:20:05
【问题描述】:
我只是想在 MySQL 表中存储一个 URI。当我检索它时,“:”消失了。所以http://www.example.com 变成了 http//www.example.com 我已经研究过它并且有解决方案; (分号)、,(逗号)、引号等,但不能用于冒号。
我试过 http \ ://www.xyz.com (没有空格),但这会将它转换为 http/://www.example.com 我正在使用 php。有什么建议吗?
你真的不需要代码来理解这个问题,但由于人们坚持,甚至投反对票,这里是代码:
<?php
$id = $_GET["id"];
$conn = new mysqli($servername, $username, $password, $dbname); //security parameters not shown
$sql = "SELECT * FROM uri WHERE myURI='" . $id . "'";
$result = $conn->query($sql);
if ($result) {
$row = $result->fetch_assoc();
if ($row) {
$SendTo = $row["SendTo"];
header("Location: " . $SendTo);
}
}
?>
注意:我没有显示插入代码,因为在这个阶段我只是手动输入 URI 来创建 POC。
【问题讨论】:
-
您只是将 URI 存储到 db 列中吗?如果是,则在 PHP 中验证 URL 并将 URL 直接存储到字段类型为
varchar或text的列中,不要对其进行转义,只需在 php 中验证并直接存储即可。如果 url 无效,则执行上述操作将为您提供额外的 URL 检查,返回错误或正常保存 -
我在存储 URI 时对其进行验证。这不是问题 - 当我检索 URI 时,我丢失了冒号。
-
您必须使用
addslashes()函数进行保存。删除它。 -
我们很想看看一些代码。
-
我没有使用 addlashes @Norman