从sprintf()调用php函数的问题

时间:2015-01-11 07:14:53

标签: php

当调用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']);

可能有一个简单的解释,但它目前逃脱了我。有没有人有任何想法?

3 个答案:

答案 0 :(得分:3)

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

为了解释为什么让用户将PHP函数作为URL调用 READY BAD IDEA TM ,请考虑一下(谢天谢地) - 工作)超链接:

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

用户可以轻松添加或直接访问网址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:根据评论,您希望在用户点击页面上的链接时运行PHP功能。这是可能的,但不是你这样做的方式。你需要使用AJAX。我建议在Google上搜索“AJAX”并阅读一些教程以便开始使用。

答案 1 :(得分:0)

尝试使用like:

<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

答案 2 :(得分:0)

$user_row = sprintf("<a href='" . show_user_func(%d) . "'>%s %s</a> ",