2013-05-12 39 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