在用户事件上执行php函数,而不使用javascript


Execute php function on user event without using javascript

我假设答案是:"这是不可能的,因为 php 是服务器语言而不是客户端语言",但我希望有人比我更专家来说明这一点并最终列出所有可能的解决方法......

问题:当用户在不使用任何javascript的情况下在html页面中"点击"或执行某种其他类型的操作(例如鼠标悬停)时,是否可以(仅)执行php函数?

(附言作为一种解决方法,我考虑访问一个中间页面,其中包含在客户端操作发生时要执行的 php 代码,然后根据需要重定向,但就传递 php 代码的结果而言,这并不简单。

一般来说没有。我能想到的关于鼠标悬停的唯一解决方法是由 PHP 脚本生成的一个小的 1x1 透明背景图像,并且仅在用户将鼠标悬停在某个元素上时才会显示。

.html:

<div id="mouseover_php">execute php</div>

.css:

#mouseover_php:hover {
    background-image:url(/path/to/php-script)
}

.php:

<?php
   // your code
   // set http headers to correct content type and to disable caching
   // output 1x1 pixel transparent image

但是由于所有现代浏览器都使用预取和缓存(尽管这可能会受到设置缓存控制标头的影响),我当然不会将其作为鼠标悬停事件的无可置疑的指标。所以,如果有的话,这将是一个非常不干净的黑客。

关于点击:这里唯一可能的方法是加载一个中间页面,就像你建议的那样。就我而言,没有 AJAX 就无法实现这一目标。

如果不提出新请求,这是不可能的。

您必须使用链接将用户发送到新页面(或同一页面 - 只要发出新请求的任何页面),或者必须使用 AJAX 之类的内容。


实际上,我能想到一种非常黑客的方式。 它不是很漂亮,但它应该有效。

您可以使用 iframe 作为链接的目标。 基本上,它不是在相同窗口或新窗口中打开链接,而是在隐藏的iframe中打开。

未经测试,但理论上:

<iframe name="testframe" id="testframe"></iframe>
<a href="http://google.com" target="testframe">Test</a>

编辑:经过一些粗略的测试,看起来铬不会遵守这一点。 IE9似乎在某种程度上会