PHP - Enviar valores al usar header

 
Vista:
Imágen de perfil de Max

Enviar valores al usar header

Publicado por Max (19 intervenciones) el 15/08/2015 15:42:41
Al usar la función header("Location:") se pierden los valores de las matrices superglobales, ¿existe una forma de redireccionar conservando los valores de las superglobales?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Enviar valores al usar header

Publicado por xve (6935 intervenciones) el 15/08/2015 16:05:13
Si la redirección es al mismo dominio, no se pierden... si es a otro dominio, lógicamente si que se pierden, ya que hay que crearlas en el nuevo server.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Max

Enviar valores al usar header

Publicado por Max (19 intervenciones) el 15/08/2015 16:18:46
Tengo un formulario y al enviarlo hago una redirección para que vaya a una pagina diferente a la del atributo action, el caso es que en dicha pagina se necesitan los datos de $_POST pero incluso haciendo un print_r me da un array vacío.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Enviar valores al usar header

Publicado por xve (6935 intervenciones) el 15/08/2015 20:52:02
Si, claro, con el header:location solo puedes pasar parámetros por GET!!!

Las superglobales que haces referencia, son las variables de sesión?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Max

Enviar valores al usar header

Publicado por Max (19 intervenciones) el 16/08/2015 01:00:57
Hablo de post y este lío tiene que ver con la consulta anterior de los 324 radiobuttons. He hecho un pequeño ejemplo para que puedes ver de que hablo, ¿no existe forma de pasar valores $_POST al redireccionar una pagina? ¿O acaso no existe alguna alternativa a header para redireccionar?

Perdon si el codigo se ve mal, estoy desde un telefono.

Archivo index.php------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<!-- Funciones PHP  -->
 
<?php
 
function checked($cadena)
{
    if(isset($_POST[$cadena]))
    {
      return "checked";
    }
}
 
function count_values()
{
    if(count($_POST) === 3)
    {
      header('Location:page-redirected.php');
    }
}
 
?>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/bootstrap-theme.min.css">
    <title>Pagina 1</title>
  </head>
  <body>
  <?php count_values(); ?>
  <div class="container">
    <div class="row">
      <div class="col-md-8 col-md-offset-2">
        <h1>Esto es una prueba con $_POST y header('Location:')</h1>
        <?php if (!empty($_POST) && count($_POST) < 3): ?>
          <div class="alert alert-danger">
            <span>No has rellenado todos los campos.</span>
          </div>
        <?php endif; ?>
        <form action="index.php" method="post">
          <span>Apuesto a que no marcas este radiobutton</span>
          <label>Lo marco</label>
          <input type="radio" name="primero" value="a" <?= checked('primero') ?>>
          <br>
 
          <span>¡Ok, marca este entonces!</span>
          <label>Lo marco</label>
          <input type="radio" name="segundo" value="b" <?= checked('segundo') ?>>
          <br>
 
          <span>1,000 pavos a que dejas este vacío</span>
          <label>Lo marco</label>
          <input type="radio" name="tercero" value="c" <?= checked('tercero') ?>>
          <br>
 
          <input class="btn btn-primary" type="submit" value="Enviar">
        </form>
      </div>
    </div>
  </div>
  <footer class="text-center">
    <h6>footer improvisado, todos los derechos reservados &copy;</h6>
  </footer>
</body>
</html>

Archivo page-redirected.php--------

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/bootstrap-theme.min.css">
    <title>Pagina 2</title>
  </head>
  <body>
    <h1>Esta es la pagina 2, aquí se supone deberían imprimirse los valores de $_POST</h1>
    <strong>Esto retorna la función var_dump cuando se le pasa $_POST como parametro: </strong><?php var_dump($_POST); ?>
  </body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Enviar valores al usar header

Publicado por xve (6935 intervenciones) el 16/08/2015 08:23:58
Hola Max, te adjunto como puedes hacerlo:

index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
session_start();
function checked($cadena)
{
    if(isset($_POST[$cadena]))
    {
		return "checked";
    }
}
 
function count_values()
{
    if(count($_POST) === 3)
    {
		$_SESSION["post"]=$_POST;
		header('Location:page-redirected.php');
    }
}
 
?>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/bootstrap-theme.min.css">
    <title>Pagina 1</title>
  </head>
  <body>
  <?php count_values(); ?>
  <div class="container">
    <div class="row">
      <div class="col-md-8 col-md-offset-2">
        <h1>Esto es una prueba con $_POST y header('Location:')</h1>
        <?php if (!empty($_POST) && count($_POST) < 3): ?>
          <div class="alert alert-danger">
            <span>No has rellenado todos los campos.</span>
          </div>
        <?php endif; ?>
        <form action="<?php echo $_SERVER["SELF"];?>" method="post">
          <span>Apuesto a que no marcas este radiobutton</span>
          <label>Lo marco</label>
          <input type="radio" name="primero" value="a" <?= checked('primero') ?>>
          <br>
 
          <span>¡Ok, marca este entonces!</span>
          <label>Lo marco</label>
          <input type="radio" name="segundo" value="b" <?= checked('segundo') ?>>
          <br>
 
          <span>1,000 pavos a que dejas este vacío</span>
          <label>Lo marco</label>
          <input type="radio" name="tercero" value="c" <?= checked('tercero') ?>>
          <br>
 
          <input class="btn btn-primary" type="submit" value="Enviar">
        </form>
      </div>
    </div>
  </div>
  <footer class="text-center">
    <h6>footer improvisado, todos los derechos reservados &copy;</h6>
  </footer>
</body>
</html>

page-redirected.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
session_start();
$_POST=$_SESSION["post"];
$_SESSION["post"]="";
?>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/bootstrap-theme.min.css">
    <title>Pagina 2</title>
  </head>
  <body>
    <h1>Esta es la pagina 2, aquí se supone deberían imprimirse los valores de $_POST</h1>
    <strong>Esto retorna la función var_dump cuando se le pasa $_POST como parametro: </strong><?php var_dump($_POST); ?>
  </body>
</html>


Antes de hacer el redirect, se pone el post en una variable de sesión. Luego en la pagina redirigida, se captura dicho contenido.

Si hay alguna parte que no entiendes, me comentas, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Max

Enviar valores al usar header

Publicado por Max (19 intervenciones) el 16/08/2015 16:34:42
Listo, todo bien explicado, lo voy a probar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Max

Enviar valores al usar header

Publicado por Max (19 intervenciones) el 16/08/2015 16:57:44
Lo he corrido en el servidor de mi telefono y me da error

Warning: Cannot modify header information - headers already sent by (output started at /private/var/www/cr/index.php:30) in /private/var/www/cr/index.php on line 16
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Max

Enviar valores al usar header

Publicado por Max (19 intervenciones) el 16/08/2015 17:08:01
Ya lo he hecho funcionar, es que se llamaba la función count_values dentro del body y esta función contenía un header, bastó con poner la función luego del session_start y funciono a la perfección. Mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Enviar valores al usar header

Publicado por xve (6935 intervenciones) el 17/08/2015 09:03:40
Gracias por comentarlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar