Перенаправление заголовка PHP () не работает после сокращения URL с помощью bit.ly - PullRequest
0 голосов
/ 21 апреля 2010

У меня проблема с перенаправлением заголовка 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 ]

1 голос
/ 21 апреля 2010

Вам действительно нужно освоить способы отладки.

Используйте переменную для хранения URL-адреса и используйте его в качестве параметра file_get_contents. Таким образом, вы можете вывести / отладить значение и посмотреть, что происходит не так.

Если URL-адрес выглядит хорошо, запросите URL-адрес вручную и / или выведите / отладьте переменную $ shorttenURL, чтобы увидеть ее содержимое - это может быть ошибкой, а не ожидаемой.

Нам почти невозможно отладить ваш код, так как мы не знаем значений для всех ваших переменных.

0 голосов
/ 22 апреля 2010

Хорошо, ребята, сейчас работает. API bit.ly вернул URL вместе с пробелом, и, глядя только на вывод эха в браузере, я этого не понял. Используя trim () теперь, чтобы удалить его. Спасибо за ваши ответы! :)

0 голосов
/ 21 апреля 2010

Первое, что я хотел бы сделать, чтобы выяснить, почему не работает перенаправление header (), это добавить echo 'line 2'; в строку после <?php

пример:

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

Таким образом php предупредит вас, когда заголовки отправляются из-за того, что текст «строки 2» уже отправляется в браузер.

Это может пролить свет на проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...