开发者

Jquery login submission with PHP

I am trying to add Jquery login submission with PHP. I was able to bind to LDAP without JQuery and login - OK. But as soon as I add JQuery code it sends the error:

ldap_bind() [function.ldap-bind]: Unable to bind to server: Invalid credentials.

I did a lot of searching and still missing someth开发者_如何学Cing, but not quite sure what... :(

Here is what I have so far:

    <script type"text/javascript"> 

    var username = $("input#username").val();  
    var password = $("input#password").val();  
    var dataString = 'username='+ username + '&password=' + password;  
$(document).ready(function(){
$("form#memberlogin").submit(function() {

$.ajax({
type: "POST",
url: "verification.php",
data: dataString,
success: function(data){
if(data.success) {
$('form#memberlogin').hide()
$('div.success').fadeIn();

}
else {
    alert(data); 
  }
}
});
return false;
});
}); 

</script>

This is my verification.php :

    // LDAP variables
    $ldap['user']              = $_POST["username"];
    $ldap['pass']              = $_POST["password"];
    $ldap['host']              = 'my.server.com'; // host or server name
    $ldap['port']              =  389; // LDAP port on the server
    $ldap['dn']                = 'uid='.$ldap['user'].',cn=users,dc=my,dc=server,dc=com'; // LDAP search
    $ldap['base']              = ' ';

    // connect to LDAP
     $ldap['conn'] = ldap_connect( $ldap['host'], $ldap['port'] );
     ldap_set_option($ldap['conn'], LDAP_OPT_PROTOCOL_VERSION, 3);

    // match user and password
     $ldap['bind'] = ldap_bind( $ldap['conn'], $ldap['dn'], $ldap['pass'] );

    if ($ldap['bind']){

    session_cache_limiter('nocache,private');    

    $_SESSION['username']=$_POST["username"];

    $_SESSION['password']=$_POST["password"];

    $_SESSION['user_date']= date("Y-n-j H:i:s");

    $page=$_SERVER['PHP_SELF'];

   echo "success!";

}
    else
    {
            echo "login failed...";

            exit();
    }    
?> 

and here is the form:

    <form id="memberlogin" method="POST">

<fieldset>
<legend>Please login:</legent>

<label for="username">Username:</label>
<input id="username" class="text_inputs" type="text" name="username" size="20"  class="imputbox">

<label for="username">Password:</label>
<input name="password" class="text_input" type="password" name="password" size="20"  class="imputbox">
<input type="submit" name="submit" value="access"  />
</fieldset>
</form>


Your problem is in HTML: your password field has 2 name attributes but no id, that's why password you send is always empty.

I would recommend to rewrite your code to avoid repitition.

$(document).ready(function() {
    $("form#memberlogin").submit(function(e) {
        // instead of creating data string by hand just .serialize your form
        dataString = $(this).serialize();
        $.post("verification.php", dataString, function(data) {
            $('form#memberlogin').hide();
            $('div.success').fadeIn();
        });
        e.preventDefault(); // this is better than "return false"
    });
});
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