Bueno tuve muchos dolores de cabeza tratando de hacer un simple login con php a conexión a postgres hoy les comparto este pequeño tutorial para que no sufran tanto como me paso a mi
primero que todo creamos un archivo llamado login.php aqui va a tener solo la vista al formulario de entrada, osea el tipico usuario, clave y aceptar.
<form action="validar_usuario.php" method="post">
Usuario:<input type="text" name="usuario" size="20" maxlength="20" />
<br />
Password:<input type="password" name="password" size="10" maxlength="10" />
<br />
<input type="submit" value="Ingresar" />
</form>
Muy importante el nombre del input tiene que ser igual en todo los demas archivos que vamos a crear ya que si los declaramos en forma distinta va a darnos problemas.
Luego de haber hecho nuestro archivo vamos a crear uno mas que sera nuestro salir de la aplicacion llamado logout.php
<?php
session_start();
//Matamos la sesion
session_destroy();
echo 'Ha terminado la session <p><a href="index.php">index</a></p>';
?>
<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>
Ya tenemos nuestra pantalla de entrada y el archivo que mata la conexión ahora vamos a crear el archivo de bienvenida aquí pueden poner cualquier archivo que redirecciones cuando es correcto el login, yo les dejo este ustedes pueden cambiar por cualquier otro a este señor lo vamos a llamar index.php
<?php
session_start();
?>
<?php
echo 'Bienvenido, ';
if (isset($_SESSION['k_username'])) {
echo '<b>'.$_SESSION['k_username'].'</b>.';
echo '<p><a href="logout.php">Logout</a></p>';
}else{
echo '<p><a href="login.php">Login</a></p>';
}
?>
Ahora vamos con el archivo mas largo y el mas importante que es el validar_usuario.php aqui validamos que el usuario y su clave que esta en base de dato sea igual al que esta suministrando la persona que quiere loguearse en nuestra aplicacion.
<?php
//AQUI CONECTAMOS A LA BASE DE DATOS DE POSTGRES
$conex = "host=localhost port=5432 dbname=BASEDATOS user=USUARIO password=CLAVE";
$cnx = pg_connect($conex) or die ("<h1>Error de conexion.</h1> ". pg_last_error());
session_start();
function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
if(trim($_POST["usuario"]) != "" && trim($_POST["password"]) != "")
{
// Puedes utilizar la funcion para eliminar algun caracter en especifico
//$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
//$password = $HTTP_POST_VARS["password"];
// o puedes convertir los a su entidad HTML aplicable con htmlentities
$usuario = strtolower(htmlentities($_POST["usuario"], ENT_QUOTES));
$password = $_POST["password"];
$result = pg_query('SELECT password, usuario FROM usu_login WHERE usuario=\''.$usuario.'\'');
if($row = pg_fetch_array($result)){
if($row["password"] == $password){
$_SESSION["k_username"] = $row['usuario'];
echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
echo '<a href="index.php">Index</a></p>';
//Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
/*Ingreso exitoso, ahora sera dirigido a la pagina principal.
<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>*/
}else{
echo 'Password incorrecto';
}
}else{
echo 'Usuario no existente en la base de datos';
}
pg_free_result($result);
}else{
echo 'Debe especificar un usuario y password';
}
pg_close();
?>
En la primera linea cambiamos los parámetros de su base de datos usuario y clave ya que el el puerto siempre es el mismo 5432, este ejemplo es muy basico pueden cambiarlo y mejorarlo a su antojo se los dejo porque en Google encontre solo error de conexion hasta que lo logre hacer y se los comparto =)
la proxima pon la base d datos, porq igual me da errores
ResponderEliminarExcelente amigo! Me vino perfecto!
ResponderEliminarMe funcionó de diez! Gracias por compartir!
ResponderEliminarLo correcto seria :
ResponderEliminar// definimos $row como array resultado de la consulta
$row = pg_fetch_array($result);
//luego preguntamos si existe $row hacer lo que esta dentro del if
if(!$row){ .....
hola, me sale error en esta linea
ResponderEliminarif(trim($_POST["login"])....
y la verdad no conecta, me dice Debe especificar un usuario y ....
Ayuda!
hola me da error Password incorrecto, se supone que me conecta verdad.... ahora ya busqe y no puedo areglarlo .... alguien me puede ayudar..
ResponderEliminarbueno ya encontré el error y gracias por el aporte del scritp jean castillo .. muy bueno me ha servido de mucho.
ResponderEliminarexcelente, pero como lo arreglo? no ve que asi es como crece el conocimiento.
Eliminarme como solucionestes el problema
EliminarComo pudiste resolver el problema de password incorrecto?
Eliminarcomo resolviste el problema del password wilmer melchor?
Eliminartienes que agregarle trim a $row["password"], ya que devuelve un caracter mas en blanco al final
EliminarAyuda Me dice Passwor incorrecto por q si se q esta asi en la base de datos
ResponderEliminartienes que agregarle trim a $row["password"], ya que devuelve un caracter mas en blanco al final
Eliminargracias!!!
ResponderEliminarGracias :D
ResponderEliminargracias amiguisimo
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarGracias, me ayudó muchísimo
ResponderEliminarGracias amigo me sirvio muchisimo
ResponderEliminarexcelente aporte amigo
ResponderEliminarMuchas gracias por tu trabajo!!
ResponderEliminar