gpt4 book ai didi

PHP:针对数据库表的 Textarea 输入验证

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:35 25 4
gpt4 key购买 nike

我正在尝试根据数据库表验证文本区域输入。如果存在任何条目,则拒绝该表单。如果未找到任何条目,则接受表单并将文本区域输入输入到数据库表中,每个换行符都会转到一个新行。

不过我遇到了麻烦,以下脚本似乎跳过了验证部分,直接将文本区域输入添加到数据库中。

<?php
if (isset($_GET["submit"])) {
}

$host = "localhost";
$user = "root";
$password = "password";
$database = "test";
// Establish server connection and select database
$dbh = mysqli_connect($host, $user, $password, $database);
if (mysqli_connect_errno()) {
die('Unable to connect to database ' . mysqli_connect_error());
}
else {
$text = trim($_POST['serial']);
$textAr = explode("\n", $text);
$textAr = array_filter($textAr, 'trim'); // remove any extra \r chars
foreach ($textAr as $line) {
$query = mysqli_query($dbh, "SELECT serials FROM `wp27_test6serial` WHERE `serials` = '$line'");
$result = mysqli_query($dbh, $query);
if (mysqli_num_rows($result) > 0) {
die('entry already exists');
}
else {
$query = mysqli_query($dbh, "INSERT INTO wp27_test6serial (rtxserials) VALUES ('$line')");
echo ('serials submitted');
}
}
}

任何人都可以告诉我脚本有什么问题以及为什么在继续将 textarea 字符串插入数据库之前它没有进行验证吗?

谢谢

最佳答案

你查询了两次。

$query = mysqli_query($dbh, "SELECT serials FROM `wp27_test6serial` WHERE `serials` = '$line'");

应该是

$query = "SELECT serials FROM `wp27_test6serial` WHERE `serials` = '$line'";

并且您的代码容易受到 SQL 注入(inject)攻击。使用准备好的语句。

关于PHP:针对数据库表的 Textarea 输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50261830/

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