【问题标题】:php / mysql sorting issue and form sanitizing?php / mysql 排序问题和表单清理?
【发布时间】:2013-09-25 22:43:28
【问题描述】:

我对脚本很陌生,但我一直很好地遵循代码逻辑。我有两个工作脚本(发布在下面),一个将表单发布到 mysql 数据库,另一个在表的同一页面上提取信息。我在以下我想要完成的事情上找不到帮助。

1.) 对表格进行消毒,我被告知它非常容易注射/其他。大多数人会提交文本,我希望他们最终能够发布由第二个脚本调用和点击的 html 链接。

2.) 我希望回调脚本对信息进行排序,以便最新的帖子位于顶部。 (我可以在名为“日期”的类别和内容旁边创建一个新的 mysql 列,自动检测日期/时间并将其用于排序吗?我很想看到一些示例代码。

这是提交表单

<html>
<div style="width:  330px;  height:  130px;  overflow:  auto;">
<form STYLE="color: #f4d468;" action="send_post.php" method="post">

    Category: <select STYLE="color: #919191; font-family: Veranda; font-weight: bold; font-size: 10px; background-color: #000000;" name="category">
<option value="category 1">category 1</option>
<option value="category 2">category 2</option>
<option value="category 3">category 3</option>
<option value="Other">Other</option>
</select> <br>

    <textarea overflow: scroll; rows="4" cols="60" STYLE="color: #919191; font-family: Veranda; font-weight: bold; font-size: 10px; background-color: #000000; width:300px; height:80px; margin:0; padding:0;" name="contents"></textarea><br>
    <input type="submit" STYLE="color: #919191; font-family: Veranda; font-weight: bold; font-size: 10px; background-color: #000000;" value="Create Log">
</form>
</div>
</html>

sendpost.php

<?php
//Connecting to sql db.
$connect=mysqli_connect("localhost","myuser","mypassword","mydb");

header("Location: http://mywebsite.com/myhomepage.php");

if (mysqli_connect_errno()) { echo "Fail"; } else { echo "Success"; }

//Sending form data to sql db.
mysqli_query($connect,"INSERT INTO mydbtable (category, contents)
VALUES ('$_POST[category]', '$_POST[contents]')");

?>

然后get php在页面上回调它

<?php
$con=mysqli_connect("localhost","myuser","mypassword","mydb");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM mydbtable");

echo "<table border='1'>
<tr>
<th>Category</th>
<th>Contents</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['category'] . "</td>";
  echo "<td>" . $row['contents'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?> 

同样在两个脚本中使用$con=mysqli_connect命令连接的情况下,基本暴露了吗?有人不能直接访问 php 并查看该信息吗?

非常感谢帮助,非常愿意阅读和学习正确的做事方式!

【问题讨论】:

标签: php mysql forms sorting sanitize


【解决方案1】:

这两个问题会对你有所帮助。

  1. How can I prevent SQL injection in PHP?

  2. How can I specify sql sort order in sql query

    SELECT * FROM mydbtable ORDER BY date
    

为了让数据库密码和连接处于开放状态...通常人们只包含该 php 文件(即使它不会使其更安全)。但是,如果您对文件系统具有 root 访问权限,则可以将其放在 htdocs 上方的足够高的目录中,并且无法通过 url 访问。

dbconnect.php

$con=mysqli_connect("localhost","myuser","mypassword","mydb");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

index.php

include 'dbconnect.php';

然而,这实际上并没有让它变得更安全,只是方便您不会不小心发布带有密码的代码。

【讨论】:

  • 密码/连接语句怎么样,看起来如此公开,这是一个易受攻击的问题吗?
  • @user2792624 没有人可以看到将您和您的服务器放在... 将其放入另一个名为 dbpw.php... 的不同 php 文件中并包含它是可以接受的做法。
  • @user2792624 它实际上并没有使它更安全。
猜你喜欢
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 2015-03-17
  • 2016-02-12
  • 1970-01-01
  • 2012-05-28
相关资源
最近更新 更多