require "assets/php/config.php";
error_reporting(E_ALL);
$location = null;
if(isset($_GET['l']))
{
$location = retrieveAddress($_GET['l']);
}
if($location != null){
header('Location: ' . $location);
}
else{
header('HTTP/1.0 404 Not Found');
echo 'Unknown link.';
}
public static function retrieveAddress($name)
{
$con = new PDO(Config::$host,
Config::$user,
Config::$password);
if (!$con) {
die('Could not connect: ' . mysql_error());
}
$sql = $con->prepare('SELECT address FROM links WHERE name = ?');
$sql->execute($name);
$location = $sql->fetchAll(PDO::FETCH_ASSOC);
$con = null;
return $location;
}
这个脚本应该允许我进入我的数据库,在那里我保存链接,然后重定向到那个位置,在使用简单的url缩短器时制作它,我可以轻松添加链接,以便数据库配置工作,但是当我尝试在这里检索没有出现。我也试过使用error_reporting(E_ALL);但我什么都没得到。任何人都有任何想法,看到有什么不对,我没看错?(我确定有什么不对,但我无法注意到
*编辑:我通过链接到达文件,没有使用ajax。我删除了所有的文本回声,我不知道如何检查$ location的值,看看我是否在不使用echo的情况下得到了正确的值,我还编辑了mysql只抓取地址,我也是得到这个名字,这是另一个错误,但我似乎还有一个地方。
答案 0 :(得分:3)
忘记我的评论,我刚刚看到你发送输出:
echo "before all";
发送标题之前。 这是一个很大的禁忌。您永远不会在重定向之前发送输出,并且通常在输出后不会发送标头。这也包括whitespace
。
此外,$location
所有脚本都保留NULL
,因为您正在从retrieveAddress
更改它,但由于您的变量是全局变量,因此您需要声明它在函数内部global $location
或将其作为$GLOBALS["location"]
如果你刚从函数返回$ location,会更容易。
<强>更新强>
显然,错误是在类
之外使用public static
public static function retrieveAddress($name)
{
结果是某种方式服务器混淆了而没有返回任何错误或输出。我们得到的唯一线索(我和OP)是通过萤火虫Reload the page to get source for..
发出的神秘信息。可以找到有关此消息的更多信息 here 。
因此,如果有人从他的服务器获得有趣的回复,没有错误,请更好地检查上述情况。