javascript bir php işlevi çağırmak ya da nasıl bu yapılamaz ise, yapmam gereken bazı yön

2 Cevap php

Benim web sitesine giriş için bir jquery iletişim kalıcı kutusu oluşturduk:

$('#login').dialog({
  modal: true,
  position: 'center',
  autoOpen: false,
  title: 'Login',
  height: '750px',
  width: '300px',
  zIndex: 9999,
  closeOnEscape: false,
  buttons: {
    'Login': function() {
      $(this).dialog('close');
      $('#mask').hide();
      Login();
    },
    'Cancel': function() {
      $(this).dialog('close');
      $('#mask').hide();
    }
  }
});

Ben ayrı bir php dosyasında Giriş (adında bir php fonksiyonu) yarattık, onlar Giriş butonuna tıkladıklarında bana php işlevini çağırmak için mümkün mü? Eğer değilse, nasıl iletişim'ın Giriş kutusu içeri giriş girişimi için php kullanmak için o olsun

2 Cevap

Update: Do this over an SSL connection for true security

Sadece bir arkası sahneleri AJAX kullanarak istemek yapmak gerekir. Örneğin, $.post jQuery.

  1. Login'i tıklayınız
  2. Iletişim kutusundan kullanıcı adı / şifre alın.
  3. $.post() onu giriş kodunu içeren /login.php dosyası
  4. PHP bu isteği işlemek.
  5. Giriş başarılı, ya da başka bir ise çıkış tek şey başarısız olursa.
  6. $.post içinde arama işlevi bu çıktıyı alacaksınız
  7. Ya çağrı window.location = '/nextpage.php' veya bir hata iletisi görüntüler.

http://docs.jquery.com/Ajax/jQuery.post, sen 4 argümanlar var başı olarak $.post:

$.post( url, [data], [callback], [type] )

böylece

function onLogin(data)
{
    if(data['success'])
        window.location = 'nextpage.php';
    else
        alert(data['error']);
}

var u = get_username_from_form();
var p = get_password_from_form();

$.post(
   '/login.php', 
   {username: u, password: p}, 
   onLogin, 
   'json' 
)

ve dosyada login.php, olur:

<?php

$username = (isset($_POST['username']) ? $_POST['username'] : '');
$password = (isset($_POST['password']) ? $_POST['password'] : '');

//Assuming you wrote the authenticate() function
if(authenticate($username, password))
{
   echo json_encode(array('success' => true));
   exit;
}
else
{
   echo json_encode(array('success' => false, 'message' => 'Login Failed!'));
   exit;
}

@ Gahooa:

Bu büyük bir cevap! Ancak, kesinlikle insanların kendi kullanıcı adı / parola açık metin göremiyorum ki bunu yapmak için bir mesajı (tercihen bazı dolgu ile) bu şifre sindirmek kullanmak isteyeceksiniz.

http://pajhome.org.uk/crypt/md5/scripts.html Burada ağ üzerinden göndermeden önce bilgiyi şifrelemek JavaScript büyük bir set.

Temelde kavram bu şifrelenmiş biçimde (aynı zamanda gerçekten iyi bir fikir) olarak kullanıcının şifresini saklamak veya dinamik isterseniz onları hesaplamak, ancak her ikisi de sindirilmiş edildikten sonra onlar eşleşmesi gerekir olabilir.

Ve sonra (gahooa koduyla) sadece 1 fonksiyonu eklemek istiyorum:

$.post(
   '/login.php', 
   {username: u, password: hex_md5(p)}, // here
   onLogin, 
   'json' 
);

Bu the most Bunu nerede yapılacak, hem de tuz yapıyor düşünebiliriz gibi, olabilir güvenli değildir:

var salt = '$@.@^-^$'; // any random value with $p3c14l ch@|2$ (special chars)

$.post(
   '/login.php', 
   {username: u, password: hex_md5(hex_md5(p) + salt)}, // here
   onLogin, 
   'json' 
);

Daha sonra sunucu tarafı doğrulama işlevi ile hashed değerleri, yani bir karşılaştırma yapmak istiyorum:

<?php

    $salt = '$@.@^-^$'; // same as on client-side

    function authenticate( $user, $pass ){
       ...
       if( md5( md5( $storedPassword ) . $salt ) == $_POST['username'] ){ ... }
       ...
    }

?>

Dediğim gibi ya, sen zaten sağlaması versiyonunu saklamak olabilir

md5( md5( $_POST['signup_password'] ) . $salt )

kullanıcıların şifreleri onlar kaydolmak (ve tüm varolanları) dönüştürmek zaman