【问题标题】:posting a variable from javascript button to php with mysql使用mysql将变量从javascript按钮发布到php
【发布时间】:2013-01-22 16:06:31
【问题描述】:

我对 PHP 和 Javascript 还是很陌生。我正在尝试从谷歌地图 API 标记中获取变量,并可以选择从 MySQL 数据库中删除标记及其信息。没有生成错误,但是没有删除该行。我想问题出在POST上。以下是我与此事相关的代码:

var html = "<b>" + name + "</b> <br/>" + location + "<br/> <br/> <input type='button' value='Get Directions from your Current Position' onclick=getDirections()/> <br> <input type='button' name = 'remove' value='Remove Pointer' onclick=removePointer("+name+")/>";

这就是我调用 removePointer 函数的那一行,将 'name' 作为参数传递

function removePointer(name){
    var nameSend = name;
    $.post("index.php", {variableName: nameSend});
    <?php
        $mysql_host = "xxxx";
        $mysql_database = "xxxx";
        $mysql_user = "xxxx";
        $mysql_password = "xxxx";

        $link = mysql_connect($mysql_host, $mysql_user, $mysql_password);
        if (!$link) {
            die('Could not connect: ' . mysql_error());
        }

        mysql_select_db($mysql_database) or die(mysql_error());

        $removeName = $_POST['variableName'];
        mysql_query(("DELETE FROM markers WHERE Name='" . $removeName . "'"),$link) or die ("Markers Table Error: " . mysql_error());
    ?>
}

那是 removePointer 函数,它应该在其中获取 javascript 变量,发布它,以及一个 PHP 块来获取发布并相应地删除 MySQL 行。

提前感谢您的帮助!

【问题讨论】:

  • 你在你的 Javascript 中混合你的 PHP。这是在两台不同的机器上运行的两个不同的宇宙:客户端+服务器。您最好寻找此类模式的其他问题和示例。
  • 你应该使用mysql_real_escape_string来防止SQL注入,或者更好的是使用mysqliPDO的参数化语句。

标签: php javascript mysql google-maps


【解决方案1】:

在您的情况下,Javascript 将在用户的浏览器中运行,而 PHP 将在服务器上运行(需要能够与数据库服务器通信)。也就是说,您不能将 PHP 嵌入到 Javascript 函数中并期望 PHP 运行 - Web 浏览器不执行 PHP。此外,您绝不希望将任何敏感信息放入将在浏览器中运行的 Javascript(例如 MySQL 凭据),因为任何加载该 Javascript 的人都可以看到它。

您需要创建一个服务器端 PHP 脚本,以便 Javascript 与之通信。 Javascript 可以向 PHP 脚本发出AJAX 请求,发布您希望 PHP 对其执行操作的数据。在这种情况下,removePointer() 函数可以将标记名称发布到 PHP 脚本,然后将其从数据库中删除。

为了让生活更轻松,您可以考虑使用 Javascript 库,例如 jQuery,它可以大大简化 Ajax requests 的制作。

【讨论】:

  • 他已经在尝试发出 ajax 发布请求,并且正在使用一些库(可能是 jQuery)
  • 感谢您对敏感信息的建议和提示!我会更深入地研究它。再次感谢!
【解决方案2】:

您不能只发布到您的 index.php 页面。创建一个新的“del.php”,将您的 php 代码放在那里,然后发布到该页面:

index.php

function removePointer(name){
  var nameSend = name;
  $.post("del.php", {variableName: nameSend}); 
}

del.php

<?php
    $mysql_host = "xxxx";
    $mysql_database = "xxxx";
    $mysql_user = "xxxx";
    $mysql_password = "xxxx";

    $link = mysql_connect($mysql_host, $mysql_user, $mysql_password);
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db($mysql_database) or die(mysql_error());

    $removeName = $_POST['variableName'];
    mysql_query(("DELETE FROM markers WHERE Name='" . $removeName . "'"),$link) or die ("Markers Table Error: " . mysql_error());
?>

我当然不是 php 专家,这肯定不是进行 ajax 请求的最佳方式,但我希望你能更好地了解 ajax 的概念...

【讨论】:

  • 我想我明白你在说什么。谢谢!
  • 此答案与问题具有相同的 SQL 注入漏洞。在那里查看我的评论。
猜你喜欢
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多