我有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();
}
?>
我希望你能帮助我,因为这让我发疯。 此致
答案 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()将其删除。 谢谢你的回答! :)