当用户点击链接时,如何运行PHP代码?
我想要一个页面运行一些PHP代码,当用户点击一个链接,而不redirect。 这是可能的
<a href=""></a>
或与JavaScript的onclick事件?
是的,你需要有一个JavaScript函数触发一个页面的AJAX加载,然后返回false,这样他们将不会在浏览器中redirect。 你可以在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()方法),您也可以做一个回传。
正如其他人所build议的,使用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 }
除非您使用AJAX,否则当用户单击链接而不离开页面时,您无法运行PHP。 PHP是一种服务器端脚本语言,也就是浏览器看到页面的第二种语言,它里面没有PHP。
与JavaScript不同的是,PHP在服务器上完全运行,浏览器不知道如何解释它,如果它位于后面。 调用PHP代码的唯一方法是通过刷新页面或使用JavaScript获取页面来创build页面请求。
在AJAX解决scheme中,页面基本上使用JavaScript将页面请求发送到您域中的另一个页面。 然后,Javascript将得到你决定在echo
中回应的任何内容,并且可以parsing它并从那里做它想做的事情。 当你创build响应时,你也可以做任何后端的东西,比如更新数据库。
我知道这个post是旧的,但我只是想添加我的答案!
你说没有指示就login一个用户…这个方法做redirect,但是它将用户返回到他们所在的页面! 这是我的实现:
// 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获取文件名的代码不是bugcertificate。 例如,如果查询string中包含未转义的“/”,则会失败。
不过,有很多脚本从URL获取文件名!
快乐编码!
亚历克斯
那么你说没有redirect。 那么它的一个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>
给它一个尝试:)希望你喜欢它
如果你还没有安装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>
AJAX的唯一更好的方法就是每个人都在他们的post中build议。 另一种方法是使用如下的IFrame:
<iframe name="f1" id="f1"> </iframe> <a href='yourpage.php' target='f1'>Click </a>
现在,您将在IFrame中获得输出(您可以将iframe放置在页面中的任何位置,或者事件将其隐藏,并从脚本中将结果隐藏起来)。
希望非Ajax解决scheme更好。
要么发送用户到另一个页面,这样做
<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>
这应该也是一样
<a href="#" onclick="callFunction();">Submit</a> <script type="text/javascript"> function callFunction() { <?php require("functions.php"); ?> } </script>
谢谢,
cowtipper