PHP - error en sistema de login

 
Vista:
Imágen de perfil de Jurgens

error en sistema de login

Publicado por Jurgens (9 intervenciones) el 15/12/2015 16:34:27
Hola, nuevamente vengo con problemas, espero me puedan ayudar, porque no se en que van los errores en el sistema de login que estoy usando.

los errores que me arroja son
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/planamay/public_html/analisis/login/login_ini.php on line 16
y
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/planamay/public_html/analisis/login/login_ini.php on line 18

El código es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
session_start();
function Conectarse()
{
	$conect=mysqli_connect("localhost","planamay_sqluser","d3t3ct1v3", "planamay_analisis");
	if(!$conect)
	{
		exit("Error conectando a la base de datos.");
	}
	// devolvemos la variable!!
	return $conect;
}
//require_once("../includes/conexion.php");
$conect = Conectarse();
function verificar_login($user,$password,&$result) {
    $rec = mysqli_query($conect,"SELECT * FROM usuarios WHERE username LIKE '%$user%' and clave = '%$password%'");
    $count = 0;
    while($row = mysql_fetch_object($rec))
    {
        $count++;
        $result = $row;
    }
 
    if($count == 1)
    {
        return 1;
    }
 
    else
    {
        return 0;
    }
}
if(!isset($_SESSION['userid']))
{
    if(isset($_POST['login']))
    {
        if(verificar_login($_POST['user'],$_POST['password'],$result) == 1)
        {
            $_SESSION['userid'] = $result->idusuario;
            header("location: ../busqueda/busqueda.php");
        }
        else
        {
            echo '<div class="error">Su usuario es incorrecto, intente nuevamente.</div>';
        }
    }
?>
 
<style type="text/css">
*{
	font-size: 14px;
}
form.login {
    background: none repeat scroll 0 0 #F1F1F1;
    border: 1px solid #DDDDDD;
    font-family: sans-serif;
    margin: 0 auto;
    padding: 20px;
    width: 278px;
}
form.login div {
    margin-bottom: 15px;
    overflow: hidden;
}
form.login div label {
    display: block;
    float: left;
    line-height: 25px;
}
form.login div input[type="text"], form.login div input[type="password"] {
    border: 1px solid #DCDCDC;
    float: right;
    padding: 4px;
}
form.login div input[type="submit"] {
    background: none repeat scroll 0 0 #DEDEDE;
    border: 1px solid #C6C6C6;
    float: right;
    font-weight: bold;
    padding: 4px 20px;
}
.error{
    color: red;
    font-weight: bold;
    margin: 10px;
    text-align: center;
}
</style>
 
<form action="" method="post" class="login">
	<div><label>Username</label><input name="user" type="text" ></div>
	<div><label>Password</label><input name="password" type="password"></div>
	<div><input name="login" type="submit" value="login"></div>
</form>
<?php
} else {
	echo 'Su usuario ingreso correctamente.';
	echo '<a href="logout.php">Logout</a>';
}
?>

Me da la impresión que tiene que ver con las llamadas consecutivas la base de datos, pero no se solucionarlo.

Saludos cordiales y muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

error en sistema de login

Publicado por Antuan Araneda (2 intervenciones) el 15/12/2015 20:02:00
Hola, tu problema creo que va con la variable de conexión. Y esto esta ligado con el concepto de ámbito de las variables.

acá un link que te puede ayudar acalar lo que te menciono: http://php.net/manual/es/language.variables.scope.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$conect = Conectarse(); // ámbito global
 
function verificar_login($user,$password,&$result) {
 
/*
Tu variable $conect dentro de la función para a ser  una variable local, por lo que esta vacía, es decir, 
no asume el valor de conexión que declaras fuera de la función. Para poder acceder a la variable debes utilizar la palabra global dentro de la función
Asi:
*/
 
global $conect; // con esto esta variable conoce su valor asignado fuera del ámbito de la función.
 
 $rec = mysqli_query($conect,"SELECT * FROM usuarios WHERE username LIKE '%$user%' and clave = '%$password%'");
....
}

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de jurgens

error en sistema de login

Publicado por jurgens (9 intervenciones) el 15/12/2015 21:20:29
funcionó lo de la variable global, pero luego me quedaba el error en la ahora linea 19:
while($row = mysql_fetch_object($rec))

el cual corregí al cambiar mysql_fetch_object por mysqli_fetch_object

muchas gracias nuevamente!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar