gpt4 book ai didi

javascript - 使用 XMLHTTPRequest 从数据库中提取数据

转载 作者:行者123 更新时间:2023-11-29 01:32:09 24 4
gpt4 key购买 nike

我想在不刷新页面的情况下从数据库中提取一些数据。最好的方法是什么?

我正在使用以下 XMLHTTPRequest 函数从 cart.php 文件中获取一些数据(购物车项目)。此文件根据 option 值执行各种功能。例如:option=1 表示获取所有购物车商品。 option=2 表示删除所有购物车项目并返回字符串 "Your shopping cart is empty."。 option=3, 4...等等。

我的 XHR 函数:

    function getAllCartItems()
{
if(window.XMLHttpRequest)
{
allCartItems = new XMLHttpRequest();
}
else
{
allCartItems=new ActiveXObject("Microsoft.XMLHTTP");
}

allCartItems.onreadystatechange=function()
{
if (allCartItems.readyState==4 && allCartItems.status==200)
{
document.getElementById("cartmain").innerHTML=allCartItems.responseText;
}
else if(allCartItems.readyState < 4)
{
//do nothing
}
}
var linktoexecute = "cart.php?option=1";
allCartItems.open("GET",linktoexecute,true);
allCartItems.send();
}

cart.php 文件如下所示:

    $link = mysql_connect('localhost', 'user', '123456'); 
if (!$link)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('projectdatabase');
if($option == 1) //get all cart items
{
$sql = "select itemid from cart where cartid=".$_COOKIE['cart'].";";
$result = mysql_query($sql);
$num = mysql_num_rows($result);
while($row = mysql_fetch_array($result))
{
echo $row['itemid'];
}
}
else if($option == 2)
{
//do something
}
else if($option == 3)
{
//do something
}
else if($option == 4)
{
//do something
}

我的问题:

  1. 有没有其他方法可以从数据库中获取数据而不用刷新页面?
  2. 是否存在任何潜在威胁(黑客攻击、服务器利用率、性能等)在我做这件事的方式?我相信黑客可以淹没我的服务器使用 option=1 发送不必要的请求,2、3 等

最佳答案

在这里,我认为拒绝服务 攻击不是您主要关心的问题。这种担忧与 cart.php 返回 HTML 一样有效。不,公开一个公共(public) API 以通过 AJAX 使用是很常见的做法。

不过,要记住的一件事是通过相同的 URL 列出和删除项目是不明确的。最好(至少)将这些操作(或“方法”)分成不同的 URL(例如:/cart/list/cart/clear).

如果您愿意更进一步,您应该考虑实现“RESTful”API。这意味着,除其他事项外,只能使用正确的 HTTP 动词调用方法。您可能只听说过 GETPOST,但还有 PUTDELETE 等等。这背后的原因是要使这些方法幂等,这意味着无论您调用它们多少次,它们都会一次又一次地做同样的事情。例如,对 /cartGET 调用将始终列出内容,而对 /cartDELETE 调用将始终列出内容始终删除购物车中的所有商品。

虽然为您的购物车编写完整的 REST API 可能不切实际,但我确信其中的一些原则可以帮助您构建更健壮的系统。

一些阅读 Material :A Brief Introduction to REST .

关于javascript - 使用 XMLHTTPRequest 从数据库中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8656439/

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