Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: protus08 en 25 Julio 2020, 03:40



Título: Pasar un array de una pagina php a otra Js
Publicado por: protus08 en 25 Julio 2020, 03:40
Hola todos, espero me puedan ayudar, tengo 3 paginas 2 php y una js, necesito que al presionar un botón en la primera pagina php pueda pasar un array otra pagina js y esta envie esos datos a otra pagina php y esta ultima lo procese e imprima el resultado en primera pagina php, pero no se como hacerlo, si quiero pasar un dato lo puedo hacer pero no se como hacerlo con un arrray.

este es mi código donde tengo el botón, dependiendo de lo que triga de la base de datos, me crea N input , que es lo son los que necesito pasar a la pagina js y como lo había dicho antes solo consigo que me pase el valor del primero que encuentra.
pagina1.php
Código
  1. @extends('layouts.app2')
  2.  
  3. @section('contenido')
  4.  
  5.      <div class='container'>
  6.  
  7.            <form id='formulario'>
  8.  
  9.        <div class='row md-2'>
  10.  
  11.                   <button class='btn-secondary btn-default row mt-5' type='submit' id='analizar' name='analizar'>Analizar</button>
  12.  
  13.  
  14.  
  15.          </div>
  16.  
  17.          <div class='row'>
  18.  
  19.  
  20.  
  21.                <table class='table  table-format table-hover'>
  22.  
  23.                  <thead>
  24.  
  25.                    <tr>
  26.  
  27.                       <th scope='col'>IP</th>
  28.  
  29.                      </tr>
  30.  
  31.                  </thead>
  32.  
  33.                  <tbody>
  34.  
  35.                 @foreach ($enlaces as $enla)
  36.  
  37.  
  38.  
  39.                     <tr>
  40.  
  41.                       <td><input id='prueba1' type='text' name='ip'  value='{{$enla.ip}}'></td>
  42.  
  43.                      <td><div id='estado'><div id='respuesta'></div></td>
  44.  
  45.                      </tr>
  46.  
  47.  
  48.  
  49.                @endforeach
  50.  
  51.  
  52.  
  53.                  </form>
  54.  
  55.                  <script src="{{ asset('js/app/ping.js')}}"></script>
  56.  
  57.                  </tbody>
  58.  
  59.              </table>
  60.  
  61.         </div>
  62.  
  63.     </div>
  64.  
  65. @endsection
  66.  

este de aca es mi codigo js, donde solo me procesa el primer input que encuentra,y lo envia a otra pagina php donde trabajo ese datos. (solo logro que tome el primer input que pilla, no se como hacer para que recorra todos los que se creen en foreach de la pagina php)

Pagina2.js

Código
  1. formulario.addEventListener('submit',function(e){
  2.  
  3.  e.preventDefault();
  4.  
  5. console.log('pinchaste el boton')
  6.  
  7. var datos = new FormData(formulario);
  8.  
  9. console.log(datos.get('ip'))
  10.  
  11.  
  12.  
  13.  
  14.  
  15. fetch('http://localhost/scadabita2/resources/views/app/post.php',{
  16.  
  17.  method:'POST',
  18.  
  19.  body:datos
  20.  
  21. })
  22.  
  23. .then( res => res.json())
  24.  
  25. .then( data => {
  26.  
  27.  console.log(data)
  28.  
  29.  if(data === 'error')
  30.  
  31.  {
  32.  
  33.    respuesta.innerHTML=`<div>
  34.  
  35.   error
  36.  
  37.    </di>`
  38.  
  39.  }else{
  40.  
  41.    respuesta.innerHTML=`<div>
  42.  
  43.    ${data}
  44.  
  45.    </di>`
  46.  
  47.  }
  48.  
  49.  
  50.  
  51. })
  52.  
  53. })
  54.  

esta es la pagina php que procesa el dato que envia la pagina js e imprime el resultado en la primera pagina php
pagina3.php
Código
  1. <?php
  2.  
  3. $data=$_POST['ip'];
  4.  
  5. $PING1='ping '.$data.' -n 4';
  6.  
  7.   $res=shell_exec($PING1);
  8.  
  9.   $var=strstr($res, '(100% perdidos)');
  10.  
  11.   $findme='recibidos = 0';
  12.  
  13.   $pos = strpos($res, $findme);
  14.  
  15.  
  16.  
  17.   if($pos == false)
  18.  
  19.   {
  20.  
  21.       $findme='recibidos = 4';
  22.  
  23.        $pos = strpos($res, $findme);
  24.  
  25.  
  26.  
  27.            if($pos == false)
  28.  
  29.            {
  30.  
  31.                $RESULTADO="OKNOK.jpg";
  32.  
  33.                echo json_encode("<img src='../img/".$RESULTADO."'>");
  34.  
  35.            }
  36.  
  37.            else
  38.  
  39.            {
  40.  
  41.                $RESULTADO="Ok.jpg";
  42.  
  43.                echo json_encode("<img src='../img/".$RESULTADO."'>");
  44.  
  45.            }
  46.  
  47.  
  48.  
  49.    }else
  50.  
  51.        {
  52.  
  53.        $RESULTADO="NOk.jpg";
  54.  
  55.            echo json_encode("<img src='../img/".$RESULTADO."'>");
  56.  
  57.        }
  58.  
  59.  
  60.  
  61. ?>
  62.  

Espero me puedan ayuda por favorr!!!


Título: Re: Pasar un array de una pagina php a otra Js
Publicado por: [u]nsigned en 26 Julio 2020, 10:44
No te termine de entender del todo, pero si queres pasar muchos campos con el mismo nombre podes usar la notacion de array de php en el nombre del mismo en tu archivo pagina1.php agregandole corchetes [] en el atributo name:

Código
  1. <td><input id='prueba1' type='text' name='ip[]'  value='{{$enla.ip}}'></td>

Sin agregar los corchetes cada nuevo elemento de tu bucle esta sobreescribiendo al anterior y al final solo tendras un único valor para la variable ip cuyo valor sera el del ultimo item del foreach.


Título: Re: Pasar un array de una pagina php a otra Js
Publicado por: protus08 en 27 Julio 2020, 02:25
No te termine de entender del todo, pero si queres pasar muchos campos con el mismo nombre podes usar la notacion de array de php en el nombre del mismo en tu archivo pagina1.php agregandole corchetes [] en el atributo name:

Código
  1. <td><input id='prueba1' type='text' name='ip[]'  value='{{$enla.ip}}'></td>

Sin agregar los corchetes cada nuevo elemento de tu bucle esta sobreescribiendo al anterior y al final solo tendras un único valor para la variable ip cuyo valor sera el del ultimo item del foreach.

muchas gracias por responder, cambie lo que me indicas, pero básicamente lo que no se, es como hacer para pasar ese arreglo a la pagina donde tengo mi codigo JS y como procesarla ahí, para pasarla a la otra pagina php y recibir el resultado en la primera pagina php. si me pudieras ayudar por favor.