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

时间:2011-08-04 09:24:12

标签: php mysql templates templating templating-engine

我正在创建一个模板驱动的网站,但不使用像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)

欢呼声

1 个答案:

答案 0 :(得分:0)

我看到的一个错误是您没有转义从数据库中检索的值 这使您可以使用XSS。

我将回声部分改为:

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>".
}