我有以下代码,这是整个页面。我很沮丧,因为我在研究网络时找不到完整的例子,但只有那些没有真正回答我问题的情节。
这段代码令人不安的部分如下所示:
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中?
我知道我很接近,但是我有引号或缺少连接点的方式是不对的。结束?&gt;在页面的末尾不被识别为PHP结束语句。
对于需要查看更简化示例的其他读者,我已经删除了下面所有不必要的代码,以便将整个PHP页面简化为几行,以便更好地查看和清晰:
<?php
echo "<p><a href="<?php echo $web_path; ?>">Mail Server</a></p>";
?>
答案 0 :(得分:4)
原因是因为您已经在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>";
开启error reporting,会抛出:
解析错误:语法错误,意外&#39;?&#39; ...
你要么没有使用,要么没有共享(解析)错误。
将错误报告添加到文件的顶部,这有助于查找错误。
<?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>";
答案 1 :(得分:0)
你不必两次使用php
标签!然后你也不必回应变量
所以这应该有效:
<?php
echo "<p><a href="$web_path">Mail Server</a></p>";
?>
答案 2 :(得分:0)
另一种解决方案是使用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;
这个方法在我看来不是一个好主意,你应该像以前的答案那样做。