Foros del Web » Programando para Internet » PHP »

necesito me ayuden aorregir codigo para iniciar sesion en php

Estas en el tema de necesito me ayuden aorregir codigo para iniciar sesion en php en el foro de PHP en Foros del Web. hola buenos dias necesito ayuda con el inicio de sesion de mi pagina quiero q cuando inicien sesion permanescan en la misma pagina el codigo ...
  #1 (permalink)  
Antiguo 13/07/2012, 11:30
 
Fecha de Ingreso: julio-2011
Ubicación: cucuta
Mensajes: 26
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta necesito me ayuden aorregir codigo para iniciar sesion en php

hola buenos dias necesito ayuda con el inicio de sesion de mi pagina
quiero q cuando inicien sesion permanescan en la misma pagina el codigo q tengo es el siguiente:


Código PHP:
<?php 

function ingreso_usuario(){

    
session_start();
    if(!isset(
$_SESSION["nick"])){
?>
<form action="form.php" method="POST" class="miform">
Login: <input type="text" size="15" name="usuario"><br>
Password: <input type="password" size="15" name="contrasena"><br><br>
<input type="submit" value="Entrar" class="boton" name="bo">
</form>
                        
<?php
    
    
}else{
        
$usuario=$_SESSION['nick'];
        if(
$usuario=='admin'){
            echo 
"Bienvenido, ";
            echo 
"<strong>".$_SESSION["nick"]."</strong> ";
            echo 
"<table>
                    <tr>
                        <td>
                            <a href='Modulos_Administrativos/admin/panel.html'><img src='imagenes/panel.png' width='47' height='45'title='Panel de Control'/></a>
                        <td>
                    </tr>
                    <tr>
                        <td>
                            <a href='#l'>Panel de control</a>
                        <td>
                    </tr>
                    <tr>
                        <td>
                            <a href='desconectar_usuario.php'><img src='imagenes/salir.gif' width='47' height='45' title='Salir'/></a>
                        <td>
                    </tr>
                    <tr>
                        <td>
                            <a href='desconectar_usuario.php'>Salir</a>
                        <td>
                    </tr>
                </table>"
;
                                                        
        }else{
            echo 
"Bienvenido, ";
            echo 
"<strong>".$_SESSION["nick"]."</strong> ";
            echo 
"<br>Para cerrar la sesión, pulsa: <a href='desconectar.php'>Aqui</a>";
        }
                                                        
                                                        
    }
}

ingreso_usuario();


//Proceso de conexión con la base de datos
$conex mysql_connect("localhost""root""")
        or die(
"No se pudo realizar la conexion");
    
mysql_select_db("red",$conex)
        or die(
"ERROR con la base de datos");

//Inicio de variables de sesión
if (!isset($_SESSION)) {
  
session_start();
}

//Recibir los datos ingresados en el formulario
$usuario$_POST['usuario'];
$contrasena$_POST['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']);
}}

    

?>



el codigo desconectar.php es este

Código PHP:
<?php 
session_start
();

if (
$_SESSION['id'])
{    
    
session_destroy();
    echo 
'<script language = javascript>
    alert("su sesion ha terminado correctamente")
    self.location = "for1.php"
    </script>'
;}
else
{
    echo 
'<script language = javascript>
    alert("No ha iniciado ninguna sesión, por favor regístrese")
    self.location = "form1.php"
    </script>'
;}
?>

me podrian ayudar aque estas dos clases me queden en una sola ademas nose porq cuanod ingrso con un usuario q no existe toma e inicia sesion con el usuario con el q ingrese la ultima vez lo mismo q cuando ingreso con campos vacios gracias por su ayuda
  #2 (permalink)  
Antiguo 13/07/2012, 12:40
Avatar de Javier01  
Fecha de Ingreso: febrero-2008
Ubicación: Montevideo
Mensajes: 261
Antigüedad: 16 años, 2 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.

Etiquetas: formulario, html, mysql, sql, variables, usuarios
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 23:32.