我试图在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页面,但我没有得到成功的消息!
有人能帮我一下吗?问题是您将脚本重定向到register.php,然后尝试分配smarty变量。它将不起作用,因为之前的重定向将被完成。看看你的代码,你似乎总是重定向到register.php所以你应该从这个文件中移一些代码到register.php
在register.php中你可以简单的放置:
$success = "You have successfully registered your account.";
$smarty->assign("success",$success);
$smarty->display('register.tpl");
在寄存器中。TPL可以使用
{$success}
然而,看看你的代码,这并不是最好的方法。我不认为将用户重定向到另一个页面有任何意义。此外,您可以使重定向始终,并设置变量成功信息,一切都是成功的,即使它是失败的-在答案的代码中,您应该将成功和重定向到register.php如果只有当注册成功。