Foros del Web » Programando para Internet » PHP »

problemas con login

Estas en el tema de problemas con login en el foro de PHP en Foros del Web. hola hise un pequeño sistema de login pero tengo un problema en la pagina donde se ingresan los datos. la pagina que yo hise tiene ...
  #1 (permalink)  
Antiguo 24/08/2009, 07:44
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 15 años
Puntos: 5
problemas con login

hola hise un pequeño sistema de login pero tengo un problema en la pagina donde se ingresan los datos.
la pagina que yo hise tiene el form que es enviado a la misma pagina que tiene un codigo php.
el sistema funsiona pero el error que me pasa es el siguiente:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\authmain.php on line 14

el codigo de la pagina donde esta este error es el siguiente:

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

if (
$userid && $password)
{
    
//si el usuario a inentado hacer logi

    
$db_conn mysql_connect("localhost","usuario","password");
    
mysql_select_db("login"$db_conn);
    
$query "select* from login"
            
."where name='$userid' "
            
."and pass = password('pasword')";
    
$result mysql_query($query,$db_conn);
    if (
mysql_num_rows($result) >0)
    {
        
//si estan en la base de datos registra el id del usuario
        
$valid_user $userid;
        
session_register("valid_user");
    }
}
?>
<html>
<body>
<h1>pagina de inicio</h1>
<?

