0

我有一个问题,我有一个用 PHP 设计的表单登录,在 Ajax 中验证,表单登录工作得很好,但是我需要为用户类型(管理员、用户)添加一个验证,并且我已经修改了我的代码,如下所示:

$.ajax({
    type: 'POST',
    url: 'log.inout.ajax.php',
    data: 'login_username=' + $('#login_username').val() + '&login_userpass=' + $('#login_userpass').val(),

    success:function(msj){
        if ( msj == 1 ){
            $('#alertBoxes').html('<div class="box-success"></div>');
            $('.box-success').hide(0).html('Validacion Completa, Bienvenido al Sistema');
            $('.box-success').slideDown(timeSlide);
            setTimeout(function($tipo){
            if ($tipo=='ADMIN'){
                window.location.href = "../Main2/Index.php";
                }else{
                window.location.href = "../Main1/Index.php";
                }
            },(timeSlide + 500));
        }
        else{
            $('#alertBoxes').html('<div class="box-error"></div>');
            $('.box-error').hide(0).html('Datos Incorrectos, No Tiene Acceso al Sistema ');
            $('.box-error').slideDown(timeSlide);
        }
        $('#timer').fadeOut(300);
    },
    error:function(){
        $('#timer').fadeOut(300);
        $('#alertBoxes').html('<div class="box-error"></div>');
        $('.box-error').hide(0).html('Ha ocurrido un error durante la ejecución');
        $('.box-error').slideDown(timeSlide);
    }
});

问题是变量“$type”没有验证 AJAX,所以我需要你的帮助来解决这个问题

这是表单的验证文件:

<?php
session_start();
$user = $_POST['login_username'];
$pwd = $_POST['login_userpass'];

if ( !isset($_SESSION['username']) && !isset($_SESSION['userid']) ){
    if ( $idcnx = mssql_connect('(local)','sa','.') ){
        if ( mssql_select_db('DB_Demo',$idcnx) ){

            $sql = "SELECT [USER],PASSWD,NOMBRE,APELLIDOP,TIPO FROM T_LOGIN WHERE [USER] ='$user' AND PASSWD ='$pwd'";

            if ( $res = mssql_query($sql) ){
                if ( mssql_num_rows($res) == 1 ){

                    $user = mssql_fetch_array($res);
                    $_SESSION['userid'] = $user[0];
                    $_SESSION['username'] = $user[1];
                    $_SESSION['unombre'] = $user[2];
                    $_SESSION['uapellido'] = $user[3];
                    $_SESSION['utipo'] = $user[4];
                    $tipo = $_SESSION['utipo'];

                    $_SESSION['autentificado']= 'SI'; 
                    $_SESSION['ultimoAcceso']= date('Y-n-j H:i:s'); 

                    echo 1;
                }else{
                    echo 0;
                    }
            }
            else{
                echo 0;
                }
        }
        mssql_close($idcnx);
    }
    else{
        echo 0;
        }
}
else{
    echo 0;
}
?>

谢谢...

4

2 回答 2

0

您正在尝试将 php 变量发送回 ajax .. 对吗?

执行此操作的标准方法是对您尝试从 php 取回的任何项目进行 json 编码,然后将其回显。我注意到您正在回显数字并在 jquery 中使用这些数字。你需要以同样的方式发送 $tipo 。您可以将它们放在一个数组中,然后使用 json_encode 将它们回显。例子。

echo json_encode(array('number' => 1,'type' => $tipo));

然后你将在 javascript 中使用 msj 变量。它将包含您的两个变量

var bothVariables = jQuery.parseJSON(msj);
console.log(msj.number)  // will give you 1
console.log(msj.tipo)   // will give you Admin

另一个简单的例子

这是ajax.php

echo json_encode(array('number' => 1,'type' => 'Admin'));

这是jquery从中获取变量

        $.ajax({url:"ajax.php",success:function(result){
                result = $.parseJSON(result);
                console.log(result.number);  // 1
                console.log(result.type); // Admin
          }});
于 2013-07-24T23:25:05.743 回答
0

我正在尝试像@hamobi 说的那样解决这个问题,但是 Ajax 尚未验证变量 $tipo .....我认为最好发布 Ajax 原始文件

$(document).ready(function(){

    var timeSlide = 1000;
    $('#login_username').focus();
    $('#timer').hide(0);
    $('#timer').css('display','none');
    $('#login_userbttn').click(function(){
        $('#timer').fadeIn(300);
        $('.box-info, .box-success, .box-alert, .box-error').slideUp(timeSlide);
        setTimeout(function(){
            if ( $('#login_username').val() != "" && $('#login_userpass').val() != "" ){

                $.ajax({
                    type: 'POST',
                    url: 'log.inout.ajax.php',
                    data: 'login_username=' + $('#login_username').val() + '&login_userpass=' + $('#login_userpass').val(),

                    success:function(msj){
                        if ( msj == 1 ){
                            $('#alertBoxes').html('<div class="box-success"></div>');
                            $('.box-success').hide(0).html('Validacion Completa, Bienvenido al Sistema');
                            $('.box-success').slideDown(timeSlide);
                            setTimeout(function(){
                                window.location.href = "../Main2/Index.php";
                            },(timeSlide + 500));
                        }
                        else{
                            $('#alertBoxes').html('<div class="box-error"></div>');
                            $('.box-error').hide(0).html('Datos Incorrectos, No Tiene Acceso al Sistema '/* + msj*/);//msj significa el error que presenta el login
                            $('.box-error').slideDown(timeSlide);
                        }
                        $('#timer').fadeOut(300);
                    },
                    error:function(){
                        $('#timer').fadeOut(300);
                        $('#alertBoxes').html('<div class="box-error"></div>');
                        $('.box-error').hide(0).html('Ha ocurrido un error durante la ejecución');
                        $('.box-error').slideDown(timeSlide);
                    }
                });

            }
            else{
                $('#alertBoxes').html('<div class="box-error"></div>');
                $('.box-error').hide(0).html('Los campos estan vacios');
                $('.box-error').slideDown(timeSlide);
                $('#timer').fadeOut(300);
            }
        },timeSlide);

        return false;

    });

    $('#sessionKiller').click(function(){
        $('#timer').fadeIn(300);
        $('#alertBoxes').html('<div class="box-success"></div>');
        $('.box-success').hide(0).html('Terminando Sesion....Espere....&#133;');
        $('.box-success').slideDown(timeSlide);
        setTimeout(function(){
            window.location.href = "logout.php";
        },2500);
    });

});
于 2013-07-25T14:39:16.010 回答