使用Javascript更新数据库

希望这将是我需要提出的关于这个问题的最后一个问题……我不能解决这个问题(希望如此……)。 参考这个问题:

使用javascript Onclick将数据传递到数据库

我试图使用JavaScript将值传递给数据库。 以下是我正在使用的代码。 而且只是为了视觉辅助,我已经包含了这个输出的截图。 希望它有助于解释我想要实现的目标。 我有的问题是javascript“投票”链接几乎什么都没做…大声笑…你点击它,没有任何反应。 我希望链接文本只需更改为“您投票!” 一旦链接被点击,并且数据被发送/接收,但是警报将没有问题,只要我可以使其工作并更新数据库。

感谢大家:)

<?php if(isset($_POST['score'])) { mysql_query("INSERT INTO score (score_count) VALUES ($_POST[score])"); } $user_id = uid(); $m = mysql_query("SELECT * FROM friends WHERE friend_user_id1 = '$user_id' AND friend_status != '0' LIMIT 15"); while ($t = mysql_fetch_array($m)) { $fid = $t[friend_user_id2]; $f = mysql_query("SELECT * FROM users WHERE user_status != '' AND user_status_date != '0' AND user_id = '$fid' ORDER BY user_status_date ASC LIMIT 15") or die(mysql_error()); while ($rows = mysql_fetch_array($f)) { $date = parse_date($rows[user_status_date]); echo "'; } } ?>  function updateScore(answer, correct) { if (answer == correct) { $.get('index.php', {'score': '1'}, function(d) { alert('Vote Accepted: ' + d); }); } }  

输出:

alt text http://sofzh.miximages.com/php/www.freeimagehosting.net

哇,我从哪里开始。 好的,我修改了你的代码。 这是一个变化列表

  1. 格式化的易读性代码(这里需要一些严格的纪律)
  2. 在查询中使用它们之前清理输入(防止SQL注入)
  3. 为关联数组键查找添加了字符串分隔符(防止E_NOTICE错误)
  4. 在以HTML格式打印之前转义潜在危险值(阻止XSS)
  5. 删除了尴尬的echo语句,并改为使用大型输出字符串的HTML模式
  6. 更新了javascript以使用$.post()而不是$.get()因为您从脚本顶部的$_POST数组中读取。

这是代码:

  
- - Vote

完成所有这些后,我可以清楚地看到你实际发生POST的成功条件对我来说是未知的。 您将answercorrect比较,但此代码段不会让我看到correct answer 。 进入updateScore()函数后,我可以看到answer是对单击的HTMLAnchorElement的引用 – 但是发送到correct值的源是什么?

具体来说,我在这里采用这个粗体部分

onclick =“updateScore(this, correct )”

编辑!

试试这个function版本,在成功投票后更新链接

  

我注意到的第一件事是,在您的JavaScript代码中,您正在使用$.get执行Ajax请求,并且在您的PHP代码中,您期望POST变量if(isset($_POST['score']))

因此,如果在服务器端使用POST变量,则应在客户端使用$.post

你没有消毒你的输入。 任何人,无论是否使用您的应用程序,都可以向您发送“分数”,您将轻松地将其放入您的数据库中。 或者他们可以轻松地向您发送SQL注入攻击,通过使用得分字符串“1”发布;此处进行一些攻击;插入得分(score_count)值(2“;