2014-10-25 5 views
0

Итак, я получил этот код, и я все еще участвую, и я не знаю, в чем проблема, и вопрос в том, что это небезопасно для этого?php не выполняет функцию на кнопке отправки, нажатой в 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(), или это сброс значения вычисления при нажатии кнопки?

ответ

1

Вам необходимо переключить $_POST['operation'].

Большинство уязвимостей на веб-сайтах - это сохранение данных в базах данных, представление пользователям других пользователей. Код вроде этого, похоже, не имеет проблем с безопасностью, но echo, по-видимому, более популярен, чем print для вывода данных.

+0

Спасибо за совет –

0

В вашем заявлении о переключении вы должны изменить switch($_POST) на switch($_POST['operation']).

Как я вижу, вы соответствуете тегу select с именем операции, а затем вы делаете математику.

Итак, если вы хотите, чтобы получить правильное значение выбора тега, то вы должны использовать $_POST['operation']

0

В вызове функции Проходят пост данных и определить свою функцию с параметром или аргументом, как показано ниже

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": 

    } 
Смежные вопросы