通过点击 HTML 链接触发 PHP 函数

新手上路,请多包涵

是否可以通过单击链接来触发 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>

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

原文由 fart-y-goer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 347
2 个回答

您可以通过使用表单提交重新加载整个页面,或通过将特定页面内容直接加载到页面中而无需从一个页面到另一个页面来完成此操作。第二种方法称为“AJAX”(异步 Javascript 和 XML)。这里有两个例子,每一个都指定了一个。

表单提交方式

表单.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();
?>

表单.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>

原文由 Zack Zatkin-Gold 发布,翻译遵循 CC BY-SA 3.0 许可协议

编辑 虽然这有效,但它是一个坏主意。一个人不应该先阅读 $_GET 而不先对其进行消毒)

您可以将其作为链接的查询参数传递。 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'] );
}
?>

原文由 gotofritz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