我的代码是:
$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);
应。我也不知道如何将它应用到我的代码中。 有人可以帮助我吗?
答案 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 style
:http://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;
删除行尾的双引号。