2012-02-11 19 views
5

Tarayıcı, kullanıcı adı ve parola bilgilerini, 'kullanıcı adı parolası'na (tarayıcı değil web sitesi özelliği) tıkladıysa, hatırlamak normal bir şeydir.Tarayıcı, dinamik olarak oluşturulmuş formlarda girdi alanları değerlerini hatırlayalım

ben gibi, bir şey bir zaman uyumsuz çağrı kullanarak oluşturmak bu giriş formu var:

$('#container').load('/path/file.php?what=login_form'); 

Bu formda, hatırlamak (ve benim için otomatik olarak doldurma) gelmez tarayıcısını gönderirken Tıkladım'ı bile 'Evet, şifreyi hatırla'.

Bu, yalnızca URLable sayfa formlarının hatırlanacağı anlamına mı geliyor?

DÜZENLEME - çıkış örneği

<div class="caja loginBox"> 
     <form action="index.php" method="post" name="sesion" id="sesion"> 
     <h1>Inicio de sesion</h1><h2>Usuario</h2> 
    <input type="text" id="nombre" name="nombre"/> 
    <h2>Password</h2><input type="password" id="pass" name="pass"/><button type="submit" name="inicio">Entrar</button> 
    </form> </div> 
+0

"/path/file.php? What = login_form" HTML çıktısını gönderir misiniz? –

+2

Bu, standart bir davranıştır. Ve bu nedenle, kullanıcı için pw –

+0

'u saklamak istemezsek, dinamik olarak oluşturulmuş giriş formlarını kullanmamızın nedeni budur, haklısınız, edditing quesiton –

cevap

2

Ben Firefox şifre yöneticisi ile çalışan bir çözüm buldu. Formu dinamik olarak neden yüklediğinize bağlı olarak, çözümüm size yardımcı olabilir veya olmayabilir. (Aşağıda daha fazla bilgi edinin.)

Öncelikle, aynı yöntem ve eylemi kullanan ve aynı ada sahip alanları içeren görünmez bir form ("display: none" satır içi stili kullandım).

<div id="container"></div> 

<div id="fake-form" style="display: none"> 
    <form action="index.php" method="post"> 
     <input type="text" name='nombre' class='nombre'/> 
     <input type="password" name='pass' class='pass' /> 
    </form> 
</div> 

Ardından, JavaScript, gerçek formun içeriği yüklendikten sonra, sahte formun dışarı değerlerini kopyalayıp koydu: Sonunda gerçek formunu içerecektir div altında bu koyabilirsiniz gerçek birine: Eğer dinamik gerçek formunu yüklemek önceki sayfada bir form koymak için bu kadar çaba ile gidiyoruz dedi

<script type="text/javascript"> 
    $(function() { 
     $("#container").load("/path/file.php?what=login_form", function() { 
      var fakeForm = $("#fake-form"); 
      $("#nombre").val(fakeForm.find(".nombre").val()); 
      $("#pass").val(fakeForm.find(".pass").val()); 
     }); 
    }); 
</script> 

, o zaman neden sadece o son adımı kaldırıp yok Sayfada başlamak için? :-) Belki de bunu yapmak için iyi bir nedeniniz var. Belki de sunucudan gelen formun benzersiz stil bilgisi veya alanların yanında dinamik hata mesajları veya alan adları i18n var mı?

Ancak, sunucudan çektiğiniz formun farklı kullanıcılara göre değişen bir eylemi varsa, bu gizli numarayı oluştururken eylemi önceden bilmeniz gerektiğinden numaram işe yaramaz.

Eğer durum böyleyse, belki de hilemi tersine deneyebilir ve sunucudan yüklediğiniz "gerçek formu" gizleyebilir ve sahte formu kullanıcıya gösterebilirsiniz. Sahte form, mevcut olmayan bir URL'ye gönderilebilir, ancak daha sonra "sahte formun" kullanımını engellemek için JavaScript'i kullanabilir, kullanıcı adı ve şifreyi görünmez "gerçek formda" kopyalayabilir, gerçek formda gönderebilir ve Orijinal form gönderiminin geçmesini önlemek için false döndürün.

Güncelleme: Biraz daha düşündükten sonra, ikinci çözümümün işe yarayacağını düşünmüyorum çünkü şifre yöneticileri neredeyse kesinlikle kullanıcı adı ve parola ile gerçekten veri gönderdiğiniz nihai URL'yi ilişkilendiriyorlar. İlk eylem URL'sinden ziyade, yalnızca başlangıçta no'lu adrese göndermenizi rica ederiz. Her neyse, umarım ilk çözümüm yaptığınız şey için yeterli olacaktır.

+0

Bunu ikinci yolla bitirdim. formu gizli div'a yükleyin ve javascript ile (yüksüz) gösterin. daha basit. Yardım ettiğin için teşekkür ederim! –

İlgili konular