if语句中的PHP重定向

时间:2014-03-12 03:13:34

标签: php

我有以下代码:

if($_POST['profileName']!="") {
    $profileName = $_POST['profileName'];

    if (!($stmt = $con->prepare("UPDATE `user_settings` SET ProfileName=?,ProfileSetup=? WHERE Username=?")) || !is_object($stmt)) {
        die( "Error preparing: (" .$con->errno . ") " . $con->error);
    }
    $stmt->bind_param('sis', $profileName, 1, $_SESSION['user']);
    if($stmt->execute()) { 
        echo '<div class="alert_successful alert_absolute_center">';
        echo 'Profile Name change Successful!';
        echo '</div>';
    } else {
        echo '<div class="alert_unsuccessful alert_absolute_center">';
        echo 'Something went wrong... Try again!';
        echo '</div>';
    }
}

我希望能够根据if语句的结果重定向到不同的地方...我已经尝试设置变量然后使用元重定向,但当然这不起作用,因为它正在寻找实际设置之前的变量......

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

如果您使用的是Output buffering,则可以设置header重定向:

if($stmt->execute())
    header('Location: your_page_success.php');
else
    header('Location: your_page_fail.php');

如果您已经开始输出数据(例如,使用header),则echo调用无效。

答案 1 :(得分:0)

重定向是easy。这是你的方法,需要一些工作。

基本上,这就是你想要做的事情:

  1. 去某处(你当前的剧本)
  2. 弄清楚你想要做什么(你当前的逻辑)
  3. 向用户显示有关您所做的一些反馈,即步骤#2为可能会或可能不会将用户重定向到其他位置
  4. 首先,我建议重定向用户,即使它是在同一页面上。这样可以防止“您想再次提交此表单吗?”如果用户在提交表单后刷新页面,则会输入提醒。

    redirect的最佳方法是使用PHP的header函数。只需确保在执行此命令之前没有任何内容打印到页面。另外,请始终使用exit();

    那么用户的反馈信息呢?有很多方法可以解决这个问题;这是一对夫妇:

    1. 有一个预定义和索引的消息列表(无论是硬编码,数据库还是某个配置文件。重定向时,在URL中添加索引作为参数,类似http://redirecttohere.com/?msg=badpwd现在,您可以使用此参数并检索并显示相应的消息。
    2. *首选* 将您的消息存储在session变量中,重定向,从会话中检索消息,显示消息,销毁所述会话变量。查看this guy's solution;使用它和/或查看他的源代码并弄清楚他是如何做到的。