我对脚本编写还很陌生,但我一直很好地遵循代码逻辑。我有两个工作脚本(下面发布),一个将表单发布到 mysql 数据库,另一个在表的同一页面上提取信息。对于我想要完成的以下事情,我无法找到帮助。
1.) 清理表单,我被告知它对注入(inject)/其他非常开放。大多数人会提交的是文本,我希望他们最终能够发布由第二个脚本调用和点击的 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 并查看该信息吗?
我真的很感谢您的帮助,非常愿意阅读和学习正确的做事方法!
最佳答案
这两个问题会对您有所帮助。
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';
但是,这实际上并没有使其更安全,只是方便您不会意外地发布带有密码的代码。
关于php/mysql 排序问题和表单清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18989293/