PHP语句中的PHP头位置

时间:2011-06-01 19:05:55

标签: php

我试着写这个脚本,说如果电子邮件被禁用插入数据库并重定向,否则重定向错误消息只有我的重定向不起作用,我不是非常伟大的PHP和仍然阅读主题所以id欣赏任何建议,提前谢谢!

<?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');
    }

?>

3 个答案:

答案 0 :(得分:0)

这应该可行,但是确保你在header方法之前没有任何代码,当我说代码我的意思是从任何其他文件中的php或HTML标签输出时,这需要先执行, 但是你还需要确保重定向后的代码没有执行,使用exit;

header(....
exit;

答案 1 :(得分:0)

您能发布完整的脚本吗? Senad说的是真的:如果你的脚本将任何写入输出缓冲区,那么任何header();将不再工作。根据你给出的代码,没有任何内容写入输出缓冲区(除非你得到一个mysql错误,你没有告诉我们,我认为不是这样)。

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

答案 2 :(得分:0)

我设法使用以下代码使其工作,我根据我读到的关于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\">";
} 

?>