开发者

PHP header() redirect not working after shortening URL using bit.ly

I have a problem with php header redirect. I already spent hours trying to fix it. The problem doesn't occur when the bit.ly api is not used in the script, I have no clue why.

<?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://开发者_如何学JAVAicbrd.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();
    }
?>

I hope you can help me, as this is driving me crazy. Regards


You really need to get the hang of ways to debug.

Use a variable to hold the url and use that as the parameter to file_get_contents. This way you can output/debug the value and see what is going wrong.

If the URL looks good then request the URL manually and/or output/debug the $shortenedURL variable to see the contents - it could be an error instead of what you are expecting.

It's near impossible for us to debug your code since we don't know the values to all your variables.


First thing I would do to figure out why the header() redirect isnt working is add echo 'line 2'; on the line after <?php

example:

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

This way php will alert you when the headers are being sent because of the 'line 2' text already being sent to the browser.

This may shed some light on the problem.


Okay guys, it's working now. The bit.ly api returned the url together with a whitespace and from only looking at the echo output in the browser, I didn't realize that. Using trim() now to remove it. Thanks for your answers! :)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