Php 当使用ajax时,isset($#u POST[';';])不适用于数据变量
我有commentdb.php文件,其中创建了类Php 当使用ajax时,isset($#u POST[';';])不适用于数据变量,php,jquery,ajax,Php,Jquery,Ajax,我有commentdb.php文件,其中创建了类的按钮,如btn,并将script.js文件链接到该文件 还有另一个db.php文件,其中使用了isset($\u POST['key']) script.js: $(document).ready(function(){ $('.like-btn').click(function(){ var post_id = $(this).data('id'); alert(post_id); $clicked_btn
的按钮,如btn
,并将script.js文件链接到该文件
还有另一个db.php文件,其中使用了isset($\u POST['key'])
script.js:
$(document).ready(function(){
$('.like-btn').click(function(){
var post_id = $(this).data('id');
alert(post_id);
$clicked_btn = $(this);
var act = "";
if ($clicked_btn.hasClass('fa-thumbs-o-up')) {
act = 'like';
} else if ($clicked_btn.hasClass('fa-thumbs-up')) {
act = 'unlike';
}
// console.log(act);
$.ajax({
type: "POST",
url: 'db.php',
data: {
'key': 1,
'action': act,
'post_id': post_id
},
success: function(response) {
console.log(1);
// res = JSON.parse(data);
alert(act);
if (act == 'like') {
$clicked_btn.removeClass('fa-thumbs-o-up');
$clicked_btn.addClass('fa-thumbs-up');
} else if (act == 'unlike') {
$clicked_btn.removeClass('fa-thumbs-up');
$clicked_btn.addClass('fa-thumbs-o-up');
}
// alert(res.likes);
}
});
});
});
db.php:
<?php
session_start();
// $email = "$_SESSION['email']";
$conn = mysqli_connect('localhost','root','','commentsection');
echo "working?";
// $user_id = 1;
if (!$conn) {
die("Connection failed: ".mysqli_connect_error());
}
if (isset($_POST['key'])) {
echo "isset working?";
$post_id = $_POST['post_id'];
$action = $_POST['action'];
switch ($action) {
case 'like':
console.log($email);
$sql2 = "INSERT INTO rating (uid, rating, user_id) VALUES ($post_id, 'like', $email) ON DUPLICATE KEY UPDATE rating='like'";
break;
case 'dislike':
$sql2 = "INSERT INTO rating (uid, rating, user_id) VALUES ($post_id, 'dislike', $email ON DUPLICATE KEY UPDATE rating='dislike'";
break;
case 'unlike':
$sql2 = "DELETE FROM rating WHERE uid=$post_id AND r_uid=0";
break;
case 'undislike':
$sql2 = "DELETE FROM rating WHERE uid=$post_id AND r_uid=0";
break;
default:
break;
}
mysqli_query($conn, $sql2);
echo getRating($post_id);
// exit(0);
}
?>
这个代码会发生什么?这对SQL注入是开放的,查询中的$email
用法似乎无效(需要引用字符串)。你也可以大大简化这一点,case'distinch':case'undislike':
并使评级
成为一个三元变量,然后只需要一次插入。我在$email中没有问题,它在我登录后显示我的id;关于这个案例,我将在以后对其进行更改,但是函数根本没有执行。PHP代码中混合了JSconsole.log()
,这可能会导致运行时错误。如果您没有启用PHP错误报告,这将显示为它没有完全执行。始终在开发和测试代码时,报告错误(E_ALL);ini设置(“显示错误”,1)代码>位于代码顶部。我没有将js与PHPBRO混合使用,只是使用console.log来确保它是否正在运行。我添加了你提供的两行代码,还通过检查查看了控制台,没有发现任何错误。转储$\u POST变量,看看里面到底有什么…print\r($\u POST)。。。