You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP嵌套echo时while循环输出异常,页面显示代码而非内容求助

解决PHP嵌套echo中while循环未执行的问题

你的问题出在两个核心点:一是登录判断逻辑写反了,二是把while循环代码作为普通字符串直接输出,PHP不会解析字符串内部的代码。以下是具体解决方法:

1. 修正登录判断逻辑

原代码中if(isset($_SESSION["loggedin"]))判断为真时,输出"You are not logged in.",这和你“登录后显示表格”的需求完全相反,需要把if和else的内容调换。

2. 让while循环正确执行

你当前是把while循环的代码当作HTML文本直接echo出去,PHP不会运行字符串里的PHP代码。必须跳出当前的echo上下文,直接编写PHP代码执行循环,再继续输出HTML内容。

修正后的代码示例(PHP与HTML混合写法)

<?php
session_start(); // 必须先启动session,否则无法读取$_SESSION变量
if(!isset($_SESSION["loggedin"])) { // 未登录时提示
    echo "You are not logged in.";
} else { // 已登录时显示页面
?>
<!DOCTYPE html>
<html>
<head>
    <title>Index - Sandwich Fun&trade;</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="robots" content="noindex"> 
    <style type="text/css">
        .smorgass { position: absolute; top: 0; left: 0; width: 100%; }
        table, th, td { border: 1px solid black; }
    </style>
</head>
<body>
<table height="500" class="smorgass">
    <tr>
        <th colspan="3">
            <?php
            // 这里直接编写PHP循环代码,会被执行而非直接输出
            // 注意:无限循环会导致页面卡死,建议添加终止条件,比如循环3次
            $loopCount = 0;
            while ($loopCount < 3) {
                echo "Sandwich Fun&trade;";
                $loopCount++;
            }
            ?>
        </th>
    </tr>
    <tr><td></td><td></td><td></td></tr>
    <tr><td></td></tr>
</table>
</body>
</html>
<?php } ?>

关键注意事项

  • 避免用大段echo输出HTML,改用PHP与HTML混合的写法,代码更易读、易维护。
  • 原代码中的while(1===1)是无限循环,会导致页面持续加载甚至崩溃,务必添加合理的终止条件(比如限制循环次数)。
  • 必须在使用$_SESSION前调用session_start(),否则无法读取登录状态。

内容的提问来源于stack exchange,提问作者Greenwitch88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:05:30