会话没有关闭或其他问题?

问题描述 投票:0回答:1

所以在提交页面上发送了 $headers,但是带有 $_POST 函数的电子邮件不起作用。 这是 submit.php 上的会话信息

<?php
session_start();

if(!isset($_SESSION['set']))
{
$_SESSION['set'] = 1

$content    = str_replace(array_keys($replace), array_values($replace), $content);

        // settings
        $to         = $_POST['txt_email'];
        $subject    = 'Your request';
        $txt        = '<html><body>';
        $headers    = "From: [email protected]\r\n";
                $headers    .= "Bcc: [email protected]\r\n";
        $headers    .= "Reply-To: [email protected]\r\n";
        $headers    .= "MIME-Version: 1.0\r\n";
        $headers    .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

        // send mail
if(!empty($to)){
mail($to,$subject,$content,$headers);
}
}

else {
echo "Session is still active";
}
?>

在提交表格后的感谢页面中,会话部分会发生这种情况:

<?php
/* Template name: Thank you */
get_header();
    if (session_status() == PHP_SESSION_NONE) {
        session_start();
    }
    
    if (isset($_SESSION['set'])) {         
        unset($_SESSION['set']); 
    }
?>

会话有问题吗?事情,这多年来一直很好,最近没有任何改变,因此突然 $to = $_POST['txt_email'];不再工作了。

有人有什么建议吗?

尝试了不同的会话解决方案,但没有任何效果。

php mysql wordpress session
1个回答
0
投票

您在评论中提到的错误告诉您在调用

session_start()
之前某些代码正在向浏览器发送输出。这是一个错误,因为在输出任何内容之前必须调用 session_start().

错误说输出来自

wp-includes/formatting.php
。当您的框架在脚本运行之前发出错误时,通常会发生这种情况。需要记住的一件事是,
session_start()
只需要在请求生命周期中调用一次,最好尽可能靠近入口点。您很可能会在调用堆栈的更高位置进行此调用,以完全避免此问题。

然而,要调试这个特定实例,请查看返回的网页,看看页面顶部是否有 PHP 错误或警告。此错误可能是您的特定问题的原因。我相信这个错误 should 也出现在你的错误日志中,除非你有奇怪的配置。

© www.soinside.com 2019 - 2024. All rights reserved.