Comunidad de diseño web y desarrollo en internet online

Ayuda sistema de logueo y permisos entre otros xD

Citar            
MensajeEscrito el 11 Jun 2010 03:36 pm
Hola gurus del php.. xD

Me he daod a la tarea de implementar un sistema de usuarios para una aplicacion web, el logueo ya o tengo funcionando aunque no muy bien ya que:

1.- si no pongo nada en los campos para crear un nuevo usuario igual me dice que el ususario se ha creado satisfactoriamente, veo mi tabla MySQL y veo un nuevo registro con todos los campos en blanco, como evito esto?

2.- Este formulario para crear nuevos usuarios se encuentra dentro de una pagina php, dentro tengo una tabla que centra todo, dentro un sprytabs y dentro el formulario, como puedo hacerle para que el echo de confirmacion me salga en la misma parte del formulario en lugar de mostrarme una nueva pagina en blanco con el texto del echo?

3.- Uso SESSION pra el logueo, pero hasta ahorita solo puedo lograr que pida ser un usuario logueado para ver mi index.php, pero me gustaria que si es el usuario juanito lo mande a la pagina juanito.php, si es miguel lo mande a la pagina miguel.php y asi sucesivamente... esto me imagino se establece con roles y o permisos cierto? me podrian ayudar a implementarlo? he visto tutoriales pero si los sigo tengo que deshacer lo que ya tengo hecho veo que usan variables para los permisos pero veo que usan SESSION y eso lo uso yo para obtener que se logueen...

Hasta ahorita tengo la tabla MySQL con los campos: Nombre, password, puesto y permisos
Puedo crear usuarios y loguearme con sus datos

Por MikeSilver

26 de clabLevel



Genero:Masculino  

webdesigner, informatico, videogamer, parrandero

safari
Citar            
MensajeEscrito el 14 Jun 2010 12:30 am
Bueno tratare de responder tus preguntas de la mejor manera:
1)Cuando tu envias los datos a Mysql por ejemplo:Usuario y Clave debes colocarle la siguiente condicion antes de guardar los datos
if($Usuario!="" and $Clave!=""){ sentencia php y sql que inserta los datos}else{ echo "debe insertar el usuario y el pasworl para ingresar";}
si no validas los datos se insertara en mysql como un campo nulo.

2) Para que te muestre el mensaje en la misma pagina debes trabajar con la posicion de las capas de tu formulario.

3) puedes hacer una tabla por ejemplo: Usuarios con los siguientes campos. usuario,tipo, pagina. En el campo de la tabla se mysql pagina debes poner la direccion donde tienes las paginas que quieres que los usuarios accedan al logearte ejemplo:
si tienes una carpeta que se llame protegidas y dentro de ella tienes administrador.php,usuarios.php,consultas.php.
lo que debes escribir en el campo pagina de la tabla usuarios lo siguiente /protegidas/administrador.php
y luego en el script de autentificacion llamas este campo y lo direccionas alli y listo.

cualquier cosa escribe y haremos el codigo
el servir nos hace grandes :cool:

Por crmauricio

52 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Jun 2010 04:29 am
Hola muchas gracias.. por la hora ya no me esposible investigar lo que me comentas me daré a la tarea de realizar lo que me sugieres y si me atoro de nuevo te estaré molestando de nuevo xD gracias espero poder hacerlo ya sin tanto rodeo xD depsues les digo como me va... yo creo que mañana xD

Por MikeSilver

26 de clabLevel



Genero:Masculino  

webdesigner, informatico, videogamer, parrandero

safari
Citar            
MensajeEscrito el 15 Jun 2010 02:23 pm
Em ok entiendo lo que me planteaste solo que no se muy bien en que parte del codigo acomodarlo, ya que hay 2 if() en mi codigo, te pongo el codigo de mi .php:

Código PHP :

<?
include("config.php"); 

