将JavaScript(document.write(function())值写入php MySql insert语句

将JavaScript(document.write(function())值写入php MySql insert语句,php,javascript,mysql,sql,Php,Javascript,Mysql,Sql,理想情况下,这应该打印get name from函数,但它会插入 document.write(get_name()) 注意:get\u name函数正确返回值。功能是强制性的。唯一的问题是插入document.write(get_name())而是它的值。看起来您错过了关于PHP/JS编程的重要一章。。。 PHP代码在服务器端执行。 JavaScript代码在客户端执行 解决这个问题的步骤是: 每当需要执行此查询时,都需要从JavaScript调用PHP并将变量传递给PHP。您可以使用jqu

理想情况下,这应该打印
get name from函数
,但它会插入
document.write(get_name())


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

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

解决这个问题的步骤是:

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

    $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())");
    
    有关jQuery的更多信息,请点击此处:

  • 然后,在PHP中,您可以从全局$\u get获取此值,并可以使用它:

    // JS, executed on client side
    var name = get_name(); // this javascript function must exist
    $.get("path/to/your/page.php", {"name":name});
    
这将实现你的期望

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

  • 它是高度不安全的,为最简单的SQL注入攻击留下了空间。必须“引用”SQL查询中使用的所有值(不能信任来自客户端的任何数据)
  • $\u GET['name']可能不存在或包含除此之外的内容,因此您需要使用类似isset的函数,并在之后进行更多测试,以验证没有人试图破解您的变量
  • 您应该POST方法而不是GET,因为此HTTP调用将导致更改数据库的状态
  • mysql_查询已被弃用:您应该使用mysqli_查询或PDO
  • 我不会谈论所有这些话题,它们在网络上都有很高的覆盖率,一个简单的搜索你最喜欢的搜索引擎会提供你需要的所有信息


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

    您在PHP中使用JS吗?您必须加载页面,并且必须使用AJAX请求发送名称并返回结果。可能的副本可以显示get_name的代码或告诉我们它产生了什么。也许你可以创建一个PHP版本
    // 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);