【发布时间】:2013-01-20 18:03:25
【问题描述】:
我是一名业余 Web 开发人员,我正在开发一个主要使用 JavaScript 但需要使用 PHP/MySQL 的应用程序,因为它是一个测验应用程序,我不希望人们通过转到“查看”来查看所有测验答案资源。”相关的页面有:index.html、problems.php、functions.js。 index.html 是主要的测验页面。 questions.php 是用于连接到服务器并获取测验页面上问题答案的页面。 functions.js 用于检查答案是否正确以及提示应用程序执行某些操作的其他事项。
索引.html:
<?php
include ("problems.php");
?>
...
问题.php
<?php
// Connect to server
$con = mysql_connect("XXXXXXXXXXXXX", "XXXXXXXXXXX", "XXXXXXXXXXXX");
mysql_select_db("problems", $con);
if (!$con) {
die("Didn't connect");
}
$question_num = $_GET["num"];
$sql = "SELECT question FROM questions WHERE num='" . $question_num . "';";
$answer = mysql_fetch_array(mysql_query($sql))['question'];
?>
functions.js
function checkAnswer(ans, input) {
if (ans == input) {
alert("Correct!");
}
}
我不是 PHP 开发人员,对 PHP 知之甚少(这就是我选择在应用程序中使用 JavaScript 的原因)。但我想使用 GET 方法来获取测验问题的答案(当用户单击“提交”时传入 ?num=1,2,3,4,5)。然后将从数据库中获取的测验答案传递给functions.js的checkAnswer函数以检查答案。我的问题是对 JavaScript 函数的问题的答案传递。此外,我的服务器似乎甚至没有连接到我的代码中的数据库。
【问题讨论】:
-
您的代码容易受到SQL injection 的攻击。在进行查询之前,您需要使用数据库库的适当方法来转义您的数据。
-
我建议你避免使用过时的 mysql_* 函数。将它们用于新代码是highly discouraged。更现代的替代品可用且维护得更好。相反,请考虑了解prepared statements,并且您可以使用PDO or MySQLi。当严格使用时,它们避免了繁琐的手动转义部分,从而变得更容易并且(作为副产品)更安全地使用。查看this PDO tutorial 以获得良好的开端。
标签: php javascript html web-applications