PHP Link Shortener问题

时间:2016-02-01 16:14:09

标签: php mysql database mysqli url-shortener

我似乎无法找到此代码的问题..但我知道有一个..对于初学者......它没有将条目添加到我的数据库中,其次我可以' t访问旧条目..

<?php
require_once '../config.php';
$conn = new mysqli($server, $username, $password, $database);
if ($conn->connect_error) {
    die("<p style=color:white>Could not connect to database: " . $conn->connect_error . "</p>");
}
$title = $_GET['x'];
if (isset($title)) {
$result = $conn->prepare("SELECT (id, url, title) FROM links WHERE title=$title");
$result->execute;
$goto = $result->get_result()->fetch_array();
$g = $goto[1];
header("Location: $g");
}
    function GenerateString($string_length = 3) {
        $permissible_characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $char_length = strlen($permissible_characters);
        $random = '';
        for ($i = 0; $i < $string_length; $i++) {
            $random .= $permissible_characters[rand(0, $char_length - 1)];
        }
        return $random;
}
$url = $_POST['url'];
$code = GenerateString();
if (isset($_POST['submit'])) {
if (substr($url, 0, 7) == "http://" ) {
    $url = $url;
}
elseif (substr($url, 0, 8) == "https://") {
    $url = $url;
} else {
    $url = "http://".$url;
}
$result = $conn->prepare("INSERT INTO links VALUES('',$url,$code)");
}

?>

请修复任何你看错的东西..我是PHP的新手! 提前致谢! -Zack

1 个答案:

答案 0 :(得分:1)

我看到的最明显的错误是:在你的阅读部分,你的$result->execute;缺少括号,因此永远不会被调用(没有括号,它只是一个语句,而不是一个函数调用,在这种情况下什么都不做)。因此,请将其更改为$result->execute();

在写作部分,您准备语句但从不执行它。需要执行准备好的语句才能使其生效。在$result->execute();之后添加$result = $conn->prepare(…);以解决此问题。

作为旁注:您应该使用预期的预准备语句,使用变量绑定(bind_param函数等)来防止SQL注入攻击!

有关详细信息,请参阅以下SO问题/答案:How can I prevent SQL injection in PHP?