if (session_is_registered("valid_user"))
{
    echo 
"ahora estas loged in como: $valid_user <br>";
    echo 
"<a href=\"logout.php\">log out</a><br>";
}
else
{
    if(isset(
$userid))
    {
        
//si han inentado hacer login y han fallado
        
echo"no has podido hacer login";
    }
    else
    {
        
//si no han intentado hacer login o han echo log out
        
echo "ahora estas loged out";
    }
    
//provee el formulario para hacer login
    
echo "<form method=post action=\"authmain.php\">";
    echo 
"<table>";
    echo 
"<tr><td>Userid</td>";
    echo 
"<td><input type=text name=userid></td></tr>";
    echo 
"<tr><td>Contraseña</td>";
    echo 
"<td><input type=password name=password></td></tr>";
    echo 
"<tr><td colspan=2 aling=center>";
    echo 
"<input type=submit value=\"log in\"></td></tr>";
    echo 
"</table></form>";
}
?>
<br>
<a href="member_only.php">seccion de miembros</a>
<body>
<html>
el error esta mas presisamente creo que en esta parte:
Código PHP:
{
    
//si el usuario a inentado hacer logi

    
$db_conn mysql_connect("localhost","usuario","password");
    
mysql_select_db("login"$db_conn);
    
$query "select* from login"
            
."where name='$userid' "
            
."and pass = password('pasword')";
    
$result mysql_query($query,$db_conn);
    if (
mysql_num_rows($result) >0)
    {
        
//si estan en la base de datos registra el id del usuario
        
$valid_user $userid;
        
session_register("valid_user");
    } 
alguien me puede decir en que estoy fallando??
  #2 (permalink)  
Antiguo 24/08/2009, 07:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problemas con login

Fijate como hiciste el query, que no se porque lo quieres hacer así ya que puedes darle enter sin necesidad de concatenar al usar string. Pero mira lo que hiciste

Código PHP:
Ver original
  1. $query = "select* from login"
  2.             ."where name='$userid' "
  3.             ."and pass = password('pasword')";

Cuando el sistema concatena hace en tu caso esto

Código PHP:
Ver original
  1. $query = "select* from loginwhere name='$userid' and pass = password('pasword')";

Verifica donde no hay espacio y vas a ver. Acuerdate que concatenar une y si no hay espacio une las palabras a pesar de que las separaste en dos lineas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 24/08/2009, 07:56
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 9 meses
Puntos: 13
Respuesta: problemas con login

yo te recomiendo que lo hagas en paginas separadas

onda que tengas el inicio.php donde haces el ingreso de datos y despues abras index.php donde das la bienvenida al usuario logeado
  #4 (permalink)  
Antiguo 24/08/2009, 08:17
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Respuesta: problemas con login

Busca en el foro mis temas porque yo estaba haciendo uno parecido y me salía algo parecido a lo tuyo. De todos modos te pongo el código que sí me funciona. Lo de la veriable de sesión es lo que me da problemas ahora, pero quita eso y ya está.

Código:
<html>
<?php
$lognick=$_POST['usuario'];
$logpass=$_POST['contrasena'];
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$result = mysql_query ("select count(*) FROM autores WHERE nick='".$lognick."' AND contraseña='".$logpass."'"); 
$login=mysql_result($result,0);
if (!$login){
    die ("login incorrecto");
    }
else{
    echo "login correcto<br>";
    $_SESSION["login"]=1;
   
}
?>

<li> <a href = "forminsertimage.php"> Añadir imagen </a></li>
<li> <a href = "buscatipo.php"> Buscar imagen por tipos </a></li>
<li><a href = "buscaclave.php"> Bucar imagen por palabra clave </a></li>
<li><a href = "buscaautor.php"> Bucar imagen por autor</a></li>
<li><a href = "buscafecha.php"> Bucar imagen por fecha </a></li>
<li><a href = "buscaavanzada.php"> Búsqueda avanzada </a></li>
</html>
Sigo sin entender el sentido de poner '".$lognick."' y no simplemente '$lognick', pero bueno, el caso es que este código sí funciona.
  #5 (permalink)  
Antiguo 24/08/2009, 08:27
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 15 años
Puntos: 5
Respuesta: problemas con login

si perfect eso anduvo de 10 el problema estaba en los string anda perfect el problema ahora es que aunque me logee bien o con un nombre falso me lleva a la parte del codigo que dice.

if(isset($userid))
{
//si han inentado hacer login y han fallado
echo"no has podido hacer login";
no se porque no reconose el usuario???
  #6 (permalink)  
Antiguo 24/08/2009, 08:29
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 15 años
Puntos: 5
Respuesta: problemas con login

el problema tiene que estar en session_register($valid_user) supongo ya que no inicia session pero no se bien cual es. ahora voy a probar tu codigo Paco Ruis y te aviso que onda
  #7 (permalink)  
Antiguo 24/08/2009, 08:54
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 15 años
Puntos: 5
Respuesta: problemas con login

ok ahora lo hise andar era cuestion de ponerse a ver bien los string y verificar todas las variables no habia escrito todo del todo bien ahora les paso este pequeño sistema de login que le puede servir a cualquiera de base esta bueno es comprensible y compacto y funciona
lo que no hise pero que es facil de hacer es para registrarse en el sistema yo me meti a mysql y cree un usuario desde ahi.
la base de datos consta de :
nombre de la base de datos: login
nombre de la tabla: user
campos: 2 (name, pass,) obviamente estos datos son totalmente configurables a gusto de cada uno.
el primer archivo es el login.
lo llame authmain.php
Código PHP:
<?php
session_start
();

if (
$userid && $password)
{
    
//si el usuario a inentado hacer logi

    
$db_conn mysql_connect("localhost","root","laouen");
    
mysql_select_db("login"$db_conn);
    
$query "select* from user "
            
."where name='$userid' "
            
."and pass = '$password'";
    
$result mysql_query($query,$db_conn);
    if (
mysql_num_rows($result) >0)
    {
        
//si estan en la base de datos registra el id del usuario
        
$valid_user $userid;
        
session_register("valid_user");
    }
}
?>
<html>
<body>
<h1>pagina de inicio</h1>
<?

if (session_is_registered("valid_user"))
{
    echo 
"ahora estas loged in como: $valid_user <br>";
    echo 
"<a href=\"logout.php\">log out</a><br>";
}
else
{
    if(isset(
$userid))
    {
        
//si han inentado hacer login y han fallado
        
echo"no has podido hacer login";
    }
    else
    {
        
//si no han intentado hacer login o han echo log out
        
echo "ahora estas loged out";
    }
    
//provee el formulario para hacer login
    
echo "<form method=post action=\"authmain.php\">";
    echo 
"<table>";
    echo 
"<tr><td>Userid</td>";
    echo 
"<td><input type=text name=userid></td></tr>";
    echo 
"<tr><td>Contraseña</td>";
    echo 
"<td><input type=password name=password></td></tr>";
    echo 
"<tr><td colspan=2 aling=center>";
    echo 
"<input type=submit value=\"log in\"></td></tr>";
    echo 
"</table></form>";
}
?>
<br>
<a href="member_only.php">seccion de miembros</a>
<body>
<html>
el segundo es la pagina de miembros restringidos a la que entras logeado.
se llama
member_only
Código PHP:
<?php
session_start
();
echo 
"<h1>solo miembros</h1>";

//comprobar variables de session
if (session_is_registered("valid_user"))
{
    echo 
"<p>estas loggeado como $valid_user.</p>";
    echo 
"<p>el contenido solo para miembros va qui</p>";
}
else
{
    echo 
"<p>no estas logged in.</p>";
    echo 
"<p>solo los miembros loggeados pueden ver esta pagina.</p>";
}

echo 
"<a href=\"authmain.php\">volver a la pagina principal</a>";
?>
el tercero es para el logout:
logout:
Código PHP:
<?php
session_start
();
$old_user $valid_user//almacenado para comprobar si ellos estuvieron loggin
$result session_unregister("valid_user");
session_destroy();
?>
<html>
<body>
<h1>log uot</h1>
<?
if(!empty($old_user))
{
    if (
$result)
    {
        
//si estuvieron logged in y no estan logged out
        
echo "loged out.<br>";
    }
    else
    {
        
//estan loged in y no pueden loged out
        
echo "no se pudo log out";
    }
}
else
{
    
//si ellos no estaban loged in y llegan a esta pagina de algun modo
    
echo"no estas log in, por lo tanto no puedes hacer log out.<br>";
}
?>
<a href="authmain.php">volver a la pagina principal</a>
<body>
<html>
bueno aca les dejo esto me parese que es un buen ejemplo para fijarse como funciona el sistema y en base a este hacer uno mas complicado, este ejemplo es el que tome de un curso de php-mysql que estoy tomando muy bueno es totalmente gratis de videotutoriales.com los descargas y te enseña todo de todo salis sabiendo php y mysql si o si
  #8 (permalink)  
Antiguo 24/08/2009, 09:03
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 15 años
Puntos: 5
Respuesta: problemas con login

muchas gracias por ayudarme ahi probe tu sistema Paco Ruis esta bueno tambien es muy entendible.( la parte de los link supongo deve ser algo de tu sitio) pero el sistema en si es consiso bastante paresido al mio yo en el mio me olvide de desirles que hise cambios en el php.ini para no tener que usar "$HTTP_SESSION_POST["valid_user"]" si no que coloco solo "$variable" esto es en las variables de session como "valid_user" si no les anda lo unico que hacen es cambiar el "valid_user" por $HTTP_SESSION_POST["valid_user"] muchisimas gracias y espero que tambien les sirva a los demas....
  #9 (permalink)  
Antiguo 24/08/2009, 09:04
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 15 años
Puntos: 5
Respuesta: problemas con login

lo califico asi espero que sea lo correcto
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:40.