使用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 ""; _photo($rows[user_id]); echo ' '.$rows[user_username].' - '.$date.' - Vote
'.$rows[user_status].'
'; } } ?> 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
哇,我从哪里开始。 好的,我修改了你的代码。 这是一个变化列表
- 格式化的易读性代码(这里需要一些严格的纪律)
- 在查询中使用它们之前清理输入(防止SQL注入)
- 为关联数组键查找添加了字符串分隔符(防止E_NOTICE错误)
- 在以HTML格式打印之前转义潜在危险值(阻止XSS)
- 删除了尴尬的
echo
语句,并改为使用大型输出字符串的HTML模式 - 更新了javascript以使用
$.post()
而不是$.get()
因为您从脚本顶部的$_POST
数组中读取。
这是代码:
- - Vote
完成所有这些后,我可以清楚地看到你实际发生POST的成功条件对我来说是未知的。 您将answer
与correct
比较,但此代码段不会让我看到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“;