繁体   English   中英

当用户单击链接时如何运行 PHP 代码?

[英]How do I run PHP code when a user clicks on a link?

我想让一个页面在用户点击链接时运行一些 PHP 代码,而不是重定向它们。 这可能与

<a href=""></a>

还是使用 javascript onclick 事件?

是的,您需要有一个由 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() 方法),您也可以进行回发。

正如其他人所建议的,使用 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(因为你只是一个初学者什么的),使用这段代码:

<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>

我知道这篇文章很旧,但我只是想添加我的答案!

你说在没有指导的情况下注销用户......这个方法确实重定向但它会将用户返回到他们所在的页面! 这是我的实现:

// 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 获取文件名的代码不是错误证明。 例如,如果查询字符串中包含未转义的“/”,它将失败。

但是有很多脚本可以从 url 获取文件名!

快乐编码!

亚历克斯

除非您使用 AJAX,否则当用户单击链接而不离开页面时,您无法运行 PHP。 PHP 是一种服务器端脚本语言,意思是浏览器第二次看到页面,里面没有 PHP。

与 Javascript 不同,PHP 完全在服务器上运行,如果它在后端咬住它们,浏览器将不知道如何解释它。 调用 PHP 代码的唯一方法是通过刷新页面或使用 javascript 获取页面来发出页面请求。

在 AJAX 解决方案中,基本上页面使用 javascript 将页面请求发送到您域中的另一个页面。 Javascript 然后获取您决定在响应中echo任何内容,它可以解析它并从那里做它想做的事情。 创建响应时,您还可以执行任何后端操作,例如更新数据库。

那么你说没有重定向。 好吧,它是一个 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>

试试看:) 希望你喜欢

唯一更好的方法是 AJAX,因为每个人都在他们的帖子中建议。 另一种方法是使用 IFrame,如下所示:

<iframe name="f1" id="f1"> </iframe>

<a href='yourpage.php' target='f1'>Click </a>

现在您将获得 IFrame 中的输出(您可以将 IFrame 放置在页面中任何您需要的位置,或者事件隐藏它以及脚本中的结果)。

希望非 Ajax 解决方案更好。

要么将用户发送到另一个页面

<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='javascript:void(0)' id='yourId'>Click Me</a>

$(document).ready(function() {       
    $("#yourId").click(function() {
       $.get("yourpage.php");
       return false;;
    });
});

这也应该有效

<a href="#" onclick="callFunction();">Submit</a>

<script type="text/javascript">

function callFunction()
{
  <?php require("functions.php");  ?>
}
</script>

谢谢,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM