当我运行此代码时:
<html>
<head>
</head>
<body>
<ul>
<li>
<?php
if(isset($_COOKIE["username"])){
print "Hello, ";
}
elseif(isset($_SESSION["userId"])){
print "Hello, ";
}
else{
print "<p><a href='logInForm.php'>Log In</a></p>";
}
?>
</li>
</ul>
</body>
</html>
这是输出:
-Log In
";}?>
我不知道为什么要从括号中打印出来。有什么帮助吗?
答案 0 :(得分:0)
这应该效果更好
<html>
<head>
<title>Some login thing</title>
</head>
<body>
<ul>
<li>
<p>
<?php
if(isset($_COOKIE["username"])){
echo "Hello ".$_COOKIE["username"].", ";
}
elseif(isset($_SESSION["userId"])){
echo "Hello user #".$_SESSION["userId"].", ";
}
else{
echo "<a href=\"logInForm.php\">Log In</a>";
}
?>
</p>
</li>
</ul>
</body>
</html>
我坚持使用一种引号来表示字符串并回显\"
表示打印"
。如果它没有被转义,则会发生错误。此外,我更改了Hello消息以包含用户名或用户ID。
我还将<p>
标签移到PHP代码之外,这样所有文本都将被视为段落,而不仅仅是登录链接。
Print
可能会有效,但我发现echo
对我来说效果更好,而且输入的字符少一个。