2013-05-12 41 views
0

我想创建一个登录名和密码的表单,但我无法进行身份验证。我已经检查了mysql的查询并且没问题。我认为问题来自$stmt->num_rows();它返回0与登录名和密码不工作的表格

与表单

<?require('cabecera.php');?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Pujas</title> 
     <script type="text/javascript" src="jquery-1.9.1.min.js"></script> 
    </head> 
    <body> 
      <div id='login'> 
       <input type="text" name="txtUser" id="txtUser"> 
       <input type="text" name="txtPass" id="txtPass"> 
       <input type="button" name="butConectar" id="butConectar" value="Conectar"> 
      </div> 
    </body> 
    <? if ($_SESSION['cMensaje']!='') { ?> 
    <script language="javascript"> 
    alert('<?=$_SESSION['cMensaje']?>'); 
    </script> 
    <? unset($_SESSION['cMensaje']); ?> 
    <? } ?> 
    <script> 
    $("#butConectar").click(function() { 
     var txtUser = $("#txtUser").val(); 
     var txtPass = $("#txtPass").val(); 
     /*if((txtUser=='') || (txtPass=="")){ 
      alert('Hay campos sin rellenar.'); 
     }*/ 
     $.ajax({type: "POST", 
        url: "pr17Login.php", 
        data: "txtUser="+txtUser+"&txtPass="+txtPass, 
        success:function(data) { 
         alert(data); 
        } 
     }) 

}) 

PHP PHP TO检查登录名和密码

<?require('pr17conecta.php'); 
    require('cabecera.php'); 
    ini_set('display_errors',1); error_reporting(E_ALL); 

    $user=$_POST['txtUser']; 
    $password=md5($_POST['txtPass']); 
    //$query=mysql_query(" 
     // select * from tb_user where username='$u' and password='$p' 
     // "); 
     $cSQL="SELECT LOGIN,CLAVE FROM USUARIOS WHERE LOGIN=? AND CLAVE=?"; 
     $stmt=$oConni->prepare($cSQL) or die($oConni->error); 
     $stmt->bind_param('si',$user,$password); 
     $stmt->execute();        
     $stmt->bind_result($LOGIN,$CLAVE); 
     $stmt->fetch(); 
    $row = $stmt->num_rows(); 
    if ($row == 1){ 
     session_start(); 
     $_SESSION['txtUser']=$LOGIN; 
     header("location: pr17Pujas.php"); 
    }else{ 
     //header("location: pr17Login.php"); 
      echo 'Usuario o contraseña inválidos.'; 
    } 
?> 

CABECERA.PHP

<? @header('Content-Type:text/html; charset=utf-8'); 
    session_start(); 
    define('MAX_IDLE_TIME', 3); 
    ?> 
+0

什么是变量'$ oConni' – 2013-05-12 23:00:26

+1

是你的clave类型的整数吗? – Dinesh 2013-05-12 23:00:34

+0

什么是$ oConni? – mpyw 2013-05-12 23:00:46

回答

1
NUM_ROWS

是的mysqli的属性,而不是方法,结果。

您需要使用$stmt->num_rows而不是$stmt->num_rows()来检索它。

+0

哦,它是一个'MySQLi'的实例,我明白了。 – mpyw 2013-05-12 23:05:39

+0

我只是更改为$ stmt-> num_rows。我可以检查该查询返回0行。我正在使用萤火虫 – jal 2013-05-12 23:08:42

+0

您还在'$ stmt-> bind_param'语句中将'$ password'作为整型传递给您的查询。它应该作为字符串类型传递,因为它是一个md5散列。 – 2013-05-12 23:15:29