Активировать функцию PHP, нажав ссылку HTML - PullRequest
3 голосов
/ 29 декабря 2011

Можно ли вызвать функцию 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 ]

8 голосов
/ 29 декабря 2011

Вы можете сделать это путем повторной загрузки всей страницы с помощью отправки формы или путем загрузки определенного содержимого страницы непосредственно на страницу без необходимости переходить от страницы к странице. Второй метод называется «AJAX» (асинхронный 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>
6 голосов
/ 29 декабря 2011

Вы можете передать его в качестве параметра запроса ссылки.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'] );
}
?>
5 голосов
/ 29 декабря 2011

HTML

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

PHP

<?php
if (isset($_GET['list_me'])) listMe();
1 голос
/ 29 декабря 2011

Чтобы вызвать функцию по ссылке, нажмите с помощью php, единственный известный мне способ - добавить параметр в URL ссылки, а затем прослушать это

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

Затем проверьте ссылку

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

Это потому, что php - это серверная технология, если вы хотите что-то запустить без обновления страницы, вам нужно посмотреть что-то вроде javascript

0 голосов
/ 11 ноября 2016

Я нашел этот код в плагине, у них есть пользовательский интерфейс 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>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...