单击HTML链接触发PHP功能

时间:2011-12-28 23:42:40

标签: php html function

是否可以通过单击链接来触发PHP功能?或者我应该坚持表单提交方法?如果单击该链接将起作用,链接应在何处引用?

以下是示例代码:

<?php
    session_start();
    function listMe($username){
        $username = mysql_real_escape_string($username);
        $query = mysql_query("INSERT INTO List (Usernames) VALUES ('$username')") or die(mysql_error());
    }
?>

<html>
    <head>
        <title>SAMPLE</title>
    </head>
    <body>
        <a href="**__???___**">Add my username to the list</a>
        <?php 
            listMe($_SESSION['Username']); 
        ?>
    </body>
</html>

也许有人可以指出我正确的方向。谢谢!

5 个答案:

答案 0 :(得分:8)

您可以通过使用表单提交再次加载整个页面,或者通过直接将特定页面内容加载到页面中而无需从一个页面转到另一个页面来实现此目的。第二种方法称为“AJAX”(Asynchoronous Javascript和XML)。以下是两个示例,每个示例都有一个。

表单提交方法

form.php的

<?php
function get_users(){
}
if(isset($_GET['get_users']))
{
    get_users();
}
?>
...
<form method="get">
    <input type="hidden" name="get_users">
    <input type="submit">
</form>

AJAX方法

ajax_file.php

<?php
function call_me(){
    // your php code
}
call_me();
?>

form.html

<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
    var xmlhttp;
    if (window.XMLHttpRequest)
    {
        xmlhttp = new XMLHttpRequest();
    }
    else
    {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function()
    {
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            // do something if the page loaded successfully
        }
    }
    xmlhttp.open("GET","ajax_file.php",true);
    xmlhttp.send();
}
</script>
</head>
<body>
<a href="#" onclick="loadXMLDoc()">click to call function</a>
</body>
</html>

答案 1 :(得分:6)

您可以将其作为链接的查询参数传递。 http://example.com/?command=listMe&username=tom 但是这样每个人都可以通过加载该URL来运行该功能

<a href="http://example.com/?command=listMe&">List me</a>

并在PHP中

<?php
if( isset($_GET['list_me']) && isset($_SESSION['Username'] ) ){
   listMe( $_SESSION['Username'] );
}
?>

答案 2 :(得分:5)

HTML

<a href="?list_me">list me</a>

PHP

<?php
if (isset($_GET['list_me'])) listMe();

答案 3 :(得分:1)

要在链接上触发一个函数,请点击php,我知道的唯一方法就是在链接的url中附加一个param,然后再听一下

<a href="?function">Add my username to the list</a>

然后检查链接

if (isset($_GET['function'])){
      runFunction();
}

这是因为php是一种服务器端技术,如果你想在没有刷新页面的情况下点击你需要查看的东西,比如javascript

答案 4 :(得分:0)

我在一个插件中找到了这个代码,他们有一个foreach外观用户触发操作:

$actions = unset($meta[$key]);
foreach ( $actions as $action => $value ) {
    echo '<li><a href="' . esc_url( $value['url'] ) . '" class="my-action-' . $action . '">' . '<i class="fa fa-times"></i></a></li>';
}