[英]How can I use a php parameter in HTML markup?
因此,在尝试提出这个问题之前,我已经尝试过对此进行研究。 鉴于我有一个index.php和一个存储用户名的cookie(另存为$ name),大多数答案告诉我这样做很简单:
echo '<h3>'.$name.'</h3>'
但这对我不起作用,我认为这是因为我先对if语句执行了奇怪的语法,并且我想在此if语句中使用参数。 我的确切代码看起来像这样:
<?php
//store the cookie
$name=$_COOKIE['user'];
//check that it is set
if(isset($_COOKIE['user'])):
<section id="login">
<h1> Welcome</h1>
echo '<h3>'.$name.'</h3>';
</section>
else: //prompt to login
endif;
?>
它旨在向登录的用户显示欢迎消息,并按名称对他们进行处理,否则提示用户登录。
所以我的问题是: 为什么参数根本不反映? (在加载页面时不显示任何内容),如何使它按预期工作?
ps。 请不要担心使用cookies来做到这一点等,这是故意脆弱的安全风险。
pps。 我100%确信已设置cookie,因此我使用cookie浏览器对其进行了查看。
它不起作用,因为前两行是无效的PHP,因此它将引发错误并停止工作。
如果要使用echo
方法,则正确的语法为:
echo '<section id="login">';
echo '<h1> Welcome</h1>';
echo '<h3>'.$name.'</h3>';
重要的是永远不要像插入原始HTML那样插入外部数据 。 这会使您容易受到XSS攻击。 将输入视为纯文本并将其转换为HTML,然后再将其输出为HTML文档。
$name_html = htmlspecialchars($name);
echo '<section id="login">';
echo '<h1> Welcome</h1>';
echo '<h3>'.$name_html.'</h3>';
您可以使用变量插值使代码更易于阅读:
$name_html = htmlspecialchars($name);
echo '<section id="login">';
echo '<h1> Welcome</h1>';
echo "<h3>$name_html</h3>";
而且,当输出大块HTML时,完全退出PHP模式更容易:
$name_html = htmlspecialchars($name);
?>
<section id="login">
<h1> Welcome</h1>
<h3><?=$name_html?></h3>
<?php
在旁边
在尝试使用cookie 之前 (而非之后),请检查cookie是否已设置!
if(isset($_COOKIE['user'])):
$name=$_COOKIE['user'];
您应该这样使用php + html:
<?php $var = 'my string'; ?>
<?php if ($var == 'my string') : ?>
<h1><?php echo $var; ?></h1>
<?php endif;?>
这会破坏if语句,使您可以在条件语句之间添加html,而不必从php回显和html
您应该发布遇到的任何错误-但是您不能只在php内编写html,而不能将其回显或暂时终止php。
<?php
//store the cookie
$name=$_COOKIE['user'];
//check that it is set
if(isset($_COOKIE['user'])):?>
<section id="login">
<h1> Welcome</h1>
<?php echo '<h3>'.$name.'</h3>'; ?>
</section>
<?php else: //prompt to login
endif;
?>
要仅在php语句为true时显示HTML代码,只需在打开if语句后立即关闭php标记,然后将HTML代码放在其中。
<?php
//store the cookie
$name=$_COOKIE['user'];
//check that it is set
if(isset($_COOKIE['user'])) {
?>
<section id="login">
<h1> Welcome</h1>
<h3><?php echo $name; ?></h3>
</section>
<?php
} else {
echo 'Please login';
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.