¿Cómo ejecutar una función PHP desde un formulario HTML?

Soy un principiante absoluto en tecnologías web. Sé que mi pregunta es muy simple, pero no sé cómo hacerlo. Por ejemplo, tengo una función:

function addNumbers($firstNumber, $secondNumber) { echo $firstNumber + $secondNumber; } 

Y tengo un formulario:

 

1-st number:

2-nd number:

¿Cómo puedo ingresar variables en mis campos de texto y llamar a mi función presionando el botón con los argumentos que he escrito en los campos de texto? Por ejemplo, escribo 5 – primer campo de texto, 10 – segundo campo de texto, luego hago clic en el botón y obtengo el resultado 15 en la misma página. EDITADO He intentado hacerlo así:

 $num1 = $POST['number1']; $num2 = $POST['number2']; addNumbers($num1, $num2); 

Pero no funciona, la respuesta es 0 siempre.

La “función” que tiene es del lado del servidor . El código del lado del servidor se ejecuta antes y solo antes de que se devuelvan los datos a su navegador (normalmente, se muestra como una página, pero también podría ser una solicitud de AJAX ).

El formulario que tienes es del lado del cliente . Este formulario es generado por su navegador y no está “conectado” a su servidor, pero puede enviar datos al servidor para su procesamiento .

Por lo tanto, para ejecutar la función, debe producirse el siguiente flujo:

  1. El servidor muestra la página con el formulario. No es necesario que el procesamiento del lado del servidor suceda.
  2. El navegador carga esa página y muestra el formulario.
  3. El usuario escribe datos en el formulario
  4. El usuario presiona el botón de enviar, se realiza una solicitud HTTP a su servidor con los datos.
  5. La página que maneja la solicitud (podría ser la misma que la primera) toma los datos de la solicitud, ejecuta su función y envía el resultado a una página HTML.

Ejemplo de script PHP que hace todo esto:

 < ?php function addNumbers($firstNumber, $secondNumber) { return $firstNumber + $secondNumber; } if (isset($_POST['number1']) && isset($_POST['number2'])) { $result = addNumbers(intval($_POST['number1']), intval($_POST['number2'])); } ?>   < ?php if (isset($result)) { ?> 

Result: < ?php echo $result ?>

< ?php } ?>

1-st number:

2-nd number:

Tenga en cuenta:

  • Incluso aquellos en los que esta “página” contiene tanto código PHP como HTML, su navegador nunca sabe cuál era el código PHP. Todo lo que ve es el resultado HTML que resultó. Todo dentro de < ?php ... ?> Es ejecutado por el servidor (y en este caso, echo crea el único resultado de esta ejecución), mientras que todo lo que está fuera de las tags PHP – específicamente, el código HTML – se envía a la respuesta HTTP directamente.
  • Notarás que el código

    Result:...

    HTML está dentro de una statement PHP if . Esto significa que esta línea no saldrá en el primer pase, porque no hay $result .

  • Como la action del formulario no tiene ningún valor, el formulario envía a la misma página (URL) en la que el navegador ya está activado.

Necesita recostackr los valores de la variable $_POST y pasarlos a la función.

 if ($_POST) { $number_1 = (int) $_POST['number1']; $number_2 = (int) $_POST['number2']; echo addNumbers($number_1, $number_2); } 

Sin embargo, tenga en cuenta que no debe confiar en la información del usuario y, por lo tanto, debe validar y desinfectar su información.

Prueba esto.

  < ?php function addNumbers($firstNumber, $secondNumber) { if (isset($_POST['number1']) && isset($_POST['number2'])) { $firstNumber = $_POST['number1']; $secondNumber = $_POST['number2']; $result = $firstNumber + $secondNumber; echo $result; } } ?> 

1-st number:

2-nd number:

< ?php addNumbers($firstNumber, $secondNumber);?>

< ?php echo $result; ?>

Las variables estarán en la variable $ _POST.

Para analizar la función, debe hacer esto:

 addNumbers($_POST['number1'],$_POST['number2']); 

Asegúrese de verificar la entrada, los usuarios pueden agregar lo que quieran en ella. Por ejemplo, use la función is_numeric ()

 $number1 = is_numeric($_POST['number1']) ? $_POST['number1'] : 0; 

Además, no haga eco dentro de una función, mejor devuélvala:

 function addNumbers($firstNumber, $secondNumber) { return $firstNumber + $secondNumber; } // check if $_POST is set if (isset($_POST['number1']) && isset($_POST['number2'])) { $number1 = is_numeric($_POST['number1']) ? $_POST['number1'] : 0; $number2 = is_numeric($_POST['number2']) ? $_POST['number2'] : 0; echo addNumbers($_POST['number1'],$_POST['number2']); } 

Te faltan los guiones bajos en

 $_POST['number1'] 

Eso es todo.