Foros del Web » Programando para Internet » PHP »

validar sesion y enviar formulario

Estas en el tema de validar sesion y enviar formulario en el foro de PHP en Foros del Web. Hola a todos, he pasado casi toda la semana tratando de resolver esto pero no doy en el clavo. Lo que me gustaría tener es ...
  #1 (permalink)  
Antiguo 21/12/2010, 13:24
 
Fecha de Ingreso: junio-2010
Mensajes: 117
Antigüedad: 14 años, 5 meses
Puntos: 1
validar sesion y enviar formulario

Hola a todos, he pasado casi toda la semana tratando de resolver esto pero no doy en el clavo.

Lo que me gustaría tener es un formulario en el cual los usuarios puedan subir texto y una foto, pero no puedan subirlo si no han iniciado sesión, lo que quiero hacer es que cuando el usuario de click en enviar fomulario, si no han iniciado sesión les muestre un formulario de login en un div, y se logueen, y una vez iniciada sesión el formulario se envíe automáticamente sin volver a presionar enviar formulario, quiero resolverlo usando funciones, alguna ayuda??

Apreciaría mucho su ayuda, gracias anticipadas
  #2 (permalink)  
Antiguo 21/12/2010, 13:28
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: validar sesion y enviar formulario

puedes empezar por

Código PHP:
Ver original
  1. if(isset($_SESSION['user'])){
  2.        
  3.     ENVIO EL FORM
  4.  
  5. }else{
  6.  
  7.    LE MUESTRO EL FORM DE LOGIN
  8.  
  9. }

Ahora bien, no se si se pueda hacer eso de: SI SE LOGUEO que envie el FORM que se cargo antes.. salvo que dichos datos los guardes tambien en una SESION aparte y luego, si es que se loguearon, que pase a la pagina de proceso de form donde tiraria a la BD los datos y la FOTO
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 21/12/2010, 13:35
 
Fecha de Ingreso: junio-2010
Mensajes: 117
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: validar sesion y enviar formulario

Lo tenía hecho con una popup, y en la popup mostraba el formulario de login y se logueaba pero a esa popup le pasaba el formulario con javascript (window.parent.document.form.submit();) y al loguearse devolvía el mismo formulario a la ventana padre y ya tomaba como iniciada la sesión y lo enviaba, pero ya no quiero usar la popup.
  #4 (permalink)  
Antiguo 21/12/2010, 13:41
 
Fecha de Ingreso: diciembre-2010
Mensajes: 31
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: validar sesion y enviar formulario

