在smarty php模板中提交表单后显示成功消息?

时间:2014-05-22 12:13:35

标签: php mysql smarty

我试图在smarty php模板中提交表单后显示成功消息。

一旦用户在网站上注册并且他们的数据已输入mysql数据库,我需要在同一页面上显示成功消息。

我的php页面中有以下内容:

    session_start();
    ob_start();
    $success = "";

    $stmt = mysqli_prepare(
        $db_conx,
        "INSERT INTO (XXX, XXX, XXX) VALUES (?, ?, ?)");

    ;
    //after validation, of course
    mysqli_stmt_bind_param($stmt, "sss", $firstname, $lastname, $username);
    mysqli_stmt_execute($stmt);
    if (mysqli_affected_rows($db_conx))
    {
        mysqli_stmt_close($stmt);//<-- CLEAN UP AFTER YOURSELF!
        //update was successful
        $id = mysqli_insert_id($db_conx);
    }
    printf("<script>location.href='register.PHP'</script>");

    $success = "You have successfully registered your account.";
    exit();
        } 
      } 
    } 
$smarty->assign("success",$success);

我在<form>标记正上方的模板页面中显示了此内容:

{$success}

但是,我将数据输入mysql并重定向到register.php页面,但我没有收到成功消息!

有人可以帮我解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

问题是您将脚本重定向到register.php,然后尝试分配smarty变量。它不会起作用,因为早期的重定向将会完成。看看你的代码,似乎你总是重定向到register.php,所以你应该将一些代码从这个文件移到register.php

在register.php中

你可以简单的地方:

$success = "You have successfully registered your account.";
$smarty->assign("success",$success);
$smarty->display('register.tpl");

在register.tpl中你可以使用

{$success}

然而,查看您的代码并不是应该完成的最佳方式。我没有看到将用户重定向到另一个页面的任何意义。此外,你总是进行重定向,并设置变量成功信息,即使它是失败的,一切都是成功的 - 在来自anwer的代码中你应该成功并重定向到register.php里面,如果只是在注册成功时。