1

我正在使用 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');
}
4

3 回答 3

3

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

if(strpos(mysql_error(),'Email')!==false)
{
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('The email address is already registered')
window.location.href='register.php';
</SCRIPT>");
}
于 2013-08-15T06:19:34.860 回答
2

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

首先,header调用应该是您输出的第一件事。你不这样做。你之前有 unbuffered 。来自(非常好的)PHP 文档:print

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

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

第三,使用mysql_error找出某个记录是否存在不是要走的路。更好的是(伪代码):

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

最后,使用mysqliPDO

祝你学习 web 开发好运!

于 2013-08-15T06:17:20.037 回答
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
}
?>
于 2013-08-15T06:18:23.527 回答