HTML变量里面的html问题

时间:2013-12-19 20:10:07

标签: php html mysql html5 session

因为我刚开始编码php,所以请在这一个上找我。我的php和html存在问题。我理解一旦<?php ;?>打开后您不能将<?php ;?>之类的其他行放入其中使其看起来像<?php <?php ;?> ;?>因为它会抛出错误的概念,如果没有,它会在我的结尾...同样,我理解使用echoprint等等或多或少都是我所追求的。我的困境在于,如果使用会话,我将如何构建这个?这是我到目前为止所有这些都在<body>标签内:

<?php echo $_SESSION['id']?'
<div id="top_mid">
    <h2><?php echo $_SESSION['username'] ? $_SESSION['username'] : 'Guest';?></h2>
</div>':'
<h2>
    <li id="toggle" style="list-style: none;">
        <p>Please <a id="open" class="open" href="#open">Login | Register</a>
                  <a id="close" style="display: none;" class="close" href="#close">Login | Register</a> to access this page!
        </p>
</h2>';
?>

正如您所注意到的,这一行:<h2><?php echo $_SESSION['username'] ? $_SESSION['username'] : 'Guest';?></h2>是错误,因为它已经在之前的<?php ;?>声明中...

我尝试过使用<h2>echo "$_SESSION['username'] ? $_SESSION['username'] : 'Guest';"</h2>,但这也不起作用......我们非常感谢任何帮助......

我是否需要为该会话用户名创建变量?例如:

$username = "<?php echo $_SESSION['username'] ? $_SESSION['username'] : 'Guest';?>";然后将其放在<h2>元素中?如果是这样的话,我会如何重新构建它以使其工作,因为我已经尝试过它并且它会让我失误?

更新

感谢所有帮助过我的人。似乎有几种不同的方法可以实现我的目标,并感谢您的帮助!

8 个答案:

答案 0 :(得分:2)

在混合HTML而不是关闭PHP时,代码中存在非常基本的错误...

<?php echo $_SESSION['id'] ? 
'<div id="top_mid">
    <h2>'.($_SESSION['username'] ? $_SESSION['username'] : 'Guest').'</h2>
</div>' : '<h2>
    <li id="toggle" style="list-style: none;">
        <p>Please <a id="open" class="open" href="#open">Login | Register</a>
                  <a id="close" style="display: none;" class="close" href="#close">Login | Register</a> to access this page!
        </p>
</h2>';
?>

所以,试着让它变得更容易:

<?php echo $_SESSION['id'] ? $string1 : $string2; ?>

这是基本条件。 String2是简单的字符串,没什么特别的。 String1包含另一个条件,需要与字符串分开并返回。为了简化:

$string1 = '<div id="top_mid"><h2>';
$string1 .= ($_SESSION['username'] ? $_SESSION['username'] : 'Guest');
$string1 .= '</h2></div>';

希望这能解释得足够,这些都是基础知识。对你来说一定很明显很快。

答案 1 :(得分:1)

看看你的代码。有一些基本错误。

<?php if(isset($_SESSION['id'])): ?>
<div id="top_mid">
    <h2><?php echo $_SESSION['username'] ? $_SESSION['username'] : 'Guest';?></h2>
</div>
<?php else: ?>
<h2>
    <li id="toggle" style="list-style: none;">
        <p>Please <a id="open" class="open" href="#open">Login | Register</a>
                  <a id="close" style="display: none;" class="close" href="#close">Login | Register</a> to access this page!
        </p>
</h2>
<?php endif; ?>

答案 2 :(得分:1)

我个人使用三元运算符,if语句似乎有点过分,例如:

echo $animal=="fish"?"Wet":"Dry";

对于其他任何事情,if语句更容易阅读。 echo并非总是必要的:

<?php if($_SESSION['id']){ ?>
  <div id="top_mid">
    <h2><?php echo $_SESSION['username'] ? $_SESSION['username'] : 'Guest';?></h2>
  </div>
<?php } else { ?>
  <h2>
    <li id="toggle" style="list-style: none;">
      <p>Please <a id="open" class="open" href="#open">Login | Register</a>
                <a id="close" style="display: none;" class="close" href="#close">Login | Register</a> to access this page!
      </p>
  </h2>
<?php } ?>

答案 3 :(得分:1)

改为使用:

<?php if($_SESSION['id']):?>
<div id="top_mid">
    <h2><?php echo $_SESSION['username'] ? $_SESSION['username'] : 'Guest';?></h2>
</div>
<?php else: ?>
    <h2>
        <li id="toggle" style="list-style: none;">
            <p>Please <a id="open" class="open" href="#open">Login | Register</a>
                      <a id="close" style="display: none;" class="close" href="#close">Login | Register</a> to access this page!
            </p>
    </h2>
<?php endif; ?>

答案 4 :(得分:1)

问题更多的是您试图致电<?php ?&gt;在另一个<?php ?>

那就是说,你需要将代码的第3行解析为字符串的另一部分,而不是作为新的php块。希望我对您的代码的编辑对您来说足够有意义

<?php echo $_SESSION['id']?'
<div id="top_mid">
    //modified to just be part of the string:
    <h2>'.($_SESSION['username'] ? $_SESSION['username'] : 'Guest' ).'</h2>
</div>':'
<h2>
    <li id="toggle" style="list-style: none;">
        <p>Please <a id="open" class="open" href="#open">Login | Register</a>
                  <a id="close" style="display: none;" class="close" href="#close">Login | Register</a> to access this page!
        </p>
</h2>';
?>

答案 5 :(得分:1)

你缺少'&gt;',我建议优化代码,就像这样......

<?php if($_SESSION['id']): ?>
<div id="top_mid">
    <h2><?php echo $_SESSION['username'] ? $_SESSION['username'] : 'Guest'; ?></h2>
</div>
<?php else: ?>
<h2>
    <li id="toggle" style="list-style: none;">
        <p>Please <a id="open" class="open" href="#open">Login | Register</a>
           <a id="close" style="display: none;" class="close" href="#close">Login | Register</a> to access this page!
        </p>
</h2>
<?php endif; ?>

答案 6 :(得分:0)

(假设您已设置session_start();

您无法像这样嵌套<?echo?>。另请注意您的内联/速记(isset())语句周围的if,以确保您实际检查是否已设置。你拥有它的方式实际上并没有检查变量。 (甚至不确定这是有效的语法?)

执行:

<?php echo $_SESSION['id'] ?> <!-- note the closed ?> tag -->
<div id="top_mid">
    <!-- wrapped your $_SESSION['username'] check in (isset()) -->
    <h2><?php echo (isset($_SESSION['username'])) ? $_SESSION['username'] : 'Guest';?></h2>
</div>
<h2>
    <li id="toggle" style="list-style: none;">
        <p>Please 
            <a id="open" class="open" href="#open">Login | Register</a>
            <a id="close" style="display: none;" class="close" href="#close">Login | Register</a> to access this page!
        </p>
    </li> <!-- you were missing this close tag -->
</h2>
<!-- removed the nested closing ?> tag -->

更新,因为我们正在谈论做条件:

<?php

if (isset($_SESSION['id'])) 
{
    echo "<div id='top_mid'>";
    echo "<h2>".(isset($_SESSION['username'])) ? $_SESSION['username'] : 'Guest';."</h2>";
    echo "</div>";
}
else
{
    //...do other stuff
}

?>

...虽然这种方法可以让你处理双引号,单引号或转义引号,并且确实为编码添加了一个额外的层(echo EVERYTHING),它会使你的if / else语句保持很多< / em> cleaner,如果您使用的是代码荧光笔,您可以轻松地在条件或函数之间查看页面上吐出的内容。

答案 7 :(得分:0)

(你正在关闭关闭标签)那么这条线怎么样?如果你发布的代码是正确的,你就错过了一个基本的东西

<?php echo $_SESSION['id']?' <!-- You're missing closing TAG -->

应该是

<?php echo $_SESSION['id'] ?>

并且你已经在PHP TAG中没有另一个PHP标签(在关闭它之前)