使用bit.ly缩短URL后,PHP header()重定向无法正常工作

时间:2010-04-21 17:44:07

标签: php redirect header

我有php标头重定向的问题。我已经花了好几个小时试图解决它。 当脚本中没有使用bit.ly api时,问题不会发生,我不知道为什么。

<?php
    if (strlen($_GET['url']) > 26) {
        $shortenedURL = $_GET['url'];
        if (isset($_GET['login']) && isset($_GET['apikey'])) {
            $shortenedURL = file_get_contents('http://api.bit.ly/v3/shorten?format=txt&login='.urlencode($_GET['login']).'&apiKey='.$_GET['apikey'].'&uri='.urlencode($_GET['url']));
        }
        else {
            $shortenedURL = file_get_contents('http://icbrd.net/shorten.php?longurl='.$_GET['url']);
        }

        if (strlen($shortenedURL) > 0) {
            header( 'Location: icebird://compose?status='.$shortenedURL.'%20' );
            exit();
        }
        else {
            header( 'Location: icebird://compose?status='.$_GET['url'].'%20' );
            exit();
        }
    }
    else {
        header( 'Location: icebird://compose?status='.$_GET['url'].'%20' );
        exit();
    }
?>

我希望你能帮助我,因为这让我发疯。 此致

3 个答案:

答案 0 :(得分:1)

你真的需要掌握调试方法。

使用变量来保存url并将其用作file_get_contents的参数。这样您就可以输出/调试值,看看出了什么问题。

如果URL看起来不错,则手动请求URL和/或输出/调试$ shortenedURL变量以查看内容 - 它可能是错误而不是您期望的错误。

我们几乎不可能调试你的代码,因为我们不知道所有变量的值。

答案 1 :(得分:0)

我要做的第一件事就是弄清楚为什么header()重定向不起作用是在echo 'line 2';之后的行上添加<?php

示例:

<?php
  echo 'line 2'; // line 2 so i dont forget where i put the echo later on

这样,php会在发送标题时提醒您,因为“第2行”文本已经发送到浏览器。

这可能会解决这个问题。

答案 2 :(得分:0)

好的,伙计,现在正在运作。 bit.ly api将url与空白一起返回,只是在浏览器中查看echo输出,我没有意识到这一点。现在使用trim()将其删除。 谢谢你的回答! :)