Foros del Web » Programando para Internet » PHP »

autentificar usuarios mediante usuarios creados en la base de datos

Estas en el tema de autentificar usuarios mediante usuarios creados en la base de datos en el foro de PHP en Foros del Web. Hola, con bastante ayuda he creado un codigo el cual costa de dos partes. index.php tiene dos cuadros de texto mediante post llama a envio.php ...
  #1 (permalink)  
Antiguo 23/12/2003, 13:51
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
autentificar usuarios mediante usuarios creados en la base de datos

Hola, con bastante ayuda he creado un codigo el cual costa de dos partes.

index.php
tiene dos cuadros de texto mediante post llama a envio.php

envio.php
mediante unos codigos que se cominican con una base de datos dentro de esta una tabla llamada proyecto y dos campos llamados user y pass. Los datos que la persona escribe dentro de los cuadros de texto de index.php son almacenados en los campos "user" y "pass". Ahora apartir de esta base de datos me gustaria que estos usuarios pudieran entrar a un php o en la misma pagina del nuevo script si es correcto carge los contenidos y si es incorrecta porque algunos de los campos de la base de datos son incorrectos mande un error.

¿Seria complicado hacer este codigo?

Un Saludo, espero su respuesta.
  #2 (permalink)  
Antiguo 23/12/2003, 14:39
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
creo poder ayudarte

Hola la verdad no te entendi mucho, pero bueno dentro de lo que entendi tratare de ayudarte mira yo hago lo siguiente:

bueno del primer formulario sale las variables de usuario y password hasta hay bien.


