Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/07/2012, 12:40
Avatar de Javier01
Javier01
 
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 261
Antigüedad: 16 años, 9 meses
Puntos: 31
Respuesta: necesito me ayuden aorregir codigo para iniciar sesion en php

Buenas tardes,
Primero que nada, no son 2 clases, son simplemente 2 archivos.
Segundo, el sistema de ingreso esta mal hecho; te paso los problemas que tiene:

A-
El codigo de abajo hace, que desde la primera vez que se cargue la pagina, se busque el usuario,
el cual aun no fue ingresado en los campos del formulario.
Código PHP:
//Consultar si los datos son están guardados en la base de datos
$consulta"SELECT * FROM users WHERE nick='".$usuario."' AND pass='".$contrasena."'"
$resultadomysql_query($consulta,$conex) or die (mysql_error());
$fila=mysql_fetch_array($resultado); 
Tendrias que poner una condicion del tipo "si los campos se ingresaron, entonces buscar el usuario"
algo como esto:
Código PHP:
if(isset($usuario) && isset($contrasena) && $usuario != '' && $contrasena !=''){
//Consultar si los datos son están guardados en la base de datos
$consulta"SELECT * FROM users WHERE nick='".$usuario."' AND pass='".$contrasena."'"
$resultadomysql_query($consulta,$conex) or die (mysql_error());
$fila=mysql_fetch_array($resultado);

if(!isset(
$_SESSION['nick'])){
if (!
$fila[0]) //opcion1: Si el usuario NO existe o los datos son INCORRRECTOS
{
    echo 
'<script language = javascript>
    alert("Usuario o Password errados, por favor verifique.")
    self.location = "index1.php"
    </script>'
;//header('Location: '.$_SERVER['HTTP_REFERER']);
}
else 
//opcion2: Usuario logueado correctamente
{
    
//Definimos las variables de sesión y redirigimos a la página de usuario
    
$_SESSION['id'] = $fila['id'];
    
$_SESSION['nick'] = $fila['nick'];
    
$_SESSION['apellido_p'] = $fila['apellido_p'];
    
$_SESSION['nombre'] = $fila['nombre'];

echo 
'<script language = javascript>
    alert("Usuario o Password errados, por favor verifique.")
    self.location = "$_SERVER["HTTP_REFERER"]"
    </script>'
;//header('Location: '.$_SERVER['HTTP_REFERER']);
}} 

Lo que hice fue encerrar el codigo que verifica el usuario en la condicion
Código PHP:
if(isset($usuario) && isset($contrasena) && $usuario != '' && $contrasena !=''){} 
B-
El código de la consulta SQL esta mal formulada. De la forma que la tienes planteada
te ingresarán con sql injeccion.
Tienes que hacer la consulta del usuario y la contraseña por separado.
Preguntas si existe el usuario, en caso de que exista, tienes que preguntar si tiene la
contraseña ingresada.

C-
Las variables que van a ser pasadas a consultas de sql deben ir filtradas con funciones como
Código PHP:
addcslashes(mysql_real_escape_string($usuario),'%_')); 
De esta forma evitas tambien los sql injection

D-
Para unir los 2 archivos puedes hacer lo siguiente:
- en el form del primer archivo agregar un boton de salir
Código HTML:
Ver original
  1. <form action="form.php" method="POST" class="miform">
  2. Login: <input type="text" size="15" name="usuario"><br>
  3. Password: <input type="password" size="15" name="contrasena"><br><br>
  4. <input type="submit" value="Entrar" class="boton" name="bo">
  5. <input type="submit" value="salir" class="boton" name="salir" id="salir">
  6. </form>


- Luego preguntaremos por ese boton para ejecutar el codigo que borra la sesion:
Código PHP:
if(isset($_POST['salir']) && $_POST['salir'] != ''){
    if (
$_SESSION['id'])
    {    
        
session_destroy();
        echo 
'<script language = javascript>
        alert("su sesion ha terminado correctamente")
        self.location = "for1.php" // Aca es donde redirige la pagina. Borrar si no quieres que redirija.
        </script>'
;}
    else
    {
        echo 
'<script language = javascript>
        alert("No ha iniciado ninguna sesión, por favor regístrese")
        self.location = "form1.php" // Aca es donde redirige la pagina. Borrar si no quieres que redirija.
        </script>'
;} 

E-
Los lugares donde se redirigen las paginas son 3 y dicen:
Código:
 self.location = "$_SERVER["HTTP_REFERER"]"
Código:
self.location = "form1.php"
(este ultimo esta dos veces)
Borrarlos si no quieres redirigir.

Bueno suerte y si usas otro formulario de ingreso, asegúrate de que contemple
las cosas que te mencione


Saludos!
__________________
Tomarse un tiempo para redactar correctamente la pregunta, utilizando los signos de puntuación adecuados, es ganar tiempo y calidad en la respuesta.