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

@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 に答える