Código PHP:
$link=mysql_connect("conexion")or die("Error en conexión: ".mysql_error());
mysql_select_db("estudios")or die("Error en BD: ".mysql_error());
$seguridad="select * from claves where usuario='$usuario' and password='$password'";
$certificando=mysql_query($seguridad,$link)or die("Error en Seguridad: ".mysql_error());
if(
mysql_num_rows($certificando)>0){
$alumno="select numero from alumnos where a_nombre='$a_nombre'";
$sigla=mysql_query($alumno,$link)or die("Error en búsqueda de alumno: ".mysql_error());
}else{
echo
"Usuario no Autorizado";

Como ves con este código certifico que el usuario exista, atravez del mysql_fetch_rows, si mysql_fetch_rows es mayor que zero significa que existe, si no me tira el mensaje de usuario no autorizado, si fuera usuario autorizado podrias usar un include que carge el nuevo script.

o sea
Código PHP:
if(mysql_num_rows($certificando)>0){
include: 
xxxxxxx
}else{
echo 
"usuario no autorizado"

creo que esto podria ayudarte aunque no soy un experto(se nota), en todo caso ellos te pueden ayudar mucho más, saludos

  #3 (permalink)  
Antiguo 23/12/2003, 15:37
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
Perdon voy a exponer la pregunta mas clara.

Tengo un php llamado index.php y que tiene esta extructuta:

<form method="POST" action="envio.php">
<p><input type="text" name="numero" <br size="20">
<input type="text" name="texto" <br size="20">
<input type="submit" value="Enviar" name="enviar"></p>
</form>

y un segundo php con este codigo:

<?
include("config.php"); // en config.php tengo los user contraseña y nombre de la base de datos.
$resp = mysql_query("select * from proyecto where usuarios='$_POST[numero]'") or die (mysql_error());
if(mysql_num_rows($resp) != "0") {
echo " el nick existe ";
} else {
$ins = mysql_query("insert into proyecto (usuarios,contrasenas) VALUES ('$_POST[numero]','$_POST[texto]')") or die (mysql_error());
echo "datos insertados";
}
if(!$ins) { echo "No se han podido introducir datos"; }
?>

Los datos escritos en los cuadro de texto sean enviados a envio.php donde envio.php lo que hace es almacenar esos datos en una base de datos.
Esta base de datos tiene una tabla llamada proyecto como veis en el codigo y dos campos llamados usuarios y contrasenas como tambien podeis comprobar.

Con esto conseguimos que los usuarios queden registrados en esa tabla.

Bien ahora a mi me gustaria hacer otro codigo el cual mirara en la base datos en la tabla proyecto y comprobara mediante dos cuadros de texto llamados "user" y "pass" que los datos entroducios en estos cuadros de texto coinciden con algunos de los usuarios de la base de datos. si el codigo comprueba que ese user y esa pass es correcta lo llebaria a la web que queremos proteger.

Gracias rogel por tu codigo pero no lo acabo de comprender, no veo donde esta el user y el pass para la conexion a la base de detos y me he liado se cuales son los campos y los nombres de los cuadros de texto para adaptarlo a mi script.

A ver si me podeis ayudar. salu2
  #4 (permalink)  
Antiguo 23/12/2003, 17:12
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta ok a ver este

Estimado el user y la pass viene de un formulario anterior,po eso no lo ves lo que hice fue imaginar que estos fueron mandados, ahora bien según lo que te entendi cuando tu codigo encuentra en la base de datos que el usuario ya existe lo envia a la pagina protegida verdad?, lo que creo que tendrías que hacer es que cuando encuebtre los datos del usuario en la base de datos hacer un header o se por ejemplo:

Código PHP:
if($certificar=mysql_query($variable,$link)){
header("Location: [url]http://www.php.net[/url]");
}else{
echo 
"Usuario no autorizado";

aqui cuando por la query comprueba que existe te direcciona a la página deseada de lo contrario te da usuario no autorizado, incluso puedes hacer otro header que cuando falle la autentificación te mande a la pagina del formulario de autentificación nuevamente.

Código PHP:
if($certificar=mysql_query($variable,$link)){
header("Location: [url]http://www.php.net[/url]");
}else{
header("Location: [url]http://www.formulario.php[/url]");

una observación el header tiene que ira al principio de una página antes de cualquier código html. espero te sirva

  #5 (permalink)  
Antiguo 24/12/2003, 05:21
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
rogel Muchas gracias pero no lo acabo de entender:

Tendria que hacer un php llamado, panel.php

y dentro de este pondriamos:
<?
if($certificar=mysql_query($variable,$link)){
header("Location: <a href="/out.php?http%3A%2F%2Fwww.php.net" target="_blank">http://www.php.net</a>");
}else{
echo "Usuario no autorizado";
}
?>

Estoy empezando a comprender el codigo, pero le haria falta unos comando con user pass y bd para poder acceder a mi base de datos, despues mediante otro codigo accederia a la tabla "proyecto" y mediante dos cuadros de texto compravaria si es igual a los user que hay en los campos "usuarios" y "contrasenas"

El otro codigo creo que si lo he entendido en cada pagina que quiera proteger meto:
if($certificar=mysql_query($variable,$link)){
header("Location: <a href="/out.php?http%3A%2F%2Fwww.php.net" target="_blank">http://www.php.net</a>");
}else{
header("Location: <a href="/out.php?http%3A%2F%2Fwww.formulario.php" target="_blank">http://www.formulario.php</a>");
}

y asi si inicio session con el anterior script dejaria cargarlo si no mostraria un mensaje de error.

Como ves no se casi nada de php. Gracias de nuevo, a ver si puedes ayudar a alguin como yo

un saludo
  #6 (permalink)  
Antiguo 24/12/2003, 08:13
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
De acuerdo Veamos este

Mira estoy tomando la página que tienes que esta recibiendo la variable numero.


Código PHP:
include("config.php"); // en config.php tengo los user contraseña y nombre de la base de datos.
$resp mysql_query("select * from proyecto where usuarios='$_POST[numero]'") or die (mysql_error()); 
if(
mysql_num_rows($resp) != "0") { 
echo 
" el nick existe ";
/*si  existe el nick creamos en esta misma página el formulario de acceso a la pagina protegida*/
echo"<form name='seguridad' method='post' action='comprobar.php'>";
echo<
table size='75%' border='0' >
<
tr>
<
td>Usuario</td>
<
td><input type='text' name='user'></td>
</
tr>
<
tr>
<
td>Password</td>
<
td><input type='text' name='password'></td>
</
tr>
<
tr>
<
td><input type='submit' name='enviar' value='Ingresar'><td>
<
td><input type='reset' name='borrar' value='Borrar'><td>
</
tr>
</
table>
 </
form>
} else { 
$ins mysql_query("insert into proyecto (usuarios,contrasenas) VALUES ('$_POST[numero]','$_POST[texto]')") or die (mysql_error()); 
echo 
"datos insertados"

if(!
$ins) { echo "No se han podido introducir datos"; } 
Como puedes ver en esta página hacemos tres cosas una comprovamos que el nick existe, si existe abrimos inmediatamente el formulario de ingreso a las paginas protegidas, y por ultimo si no existiera, lo creamos en la tabla, esta claro hasta ay?, ,ok ahora la que recibe los datos enviados por el formulario de acceso a las páginas protegidas.

Código PHP:
$link=mysql_connect("conexion")or die("Error de conexión: ".mysql_error());
mysql_select_db("base de datos")or die("Error en base de datos: ".mysql_error());
/*no se cual son los campos de proyectos voy a suponer que se llaman usuario y contraseña ok */
$string="select * from proyectos where usuario='$_post[usuario]' and contraseña='$_post[password]' ";
if(
$respuesta=mysql_query($string,$link)or die("Error en Query: ".mysql_error())){
header("Location: [url]http://www.php.net[/url]");
}else{
echo
"Usuario no autorizado";

bueno en esta página comprobamos la existencia del usuario y su contraseña y si esta ok lo enviamos a la página protegida, uufff me canse los dedos , ok estimado espero que esta si te sirva porque no esta dificil de entender, ahora te recomiendo que investigues otras maneras de hacer seguridad de páginas siempre es bueno aprender más, en este foro he aprendido mucho ok


Última edición por rogel; 24/12/2003 a las 08:15
  #7 (permalink)  
Antiguo 24/12/2003, 09:11
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
Gracias, esta vez si se va acercando a lo que quiero hacer, un una web llamada index.php con dos cuadros de texto y me mediante post llaman comprobar.php

pero en index.php que es el primer codigo que has hecho me parece que tiene un error aqui:

echo<table size='75%' border='0' >
lo cambie asi: echo"<table size='75%' border='0' >"; pero me seguia dando un error pero esta vez en la linea de abajo a esta.

Si los campos de proyecto se llaman "usuarios" y "contrasenas"

Pero no entiendo una cosa el codigo que has hecho dices que te has basado en el codigo que yo tenia, el que enviaba los datos de los cuadros de texto a los campos usuaios y contrasenas, lo que has hecho es un codigo el cual comprueba que los datos introducidos en dos cuadros de texto coinciden con los que hay en dichos campos y si coinciden mediante el otro codigo lo envia a la pagina protegida.

Es como se tan poco de php me lio mucho

un saludo
  #8 (permalink)  
Antiguo 24/12/2003, 15:57
 
Fecha de Ingreso: noviembre-2003
Mensajes: 157
Antigüedad: 14 años, 1 mes
Puntos: 0
Error

Tienes razon provoca un error la falta de comillas las comillas deben ir desde echo" hasta cuando se cierra el form </form>";
hay ya no te provocara errores.

mira en el faq del foro debe haber algo que te sirva o busca en internet algún articulo o manual lo que te puse si lo lees y lo entiendes creo que te sirvira de todas maneras si usas msn el mio es [email protected], no me envies mail porque no los leo ubicame en el msn.

  #9 (permalink)  
Antiguo 24/12/2003, 17:24
 
Fecha de Ingreso: febrero-2003
Mensajes: 753
Antigüedad: 14 años, 10 meses
Puntos: 2
Estupendo le pongo las comillas y te cuento por msn
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 13:21.