Esta perfecta la respuesta de oncho_rojas, pero les recomiendo usar empty() en vez de isset(), ya que esta última puede llegar a fallar ( por ejemplo en el caso de que la sesión exista pero esta vacía.

El tema del popup no debería modificarte nada, solamente pasa tu código a una página normal de php.
  #5 (permalink)  
Antiguo 21/12/2010, 13:42
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: validar sesion y enviar formulario

por lo general yo cuando tomo unos datos de usuarios o lo que sea, los paso a un archivo que permite procesar los datos.

en este caso crearia un form para guardar los datos y la foto... que sera enviada a un archivo php que verifica primeramente los datos enviados por el form1... dichos datos los convertiria en sesion.

Luego verificaria si existe una sesion de usuario iniciada, como te indique arriba.

CASO 1... si existe el usuario, pasaria a procesar los datos del form1 para guardarlos en la BD en otro archivo

CASO 2.. si no esta loguado, que lo envie al form de LOGIN, y una vez logueado, pase al proceso de guardar los datos en la BD.

Cuando usas sesiones puedes almacenar los datos temporalmente o hasta que el usuario se de de baja o logout.

Empieza por ahi, y ve tirando tus codigos, y de a poco te iremos ayudando
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #6 (permalink)  
Antiguo 21/12/2010, 13:44
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: validar sesion y enviar formulario

Cita:
Iniciado por jsdevelop Ver Mensaje
Esta perfecta la respuesta de oncho_rojas, pero les recomiendo usar empty() en vez de isset(), ya que esta última puede llegar a fallar ( por ejemplo en el caso de que la sesión exista pero esta vacía.
yo no dejaria de usar ISSET.. tal vez puedas complementarlo con
Código PHP:
session_start();
if(isset(
$_SESSION['k_user']) && !empty($_SESSION)) 
para redireccionar si esta o no logueado deberias usar unos headers nada mas


Código PHP:
if(isset($_SESSION['k_user']) && !empty($_SESSION)){

 
header('location: procesar.php');

}else{
 
header('location: login.php');

__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #7 (permalink)  
Antiguo 21/12/2010, 15:31
 
Fecha de Ingreso: junio-2010
Mensajes: 117
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: validar sesion y enviar formulario

Ok, he hecho esto:

Al hacer click al fomulario llega aqui:

if($_GET['verifica']==1){
if(!isset($_SESSION['usuario'])){
//echo "<script>ventana('http://wwwbeta.yucatan.com.mx/f/v/?t=loguin',265,670)";
$_SESSION['titulo']=$_POST['titulo'];
$_SESSION['contenido']=$_POST['contenido'];
$_SESSION['multe']=$_FILES['multe']['name'][0];
logueo_user();
}
else{ //codigo que Inserta en la base de datos si ya hay sesion }
}

La funcion logueo_user() contiene el formulario de login:

function logueo_user(){?>
<form action="funcion_reportero.php?log=1" method="post">
<table align="center">
<tr>
<td colspan="2" align="center"><b>Favor de iniciar su Sesi&oacute;n</b></td>
</tr>
<tr>
<td>Correo:</td>
<td><input type="text" name="c" maxlength="50" /></td>
</tr>
<tr>
<td>Contrase&ntilde;a:</td>
<td><input type="password" name="p" maxlength="50" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="Entrar" /></td>
</tr>
</table>
</form>
<? }

Que al enviar el fomulario hace lo siguiente:

if($_GET['log']==1){
print_r($_POST);
include_once('../../inclusion/nusoap/lib/nusoap.php');
$client = new nusoap_client("http://registro.megamedia.com.mx/webservice_login.php");
$output = $client->call("checkUsermail", array($_POST['c'],$_POST['p'],45));
$_SESSION['usuario']['idusuario']=$output['idUsuario'];
$_SESSION['usuario']['nombre']=$output['nombre'];
$_SESSION['usuario']['email']=$output['email'];
$_SESSION['usuario']['bloqueado']=$output['bloqueado'];?>

<? }


Y hasta aqui ya no se como insertar en la base con las variables de sesion que contiene lo que estaba en el formulario
  #8 (permalink)  
Antiguo 21/12/2010, 15:44
 
Fecha de Ingreso: junio-2010
Mensajes: 117
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: validar sesion y enviar formulario

Y otra cosita asi como lo hice en las sesiones, como tengo acceso a:

$_FILES['multe']['tmp_name'], $_FILES['multe']['size'] y $_FILES['multe']['type']

de la foto, ya que estos los necesito para procesar la imagen
  #9 (permalink)  
Antiguo 21/12/2010, 16:10
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 9 meses
Puntos: 96
Respuesta: validar sesion y enviar formulario

Saludos

1. Tienes que organizarte mas en tu codificacion tienes un desorden muy tremendo, realizas operaciones que podrias hacerlas mas facil con un par de if
2. No me parece nada adecuado manejar las variables de session para esos tipos de parametros que deseas enviar
3. No es optimo que manejes verificaciones de logueo tan sencilla como verifica = 1 . Cualquier usuario podria modificar la url de la pagina y darse por autenticado automaticamente,
4. Un ejemplo de como podrias implementarlo seria de la siguiente manera

Formulario de Logueo
Código PHP:
Ver original
  1. <?php
  2. if($_POST['submit']=="Entrar"){
  3. //validaciones  correo y password que no se encuentren vacios
  4. $correo=$_POST['correo'];
  5. $password=$_POST['correo'];
  6. if ($correo==""){
  7. echo "correo vacio";
  8. }
  9. if ($password==""){
  10. echo "password vacio";
  11. }
  12. //Verificacion si el usuario y password esta correctametne
  13. include_once('../../inclusion/nusoap/lib/nusoap.php');
  14. $client = new nusoap_client("http://registro.megamedia.com.mx/webservice_login.php");
  15. $output = $client->call("checkUsermail", array($correo,$password,45));
  16.  
  17. //Después de que se llama al webservice que parámetro retorna de que se encuentra correctamente?
  18. $_SESSION['idusuario']=$output['idUsuario'];
  19. $_SESSION['nombre']=$output['nombre'];
  20. $_SESSION['email']=$output['email'];
  21. $_SESSION['bloqueado']=$output['bloqueado'];
  22. }
  23. ?>
  24.  
  25.  
  26. <form action="funcion_reportero.php" method="post" name="form" id="form">
  27. <table align="center">
  28. <tr>
  29. <td colspan="2" align="center"><b>Favor de iniciar su Sesi&oacute;n</b></td>
  30. </tr>
  31. <tr>
  32. <td>Correo:</td>
  33. <td><input type="text" name="correo" maxlength="50" /></td>
  34. </tr>
  35. <tr>
  36. <td>Contrase&ntilde;a:</td>
  37. <td><input type="password" name="password" maxlength="50" /></td>
  38. </tr>
  39. <tr>
  40. <td colspan="2"><input type="submit" name="submit" value="Entrar"/></td>
  41. </tr>
  42. </table>
  43. </form>

Formulario Carga Archivo

Código PHP:
Ver original
  1. <?php
  2. //Programa de carga de archivos
  3.  
  4. //Tomando el codigo posteado por el compañero  loncho_rojas
  5. if(isset($_SESSION['idusuario']) && !empty($_SESSION)){
  6. //Formulario de carga al servidor
  7. .......................
  8. .......................
  9. .......................
  10. .......................
  11.  
  12. }else{
  13.  header('location: login.php');
  14. }
  15. ?>
Espero me halla dado a entender y al igual se pueden hacer mas mejoras a lo que postie pero es solo una sugerencia para que mejores tu codificación y te organices mejor.

Hasta Pronto!
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #10 (permalink)  
Antiguo 21/12/2010, 16:28
 
Fecha de Ingreso: junio-2010
Mensajes: 117
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: validar sesion y enviar formulario

Muchas gracias nano por tu respuesta, ahora mismo me pongo a organizar mi codigo, y a tratar de hacer como me explicas, cualquier cosita les dejo sabes
  #11 (permalink)  
Antiguo 21/12/2010, 20:35
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: validar sesion y enviar formulario

Yo lo que hago es esto:

En el archivo que recoge el formulario de login hago:

Código PHP:
Ver original
  1.  
  2. $v_mail = $_POST['mail']; //recojo el mail
  3. $v_pass = $_POST['pass']; //recojo el pass

Con mysql comprobamos que el usuario existe y si existe hacemos un:
Código PHP:
Ver original
  1. $_SESSION["m"] = $v_mail;  
  2. $_SESSION["p"] = $v_pass;

Ahora en cualquier página que se necesite estar logueado se hace un:

Código PHP:
Ver original
  1.  
  2. $v_mail=$_SESSION["m"];
  3. $v_pass=$_SESSION["p"];

y si $v_mail o $v_pass están vacios pues ya puedes redirigir al index o a login.php asi:

Código PHP:
Ver original
  1. if($v_mail==""){
  2.  header('Location: login.php');
  3.  exit();
  4. }
También podrias decirle que envie a una página con el parametro error=no_login ejemplo:

Código PHP:
Ver original
  1. if($v_mail==""){
  2.  header('Location: login.php?error=no_login');
  3.  exit();
  4. }

y en esa página haces un

Código PHP:
Ver original
  1. $error=$_GET['error'];

y si kieres mostras un mensaje de error pues haces:

Código PHP:
Ver original
  1. <?php if($error=="no_login"){?>
  2. <div id="error">Error</div>
  3. <?php }?>

Esto hará que si ha detectado el parametro error con valor "no_login" mostrara el div de error

Etiquetas: enviar, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:05.