标头直接执行

时间:2013-08-15 06:14:57

标签: php

我正在使用if条件,并且有一些脚本然后是标题。 但剧本不会工作,直接标题工作。

if(strpos(mysql_error(),'Email')!=false)
{
print '<script type="text/javascript">'; 
print 'alert("The email address is already registered")'; 
print '</script>';  
header('Location: register.php');
}

3 个答案:

答案 0 :(得分:3)

用典型的JS替换标题。这就是诀窍。

if(strpos(mysql_error(),'Email')!==false)
{
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('The email address is already registered')
window.location.href='register.php';
</SCRIPT>");
}

答案 1 :(得分:2)

您的代码中存在一些不同的错误。

首先,header来电应该是首先 输出。你不这样做。您之前没有缓冲print。从(非常好的)PHP文档:

  

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。使用include或require,函数或其他文件访问函数读取代码是一个非常常见的错误,并且在调用header()之前输出空格或空行。使用单个PHP / HTML文件时存在同样的问题。

其次,即使您使用了缓冲输出,Javascript也永远不会执行,因为当有Location标题时,不会评估正文。

第三,使用mysql_error来确定某条记录是否存在是不可取的。更好的是(伪代码):

SELECT email FROM table WHERE email="someEmail"
if (rows found) {
   alert "email already exists"
}

最后,使用mysqliPDO

祝学习网络发展好运!

答案 2 :(得分:1)

使用:

window.location = "example.html";

首先查看@Bart Friederichs的答案,即使标题工作正常,JavaScript警报也无法正常工作因为页面一旦完成就会重定向,浏览器也不会为你执行JavaScript。

<?php
print '<script type="text/javascript">'; 
print 'alert("The email address is already registered");'; 
print 'window.location = "register";';
print '</script>';  
?>

您也可以在没有PHP的情况下输出它!例如:

if(strpos(mysql_error(),'Email')!==false)
{
?>
<script type="text/javascript">
alert("The email address is already registered");
window.location = "register.php";
</script>
<?php
}
?>