好吧,这次我试图验证尝试登录系统的用户类型。关键是我使用AJAX将值从输入发送到PHP文件而不是验证这些值。我希望从该PHP文件获得一个可能是id_type_user
的值(如果登录值成功)或者#34; 0" (如果登录值错误)或100(如果出现SESSION
var的任何类型的错误),而不是获得这3个值中的一个。我将HTML内容作为服务器的响应,因此我不知道如何过滤。我只做回声,这是我唯一需要的东西。
以下是我index.php
的JavaScript函数:
$(document).ready(function(){
$('#boton-entrar').click(function(e){
if ( $('#nombreUsuario').val() != "" && $('#contrasenaUsuario').val() != "" ){
$.ajax({
type: 'POST',
url: 'php/login.ajax.php',
dataType: 'text',
data: 'nombreUsuario=' + $('#nombreUsuario').val().trim() + '&contrasenaUsuario=' + $('#contrasenaUsuario').val().trim(),
success: function(msj){
switch (msj) {
case "0":
alert("Usuario o Contraseña Invalida, verifique e intente nuevamente");
$(".form-horizontal").reset();
break;
case "1":
$("#wrapper").load("adminIndex.php");
break;
case "2":
$("#wrapper").load("medicoIndex.php");
break;
case "3":
$("#wrapper").load("pacienteIndex.php");
break;
case "100":
alert("Error de Session, Ya se encuentra una sesion Activa");
break;
default:
alert(msj);
}
},
error:function(){
alert("Error al intentar logear");
}
});
}else{
alert("Debe llenar los campos para poder ingresar");
}
e.preventDefault();
});
});
这是PHP文件的代码,我通过AJAX(login.ajax.php
)发送数据:
<?php
include("conexion.php");
session_start();
// No hay sesión aún
if( !isset($_SESSION['NombreDeUsuario']) && !isset($_SESSION['CedulaDeUsuario']) ){
//md5(md5($_POST['login_userpass'])); INVESTIGAR
$query = "SELECT nombre_usuario,nombre,apellido,cedula,fk_tipologia_de_usuario,ultima_fecha_ingreso FROM usuarios,personas WHERE usuarios.nombre_usuario = '".$_POST['nombreUsuario']."' AND usuarios.clave_usuario = '".$_POST['contrasenaUsuario']."' AND personas.fk_usuario = usuarios.nombre_usuario ";
$consulta = pg_query($query);
//MEJORAR
$contador = 0;
$resultado;
while($row = pg_fetch_array($consulta)){
$contador++;
$resultado = $row;
}
//
if($contador == 1){
$_SESSION['NombreDeUsuario'] = $resultado['nombre_usuario'];
$_SESSION['NombrePersona'] = $resultado['nombre'];
$_SESSION['NombrePersona'] .= " ".$resultado['apellido'];
$_SESSION['CedulaDeUsuario'] = $resultado['cedula'];
$_SESSION['tipo_usuario_sesion'] = $resultado['fk_tipologia_de_usuario'];
$_SESSION['ultima_fecha_ingreso'] = $resultado['ultima_fecha_ingreso'];
pg_query("UPDATE usuarios SET(ultima_fecha_ingreso='NOW()')");
echo $resultado['fk_tipologia_de_usuario'];
}
else{
echo 0;
}
}else{
echo 100;
} ?>
这是我从服务器回来的消息
CONEXION EXITOSA<br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: pg_query() [<a href='function.pg-query'>function.pg-query</a>]: No PostgreSQL link opened yet in C:\wamp\www\GestionCitas\php\login.ajax.php on line <i>12</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0174</td><td bgcolor='#eeeeec' align='right'>374936</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp\www\GestionCitas\php\login.ajax.php' bgcolor='#eeeeec'>..\login.ajax.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0386</td><td bgcolor='#eeeeec' align='right'>384672</td><td bgcolor='#eeeeec'><a href='http://www.php.net/pg_query' target='_new'>pg_query</a>
( )</td><td title='C:\wamp\www\GestionCitas\php\login.ajax.php' bgcolor='#eeeeec'>..\login.ajax.php<b>:</b>12</td></tr>
</table></font>
<br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\GestionCitas\php\login.ajax.php on line <i>17</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0174</td><td bgcolor='#eeeeec' align='right'>374936</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp\www\GestionCitas\php\login.ajax.php' bgcolor='#eeeeec'>..\login.ajax.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0390</td><td bgcolor='#eeeeec' align='right'>385040</td><td bgcolor='#eeeeec'><a href='http://www.php.net/pg_fetch_array' target='_new'>pg_fetch_array</a>
( )</td><td title='C:\wamp\www\GestionCitas\php\login.ajax.php' bgcolor='#eeeeec'>..\login.ajax.php<b>:</b>17</td></tr>
</table></font>
0
我现在已经知道来自哪里,最后是0
,这就是我想要抓住的价值。
先谢谢你
答案 0 :(得分:1)
正如所写:
警告:pg_fetch_array()要求参数1为资源,布尔值在第17行的C:\ wamp \ www \ GestionCitas \ php \ login.ajax.php中给出
这表示错误发生在第17行,并且您没有正确获取 pg_query($ query)返回的数据。
在调用 pg_fetch_array()函数之前,您必须检查 $ consulta 变量。见documentation。该函数仅接受资源(无布尔值)作为参数1。
如果返回0,则返回0,否则仅获取找到的行并使用会话处理所有内容。