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

时间:2014-10-31 00:46:12

标签: php html

我有以下代码,这是整个页面。我很沮丧,因为我在研究网络时找不到完整的例子,但只有那些没有真正回答我问题的情节。

这段代码令人不安的部分如下所示:

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>";
?>

3 个答案:

答案 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;

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