$nombre= htmlspecialchars(trim($_POST['nombre']));
$apellido= htmlspecialchars(trim($_POST['apellido']));
$pass1 = trim($_POST['pass1']);
$pass2 = trim($_POST['pass2']);
$depto= htmlspecialchars(trim($_POST['depto']));
$email= htmlspecialchars(trim($_POST['email']));
$permisos= htmlspecialchars(trim($_POST['permisos']));

$link=mysql_connect($server,$dbuser,$dbpass);
$query = sprintf("SELECT nombre FROM usuarios WHERE usuarios.nombre='%s'",
      mysql_real_escape_string($nombre)); 
$result=mysql_db_query($database,$query,$link);

if(mysql_num_rows($result)){
  echo "El usuario ya existe en la BD";
} else {
mysql_free_result($result);
  if($pass1!=$pass2) {

     echo "Los passwords deben coincidir";

     echo 'Click <a href="form.html">aquí</a> para volver al formulario';

  } else {

   $pass1=sha1(md5($pass1)); 
  
   $query  =  sprintf("INSERT INTO usuarios (nombre, apellido, password, depto, email, permisos) VALUES ('%s','%s','%s', '%s', '%s', '%s')",
            mysql_real_escape_string($nombre),   mysql_real_escape_string($apellido),
            mysql_real_escape_string($pass1),   mysql_real_escape_string($depto),    
            mysql_real_escape_string($email),   mysql_real_escape_string($permisos));   
   

   $result=mysql_db_query($database,$query,$link);

   if(mysql_affected_rows()){
            
   echo "Usuario introducido correctamente";

   } else {

   echo "Error introduciendo el usuario";

   }

  } 
} 
?>


Este es el archivo que me crea los usuarios, pero como vez tengo varios if, asi que me podrias recomendar donde ponerlo, ademas si te fijas tengo un echo donde me dice que se introdujo correctamente y uno que me dice que hubo un error, bueno esos echo´s me salen en una pagina en blanco con el mensaje, me gustaria que aparecieran en el mismo lugar del formulario, te pongo mi .php del formulario:

Código PHP :

