繁体   English   中英

如何在HTML标记中使用php参数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM