PHP 会话函数调试辅助



我知道如何包含外部PHP页面以及如何启动会话等,但我认为我正在做的事情的逻辑有些混乱。希望有人能看一看...

我有一个 html 页面,它是一个表单,它拉出一个 PHP 视图页面,其中包含它发送给它的信息。我想将我的函数放在外部页面中,同时使用会话,但我不断收到语法错误。

当我发送表格时,它会转到以下内容:

<?php
session_start();
include 'functs.php'; 
if ($_POST && !empty($_POST['name'])) {
$_SESSION['name'] = $_POST['name'];
$_SESSION['time'] = $_POST['time'];
confirmed();
}
else {
print unconfirmed();
}
?>

我带有这些功能的外部页面是这样的:

<?php
function confirmed() {
echo "<head>";
echo "<title>Confirmation Page</title>";
echo '</head>";
echo "<body>";
PRINT <<<HERE
if (isset($_SESSION['name'])) {
echo 'Thank you, '.$_SESSION['name']. ' your reservation is confirmed for ' . $_SESSION['time'] ;
}
else {
echo 'There seems to have been an error processing your reservation. Please ensure that  you have cookies enabled and try your request again' ;
}
HERE;
echo "</body></html>";
?>

我得到的错误是解析错误:语法错误,意外的"名称"(T_STRING),期望在第 10 行的 E:\Program Files\xampp\htdocs\cis\w2\functs.php 中出现","或";"。如果我在内部插入函数,它可以工作,所以我知道它与我如何格式化包含页面有关。

通过语法突出显示此处的错误非常明显:

echo '</head>";
//-----------^

此行的引号不正确,因此您永远不会终止字符串,并且它会继续运行。

编辑

但这不是唯一的问题。 您也永远不会用右大括号关闭函数:} .

主要问题是您在这一行上的引号不匹配:

echo '</head>";

但是,我不得不说我很困惑为什么你有HEREDOC。当然,您只需要if声明吗?

最新更新