我有以下代码,这是整个页面。我很沮丧,因为我在网上搜索时找不到一个完整的例子,而只有没有真正回答我问题的spinets。
该代码中令人不安的部分是如下所示的这一行:
echo "<p><a style='"font-size:40px; font-family:segoe script bold; color:green'" href="<?php echo $web_path; ?>">Mail Server</a></p>";
更具体地说,这部分:
href="<?php echo $web_path; ?>"
整个PHP页面如下所示:
<?php
include 'debug.php';
// Remember for later.
// header('Content-Type: application/force-download');
session_start();
$username = $_SESSION["fusername"];
$password = $_SESSION["fpassword"];
$web_path = $_SERVER['DOCUMENT_ROOT'] . "/UserPages/mail_login.html";
if ($username === "name_of_user")
{
echo "<!DOCTYPE html>
<html lang='"en-US'">
<head><title> The title text goes here </title></head>
<!-- Comments -->
<body>
<h6><center> Company name text goes here </center><br><h6>";
echo "<center><p style='"font-size:80px; font-family:segoe script bold'"><span style='"color:blue'"> First Name</span><span style='"color:red'"> Last Name</span></p></center>";
echo "<p><a style='"font-size:40px; font-family:segoe script bold; color:green'" href='"get_dir_lists.php'">Directory Listing</a></p>";
echo "<p><a style='"font-size:40px; font-family:segoe script bold; color:green'" href="<?php echo $web_path; ?>">Mail Server</a></p>";
echo "<center><p ><a style='"font-size:40px; font-family:segoe script bold; color:yellow'" href='"/login.html'">Return to Login Screen</a></p></center>";
echo "</body></html>";
}
else
{
echo "Ain't workin";
}
?>
我的问题是:如何将PHP脚本嵌入到已经嵌入PHP脚本(或页面)的href中?
我知道我很接近,但我有引号或缺少连接点的方式是不对的。结束?>页面末尾没有被识别为PHP结束语句。
对于其他需要看到更简化示例的读者,我已经删除了下面所有不必要的代码,以便将整个PHP页面简化为几行,以便更好地查看和清晰:
<?php
echo "<p><a href="<?php echo $web_path; ?>">Mail Server</a></p>";
?>
原因是您已经在PHP内部,并且使用了第二个echo
加上没有转义其他双引号。
echo "<p><a href="<?php echo $web_path; ?>">Mail Server</a></p>";
^^^^^^^^^^^ ^ ^^^
将其更改为
echo "<p><a href='"$web_path'">Mail Server</a></p>";
或者更具体地说:
echo "<p><a style='"font-size:40px; font-family:segoe script bold; color:green'" href='"$web_path'">Mail Server</a></p>";
启用错误报告,会引发:
分析错误:语法错误,意外的"?"。。。
您没有使用或没有共享(解析)错误的内容。
将错误报告添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
旁注:错误报告只能在临时阶段进行,而不能在生产阶段进行。
替代方法:
echo '<p><a href="'.$web_path.'">Mail Server</a></p>';
或
echo "<p><a href='$web_path'>Mail Server</a></p>";
您不必使用php
标记两次!然后你也不必回声可变
所以这应该有效:
<?php
echo "<p><a href="$web_path">Mail Server</a></p>";
?>
另一个解决方案是使用EOF语法。
echo <<<EOF
<p><a href="<?php echo $web_path; ?>">Mail Server</a></p>
EOF;
在HTML 中为echo语句使用短标记也是一个好主意
echo <<<EOF
<p><a href="<?= $web_path; ?>">Mail Server</a></p>
EOF;
在我看来,这种方法不是一个好主意,你可能应该像前面的答案一样做。