目前无法弄清楚如何在输出我的HTML页面的打印功能中正确转义php函数。
例如,我有一个名为removeClient的页面,我想根据它的ID删除客户端。下拉框应该为用户提供当前客户端ID,并且他们应该可以单击一个。
我有一个主页面,根据URL提供的视图调用函数。
现在,我希望页面打印下拉菜单,其中包含Postgres数据库提供的ID,然后是一些表单以填写新的用户数据。
被调用的函数如下:
function removeClient() {
include 'dbconnect.php';
if ((isset($_POST['add']))) {
if (isset($_POST['ID']) && (isset($_POST['FirstName'])) && (isset($_POST['LastName'])) && (isset($_POST['IP'])) && (isset($_POST['Status']))) {
$clientid = $_POST['ID'];
$FirstName = $_POST['FirstName'];
$LastName = $_POST['LastName'];
$ip = $_POST['IP'];
$status = $_POST['Status'];
$result = pg_query($dbconnection, "somequery");
if (@pg_affected_rows($result) === 1) {
echo "<p> Client removed!</p>";
} else {
echo "<p> Something went horribly wrong. Contact a system adminstrator </p>";
}
}
}
echo
"<form name=\"addClient\" method=\"post\" action=\"?view=addClient\"/><br/>" .
"<select name=\"clientID\" id=\"clientID\"> " .
"<td>ID</td> <tr><input type=\"text\" maxlength=\"32\" name=\"ID\" /></tr><br/>" .
"<td>First Name</td> <tr><input type=\"text\" maxlength=\"32\" name=\"FirstName\" /></tr><br/>" .
"<td>Last Name</td> <tr><input type=\"text\" maxlength=\"32\" name=\"LastName\" /></tr><br/>" .
"<td>IP Addr.</td> <tr><input type=\"text\" maxlength=\"32\" name=\"IP\" /></tr><br/>" .
"<td>Status</td> <tr><input type=\"text\" maxlength=\"32\" name=\"Status\" /></tr><br/>" .
"<input type=\"submit\" name=\"add\" value=\"Send\" /></form><br/>";
}
现在,我想要做的就是改变这条线 “”。
到Postgres通过PHP加载数据库值的行。
对于PHP部分,我得到了这个;
<option>Select userID</option>
<?php
$db = pg_connect("connection details") or die('Could not connect: ' . pg_last_error());
$sql = pg_query("SELECT title FROM books WHERE ownedby='$user_id'";
while ($row = pg_fetch_assoc($sql)) {
echo '<option value="'.htmlspecialchars($row['title']).'"></option>';}
pg_close($db);
?>
</select>
<input type="hidden" name="userid" id="userid" value="<?php echo htmlspecialchars($user_id); ?>">
现在,我不确定如何在打印HTML页面的echo调用中实现它。我试图做很多逃避,但它还没有帮助。我怎样才能有效地将这段代码添加到我的表单结构中,在php中回显?
答案 0 :(得分:0)
echo <<<_HTML
<html code>
_HTML;
使用这种方式在echo或print中编写html代码。
答案 1 :(得分:0)
htmlspecialchars中可能缺少参数ENT_QUOTES
?
htmlspecialchars($row['title'], ENT_QUOTES)
另外,请查看htmlspecialchars
(和/或htmlentities
)文档以查看其他参数(第3个是关于字符集)
编辑:我不确定<option value="something"></option>
是否可以显示该值,所以也许你也应该尝试这个:
echo '<option>'.htmlspecialchars($row['title'], ENT_QUOTES).'</option>';}
答案 2 :(得分:0)
正如TiMESPLiNTER指出的那样 - 你需要改变这个:
echo '<option value="'.htmlspecialchars($row['title']).'"></option>';}
到
echo '<option>'.htmlspecialchars($row['title']).'</option>';}