将php脚本嵌入到已经嵌入到php脚本中的href中


Embedding php script into an href that is already embedded into a php script

我有以下代码,这是整个页面。我很沮丧,因为我在网上搜索时找不到一个完整的例子,而只有没有真正回答我问题的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;

在我看来,这种方法不是一个好主意,你可能应该像前面的答案一样做。