Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/09/2015, 02:39
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Problemas con $_SESSION y header "Location"

Hola de nuevo.

Por ahora he probado con dos nuevas opciones con el archivo "inc/editar_usuario.php".

- En la primera opción la dirección del formulario hacía "confirmar-editar-usuario.php" y a la vez incluyendo un campo oculto que recoja y envie el valor del id_usuario:

Código HTML:
Ver original
  1. <form method="post" action="inc/confirmar-editar-usuario.php" enctype="multipart/form-data" class="form">
  2.  
  3. <input type="hidden" name="id_usuario" value="<?php echo $id_usuario;?>" />

Luego en el archivo "confirmar-editar-usuario.php" recojo todos los campos, hago la actualización y ya si es correcta hace la redirección:

Código PHP:
Ver original
  1. if($editar_usuario_query = mysqli_query($conexion, $query)){                                       
  2.                 header("Location: http://---.com/jose_c/usuarios.php?id=$id_usuario");
  3.                
  4.             }
  5.             else {             
  6.                 echo "Error de edición". confirmarConsulta($editar_usuario_query);
  7.             }

Quedaría entonces así:

usuarios.php

Código PHP:
Ver original
  1. <article>  
  2.                 <h2>Preferencias del usuario</h2>      
  3.                
  4.                 <?php
  5.      
  6.                 if(isset($_GET['source'])){
  7.                     $source = $_GET['source'];
  8.                 }
  9.                 else{
  10.                     $source = "";
  11.                 }
  12.      
  13.                 switch ($source) {              
  14.                     case 'editar_usuario':
  15.                     include "inc/editar_usuario.php";
  16.                     break;
  17.                     default:
  18.                     include "inc/usuario.php";
  19.                     break;
  20.                 }
  21.     ?>
  22.     </article>

inc/editar_usuario.php

Código HTML:
Ver original
  1. <form method="post" action="inc/confirmar-editar-usuario.php" enctype="multipart/form-data" class="form">
  2.  
  3. <input type="hidden" name="id_usuario" value="<?php echo $id_usuario;?>" />

inc/confirmar-editar-usuario.php

Código PHP:
Ver original
  1. if($editar_usuario_query = mysqli_query($conexion, $query)){                                       
  2.                 header("Location: http://---.com/jose_c/usuarios.php?id=$id_usuario");
  3.                
  4.             }
  5.             else {             
  6.                 echo "Error de edición". confirmarConsulta($editar_usuario_query);
  7.             }


- En la segunda opción que se me ocurre sería con variables en la url a traves de $_GET y que al enviar el formulario coja la siguiente ruta en el mismo archivo (en este caso "inc/editar_usuario_opcion_get.php") y que a la vez edite y luego haga la redirección, por ejemplo algo así:

Código HTML:
Ver original
  1. <form method="post" action="inc/editar_usuario_opcion_get.php?c_editar=1&id=<?php echo $id_usuario; ?>" enctype="multipart/form-data" class="form">

Código PHP:
Ver original
  1. // ----- Si existe c_editar por la url ----- //
  2. if(isset($_GET['c_editar'])){
  3.     $c_editar = $_GET['c_editar'];
  4.     $c_editar = mysqli_real_escape_string($conexion, $c_editar);
  5.    
  6.    
  7.     $id = $_GET['id']; 
  8.     $id = mysqli_real_escape_string($conexion, $id);
  9.     //Aquí hago la edición
  10.     //Fin aquí hago la edición
  11.     //Redirijo
  12.     header("Location: http://...com/jose_c/usuarios_get.php?id=$id");  
  13. }
  14. // ----- Fin Si existe c_editar por la url ----- //

Y ahora también sale perfectamente.

Quedaría entonces algo como esto:

usuarios_get.php

Código PHP:
Ver original
  1. <article>  
  2.                 <h2>Preferencias del usuario</h2>      
  3.                
  4.                 <?php
  5.      
  6.                 if(isset($_GET['source'])){
  7.                     $source = $_GET['source'];
  8.                 }
  9.                 else{
  10.                     $source = "";
  11.                 }
  12.      
  13.                 switch ($source) {              
  14.                     case 'editar_usuario':
  15.                     include "inc/editar_usuario_opcion_get.php";
  16.                     break;
  17.                     default:
  18.                     include "inc/usuario.php";
  19.                     break;
  20.                 }
  21.     ?>
  22.     </article>

inc/editar_usuario_opcion_get.php

Código HTML:
Ver original
  1. <form method="post" action="inc/editar_usuario_opcion_get.php?c_editar=1&id=<?php echo $id_usuario; ?>" enctype="multipart/form-data" class="form">

Código PHP:
Ver original
  1. // ----- Si existe c_editar por la url ----- //
  2. if(isset($_GET['c_editar'])){
  3.     $c_editar = $_GET['c_editar'];
  4.     $c_editar = mysqli_real_escape_string($conexion, $c_editar);
  5.    
  6.    
  7.     $id = $_GET['id']; 
  8.     $id = mysqli_real_escape_string($conexion, $id);
  9.     //Aquí hago la edición
  10.     //Fin aquí hago la edición
  11.     //Redirijo
  12.     header("Location: http://...com/jose_c/usuarios_get.php?id=$id");  
  13. }
  14. // ----- Fin Si existe c_editar por la url ----- //

¿Cual de las dos maneras sería la mejor? o incluso ¿qué otra opción podría tener en cuenta?

Gracias de nuevo, saludos.