0
$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())");

理想情况下,这应该打印got name from the function,但它插入 document.write(get_name());

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

4

1 回答 1

0

看起来你错过了关于 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 注入攻击留下了空间。您必须“引用”您在 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 中构建服务器,但这与您关心的问题相去甚远,这甚至不会改变您仍然需要将值从客户端发送到服务器的事实我刚才描述的那种逻辑。

于 2013-08-24T06:11:12.063 回答