gpt4 book ai didi

php - PHP 验证错误

转载 作者:行者123 更新时间:2023-11-29 20:21:55 24 4
gpt4 key购买 nike

我正在创建一个基本的拍卖网站,并在这个社区的帮助下取得了很大的进展。我现在即将完成此任务,但在服务器端验证方面遇到了一些小问题。

拍卖在带有 html 和 PHP 的 PHP 页面上列出,PHP 运行 MySQL 查询,然后列出结果。示例如下:

    $result = mysqli_query($con,"SELECT * From auction WHERE category = 'Bathroom' ORDER BY ID DESC");


while($row = mysqli_fetch_array($result))
{
echo "<form name='auction' id='auction" . $row['ID'] . "'>
<input type='hidden' name='id' value='" . $row['ID'] . "' />
<div class='auction-thumb'>
<div class='auction-name'>" . $row['Item'] . "</div>";
echo "<img class='auction' src='" . $row['ImagePath'] . "' />";
echo "<div class='auction-bid'>Current Bid: £<div class='nospace' id='" . $row['ID'] . "'>" . $row['CurrentBid'] . "</div></div>";
echo "<div class='auction-bid'>Your Name: <input type='text' class='bidder' name='bidname' autocomplete='off'/></div>";
echo "<div class='auction-bid'>Your Bid: <input type='text' class='auction-text' name='bid' autocomplete='off'/></div>";
echo "<div class='auction-bid'><input type='submit' name='submit' value='Place Bid!' /></div>";
echo "<div class='bid-success' id='bid" . $row['ID'] . "'>Bid placed!</div>";
echo "</div></form>";
}
echo "</table>";

mysqli_close($con);

一旦用户单击提交按钮,就会执行以下 jQuery:

    $(document).ready(function(){
$('form[name="auction"]').submit(function(){
var id = $(this).find('input[name="id"]').val();
var bidname = $(this).find('input[name="bidname"]').val();
var bid = $(this).find('input[name="bid"]').val();
var currentbid = $('#'+id).text();

var itemdesc = $(this).find('.auction-name').text();

bid = parseFloat(parseFloat(bid).toFixed(2));
currentbid = parseFloat(parseFloat(currentbid).toFixed(2));



if (bidname == '')
{
alert("No name!")
return false;
}

/* if (bid > currentbid)
{
alert("Bid is greater than current bid");
}
else
{
alert("Bid is too low!");
return false;
}*/

$.ajax({
type: "POST",
url: "auction-handler.php",
dataType: "json",
data: {bidname: bidname, bid: bid, id: id, itemdesc: itemdesc},
success: function(data){
$('#bid'+id).fadeIn('slow', function () {
$(this).delay(1500).fadeOut('slow');

});
//$('#auction' + id).find('.nospace').html(currentbid);
},
error: function() {
alert("bid too low");
}

});
return false;

});
});

如果代码 POSTS,则在处理程序页面上运行以下 PHP 代码:

if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$bidname = $_POST['bidname'];
$bid = $_POST['bid'];
$id = $_POST['id'];
$itemdesc = $_POST['itemdesc'];



$highestbid = mysqli_fetch_row(mysqli_query($con,"SELECT CurrentBid from Auction WHERE ID = '$id'"));
if ($bid <= $highestbid)
{
$_SESSION['errors']['bid'] = 'Sorry, but the bid is too low';
echo json_encode($_SESSION['errors']);
exit;
}
else
{

$query = "UPDATE auction SET CurrentBid = '$bid', Bidder = '$bidname' WHERE ID = '$id'";

$query2 = "INSERT INTO auction_log (Item, Bid, Bidder) VALUES ('$itemdesc','$bid','$bidname')";



mysqli_query($con, $query) or die(mysqli_error());

mysqli_query($con, $query2) or die(mysqli_error());

mysqli_close($con);

我添加了一些服务器端验证,以确保发布的出价高于 MySQL 表中当前的出价。

我遇到的问题是,无论我输入什么出价,我都会收到“抱歉,出价太低”错误。

如果我的出价高于当前出价,我会收到错误,如果我的出价低于当前出价,我会收到错误。

我采用的两种方法也会触发 AJAX 的成功部分。

我觉得我错过了一些非常简单的东西,所以如果有人能提供帮助那就太好了。

我不确定为什么它被否决,我只是在寻求一些帮助。

谢谢

最佳答案

处理 AJAX 错误的方式不是很好,因为它只提醒您有错误,但您不知道出了什么问题。

在 AJAX 对象中,将当前错误回调替换为将实际错误记录到控制台的回调:

替换

error: function() {
alert("bid too low");
}

error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}

你就会知道错误是什么

关于php - PHP 验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39468130/

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