在PHP函数中调用POST变量

时间:2014-12-11 17:45:18

标签: javascript php ajax post

我有一个包含多个php函数的PHP文件。 我发送一个带有AJAX调用的Javascript变量,POST方法到该PHP文件。

现在变量IS可以在我的PHP文件中访问,但不能在我想要它的特定函数中访问...

$("#dropdown").change(function () {
    var value = $("#dropdown").val();
    console.log(value);

    $.ajax({
        type: "POST",
        dataType: 'text', 
        url: "PhpFunctions.php",
        data: {id:$("#dropdown").val()},
        success: function (data) {
            console.log(data);

                    $("div.geselecteerdVliegtuig").fadeIn("slow", function () {
                        console.log("Vliegtuigdetail faded in");
                    });
                    /*
                    $("div.vliegtuigenEnabled2").hide();
                    console.log("vliegtuigEnabled ID's hidden");
                    */
                },

        error: function (err) {
            alert('error: ' + err);
        }
    }); //END AJAX CALL`



//I CAN ACCESS DATABASE AND ID IS ACCESSIBLE HERE
//Connect to server
$connect = mysql_connect("localhost", "root", "root") or die(mysql_error());

//Connect to database
$select_db = mysql_select_db("Luchthaven") or die("Could not find database");

$id = $_POST['id'];
echo $id; //WORKS

//NEED TO ACCESS IS HERE
function GeselecteerdVliegtuig() {
makeConnection();

//Query the database
$id = $_POST['id'];

//$query = "SELECT * FROM vliegtuig WHERE vliegtuig_ID = 'PEG431';";
//echo "SELECT * FROM vliegtuig WHERE vliegtuig_ID = 'PEG431';<br/>";

$query = "SELECT * FROM vliegtuig WHERE vliegtuig_ID = '" . $id . "';";
echo "SELECT * FROM vliegtuig WHERE vliegtuig_ID = '" . $id . "';<br/>";

$fetch = mysql_query($query) or die("could not fetch data");
while ($row = mysql_fetch_assoc($fetch)) {
    echo "<tr id=" . $row['vliegtuig_ID'] . ">";
    echo "<td>" . $row['vliegtuig_ID'] . "</td>";
    echo "<td>" . $row['maatschappij'] . "</td>";
    echo "<td>" . $row['lengte'] . "</td>";
    echo "<td>" . $row['breedte'] . "</td>";
    echo "<td>" . $row['kilometerstand'] . "</td>";
    echo "<td>" . $row['bouwjaar'] . "</td>";
    echo "<td>" . $row['bereik'] . "</td>";
    echo "<td>" . $row['aantalMotoren'] . "</td>";
    echo "</tr>";
} // END WHILE

mysql_close(); //Make sure to close out the database connection
echo "<b>Connection closed<b><br/><br/>";

}

2 个答案:

答案 0 :(得分:0)

您可以将$ _POST [&#39; id&#39;]变量传递给该函数GeselecteerdVliegtuig($ id)并使用GeselecteerdVliegtuig调用该函数($ _ POST [&#39; id&#39;])

答案 1 :(得分:0)

摆脱这条线:

$id = $_POST['id'];

您可能希望使用自己的功能,即使您的值不在$_POST["id"]中。从

修改函数头
function GeselecteerdVliegtuig() {

function GeselecteerdVliegtuig($id) {

以这种方式调用您的函数:

if (isset($_POST['id'])) {
    GeselecteerdVliegtuig($_POST['id']);
}

并从发布值的页面调用您的函数,确保您发布的页面存在,正常工作并做出响应。

最后,当一切正常时,改变您使用数据库的方式,因为您当前的方法由于SQL注入的可能性而存在安全漏洞。如果我访问您的页面并在控制台中执行以下操作该怎么办:

$("#dropdown").val("0'; delete from vliegtuig where '' = '");

然后触发帖子?它将删除表中的每条记录,除非您确保这些尝试失败。