簡體   English   中英

php在html中按下提交按鈕時未執行功能

[英]php not executing function on submit button pressed in html

因此,我得到了這段代碼,並且仍在學習中,但我不知道問題可能出在哪里,並且這樣做是否不安全?

<?php
    print_form();
    if(isset($_POST['calculate'])){
        process_form();
    }
    function process_form(){
        switch($_POST){
            case "addition":
                print $_POST['operand1'] + $_POST['operand2'];
                break;
            case "subtraction":

                break;
            case "multiplication":

                break;
            case "division":

        }
    }
    function print_form(){
        print <<<HTML
            <html>
                <head><title>Learning Php</title></head>

                <body>
                    <form method="POST" action="">
                        Operand 1: <input type="text" name="operand1"><br>
                        Operand 2: <input type="text" name="operand2"><br>
                        <select name="operation">
                            <option value="addition"> Addition </option>
                            <option value="subtraction"> Subtraction </option>
                            <option value="multiplication"> Multiplication </option>
                            <option value="division"> Division </option>
                        </select>
                        <input type="submit" name="calculate" value="calculate">
                    </form> 
                </body>
            </html>
HTML;
    }
?>

只是不執行process_form()還是要在按下按鈕時重置計算值?

您需要切換$_POST['operation']

網站上的大多數漏洞來自將數據保存到數據庫,向用戶展示其他用戶數據。 像這樣的代碼似乎沒有任何安全性問題,但是在輸出數據方面, echo似乎比print更流行。

在您的switch語句中,應將switch($_POST)更改為switch($_POST['operation'])

如我所見,您將選擇標記與名稱操作匹配,然后進行數學運算。

因此,如果要獲取正確的select標簽值,則必須使用$_POST['operation']

在函數調用中,傳遞發布數據並使用參數或自變量定義函數,如下所示

if(isset($_POST['calculate'])){
        process_form($_POST['calculate']);
    } 
function process_form($arg){
    switch($arg){
        case "addition":
            print $_POST['operand1'] + $_POST['operand2'];
            break;
        case "subtraction":

            break;
        case "multiplication":

            break;
        case "division":

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM