gpt4 book ai didi

php - 使用 PHP 进行 MySQL 查询安全性和时间戳

转载 作者:行者123 更新时间:2023-11-29 08:57:11 25 4
gpt4 key购买 nike

我正在制作一个引用和短语网站。我想发布此报价并防止 <script>或类似<html tags> ,我当前正在使用以下查询将此数据发布并推送到数据库

mysql_query("INSERT INTO `phrases` 
(`id`, `text`, `date`, `views`, `ip`, `reported`, `strange`, `lang`)
VALUES (NULL, '$quote', '$date', '0', '$ip', '0', '0', 'en')
");

使用以下 PHP 代码

<?php
$date = date('Y-m-d H:i:s', time());
$quote = $_POST["quote"];
$ip = $_SERVER['REMOTE_ADDR'];
//The query above
?>

但我遇到以下问题:

  • 已完成:时间戳未正确显示。

  • 我得到了一些未转义的字符。

    例如,我正在尝试发布此内容:

         <Ω∑©√ß µ„…–å∫∂ƒ™¶§ ~{}œæ€®†¥  øπ[]
    • 如果我发布此as is ,它发布了

      <Ω∑©√ß µ„…–å∫∂ƒ™¶§ ~{}œæ€®†¥  øπ[]
    • 如果我使用mysql_real_escape_string($quote) ,它发布了

      <Ω∑©√ß µ„…–å∫∂ƒ™¶§ ~{}œæ€®†¥  øπ[]
    • 如果我使用 htmlspecialchars(nl2br(stripslashes($quote))) ,它发布了

      &lt;Ω∑©√ß µ„…–å∫∂ƒ™¶§ ~{}œæ€®†¥  øπ[]
  • 有人警告我,这很容易受到 SQL 注入(inject)

如何防止这种情况发生?

作为附加信息,这是通过 AJAX 调用的。

最佳答案

这些应该可以满足您的要求。

输入时:

$date = date('Y-m-d H:i:s', time());
$ip = $_SERVER['REMOTE_ADDR'];
$quote = mysql_real_escape_string($_POST["quote"]);

输出时:

echo nl2br(htmlspecialchars($row["quote"]));

关于php - 使用 PHP 进行 MySQL 查询安全性和时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9658774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com