【发布时间】:2016-01-29 13:13:36
【问题描述】:
我正在调试我的网站, 我发现当我使用 post 文章发布 html、css 和 php 程序时 它将按照发布的方式运行我该如何解决这个问题,这样它就不会再次影响我的网站了
示例
当我提交这样的东西时
<style>
*{
display:none!important;
}
</style>
在整个页面上将不显示任何内容,而不是显示用户发布的内容。 另一个例子
<form>
<input type="text" value="Hello"/>
<input type="submit" value="submit"/>
<form>
此外,此 html 表单将作为 html 运行,而不是显示文本
请我如何在我的 php 中解决这个问题以避免这种情况。
我尝试在我的 php 中添加这个 mysql_real_escape_string($_POST['post']);,然后再将它发布到我的数据库,但仍然无法正常工作,谁能帮助我
这是我提交帖子的 php
<?php
if($_POST){
$db_host = "localhost";
$db_user = "root";
$db_pass = "pass";
$db_name = "posts";
try {
$db_conn = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass);
$db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db_conn->prepare("INSERT INTO posts(post) VALUES(:post)");
$stmt->bindParam(':post', $post);
$form = $_POST;
$post= mysql_real_escape_string($form['post']);
$stmt->execute();
echo "Post submited";
}
catch(PDOException $e)
{
echo "Error:" . $e->getMessage();
}
$db_conn = null;
}
?>
【问题讨论】:
-
mysql_real_escape_string()不能很好地与 PDO 配合使用,并且不需要,因为您使用的是准备好的语句。$form = $_POST只是重新分配数组,sit 也是不必要的。 -
@JayBlanchard 我还能如何防止这种情况发生在我的页面上,至于
mysql_real_escape_string()和$form = $_POST在我使用此帖子$post = $_POST['post']之前我没有使用它跨度> -
您的表单元素必须具有名称属性,否则不会发布任何内容。
-
事实上,使用
mysql_real_escape_string()应该会产生错误,因为您没有使用mysql_扩展名进行连接。 首先查看您的 php 错误日志。如果为空,则更改php.ini参数display_errors = On。如果您无法访问php.ini,因为您正在实时服务器上进行开发,那么在您的打开 PHP 标记之后添加错误报告到文件顶部测试时,例如<?php error_reporting(E_ALL); ini_set('display_errors', 1);看看它是否会产生任何东西。
标签: javascript php jquery css debugging