【问题标题】:Problems with calling a php function from sprintf()从 sprintf() 调用 php 函数的问题
【发布时间】:2015-01-11 07:14:53
【问题描述】:

当一个 Javascript 函数被调用 - show_picture() - 从 sprintf() 时,它可以正常工作(代码如下):

$user_row = sprintf("<a href='javascript:show_picture(%d);'> " .
"<img src='images/missing_user.png' width='15' /></a> ", $user['user_id']);

当一个 php 函数被调用 - show_user_func() - 从 sprintf() 它不起作用。错误信息是:

The requested URL /show_user_func(168); was not found on this server.

代码是:

sprintf("<a href='show_user_func(%d);'>%s %s</a> ",
            $user['user_id'], $user['first_name'], $user['last_name']);

对此可能有一个简单的解释,但目前我无法理解。有人有什么想法吗?

【问题讨论】:

  • 您不能从 HTML 链接调用 PHP 函数,除非您使用该链接请求另一个页面,并且该页面运行 PHP 函数。
  • 感谢亚历山大。当我实现下面给出的解决方案时,无需等待单击链接即可调用该函数。所以看来你是对的。

标签: php


【解决方案1】:

PHP 函数不是 URL。你不能像 URL 一样调用函数。您可以使用您在 URL 中提供的任何数据(可能在查询字符串中)创建一个调用该函数的页面。

只是为了解释为什么让用户将 PHP 函数作为 URL 调用是一个 非常糟糕的想法TM,请考虑这一点(幸好不是-工作)超链接:

<a href="array_map('unlink', './');">...</a>

用户可以轻松添加此内容或直接访问 URL http://example.com/array_map('unlink', './')。如果您尝试做的事情是可能的,那么上述内容会破坏您的网站。

编辑:如果您只是想输出show_user_func($user['user_id'])并将其用作链接,只需这样做:

sprintf("<a href='" . show_user_func($user['user_id']) . ";'>%s %s</a> ",
        $user['first_name'], $user['last_name']);

我不完全确定你为什么要这样做,因为你没有给我们太多的帮助,但看起来它可能就是你想要的。

编辑 2: 基于 cmets,您希望在用户单击页面上的链接时运行 PHP 函数。这是可能的,但不是你这样做的方式。您需要使用 AJAX。我建议在 Google 中搜索“AJAX”并阅读一些教程以开始使用。

【讨论】:

  • 感谢 Ed。上述解决方案一半有效(如果可能的话)!无需等待单击链接即可调用该函数。看来我想做的是不可能的。
  • PHP 是服务器端的;它会在用户看到页面之前总是被调用。也就是说,您可以使用 AJAX 为所欲为。我建议您搜索 AJAX 并阅读一些教程以帮助您入门。
【解决方案2】:

尝试使用类似:

<a href="show_user_func.php">Username</a>//your code resides in show_user_func.php

PHP 是一种服务器端语言,因此 HTML 无法像您所做的那样访问它。 JavaScript 可以做到这一点,因为它是一种客户端脚本语言。

查看更多类似帖子:Calling a PHP function within an <a > tag, anchor tag

【讨论】:

    【解决方案3】:
    $user_row = sprintf("<a href='" . show_user_func(%d) . "'>%s %s</a> ",
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 2014-02-09
      相关资源
      最近更新 更多