当用户点击链接时如何运行 PHP 代码?
Posted
技术标签:
【中文标题】当用户点击链接时如何运行 PHP 代码?【英文标题】:How do I run PHP code when a user clicks on a link? 【发布时间】:2010-11-19 19:52:00 【问题描述】:我想让一个页面在用户点击一个链接时运行一些 php 代码,而不是重定向它们。这可能与
<a href=""></a>
还是使用 javascript onclick 事件?
【问题讨论】:
【参考方案1】:是的,您需要有一个由 onclick 触发的 javascript 函数,该函数执行 AJAX 页面加载然后返回 false,这样它们就不会在浏览器中被重定向。如果您的项目可以接受,您可以在 jQuery 中使用以下内容:
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function doSomething()
$.get("somepage.php");
return false;
</script>
<a href="#" onclick="doSomething();">Click Me!</a>
如果您需要使用表单值,也可以进行回发(使用 $.post() 方法)。
【讨论】:
您应该也应该从函数中返回 false,因此不遵循 HREF。 2 年后,现在我意识到是什么让这个答案如此出色! @Parrots :如果我想将 ID 传递给 somepage.php,我该如何实现?假设我将“a”链接更改为 onclick="doSomething();"以及如何将其传递给 php 页面?谢谢 @nasty 将其存储在会话变量中,或将其作为 url 的一部分传递。【参考方案2】:正如其他人建议的那样,使用 JavaScript 进行 AJAX 调用。
<a href="#" onclick="myJsFunction()">whatever</a>
<script>
function myJsFunction()
// use ajax to make a call to your PHP script
// for more examples, using Jquery. see the link below
return false; // this is so the browser doesn't follow the link
http://docs.jquery.com/Ajax/jQuery.ajax
【讨论】:
没有理由仅仅因为他没有使用 jQuery 而对他投反对票。不过,可能应该有人编辑帖子以修复链接。 感谢贾斯汀,修复了链接。我只是添加了指向 jquery 的链接,但没有添加实际代码,以防万一它不是一个选项。不是每个人都能使用 Jquery,不管他们多么想(愚蠢的法律合同!) 您至少应该在您的函数中添加非 jquery AJAX 代码示例,因为您只是在记录他已经知道的 javascript 的 onclick 功能:P【参考方案3】:如果你还没有安装jquery(因为你只是一个初学者什么的),使用这段代码:
<a href="#" onclick="thisfunction()">link</a>
<script type="text/javascript">
function thisfunction()
var x = new XMLHttpRequest();
x.open("GET","function.php",true);
x.send();
return false;
</script>
【讨论】:
如果你不使用jquery,你是一个初学者吗?我喜欢使用 Javascript,它不喜欢它,因为我很笨 我猜你是个东西 :) 哈哈哈 事后看来,+1。我已经意识到 jQ 有多少冗余依赖,尤其是看到 Web 标准已经走了多远。【参考方案4】:我知道这篇文章很旧,但我只是想添加我的答案!
您说要在不指导的情况下注销用户...此方法确实重定向,但它将用户返回到他们所在的页面!这是我的实现:
// every page with logout button
<?php
// get the full url of current page
$page = $_SERVER['PHP_SELF'];
// find position of the last '/'
$file_name_begin_pos = strripos($page, "/");
// get substring from position to end
$file_name = substr($page, ++$fileNamePos);
?>
// the logout link in your html
<a href="logout.php?redirect_to=<?=$file_name?>">Log Out</a>
// logout.php page
<?php
session_start();
$_SESSION = array();
session_destroy();
$page = "index.php";
if(isset($_GET["redirect_to"]))
$file = $_GET["redirect_to"];
if ($file == "user.php")
// if redirect to is a restricted page, redirect to index
$file = "index.php";
header("Location: $file");
?>
我们去吧!
从完整 url 获取文件名的代码不是 bug 证明。例如,如果查询字符串中包含未转义的“/”,它将失败。
但是有很多脚本可以从 url 获取文件名!
编码愉快!
亚历克斯
【讨论】:
【参考方案5】:除非您使用 AJAX,否则当用户单击链接而不离开页面时,您无法运行 PHP。 PHP是一种服务器端脚本语言,意味着浏览器看到页面的那一秒,里面没有PHP。
与 Javascript 不同,PHP 完全在服务器上运行,如果它在后面咬它们,浏览器将不知道如何解释它。调用 PHP 代码的唯一方法是通过刷新页面或使用 javascript 获取页面来发出页面请求。
在 AJAX 解决方案中,基本上页面使用 javascript 将页面请求发送到您域中的另一个页面。然后,Javascript 在响应中获取您决定 echo
的任何内容,它可以解析它并从那里做它想做的事情。在创建响应时,您还可以执行任何后端操作,例如更新数据库。
【讨论】:
"除非您使用 AJAX,否则当用户单击链接时,您无法运行 PHP。"嗯? 正是我所说的。除非您请求新页面,否则您无法运行 PHP。 PHP 仅在请求页面时运行。 是的,但是您可以请求没有 AJAX 的 PHP 页面。 AJAX 只允许您在不离开您所在页面的情况下请求它。您的措辞听起来像是 PHP 的 所有 使用都需要 AJAX。 好的,我修正了措辞。我认为他试图不离开页面是理所当然的,但我想有些人不想思考。【参考方案6】:你说的没有重定向。好吧,它是一个 javascript 代码:
<a href="JavaScript:void(0);" onclick="function()">Whatever!</a>
<script type="text/javascript">
function confirm_delete()
var delete_confirmed=confirm("Are you sure you want to delete this file?");
if (delete_confirmed==true)
// the php code :) can't expose mine ^_^
else
// this one returns the user if he/she clicks no :)
document.location.href = 'whatever.php';
</script>
试一试 :) 希望你喜欢
【讨论】:
顺便说一下这个whatever 【参考方案7】:正如每个人都在帖子中建议的那样,唯一更好的方法是 AJAX。 另一种方法是使用 IFrame,如下所示:
<iframe name="f1" id="f1"> </iframe>
<a href='yourpage.php' target='f1'>Click </a>
现在您将在 IFrame 中获得输出(您可以将 IFrame 放置在页面中任何您需要的位置,或者隐藏它以及脚本的结果)。
希望非 Ajax 解决方案更好。
【讨论】:
【参考方案8】:要么将用户发送到另一个页面
<a href="exec.php">Execute PHP</a>
或者用ajax来做
<script type="text/javascript">
// <![CDATA[
document.getElementById('link').onclick = function()
// call script via ajax...
return false;
// ]]>
</script>
...
<a href="#" id="link">Execute PHP</a>
【讨论】:
【参考方案9】:<a href='javascript:void(0)' id='yourId'>Click Me</a>
$(document).ready(function()
$("#yourId").click(function()
$.get("yourpage.php");
return false;;
);
);
【讨论】:
【参考方案10】:这应该也可以
<a href="#" onclick="callFunction();">Submit</a>
<script type="text/javascript">
function callFunction()
<?php require("functions.php"); ?>
</script>
谢谢,
牛头人
【讨论】:
如何通过 javascript 点击触发 php require()?以上是关于当用户点击链接时如何运行 PHP 代码?的主要内容,如果未能解决你的问题,请参考以下文章
当用户关闭页面时,如何阻止服务器发送的事件脚本运行? PHP
如何在不点击链接的情况下在 javascript 中打开新页面
当 API 需要证书和用户/密码时,如何从 HTML 页面(使用链接到 javascript 代码的按钮)运行对 API 的发布请求?