在页面加载时修复空白数据库条目?

时间:2017-08-22 07:09:32

标签: php mysql forms

我在HTML网页上有一个表单,它将用户的注释和名称发送到MySQL数据库表,然后将其存储在页面中。问题是,如果用户的名字中有撇号,那么服务器(我支付托管费用,不是我的服务器而我无法更改配置)就是将它们发送到一个错误页面,上面写着:

“请求的网址已被拒绝。如果您认为这是一个错误,请与网站管理员联系。 您的支持ID是:13509873612934211694“

更新

我刚刚使用不同的php格式完全重写了该页面。现在撇号问题和服务器错误是固定的。但是,页面在每次加载页面时都会向数据库发送空白条目。有什么想法吗?

  <?php 
  $servername = "my_server";
  $username = "my_username";
  $password = "my_password";
  $dbname = "my_database";
  $users_name = htmlentities($_POST['name'], ENT_QUOTES, 'UTF-8');
  $users_request = $_POST['requests'];
  if ($_SERVER["REQUEST_METHOD"] == "POST") {
     }
  try {
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username,
     $password);
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $conn->beginTransaction();
     $conn->exec("INSERT INTO submissions (requests, name)
     VALUES ('$users_request', '$users_name')");
     $conn->commit();
         header("Location: clv3.php");
     }
 catch(PDOException $e)
     {
     $conn->rollback();
     echo "Error: " . $e->getMessage();
     }
 $conn = null;
 ?>
<form method="POST" action="<?php echo
htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Make A Request:<br>
<textarea name='requests' id='requests'></textarea> <br>
Your Name (a-z only):<br>
<input type='text' name='name' id='name'/><br>
<input type='submit' value='Send' class='button'>  
</form>

2 个答案:

答案 0 :(得分:-1)

有没有听说过SQL注入?这是你创造的......

始终逃避您的数据!您现在正在将用户提供的数据直接推送到数据库中。

$name = mysqli_real_escape_string($conn, $_POST['name']);
$comments = mysqli_real_escape_string($conn, $_POST['comments']);

此外,您可以在插入前编码特殊字符,在显示时进行解码

答案 1 :(得分:-1)

您是否尝试过:

encodeURI(yourString)

然后在php端你做:

url_decode($_POST['myVariable'])