Вызов метода внутри класса с тегом «action» из формы - PullRequest
0 голосов
/ 24 июня 2019

Я знаю, как это сделать в Codeigniter, но я изо всех сил пытаюсь найти решение для процедурного PHP.Не могу найти ничего похожего в сети о моей проблеме

<form action="demo.php">
    <input type="text" id="demo" name="demo"/>
</form>

Страница demo.php

class Test {
    function example1() {
        --some code here---
        }

    function example2() {
$db = Connection::getInstance()->conn;
    $q = $db->query("INSERT INTO test (name, lastname, text) VALUES('$name', '$lastname', '$text')");
    if($q){
        echo "Inserted";
    }
    else{
        echo "Not inserted";
    }
        }
    }

Я хотел бы вызвать, например, метод example2() из моего demo.phpстраница с классом Test из тега action моей формы.Как мне этого добиться?Заранее спасибо!

1 Ответ

0 голосов
/ 24 июня 2019

Допустим, это ваш demo.php

 class Test {
    function example1() {
        --some code here---
        }

    function example2() {
    $db = Connection::getInstance()->conn;
    $q = $db->query("INSERT INTO test (name, lastname, text) VALUES('$name', '$lastname', '$text')");
    if($q){
        echo "Inserted";
    }
    else{
        echo "Not inserted";
    }
        }
    }

В вашем файле, где находится ваш html, вы должны внести некоторые изменения.

 <form action="router.php" method="POST">
    <input type="text" id="demo" name="operation" value="exmaple2"/>
    <input type="submit" id="submit" name="submit" value="submit"/>
</form>

Вы должны создать маршрутизатор.php файл, поскольку он будет обрабатывать все запросы, поступающие из вашей формы.

require_once('demo.php');
$operation = $_REQUEST['operation'];
$router = new Test();
try{
    if(isset($operation) && $operation == 'example2')
         $router->$operation();

    } catch (Exception $e){
        echo 'Caught exception: ' , $e->getMessage() , '\n';
    }

Но я должен добавить, что метод, который вы пытаетесь использовать, небезопасен с точки зрения безопасности.Но только для практических целей вы можете сделать это.

...