php - 无法使用pdo和json访问php登录

标签 php mysql json pdo

我的登录有一些问题,login.php 中是我的表单和我的脚本

<div class="container">
<!-- Mensaje -->
    <div id="mensaje"></div>
    <form id="login-form" method="post" action="#" class="form-horizontal" >
        <div class="form-group">
            <label for="Usuario" class="control-label col-xs-2">Usuario</label>
            <div class="col-xs-10">
                <input id="Usuario" value="<?php echo $txtUsuario; ?>" name="Usuario" type="text" class="form-control" required placeholder="Usuario">
            </div>
        </div>

        <div class="form-group">
            <label for="Contrasena" class="control-label col-xs-2" >Contraseña</label>
            <div class="col-xs-10">
                <input id="Contrasena" value="<?php echo $txtContrasena; ?>" name="Contrasena" type="password" class="form-control" required placeholder="Contraseña">
            </div>
        </div>
        <div class="form-group">
            <div class="col-xs-offset-2 col-xs-10">
                <button id="login" type="submit" class="btn btn-primary">Iniciar Sesion</button>
            </div>
        </div>
    </form>
 </div>

<script type="text/javascript">

    $(document).ready(function(){
        $("#login").click(function(){
        var objUsuario = new Object();
        objUsuario.Usuario =$('input#Usuario').val();
        objUsuario.Contrasena=$('input#Contrasena').val();

        var DatosJson = JSON.stringify(objUsuario);
        // Checking for blank fields.
        if( objUsuario.Usuario =='' || objUsuario.Contrasena ==''){
            $("#mensaje").html("<div class='alert alert-success'>HOLA HOLA HOLA: " +  "</div>");
            $('input[type="text"],input[type="password"]').css("border","2px solid red");
            $('input[type="text"],input[type="password"]').css("box-shadow","0 0 3px red");
            alert("Rellenar Campos");

        }else {
            $.post("LoginValidar.php",{ UsuarioPost: DatosJson},

        function(data, textStatus) {
            if(data.Estatus=='True') {

            $("#mensaje").html("<div class='alert alert-success'>Mensaje: " + data.Msg + "</div>");
            $('input[type="text"]').css({"border":"2px solid red","box-shadow":"0 0 3px red"});
            $('input[type="password"]').css({"border":"2px solid #00F5FF","box-shadow":"0 0 5px #00F5FF"});
            alert(data);

            } if(data.Estatus=='False'){
                $("form")[0].reset();
                $("#mensaje").html("<div class='alert alert-danger'>Mensaje: " + data.Msg + "</div>");
                $('input[type="text"],input[type="password"]').css({"border":"2px solid #00F5FF","box-shadow":"0 0 5px #00F5FF"});
            alert(data);
            } else{
            alert(data);
                }   
            });
        }
    });
});

</script>

我的文件 LoginValidar.php 将参数发送到 crud.php 我的 PDO 查询在哪里

try
    {
        //$array    = array("Usuario"=>$Usuario, "Contrasena"=>$Contrasena);            
        include("constantes.php");
        $Usuario = $_POST["UsuarioPost"]; 
        $options  = array('uri' => URL_BASE,'location' => WEBSERVICE);
        $client   = new SoapClient(NULL, $options); 
        $response = $client->IniciarSesion($Usuario);
        echo $response;

        }catch(Exception  $e){
            echo "Error:".$e->getMessage();
        }

crud.php, i think the problem is in my crud because the parameters are sent but i cant login

public function IniciarSesion($CadenaJson){

    $ObjetoJson = json_decode($CadenaJson);
    $response   = array("Msg"=>"","Estatus"=>""); 

    try
    { 
        $stmt = $this->db->prepare("SELECT usuario from USUARIOS WHERE usuario= :Usuario AND contrasena= :Contrasena");

        $stmt->bindparam(":Usuario",$ObjetoJson->Usuario);
        $stmt->bindparam(":Contrasena",$ObjetoJson->Contrasena);
        $stmt->execute();

        $rows = $stmt->fetch(PDO::FETCH_NUM);

        if($rows > 0) {
            $response["Msg"] = "Login correct";
            $response["Estatus"] = "True"; 
        }
        else{
            echo "else";
        }



    }catch(PDOException $e){
        $response["Msg"]     = $e->getMessage();
        $response["Estatus"] = "False"; 
    }
    return json_encode($response);

}

If i delete the if sentence i always receive true msg. With if i receive this msg: "Msg":"","Estatus":"" Thanks ... I hope somebody can help me :)

最佳答案

我假设您想要检查受影响的行。您可以使用 $stmt->rowCount()

来完成此操作

示例

$stmt->execute();
        if($stmt->rowCount() > 0){ //If at least 1 row is selected
            $rows = $stmt->fetch(PDO::FETCH_NUM);
            //Do sth. here with your result if you want
            $response["Msg"] = "Login correct";
            $response["Estatus"] = "True"; 
        } else {
            echo "else";
        }

关于php - 无法使用pdo和json访问php登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36909149/

相关文章:

php - 查询sql代码,没有呈现应有的数据

MySQL DECIMAL存储和最大位数

java - 使用 Java 将 json 对象附加到现有 json 文件中

eclipse - Jersey :找不到 Java 类和 MIME 媒体类型应用程序/json 的消息正文编写器

php - 使用 DOMPDF 获取 PDF 中的本地镜像

php - 如何将 SVG 字符串转换为 PNG?

php - 试图让 php 查询每天只发生一次

php - 如何使用循环 PHP 语句从 mysql 获取数据到 ios?

php - 在 Google App Engine 上使用 Python、PHP 和 HTML 制作应用程序

java - 在 Java 中是否有解析 Json 的通用方法?