gpt4 book ai didi

php - JavaScript (document.write(function())) 值插入 php MySql 插入语句

转载 作者:行者123 更新时间:2023-11-30 01:22:12 25 4
gpt4 key购买 nike

$name="document.write(get_name());";

echo $n= $name; // Here it prints name also (correct one)

$sql=mysql_query("INSERT INTO tab1 (name,visited_time) values ('$n',NOW())");

理想情况下,这应该打印从函数中获取名称,但它插入document.write(get_name());

注意:get_name 函数正确返回值。并且功能是强制性的。唯一的问题是它插入 document.write(get_name()); 而不是它的值。

最佳答案

看来您错过了有关 PHP/JS 编程的重要章节......PHP 代码在服务器端执行。JavaScript 代码在客户端执行。

解决此问题的步骤是:

  • 每当您需要执行此查询时,您都需要从 JavaScript 调用 PHP 并将变量传递给 PHP。您可以通过使用 jquery 的异步调用来完成此操作,例如:

    // JS, executed on client side
    var name = get_name(); // this javascript function must exist
    $.get("path/to/your/page.php", {"name":name});

    有关 jQuery 的更多信息:http://api.jquery.com/jQuery.get/

  • 然后,在 PHP 中,您可以从全局 $_GET 中获取该值并可以使用它:

    // php code that will be executed when path/to/your/page.php will be called
    $name = $_GET['name'];
    $sql = "INSERT INTO tab1 (name,visited_time) values ('" . $name . "',NOW())";
    $rs= mysql_query($sql);

这将达到您的预期。

您可以使用此代码来实现逻辑,但它需要大量改进:

  1. 它高度不安全,为最简单的 SQL 注入(inject)攻击留下了空间。您必须“引用”在 SQL 查询中使用的所有值(您不能信任来自客户端的任何数据)
  2. $_GET['name'] 可能不存在或包含您所排除的内容,因此您需要使用 isset 等函数,并在验证没有人试图破解您的变量后进行更多测试
  3. 您应该使用 POST 方法而不是 GET,因为此 HTTP 调用将导致数据库状态发生更改
  4. mysql_query 已弃用:http://us2.php.net/manual/en/function.mysql-query.php你应该使用 mysqli_query 或 PDO...

我不会谈论所有这些主题,它们在网络上被广泛报道,并且您最喜欢的搜索引擎的简单搜索将提供您需要的所有信息。

注意:我写道“JavaScript 代码在客户端执行”。这并不完全正确,因为可以用 JavaScript 构建服务器,但这与您所关心的相去甚远,这甚至不会改变您仍然需要使用以下命令将值从客户端发送到服务器的事实:我刚才描述的逻辑。

关于php - JavaScript (document.write(function())) 值插入 php MySql 插入语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18415331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com