IF语句中的PHP头位置

IF语句中的PHP头位置,php,Php,我试图写这个脚本说,如果电子邮件是有效的插入到数据库和重定向,否则重定向与错误消息只有我的重定向是不工作的,我不是非常伟大的php和仍然阅读了这个主题,所以我感谢任何建议,提前感谢 <?php $userid = $usersClass->userID(); $user_email=$_POST['email_upd']; if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)) { header('Location: http://

我试图写这个脚本说,如果电子邮件是有效的插入到数据库和重定向,否则重定向与错误消息只有我的重定向是不工作的,我不是非常伟大的php和仍然阅读了这个主题,所以我感谢任何建议,提前感谢

<?php

$userid = $usersClass->userID();
$user_email=$_POST['email_upd'];

if(!filter_var($user_email, FILTER_VALIDATE_EMAIL))
{
header('Location: http://www.mysite.co.uk/mytwitter.php?msg=invalid');
}
else
{
mysql_query(" UPDATE produgg_users SET email='$user_email' where produgg_users.id = ".$usersClass->userID()) or die(mysql_error());
header('Location: http://www.mysite.co.uk/mytwitter.php?msg=success');
}

?>

很抱歉没有描述出现了什么问题,发生的是我的页面没有重定向回页眉(位置)中的页面

我现在已经启用了错误报告,我仍然只看到一个白色页面,这是我的整个页面代码

<?php 

error_reporting(E_ALL);
require 'config.inc.php'; 


?>

<?php

$userid = $usersClass->userID();
$user_email=$_POST['email_upd'];

if(!filter_var($user_email, FILTER_VALIDATE_EMAIL))
    {
    header('Location: http://www..co.uk/mytwitter.php?msg=invalid');
    }
else
    {
    mysql_query(" UPDATE produgg_users SET email='$user_email' where produgg_users.id = ".$usersClass->userID()) or die(mysql_error());
    header('Location: http://www..co.uk/mytwitter.php?msg=success');
    }

?>

这应该行得通,但请确保在header方法之前没有任何代码,当我说代码时,我指的是从任何其他文件中的php或HTML标记输出的代码,这需要首先执行, 但您还需要确保重定向后的代码没有执行,请使用exit执行

header(....
exit;

你能把你的完整剧本贴出来吗?Senad所说的是正确的:如果您的脚本将任何内容写入输出缓冲区,则任何头();再也不行了。根据您给出的代码,没有任何内容写入输出缓冲区(除非您得到了一个mysql错误,您没有告诉我们,我假设不是这样)


此外,无需使用,然后使用重新打开。仅供参考。

我使用以下代码成功地使其工作,我已经根据我所读到的有关SQL注入的内容重新编写了它,它工作正常,我非常感谢对此的任何建议,谢谢

<?php 

require 'config.inc.php'; 

$userid = $usersClass->userID();
$user_email=mysql_real_escape_string($_POST['email_upd']);

if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $user_email)) 
{ 
    mysql_query(" UPDATE produgg_users SET email='$user_email' where produgg_users.id = ".$usersClass->userID()) or die(mysql_error());
    echo "<meta http-equiv=\"refresh\" content=\"0;URL=/mytwitter.php?msg=email updated\">";
} 
else 
{ 
    echo "<meta http-equiv=\"refresh\" content=\"0;URL=/mytwitter.php?msg=email error\">";
} 

?>

不是你问题的答案,但在头重定向之后,你需要始终
die()
,你的代码容易受到攻击。不过,你应该描述到底出了什么问题。嗨,Pekka,我知道它目前容易受到注入攻击,我正在阅读我计划稍后集成的内容,或者这不是处理事情的最佳方式?请详细说明“我的重定向不起作用”。到底发生了什么?有错误信息吗?如果没有,请将
error\u reporting
设置为
E\u ALL
并将
display\u errors
设置为
1
@Liam:retro fitting SQL injection prevention很难-您可能会忘记一些东西,您必须重新测试所有内容。尽快,考虑从直接查询(MySQL L*)到PDO和参数化查询。这应该是真的,但是检查其他浏览器,我知道FF上的一些插件可以禁用页面重定向…