PHP 模板语法 - 这是正确的吗?

发布于 2024-11-27 18:19:33 字数 945 浏览 4 评论 0原文

我正在创建一个模板驱动的网站,但不使用像 Smarty 或 Twig 这样的 PHP 模板包,这完全是我自己的编码。

这是一个模板 (mypage.php):(已移动以适合页面)

<TITLE>{$title}</TITLE>
<TABLE>
<TR><TD>{$maker}</TD><TD>{$model}</TD><TD>{$trim}</TD><TD>{$body}</TD>
<TD>{$price}</TD>
</TABLE>

内容来自 MySQL 数据库,如下所示:

<?php
mysql_connect("localhost", "mylogin", "password") or die(mysql_error());
mysql_select_db("test12") or die(mysql_error());
$query  = "SELECT name, subject, message FROM contact";
$result = mysql_query($query);

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "<table><td>{$row['maker']} <br><TD>{$row['model']}</TD><TD>{$row['trim']}</TD><TD>{$row['price']}</TD>" .

}

我认为我做得对,但如果我出错了,请告诉我。 ..这是我第一次真正尝试它! (经过编辑以适合 stackoverflow.com)

干杯

I'm creating a website that's template-driven, but not using PHP template packages like Smarty or Twig, it's entirely my own coding.

This is one template (mypage.php): (moved to fit in on page)

<TITLE>{$title}</TITLE>
<TABLE>
<TR><TD>{$maker}</TD><TD>{$model}</TD><TD>{$trim}</TD><TD>{$body}</TD>
<TD>{$price}</TD>
</TABLE>

The content comes from a MySQL database, like this:

<?php
mysql_connect("localhost", "mylogin", "password") or die(mysql_error());
mysql_select_db("test12") or die(mysql_error());
$query  = "SELECT name, subject, message FROM contact";
$result = mysql_query($query);

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo "<table><td>{$row['maker']} <br><TD>{$row['model']}</TD><TD>{$row['trim']}</TD><TD>{$row['price']}</TD>" .

}

I think I've done it right, but if I've gone wrong let me know... it's my first proper go at it! (Edited to fit on to stackoverflow.com)

cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暗喜 2024-12-04 18:19:33

我发现的一个错误是您没有转义从数据库检索的值。
这会让您容易受到 XSS 攻击。

我将 echo 部分更改为:

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
  $maker = htmlspecialchars($row['maker']);
  $model = htmlspecialchars($row['model']);
  $trim = htmlspecialchars($row['trim']);
  $price = htmlspecialchars($row['price']);

  echo "<table><td>{$maker}<br><TD>{$model}</TD><TD>{$trim}</TD><TD>{$price}</TD>".
}

One mistake I see is that you have not escaped the values you retrieve from the database.
This leaves you open to XSS.

I'd change the echo portion into:

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
  $maker = htmlspecialchars($row['maker']);
  $model = htmlspecialchars($row['model']);
  $trim = htmlspecialchars($row['trim']);
  $price = htmlspecialchars($row['price']);

  echo "<table><td>{$maker}<br><TD>{$model}</TD><TD>{$trim}</TD><TD>{$price}</TD>".
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文