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

时间:2018-04-06 08:00:37

标签: php html web

所以我在尝试这个问题之前尝试过研究这个问题。鉴于我有一个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。请不要担心使用cookie执行此操作的安全风险等。它有目的地容易受到攻击。

PPS。我100%确定cookie已设置,我用cookie浏览器查看。

4 个答案:

答案 0 :(得分:2)

它不起作用,因为前两行是无效的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是否设置之前您尝试使用它,而不是之后!

if(isset($_COOKIE['user'])): 
  $name=$_COOKIE['user'];

答案 1 :(得分:0)

你应该像这样使用php + html:

<?php $var = 'my string'; ?>

<?php if ($var == 'my string') : ?>
    <h1><?php echo $var; ?></h1>
<?php endif;?>

这打破了if语句,允许你在条件语句之间添加html,而不必从php回显和html

答案 2 :(得分:0)

你应该发布你得到的任何错误 - 但是你不能在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;
?>

答案 3 :(得分:0)

要仅在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';
   }
?>