因为我刚开始编码php,所以请在这一个上找我。我的php和html存在问题。我理解一旦<?php ;?>
打开后您不能将<?php ;?>
之类的其他行放入其中使其看起来像<?php <?php ;?> ;?>
因为它会抛出错误的概念,如果没有,它会在我的结尾...同样,我理解使用echo
,print
等等或多或少都是我所追求的。我的困境在于,如果使用会话,我将如何构建这个?这是我到目前为止所有这些都在<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>
元素中?如果是这样的话,我会如何重新构建它以使其工作,因为我已经尝试过它并且它会让我失误?
更新
感谢所有帮助过我的人。似乎有几种不同的方法可以实现我的目标,并感谢您的帮助!
答案 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标签(在关闭它之前)