window.location.href - 帮助重定向

时间:2014-04-28 12:44:29

标签: javascript php window.location

我的代码是:

$movie_id = $_GET['like'];
$temp = "www.hifff.se/details.php?id=" . $movie_id";
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('Du får bara lajka en gång per film och dygn. Lajka gärna en annan film eller se filmen igen och återkom imorgon!')
window.location.href='" . $temp . "';
</SCRIPT>");

我假设我的$ temp设置错误。因此没有工作。但我不明白设置它时我做错了什么。 我也听说这不适用于铬?那个:

 setTimeout(function(){document.location.href = "page.html;"},500);

应。我也不知道如何将它应用到我的代码中。 有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

让我们一起分析您的代码。第一行:

$movie_id = $_GET['like'];

在编写代码时,您会在进步时学习不同的设计模式和最佳实践。我对你的建议是防守计划。这段代码可能在一开始就有用,但可以轻松破解。使用isset函数检查GET变量是否存在(http://www.php.net/isset)。

$temp = "www.hifff.se/details.php?id=" . $movie_id";

您正在使用PHP's magic quotes。魔术引号允许其中的变量和其他特殊字符。 PHP会自动为你解析它们,因此不需要使用连接(并且代码块甚至是错误的,请参阅句子末尾的引用):

$temp = "www.hifff.se/details.php?id=$movie_id"; // this works.

注意:刚刚发现自PHP 5.4以来不推荐使用魔术引号。如果您认为自己不需要,请不要使用它们。

echo ("<SCRIPT LANGUAGE='JavaScript'>

语言属性已被弃用了很长时间..请改用type="text/javascript"。这样可行,因为大多数新浏览器都会在<script>标记中使用javascript。

此外,通常的做法是使用"双引号作为标记属性。如果有人查看源代码,那么HTML中的每个地方都有单引号和双引号。细节,我的朋友。这将是结果:

echo ('<script type="text/javascript">

在以下行中,您正在调用window对象。此对象已在全局范围内,因此除非您已覆盖此对象,否则不再需要编写window.。您还会在警报结束时错过;

alert('Du får bara lajka en gång per film och dygn. Lajka gärna en annan film eller se filmen igen och återkom imorgon!');

最后,我们结束了。同样,window已经是this,因此没有必要再次编写整个事情。少即是多。您还忘记将http://附加到temp变量。请注意,在这种情况下您使用完整的URL;在网站上写一个位置是一种更好的做法。

您也不需要所有这些引号,因为echo使用魔术引号,因此退出引号并在这种情况下连接变量是不必要的。

location.href='$temp';

最后评论:你echo将所有内容排成一行..它看起来有条不紊/整洁吗?我认为不是,最好将所有内容分成小块,而不是仅将所有内容都放在一行中。它看起来会更好,更有条理。您获得的任何错误都将更容易找到。当您的代码被他人使用或查看时,最好维持programming stylehttp://en.wikipedia.org/wiki/Programming_style


我会写这样的代码:

if (isset($_GET['like'])) {
    $temp = "www.hifff.se/details.php?id=" . $_GET['like'];
    $text = 'Du får bara lajka en gång per film och dygn. Lajka gärna en annan film eller se filmen igen och återkom imorgon!';

    echo    '<script type="text/javascript">'
          .     "alert($text); location.href='$temp';"
          . '</script>'
          ;
}

答案 1 :(得分:0)

$temp = "http://www.hifff.se/details.php?id=" . $movie_id"";

您必须将http添加到您的网址才能执行正确的重定向

答案 2 :(得分:0)

替换此行

$temp = "www.hifff.se/details.php?id=" . $movie_id";

$temp = "www.hifff.se/details.php?id=" . $movie_id;

删除行尾的双引号。