Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Victor26 en 21 Septiembre 2019, 19:17 pm



Título: [Resuelto] Problema con PHP y HTML
Publicado por: Victor26 en 21 Septiembre 2019, 19:17 pm
Buenos dias a todos, en el dia de hoy vengo para que me puedan ayudar con una duda que tengo.

Resulta que tengo mi (index.php) donde tengo el siguiente codigo
Código:
<form method="post" action="suma.php">
        <label>NUMERO 1</label><br>
        <input type="text" name="Suma1" placeholder="Digite el numero"><br>
        <label>NUMERO 2</label><br>
        <input type="text" name="Suma2" placeholder="Digite el numero"><br><br>
        <button>SUMAR</button><br><br>
        <input type="text" name="Resultado">
      </form>

y en otra pagina tengo mi codigo PHP (suma.php)
Código:
<?php
/* CALCULADORA */
$a = $_POST['Suma1'];
$b = $_POST['Suma2'];
$resultado = $a + $b;
echo "La suma de " .$a. " + " .$b. " es = " .$resultado;
/* FIN */
?>

Hasta donde se ve es una suma normal, donde yo digito unos numeros en mi formulario html y esos datos se guardan en las variables a y b que hacen la suma desde php y me muestran en otra pagina el resultado.

Ahora lo que yo estoy buscando es poder mostrar dicho resultado nuevamente en el input "Resultado" de mi formulario, osea directamente en mi pagina y no en otra, algo parecido a lo que se maneja con javascript. Gracias, espero me puedan ayudar.


Título: Re: Problema con PHP y HTML
Publicado por: EdePC en 21 Septiembre 2019, 20:03 pm
Saludos,

- Si quieres evitar javascript incluyendo Ajax, se me ocurre algo así, la idea es comprobar si existen los parámetros POST e inicializar las variables requeridas dependiendo a esto y usar estas variables como contenido VALUE de los TEXT del formulario:

Código
  1. <?php
  2.  if ( isset($_POST['Suma1']) && isset($_POST['Suma2']) ) {
  3.    $a = $_POST['Suma1'];
  4.    $b = $_POST['Suma2'];
  5.    $resultado = $a + $b;
  6.  } else {
  7.    $a = "";
  8.    $b = "";
  9.    $resultado = "";
  10.  }
  11. ?>
  12.  
  13. <form method="post" action="">
  14.  <label>NUMERO 1</label><br>
  15.  <input type="text" name="Suma1" value="<?=$a?>" placeholder="Digite el numero"><br>
  16.  <label>NUMERO 2</label><br>
  17.  <input type="text" name="Suma2" value="<?=$b?>"  placeholder="Digite el numero"><br><br>
  18.  <button>SUMAR</button><br><br>
  19.  <input type="text" name="Resultado" value="<?=$resultado?>" >
  20. </form>
  21.  


Título: Re: Problema con PHP y HTML
Publicado por: Victor26 en 22 Septiembre 2019, 20:20 pm
Vale, segun lo que entiendo del codigo, dice que si hay contenido (isset) en la variable (suma1 y suma2), definamelo en las variables php (a y b)?, y obviamente se realiza la operacion. En caso contrario no puede haber nada en las variables a y b, algo asi es lo que entiendo con el codigo.

Algo que no entiendo es la funcion que esta en el value del formulario (<?=$a?>), osea hay esta como preguntandole si hay contenido en la variable a? o algo asi?

Gracias.

De todas maneras me sirvio muy bien, si no que no entiendo el codigo del value.  :D

Otra pregunta como haria para que el resultado se mostrara centrado asi como los numeros que uno escribe, ensayo con css y no da, gracias.


Título: Re: Problema con PHP y HTML
Publicado por: #!drvy en 22 Septiembre 2019, 20:51 pm
Citar
Algo que no entiendo es la funcion que esta en el value del formulario (<?=$a?>), osea hay esta como preguntandole si hay contenido en la variable a? o algo asi?

Eso es un shorthand de PHP que te permite imprimir la variable de una forma algo más corta. Equivale a lo mismo que hacer esto:

Código
  1. <?php echo $a; ?>


De todos modos, ya que estamos en un foro de seguridad, mencionemos que imprimir directamente algo que te da el usuario es peligroso pues puede llevar a la ejecución de XSS. Siempre que el usuario te pase algo, tratalo como deberias tratarlo (si esperas un numero, tratalo como tal) e imprimirlo de forma escapada.

En este caso, dado que esperas números puedes usar (float) o (int) para forzar el tipo.

Y ya que estamos, recordar que isset admite un número indeterminado de argumentos.


Código
  1. <?php
  2. $a = '';
  3. $b = '';
  4. $resultado = '';
  5.  
  6. if (isset($_POST['Suma1'], $_POST['Suma2'])) {
  7.    $a = (float) $_POST['Suma1'];
  8.    $b = (float) $_POST['Suma2'];
  9.  
  10.    $resultado = $a + $b;
  11. }
  12. ?>

https://www.php.net/manual/es/function.isset.php
https://www.php.net/manual/es/language.types.type-juggling.php
https://www.php.net/manual/es/function.htmlentities.php

Saludos


Título: Re: Problema con PHP y HTML
Publicado por: Victor26 en 23 Septiembre 2019, 05:14 am
Listo, ya entendi el codigo del value, y ya verifique el codigo que me distes y tambien me funciono, en ese caso, mi tema queda resuelto muchas gracias por ayudarme!