gpt4 book ai didi

javascript - 捕获 SQL 错误并阻止提交表单

转载 作者:行者123 更新时间:2023-12-02 15:51:31 25 4
gpt4 key购买 nike

我有一个小应用程序,允许用户在 Mac 上搜索位置,将注释提交到 CartoDB SQL 数据库 (PostgreSQL) http://docs.cartodb.com/cartodb-platform/sql-api.html使用 HMTL 表单、JavaScript 和 SQL(以及一些 PHP 来建立与 CartoDB 的 API 连接)。它对绝大多数用户来说效果很好,但有些提交没有通过。

我不知道为什么 SQL 提交有时有效,而其他则不然,每次对我来说都完美。虽然我已经追踪到 Safari 5.1 中存在一个问题,但我认为其他浏览器中也一定会发生这种情况。主要问题是我在任何地方都看不到任何错误,因此无法追踪。

这是我的问题:

<强>1。有没有办法捕获 SQL 错误并阻止表单提交?

<强>2。有什么方法可以查看 SQL 错误以便我可以追踪问题吗?

下面是我用来提交评论的代码片段:

var tblName = "comment_collection"
var usrName = "***dney"

// FORM
$("#allSubmitBtn").click(function (e) {
//CHECK IF has a comment
if (!notEmpty(document.getElementById('description1'))) {
alert('Please enter a comment.');
return false;
}
if (!notEmpty(document.getElementById('latlongit1'))) {
alert('Sorry, there has been an error, please search for a location again.');
return false;
} else {
currentNeighborhood = $('#neighborhoodName1').val();
parcel = $('#parcel_id1').val();
address = $('#pre_address1').val();
userAddress = $('#UserAddress1').val();
phoneNum = $('#phone1').val();
emailAdd = $('#emailAddress1').val();
userType = $('#userType1').val();
otherUser = $('#otherUserType1').val();
currentDescription = $('#description1').val();
latlongy = $("input[name='latlongit1']").val();
explainType = $('#explainType').val();
currentProject = selectedCity.name;
commentType = new Array();
$("input:checkbox[name=commentType]:checked").each(function () {
commentType.push($(this).val());
});

var sql = "INSERT INTO " + tblName + " (the_geom, project, description, name,comment_address,parcel_id,phone_number,email_address,comment_type,comment_type_other,user_type,user_type_other,profile_address,flag,loved) VALUES (ST_SetSRID(ST_GeomFromGeoJSON('";
// var a = layer.getLatLng();
// console.log(a);
var sql2 = '{"type":"Point","coordinates":[' + latlongy + "]}'),4326),'" + currentProject + "','" + (currentDescription.replace(/'/g, "''")).replace(/"/g, "''") + "','" + (currentNeighborhood.replace(/'/g, "''")).replace(/"/g, "''") + "','" + address + "','" + parcel + "','" + phoneNum + "','" + emailAdd + "','" + commentType + "','" + explainType + "','" + userType + "','" + otherUser + "','" + userAddress + "','false','0')";
var pURL = sql + sql2;
console.log(pURL);
submitToProxy(pURL);
alert("Your Comments have been submitted");

return true;
}
});

enter image description here

最佳答案

这是本教程所基于的 Github 存储库。安全性是一个主要问题,本教程立即提到了安全性。它只是一个说明,任何实现它的人都应该修改脚本以使其更加安全。

查看此拉取请求并尝试从中创建解决方案。它在一定程度上解决了这个问题。它将更多查询移至 PHP 脚本中,并且仅允许来自浏览器的字段名称。

https://github.com/enam/neighborhoods/pull/4

关于javascript - 捕获 SQL 错误并阻止提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31814831/

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