在我的联系人.php页面中,我在通过验证后向管理员和用户发送电子邮件。代码如下所示:
// If any validation error occurs
if(count($errors) > 0)
{
// show error messages
}
else
{
// sending emails to admin and user
set_flash_msg('msg', 'Thank you for contacting us.', 'success');
redirect_to('contact');
}
但是else
部分相关的闪存消息中的代码不起作用。如果我将此代码放在if
部分中,那么它可以毫无问题地工作。函数 set_flash_msg() 负责创建基于会话的 flash 消息。其代码如下:
// Set flash message
function set_flash_msg($name, $msg, $class)
{
global $name;
if(empty($_SESSION[$name]) && empty($_SESSION[$name . '_class']))
{
$_SESSION[$name] = $msg;
$_SESSION[$name . '_class'] = $class;
}
}
为了显示此消息,在上面的代码下面调用了另一个函数,如下所示:
// Show flash message
get_flash_msg();
会话设置没有问题,因为if
部分,它可以正常工作。在我的后端也使用相同的逻辑和编码流程,我在添加新页面时设置闪存消息并在页面列表页面上显示闪存消息.php。如果它在那里工作,那么为什么它在我的前端联系人.php页面上不起作用?知道吗?
>在我的联系人.php页面中,我正在抓取表单值,特别是"名称",如下所示:
// Preparing form variables
$name = isset($_POST['txtname']) ? $db_obj->sanitize_input($_POST['txtname']) : '';
局部变量$name与 set_flash_msg() 函数中的全局变量$name冲突。在上面的代码中将$name更改为$uname解决了这个问题。