<?php
session_start();
if(!isset($_SESSION["nombre"])){
header("location:index.php");
} else {
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bordados Internacionales - Inicio</title>
<link href="skin.css" rel="stylesheet" type="text/css">
<script src="SpryAssets/SpryTabbedPanels.js" type="text/javascript"></script>
<link href="SpryAssets/SpryTabbedPanels.css" rel="stylesheet" type="text/css">
</head>
<body>

<table width="100%">
  <tr>
    <th scope="col">&nbsp;</th>
    <th scope="col"><p><img src="titulo.png" width="417" height="35" alt="Bordados"></p>
    <p>&nbsp;</p></th>
    <th scope="col">&nbsp;</th>
  </tr>
  <tr>
    <th scope="col">&nbsp;</th>
    <th scope="col">
      <?php
   echo "Bienvenido&nbsp;";
   echo $_SESSION["nombre"]."&nbsp;del departamento de:&nbsp;".$_SESSION["depto"]."";
   echo "<br></br>";
?>
<div id="TabbedPanels1" class="TabbedPanels">
  <ul class="TabbedPanelsTabGroup">
    <li class="TabbedPanelsTab" tabindex="0">Usuarios</li>
    <li class="TabbedPanelsTab" tabindex="0">Modulos</li>
    <li class="TabbedPanelsTab" tabindex="0">Apariencia</li>
    <li class="TabbedPanelsTab" tabindex="0">Correos</li>
  </ul>
  <div class="TabbedPanelsContentGroup">
    <div class="TabbedPanelsContent"><h1>Ingrese sus datos</h1>
<form action="crea_usuarios.php" method="POST">
Nombre: <input type="text" name="nombre"><br>
Apellidos: <input type="text" name="apellido"><br>
Password: <input type="password" name="pass1"><br>
Repite Password: <input type="password" name="pass2"><br>
Departamento: <input type="text" name="depto"><br>
E-mail: <input type="text" name="email"><br>
Permisos: <input type="text" name="permisos"><br>
<input type="submit" name="Crear Usuario">
</form><p></p></div>
    <div class="TabbedPanelsContent">Contenido 2<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p></div>
    <div class="TabbedPanelsContent">Contenido 3<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p></div>
    <div class="TabbedPanelsContent">Contenido 4<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p></div>
  </div>
</div></th>
    <th scope="col">&nbsp;</th>
  </tr>
</table>
<script type="text/javascript">
<!--
var TabbedPanels1 = new Spry.Widget.TabbedPanels("TabbedPanels1");
//-->
</script>
</body>
</html>


Como vez tengo mi formulario dentro del sprytab y quiero que ahi mismo me muestre los echos, como el de que no esten vacios los campos, el de se creo correctamente y el de si hubo un error...

Por MikeSilver

26 de clabLevel



Genero:Masculino  

webdesigner, informatico, videogamer, parrandero

safari
Citar            
MensajeEscrito el 16 Jun 2010 12:41 am
Mike, la verdad que no tengo ni idea que es o como trabaja un sprytab. Pero si te sirve podes hacer asi;


Donde tenes los echos, que te imprimen los mensajes hace asi;
Cambia, por ejemplo

Código PHP :

echo "Usuario introducido correctamente"; 

Por

Código PHP :

$mensaje_consulta = "Usuario introducido correctamente";


Y donde queres que te imprima los mensajes hace asi

Código PHP :

<?php if(!empty($mensaje_consulta)) echo '<div class="estilo_error">'.$mensaje_consulta.'</div>'; ?>


Saludos!

Por SebaCosta

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Jun 2010 02:57 pm
Hola Sebacosta, grax por la ayuda de momento ya pude validar el que no esté el campo vacio pero no se como hacerle para que:

- Me muestre un echo por cada tipo de error, me salen los 2 echos cuando dejo en blanco algun campo, el otro echo es de un else que dice que hubo un error en el registro entonces cuando dejo un campo en blanco me salen ambos echos y eso se ve raro...
- Solo he puesto la validacion para que no haya campos vacios pero me falta validar lo que ingresen en los campos...

La forma que encontré para no dejar vacios los campos es:

Código PHP :

if(empty($usuario)){
$error++;
}
if(empty($password)){
$error++;
if($error > 0){
echo "Por favor ingrese todos los datos";
}
else{

sentencias sql......
}
if(msql_connect...){
mas sentencias sql;
}
else{
echo "hubo un error en el registro de usuarios";
}


Con eso logré que no me dejen vacios los campos pero si los campos estan vacios me muestra todos los echos de error... no se porque pasa...

Por MikeSilver

26 de clabLevel



Genero:Masculino  

webdesigner, informatico, videogamer, parrandero

safari
Citar            
MensajeEscrito el 16 Jun 2010 03:26 pm
Bueno pues un sprytab es un menu de pestañas y obvio te muestra como subsecciones cada que le aprietas a uno, no se si te referías a que no los conoces o a que simplemente no sabes como estan hechos, bueno segun veo el dreamweaver lo hace con archivos adjuntos que son de javascript y css, pero basicamente son divs, en el segundo cogido de mi post donde publique los php es donde viene el html y todo lo del formulario incluyendo los sprytabs, te dejo una imagen para que veas como los tengo yo

http://img149.imageshack.us/img149/5137/sprytabs.png

Bueno ahi donde se ve el formulario me gustaria que se me mostraran los echos o aunque no se si es posible tambien me bastaria con un popup mostrando el mensaje de error y su boton de ok xD

Por MikeSilver

26 de clabLevel



Genero:Masculino  

webdesigner, informatico, videogamer, parrandero

safari
Citar            
MensajeEscrito el 17 Jun 2010 03:20 am
Bueno, yo te diria que vayas separando por partes, porque a mi por lo menos se me armo un quilombo lindo.
Vos podes validar los campos, asi esten vacios o con una regla en especial, con php y/o javascript.
Para que no se inserte en tu base de datos, datos, justamente, vacios hace esto; ( como bien dijo crmauricio arriba )

Código PHP :

if($usuario == "" OR $clave == ""){ 
                               echo "error! - campo usuario/clave vacio";  }
         else { 
                  // aca pones el codigo a seguir, es decir, la insercion en la db o validar si el usuario existe
         }


Si queres agregar otra variable, haces asi;

Código PHP :

if($usuario == "" OR $clave == "" OR $OtraVariable == ""){ 


Y para validar los campos, con una popup o un alert en este caso ( a mi personalmente no me gustan ), hace algo asi;

Código HTML :

<script type="text/javascript">
function validar(){
   var error = false;
                  
   var MSJ = "Datos obligatorios \n \n";   // La \n es un salto de linea

   var RESULTADO = '';
   
   if(document.form.campo.value < 4){RESULTADO='Campo tiene menos de 4 caracteres'; error=true;} 
   
   
   if(error==true){   
      
      alert(''+MSJ+RESULTADO+'')
   
      return;
   }
   document.form.action="";
   document.form.submit();
   return;
}
</script>
<form method="post" name="form"  action="javascript:validar();" >

   Campo: <input type="text" name="campo" />
   
   <br /><br />

   <input type='submit' name='boton' value='validar' />

</form>


Trata de entender el codigo y limpiarlo, es decir, separa por bloques, comentalos. Por ejemplo cuando vas a insertar pone un comentario justo antes de hacerlo, cuando haces la consulta para ver si existe el usuario, lo mismo y asi.
Esto me parece a mi y yo lo hago, por ahi alguien de aca mas experimentado puede corregirme.

Espero que te sirva. Saludos!

Por SebaCosta

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Jun 2010 09:21 pm
Hola bueno les comento que ya pude realizar lo del logueo de ususarios, introducir nuevos usuarios a la DB, validar que no queden en blanco, y lo de los roles pues me facilité la vida y solo voy a crear varias "pantallas" o una pagina html por departamento o area de trabajo, esto lo logre con un:

If ($_SESSION["permisos"] == "numerodepantalla"){
header("Location:pantalla.php");
}
else{
echo "Usuario o password incorrecto";
}

Asi con cada if hago la comparacion sobre el numero de permiso asignado en la base de datos a cada usuario (este permiso lo asigno al crear el usuario nuevo)

aun me falta implementar lo de que el echo salga en el mimo lugar de la pantalla pero aun no lo experimento...

Espero poder aportar algo a la comunidad de cristalab con este proyecto..... pero de momento aun me falta mucho xD trataré de implementar lo que me dijo SebaCosta pero espero no deshacer lo que ya llevo xD

Por MikeSilver

26 de clabLevel



Genero:Masculino  

webdesigner, informatico, videogamer, parrandero

safari
Citar            
MensajeEscrito el 24 Jun 2010 06:15 pm
Por el mismo proyecto no he entrado al foro para agradecer l ayuda, parece que voy bien encaminado aunque aun me falta saber como implementar formularios en donde algunos datos se cambien mediante una lista de seleccion tipo:

<select>
<option value="bodega">En bodega
<option value="entregado">Entregado
</select>

Pero que esto lo guarda y lo lee de la base de datos de un campo llamado ESTATUS..... me podrian guiar en este sentido?

Hasta ahorita eh podido:
Crear usuarios (introducir datos en la base de datos)
validar que no se creen campos vacios
crear o asignar perfiles mediante un valor de un campo de la tabla usuarios
login y logout de usuarios
leer los datos de una DB y mostrarlos en un datagrid


Ahora necesito que ingresando un valor en un campo me llene los demas campos para poder insertarlos en un datagrid con columnas y todo y estos despues guardarlos en otra base de datos...

Espero me puedan ayudar.....
Si creen que necesito postear mi codigo me avisan...

Por MikeSilver

26 de clabLevel



Genero:Masculino  

webdesigner, informatico, videogamer, parrandero

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.