JQuery kullanarak Pokrokova kaydı. Kayıt ve yetkilendirme formları için PHP, MySQL ve jQuery wiki'lerini içeren güçlü bir yönetici kayıt sistemi

Golovna / Sorun giderme

Her şey PHP altında çalıştırılır ve veriler MySQL veritabanında saklanır.

Sistem, Web oluşturma yoluyla kaldırılan ve ayrılan bağımsız bir panele sahiptir.

Krok 1 - MySQL

Artık kayıtlı satıcılarla ilgili tüm verileri toplayacak bir tablo oluşturmamız gerekiyor. Dosyalara erişim kodu tablo.sqlçıktı dosyalarından arşivlerde.

tablo.sql

--
- `tz_members` tablosunun yapısı
--
TABLO OLUŞTUR `tz_members` (
'id' int(11) BOŞ DEĞİL auto_increment,
`usr` varchar(32) harmanla utf8_unicode_ci NOT NULL varsayılan "",
'pass' varchar(32) harmanla utf8_unicode_ci NULL DEĞİL varsayılan "",
`email` varchar(255) harmanla utf8_unicode_ci NULL DEĞİL varsayılan "",
`regIP` varchar(15) harmanlama utf8_unicode_ci NULL DEĞİL varsayılan "",
'dt' tarihsaat BOŞ DEĞİL varsayılan "0000-00-00 00:00:00",
BİRİNCİL ANAHTAR ("kimlik"),
BENZERSİZ ANAHTAR 'usr' ('usr')
) MOTOR=MyISAM VARSAYILAN KARAKTER SETİ=utf8 COLLATE=utf8_unicode_ci;

Kimliği seçeneği olan bir tamsayı olarak tanımlarız otomatik artış- her yeni kayıtlı müşteriye otomatik olarak atanır. Ayrıca usr olarak belirtildi Benzersiz anahtarı- Tablonun aynı hesap kullanıcı adlarıyla iki kayıt oluşturmasına izin verilmez.

Daha sonra koristuvach isimleri girilirse kayıt işlemi sırasında biz muzaffer olacağız ve yetkililer.

Tabloyu oluşturduktan sonra dosyadaki veritabanınıza bağlanmak için değişiklikleri doldurmanız gerekmektedir. connect.php, böylece kodu sunucuda çalıştırabilirsiniz.

Krok 2 - XHTML

Artık web sitemize bir Web oluşturma formu eklememiz gerekiyor.

demo.php






Asılı panel, jQuery


Müşterilerin siteye kayıt/giriş yapmasına yönelik çözümler



if(!$_SESSION["id"]):
// Henüz kayıt olmadıysanız
?>



Kayıtlı müşteriler için giriş yapın


if($_SESSION["msg"]["giriş-hatası"])
{
Eko "
".$_SESSION["msg"]["giriş-hatası"]."
";
unset($_SESSION["msg"]["giriş-hatası"]);
// Varsa kayıt iptal edilecek
}
?>












Henüz kayıt olmadınız mı? Bilgilerinizi girin!


if($_SESSION["msg"]["reg-err"])
{
Eko "
".$_SESSION["msg"]["kayıt-hata"]."
";
unset($_SESSION["msg"]["reg-err"]);
// Kayıt işareti orada olduğu gibi burada da görüntülenir
}
if($_SESSION["msg"]["reg-success"])
{
Eko "
".$_SESSION["msg"]["reg-success"]."
";
unset($_SESSION["msg"]["reg-success"]);
// Kaydın başarısına ilişkin bildirimler burada görüntülenir
}
?>








başka:
// Sisteme ulaştığınızdan beri
?>

Kayıtlı müşteriler için


Gösteri verileri


Koristuvach'ın sayfasına git

Sistemden giriş yapın



endif;
// IF-ELSE yapısını kapat
?>






Birçok yerde kodlar daraltıldı PHP operatörleri, belirtilenleri doğrularken $_SESSION["usr"] ya da başka $_SESSION["kimlik"]. Bunlar yalnızca satıcı kayıtları için istenen içeriği görüntülememize olanak tanıyan satıcı kayıt sayfasının bir parçası oldukları için doğru olarak ayarlanır.

Şekil verdikten sonra yan kısım yerine perdeyi yerleştiriyoruz.




Asılı panel, jQuery


PHP ve jQuery wiki'leriyle kaydı kolayca yönetin




Metin nedir...




Kodda özel bir şey yok.

Krok 3 - PHP

Form artık tamamlanmış bir kayıt ve giriş sistemine dönüştürülmüştür. Görevi tamamlamak için temel PHP kodundan başka bir şeye ihtiyacınız olacak. Kodun tamamı iki bölüme ayrılmıştır.

Herhangi bir şey eklemeyi planlıyorsanız, her şeyi birkaç bitişik dosyaya bölmek ve gerektiğinde bunları dahil etmek en iyisidir. Bu yaklaşım parçalanmaya yardımcı olur harika projeler Daha sonra sitenin farklı yerlerindeki kodu yeniden düzeltin.

Eksen burada uygulanmamıştır.

demo.php

define("INCLUDE_CHECK", true);
"connect.php" gerektirir;
"functions.php" gerektirir;
// INCLUDE_CHECK ayarlanmadığı sürece bu iki dosya dahil edilebilir
oturum_adı("tzLogin");
// Oturumu başlat
session_set_cookie_params(2*7*24*60*60);
// Çerezlerin iki yıllık ömrünü belirtir
oturum_başlangıç();
if($_SESSION["id"] && !isset($_COOKIE["tzRemember"]) && !$_SESSION["rememberMe"])
{
// Sistemde çıkış yaptıysanız, aksi halde tzRemember çereziniz yok (tarayıcı yeniden başlatılıyor)
// Beni hatırla onay kutusunu işaretlemediniz:
$_SESSION = dizi();
session_destroy();
//Oturumun silinmesi
}
if(isset($_GET["oturum kapatma"]))
{
$_SESSION = dizi();
session_destroy();
başlık("Konum: demo.php");
çıkış;
}
if($_POST["gönder"]=="Giriş")
{
// Giriş formundan ne istendiğini kontrol edin
$hata = dizi();
// Yemeğinizi kaydedin
if(!$_POST["kullanıcı adı"] || !$_POST["şifre"])
$err = "Bütün alanlar yırtılmış ve doldurulmuştur!";
if(!count($hata))
{

$_POST["şifre"] = mysql_real_escape_string($_POST["şifre"]);
$_POST["rememberMe"] = (int)$_POST["rememberMe"];
// Tüm veriler hazır
$row = mysql_fetch_assoc(mysql_query("Kimliği SEÇİN,usr FROM tz_members WHERE usr="($_POST["kullanıcı adı"])" AND pass="".md5($_POST["şifre"]).""")) ;
if($satır["usr"])
{
// Her şey hazırsa sisteme giriyoruz
$_SESSION["usr"]=$row["usr"];
$_SESSION["id"] = $satır["id"];
$_SESSION["rememberMe"] = $_POST["rememberMe"];
// Oturumun verilerini kaydediyoruz
setcookie("tzRemember", $_POST["beni hatırla"]);
// tzRemember çerezleri oluştur
}
else $err="Koristuvach'ı veya şifreyi girin!";
}
eğer($hata)
$_SESSION["msg"]["giriş-hatası"] = implode("
", $hata);
// Toplantıyla ilgili bildirimleri oturumdan kaydediyoruz
başlık("Konum: demo.php");
çıkış;
}

Burada kurabiyeler var tzHatırla sistemden çıkışınızı sağlamanızı gerektiren, yani “Beni hatırla” onay kutusunu işaretlemenizi gerektiren atamanın bir kontrol unsuru olarak duruyor. Çerezlerin günlük olarak (tarayıcı yeniden başlatıldıktan sonra) “beni hatırla” seçeneği işaretlenmeden girilmesi durumunda oturum silinir.

Seansın kendisi iki gerilimin aktif etkisinden mahrum kalacaktır (parametrede ayarlandığı gibi) session_set_cookie_params).

Ve eksen ve diğer kısım demo.php.

Else if($_POST["gönder"]=="Kayıt")
{
// Kayıt formunda ne yazıyordu
$hata = dizi();
if(strlen($_POST["kullanıcı adı"]))<4 || strlen($_POST["username"])>32)
{
$err="Im'ya koristuvacha 3'ten 32'ye kadar karakterin iki katı olabilir!";
}
if(preg_match("/[^a-z0-9\-\_\.]+/i",$_POST["kullanıcı adı"]))
{
$err="Ben kabul edilemez karakterlerden intikam almak için bir koristuvach'ım!";
}
if(!checkEmail($_POST["email"]))
{
$err="E-posta adresiniz yanlış!";
}
if(!count($hata))
{
// Merhamet yok
$pass = substr(md5($_SERVER["REMOTE_ADDR"].microtime().rand(1.100000))),0.6);
// Bir şifre oluştur
$_POST["e-posta"] = mysql_real_escape_string($_POST["e-posta"]);
$_POST["kullanıcı adı"] = mysql_real_escape_string($_POST["kullanıcı adı"]);
// hazır veriler
mysql_query(" INSERT INTO tz_members(usr,pass,e-posta,regIP,dt)
DEĞERLER(
"".$_POST["kullanıcı adı"]."",
"".md5($geçiş).",
"".$_POST["e-posta"]."",
"".$_SERVER["REMOTE_ADDR"]."",
ŞİMDİ()
)");
if(mysql_affected_rows($link)==1)
{
posta göndermek(" [e-posta korumalı]İnternet sitesi",
$_POST["e-posta"],
"Kayıt sisteminin gösterimi - şifre oluşturma",
"Şifreniz: ".$pass);
$_SESSION["msg"]["reg-success"]="Size yeni şifrenizi içeren bir e-posta gönderdik!";
}
else $err="Zaten muzaffer oluyorum!";
}
if(count($hata))
{
$_SESSION["msg"]["reg-err"] = implode("
", $hata);
}
başlık("Konum: demo.php");
çıkış;
}
$komut = "";
if($_SESSION["mesaj"])
{
// Script sayfanın sayfasındaki görsel paneli gösterir
$komut = "
";
}

Dizideki tüm şarkıları kaydediyoruz $hata, daha sonra borsaya atanır $_SESSION. Bu şekilde erişim, tarayıcının bir sonraki yeniden yönlendirilişine kadar korunur.

Bazı sitelerde, formun kullanılması veya sayfaların güncellenmesi, verilerin zaten yayınlanmış olması durumunda avans kaldırılabilir. Bu, yinelenen kayıtlara ve sunucuya erişime yol açan bir sorun olabilir.

Tarayıcıyı aynı sayfaya yönlendirme sorununu önlemek için başlık işlevini kullanıyoruz. Bu sayede tarayıcı formdan gelen isteği tanımadan sayfanın görünümü güncellenir. Sonuç olarak sayfa güncellenir ve veriler aktarılmaz.

Bira oskolki mi vikoristuyemo $_SESSION Yapılan tüm değişiklikleri korumak için, yemek müşteriye gösterilir gösterilmez tüm değişiklikleri iptal etmemiz çok önemlidir. Aksi halde cilt yüzeyinde belirir.

Paneli site sayfasında görüntüleyen ek bir komut dosyası da kullanabilirsiniz, böylece sitede görebilirsiniz.


Krok 4 - CSS

Görüntülenen panel, vikorista stilleriyle kendi dosyanızı oluşturur. Bu sayede sadece sayfamız için stil oluşturmaktan mahrum kalıyoruz.

demo.css

gövde,h1,h2,h3,p,alıntı,küçük,form,giriş,ul,li,ol,etiket(
/* Kuralları bırak */
kenar boşluğu:0 piksel;
dolgu:0 piksel;
}
vücut(
renk:#555555;
yazı tipi boyutu:13 piksel;
arka plan: #eeeeee;
yazı tipi ailesi: Arial, Helvetica, sans-serif;
genişlik: %100;
}
h1(
yazı tipi boyutu:28 piksel;
yazı tipi ağırlığı:kalın;
yazı tipi ailesi: "Trebuchet MS", Arial, Helvetica, sans-serif;
harf aralığı:1px;
}
sa2(
yazı tipi ailesi: "Arial Narrow", Arial, Helvetica, sans-serif;
yazı tipi boyutu: 10 piksel;
yazı tipi ağırlığı:normal;
harf aralığı:1px;
dolgu-sol:2px;
metin dönüşümü:büyük harf;
boşluk: sarma;
kenar boşluğu üst:4 piksel;
renk:#888888;
}
#ana p(
dolgu-alt:8px;
}
.temizlemek(
ikisini de temizle;
}
#ana(
genişlik:800 piksel;
/* Sayfanın ortasında ortalanmış */
kenar boşluğu:60 piksel otomatik;
}
.konteyner(
kenar boşluğu üst:20 piksel;
arka plan: #FFFFFF;
kenarlık:1 piksel katı #E0E0E0;
dolgu:15 piksel;
/* Yuvarlatılmış köşeler */
-moz-sınır-yarıçapı: 20px;
-khtml-sınır-yarıçapı: 20 piksel;
-webkit-sınır-yarıçapı: 20 piksel;
kenarlık yarıçapı: 20 piksel;
}
.hata(
kırmızı renk;
}
.başarı(
renk:#00CC00;
}
a, a:ziyaret edildi (
renk:#00BBFF;
metin dekorasyonu: yok;
taslak: yok;
}
a: üzerine gelin(
metin dekorasyonu: altı çizili;
}
.tutorial-info(
metin hizalama:ortalama;
dolgu:10 piksel;
}

Krok 5 - jQuery

Görünüm alanı kendi jQuery dosyasını içerir.

demo.php








İlk satır Google CDN'deki jQuery kitaplığını içerir. Daha sonra görünürlük öğeleri için IE6 PNG'ye yönelik bir yama. Daha sonra panel komut dosyası eklenir

$script değişikliği, müşteri edinme sayfasındaki paneli gösterir.

Sitenizin bölümlerinden birini sınırlı sayıda kişinin erişimine açmanız gerekiyorsa, en kolay yol, müşterilerin ek kaydını ve yetkilendirmesini almaktır. İstemcileri yetkilendirmenin birçok yolu vardır. Web sunucusu araçlarını ve dil programlama araçlarını kullanabilirsiniz. PHP oturumları başarılı olursa bunun sonuçlarından bahsedelim.

Elbette daha fazlasını kazanmak istersiniz mevcut yöntem bu formun oluşturulması. Bu mevcut ve mevcut durumun dışında hala planlarım var, o zaman formunuzu geliştirebilirsiniz zilin çağrısı Daha fazla nesneye yönelik teknikler için PHP ile iletişime geçebilirsiniz.

Öncelikle üzerinde çalışılan tüm detayları tartışalım. Daha fazla neye ihtiyacımız var? İstemciyi kaydeden, istemciyi yetkilendiren, yetkilendirme sonrasında istemciyi nereye yönlendiren bir scripte ihtiyacımız var. Ayrıca yetkisiz kullanıcıların erişimine karşı korunacak bir sayfa oluşturmamız gerekecek. Kayıt olmak ve yetkilendirmek için oluşturmamız gerekecek HTML formu. Kayıtlı satıcılar hakkındaki bilgileri veritabanına kaydediyoruz. Bu, DBMS'ye bağlanmak için hala bir komut dosyasına ihtiyacımız olduğu anlamına gelir. Tüm robotların kendi yazdığımız fonksiyonları vardır. Bu işlevler dosyanızı kaydedecektir.

Peki, şu dosyalara ihtiyacımız var:

  • DBMS ile bağlantı;
  • bir koristuvach'ın işlevleri;
  • yetki;
  • kayıt;
  • tarafı çalındı;
  • koristuvach çalışmasını tamamlama senaryosu;
  • müşterinin yetkilendirme durumunu kontrol eden bir komut dosyası;
  • Sayfaların en basit tasarımı için stil sayfası.

Veritabanında destekleyici bir tablonuz yoksa her şey anlamsız olacaktır. DBMS yönetim aracınızı başlatın (PhpMyAdmin veya Komut satırı, daha uygun olduğu için) ve yeni başlangıca yazın:

CREATE TABLE `users' (`id` int(11) NULL DEĞİL AUTO_INCREMENT, `login` char(16) NULL DEĞİL, `password` char(40) NULL DEĞİL, `reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY id` )) ENGINE=MyISAM VARSAYILAN CHARSET=utf8 AUTO_INCREMENT=1 ;

Dosyalarımızı şu şekilde komut dosyalarıyla adlandıracağım (hepsi tek bir dizinde olacak):

  • veritabanı.php;
  • işlevler.php;
  • giriş.php;
  • kayıt.php;
  • index.php;
  • çıkış.php;
  • checkAuth.php;
  • style.css.

Derilerinin amacı şarkı söylüyorum, anlıyorsunuz. Komut dosyasını DBMS'den bağlayarak bitirelim. Bunu zaten konuşuyorduk. Bu betiğin kodunu veritabanı.php adlı bir dosyaya kaydetmeniz yeterli. Kullanıcılarımızın işlevleri, Function.php dosyasında listelenecektir. Her şey nasıl yolunda gidiyor? Yetkisiz kullanıcıların çalınan index.php belgesine erişimi reddetmelerine izin verilir, sistem kullanıcının yetkilerini kontrol eder, eğer kullanıcının yetkileri yoksa yetkilendirme sayfasına yönlendirilir. Yetkilendirme sayfasında müşteri yetkilendirme formunu doldurabilir. Hadi kazanalım.

Müşterilerin yetkilendirilmesi

kayıt olmak.

Artık formumuzun bu şekilde görünmesi gerekiyor. Aynı zamanda diğer unsurların kuralları da önemlidir. Kendimin önüne geçeceğim ve bunun yerine bir stil sayfası ekleyeceğim.

/* style.css dosyası */ .row ( border-bottom:10px; width:220px; ) .row label ( display:block; font-weight:bold; ) .row input.text ( font-size:1.2em; dolgu:2px 5px; ) .to_reg ( font-size:0,9em; ) .instruction ( font-size:0,8em; color:#aaaaaa; sol kenar boşluğu:2px; imleç:varsayılan; ) .error ( color:red; kenar boşluğu-sol:3px;

Her şey doğru ayarlanmışsa tarayıcınızda şöyle bir şey olabilir:

Elbette henüz düzenli olarak kayıtlı bir hesap sağlayıcımız yok ve giriş yapabilmek için kayıt olmanız gerekiyor. Şimdi kayıt formuna bir göz atalım.

Yabancıların kaydı

" />

Siz, HTML kodunda PHP değişikliği olanlara melodik bir şekilde saygı gösterdiniz. Formların metin alanlarının nitelikleri yerine, bilgileri görüntülemek için kullanılan kaplar yerine kullanılırlar. Ale'yi başlatmadık ve değiştirmedik. Biraz para harcayalım.

Yabancıların kaydı

" />
Koristuvach'ın adı Latin alfabesinden karakterler, sayılar, "_", "-", "." sembollerini içerebilir. Koristuvach adının kanıtının 4 karakter kısaltılmaması ve 16 karakter uzatılmaması gerekmektedir.
Şifre, Latin alfabesindeki karakterleri, sayıları ve "_", "!", "(", ")" sembollerini içerecek şekilde değiştirilebilir. Şifre 6 karakterden fazla veya 16 karakterden fazla kısaltılmalıdır
Şifrenizi tekrar girin

Form etiketinin action özelliği bir parametre içermiyor. Bu durumda, bu formlar aşırı güçlendiğinde, kokunun yok edildiği senaryoda koku oluşacaktır. Bu da form verilerini toplayan kod yazmamız gerektiği anlamına geliyor. Şimdi işleme algoritmasını tartışalım.

Kullanıcı adı ve şifre alanlarının boş kalmamasına ihtiyacımız var. Daha sonra yeteneklerinize uygun olduğundan emin olmak için giriş bilgilerinizi kontrol etmeniz gerekir. Şifre açıklamalara benzer olmalı, tekrarlanan şifre girişlerinden kaçınılmalı, ayrıca aynı olabilirler. Bu zihinler söz konusu olduğunda, zikirle ilgili bildirimler dizisi kayıt altına alınıncaya kadar bu formların işlenmesi de eklenebilir ve bir tür yazışmalar yapılabilir. Müşterilerimize kolaylık sağlamak için, $fields dizisinin değerini yazarak giriş bilgilerini (girdikleri şekliyle) kaydedeceğiz.

Her şey yolundaysa, tarayıcınızın penceresinde, kayıt.php belgesine giderek yaklaşık olarak şuna benzer bir şey oluşturmalısınız:

Şimdi diyelim ki müşteri form alanlarını doldurmadan kayıt ol butonuna tıklıyor. Algoritmamıza göre kullanıcı adı ve şifre boş olamaz. Eğer aklınız bir araya gelmezse kayıt olmanız mümkün değildir. Bu form verilerinin işlenmesinin bir akış komut dosyasında gerçekleştirildiğini hatırlıyoruz. Bu, ek kontroller ekleyerek kodumuzu değiştirmemiz gerektiği anlamına gelir. Bu tür revizyonlar derhal zorunludur. Hem kullanıcı adı hem de şifre girdiyseniz, belirlenen seçenekler için orijinalliğini kontrol etmeniz gerekir. Kullanıcı adınızı ve şifrenizi doğrulamak için, Function.php dosyasında istemci fonksiyonlarını oluşturuyoruz.

/** * işlevler.php * Arka uç işlevleri içeren dosya */ // DBMS'ye bağlantı parametrelerini içeren bir dosya ekleyin require_once("database.php"); // Müşteri adının kontrol edilmesi function checkLogin($str) ( // İptal ile ilgili olası bildirimlerle değişikliği başlatır $error = ""; // Login ile ilgili herhangi bir satır yoksa, iptal ile ilgili bildirim ters çevrilir if( !$str) ( $hata = " Koristuvach'ın adını girmediniz"; return $hata; ) /** * Koristuvach'ın adını "_", "-" sembollerini kullanan düzenli ifadeler kullanarak kontrol ederiz, "." */ $pattern = "/^[- _.a-z\d](4,16)$/i"; $result = preg_match($pattern, $str) ; // Doğrulama başarısız olursa geri döneriz iptal bildirimi if(!$result) ( $error = " Kullanıcı adında veya kullanıcı adında geçersiz karakterler çok kısa"; return $error; ) // Her şey yolundaysa, değer muhtemelen doğrudur return true ; ) // Kullanıcının şifresini kontrol etme fonksiyonu checkPassword($str) ( // Başlatma İptal ile ilgili olası bildirimleri bilmek istiyorum $error = ""; // Oturum açma günü yaklaştığında, dönüşe geçiyoruz iptal bildirimi etrafında if(!$str) ( $error = "Şifre girmediniz"; return $error; ) /** * Muhabirin şifresini normal ifadeler kullanarak kontrol ediyoruz * Şifre şu durumda suçludur: kısa değildir 6, 16 karakterden uzun değilse * Latin alfabesindeki semboller, sayılar suçludur * "_", "!", "(", ")" sembollerini içerebilir */ $desen = "/^[_!)(.a-z\d](6,16)$/i"; $sonuç = preg_match($desen, $str); // Doğrulama başarısız olursa iptal bildirimini döndürürüz if(!$result) ( $error = "Müşteri şifresinde geçersiz karakterler veya şifre çok kısa (uzun)"; return $error; ) / / Her şey yolundaysa, değeri true'ya döndüreceğiz true return; )

Şimdi public fonksiyonunu etkinleştirmek için kayıt.php dosyasını değiştirmemiz gerekiyor. Senaryodan önce kayıt butonunun basıncını nasıl kontrol edeceğimi çözebilirim. Bu sürecin ortasında kullanıcı adı ve şifre kontrolü başlar. Doğrulamanın başarısız olması durumunda form tekrar görüntülenir ve iptale ilişkin bildirim görüntülenir. Cevap yoksa müşteriyi kaydederiz, kayıt formu artık görüntülenmez, müşteriye başarılı kayıt hakkında bilgi veririz ve ek başlık() işlevini kullanarak onu yetkilendirme formu ї'ye yönlendiririz.

Sisteme başarıyla kayıt oldunuz. Hemen yetkilendirme sayfasına yönlendirileceksiniz. Hiçbir şey olmadıysa doğrudan talimatlar için oraya gidin.

"; başlık("Yenile: 5; URL = giriş.php"); ) // Aksi takdirde topluluğa iptal hakkında bilgi veririz else ( $errors["full_error"] = $reg; ) ) ) ?> Yabancıların kaydı
" />
Koristuvach'ın adı Latin alfabesinden karakterler, sayılar, "_", "-", "." sembollerini içerebilir. Koristuvach adının kanıtının 4 karakter kısaltılmaması ve 16 karakter uzatılmaması gerekmektedir.
Şifre, Latin alfabesindeki karakterleri, sayıları ve "_", "!", "(", ")" sembollerini içerecek şekilde değiştirilebilir. Şifre 6 karakterden fazla veya 16 karakterden fazla kısaltılmalıdır
Şifrenizi tekrar girin

Betiğin bir yeni işlevi daha var - kayıt() . Ve henüz şaşkına dönmedik. Biraz para harcayalım.

// Hesap kayıt fonksiyonu fonksiyon kaydı($giriş, $şifre) ( // Gecikmiş durumla ilgili olası bildirimlerle değişikliği başlatır $hata = ""; // Giriş bilgileri ile ilgili herhangi bir satır yoksa, gecikmeyle ilgili bildirim aşağıdaki durumlarda döndürülür: (!$login ) ( $ error = "Giriş belirtilmedi"; // Bir sorgu satırı yazın $sql = "SELECT `id` FROM `users` WHERE `login`="" . $login . """; / / Tabana yaz $query = mysql_query ($sql) or die( ""); // En az bir tane dahil olmak üzere böyle bir girişe sahip hesapların sayısına hayran kaldık, // eğer iptal bildirimini açarız (mysql_num_rows($query) > 0) ( $error = "Hesap belirlenmiş giriş zaten kayıtlı"; return $ error; ) // Böyle bir giriş olmadığı için kayıt ediyoruz // Bir dizi sorgu yazıyoruz $sql = "'Kullanıcılar' (`id`,`login`,`password`) DEĞERLERİNE EKLEYİN (NULL, "" . $login . " "," "". $password . "")"; // Robimo şunu yazar: temel $sorgu = mysql_query($sql) veya die("

Koristuvach'a şunu eklemek imkansızdır: " . mysql_error() .". Yemek ".__LINE__" satırına yerleştirildi.

"); // DBMS'ye bağlanmayı unutmayın mysql_close(); // İstemcinin başarıyla kaydedildiğini gösteren true değerini döndürün true; )

Her şey yolundaysa, muhabiriniz kaydolacaktır. Formu test edebilirsiniz. Yeni oturum açma bilgilerini kullanarak istemcileri kaydetmeyi deneyin. Başarılı kayıttan sonra müşteriler yetkilendirme formuna yönlendirilecektir. Daha önce bu şekli göstermek için basitçe bir işaret yapmıştık. Action özelliği aynı parametreyi belirtmediğinden formun gönderdiği veriler scriptte görüntülenecektir. Bu, işlemek için kod yazmamız ve bunu login.php belgesine eklememiz gerektiği anlamına gelir.

Müşterilerin yetkilendirilmesi

;">

Sisteme kayıtlı değilseniz lütfen kayıt olunuz.

Yetkilendirme komut dosyasının başka bir bilinmeyen işlevi olduğunu fark etmiş olabilirsiniz: yetkilendirme() . Bu işlev, öncelikle müşteri kayıt veritabanında böyle bir kullanıcı adı ve parola ile ne olduğunu kontrol ederek istemciyi yetkilendirmek için gereklidir. Böyle bir kullanıcı bulunamazsa yetkilendirme kesintiye uğrayacak ve ekranda arızaya ilişkin bir bildirim görüntülenecektir. Doğrulama başarılı olduktan sonra, yetkilendirme() işlevi bir oturum başlatır ve bu oturuma müşterinin kullanıcı adı ve şifre değerlerini yazar, yetkilendirmenin başarısı hakkında komut dosyasına bilgi verir ve komut dosyası, müşteriyi çalınan sayfaya yönlendirir. kaynak.

/** * Coristuvach yetkilendirme işlevi. * PHP oturumunda ek yardım için istemcilerin yetkilendirmesi bize sağlanacaktır *. */ function yetkilendirme($login, $password) ( // İptalle ilgili olası bildirimlerle değişikliği başlatın $error = ""; // Login ile ilgili satır yoksa, iptalle ilgili bildirimi çevirin if(!$ giriş) ( $hata = " Giriş belirtilmedi"; return $hata; ) elseif(!$şifre) ( $hata = "Şifre belirtilmedi"; return $hata; ) // Kullanıcının artık kayıtlı olup olmadığını kontrol ediyoruz / / DBMS connect()'a bağlanır; / / Bunun giriş hesabının değeri olduğunu doğrulamamız gerekiyor // Bir sorgu satırı ekleyelim $sql = "SELECT `id` FROM `users` WHERE `login`=" ".$login."" AND `password`="".$ şifre ."""; // $query = mysql_query($sql) veya die(" içerir

Tuhaf bir şekilde yazılmış: " . mysql_error() .". Yemek ".__LINE__" satırına yerleştirildi.

"); // Muhasebeci bu tür verilerden haberdar değilse, af ile ilgili bildirimi döndürürüz if(mysql_num_rows($query) == 0) ( $error = "Muhasebeci belirtilen verilerle kayıtlı değil"; return $hata; ) // Muhasebeci kayıtlı değilse, session_start() oturumunu başlatır; // Ve buna kullanıcının kullanıcı adını ve şifresini yazıyoruz // Bunun için süper küresel bir dizimiz var $_SESSION $_SESSION[ "login"] = $login; $_SESSION["password"] = $password; / Veritabanı bağlantısını kapatmayı unutmayın mysql_close(); // İstemcinin başarılı yetkilendirmesi hakkında bilgi vermek için true değerini çevirin, true değerini döndürün ;

Bir bilgisayar korsanı çalıntı bir sayfayı kullanıyorsa yetkilendirme bilgilerinin doğruluğunu kontrol edin. Bunun için koristuvach'ın bir fonksiyonuna daha ihtiyacımız var. Buna checkAuth() adını verelim. Verilerimiz, veritabanımızda saklanan verilerle müşterinin yetkilendirme verileriyle karşılaştırılacaktır. Bu veriler kaydedilmediği takdirde kullanıcı yetkilendirme sayfasına yönlendirilecektir.

Function checkAuth($login, $password) ( // Kullanıcı adı veya şifre yoksa false olduğu doğrulanır if(!$login || !$password) false döndürür; // Kullanıcının kayıtlı olduğu doğrulanır // DBMS'ye bağlanır connect() ; // Bir satır giriş ekleyin $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" VE `password`="". $şifre."""; // Bir satır giriş ekleyin $query = mysql_query($sql) veya die("

Tuhaf bir şekilde yazılmış: " . mysql_error() .". Yemek ".__LINE__" satırına yerleştirildi.

// Bu tür veriler hakkında bilgi yoksa false'a çevirin; if(mysql_num_rows($query) == 0) ( return false; ) // Veritabanı bağlantısını kapatmayı unutmayın mysql_close(); // Aksi takdirde döndürülmüş true dönüş true; )

Artık bir kullanıcı çalınan bir sayfaya erişirse, yetkilendirme verilerini doğrulamak için bu işlevi kullanmamız gerekir. Çağrı ve doğrulama komut dosyasını aynı checkAuth.php dosyasına yerleştireceğiz ve özel erişime kapatılacak sayfalara bağlayacağız.

/** * İstemcilerin yetkilerini kontrol etmek için komut dosyası */ // Oturum açan istemcilerin kullanıcı adını ve şifresini // kaldıracağımız bir oturum başlatıyoruz session_start(); // Kullanıcının fonksiyonlarını içeren bir dosya ekleyin require_once("functions.php"); /** * Kullanıcının yetkilerini belirlemek için * veritabanı kayıtlarını kontrol ederek kullanıcı adı ve şifresini * kontrol etmemiz gerekiyor. Bu amaçla müşteri hizmetleri sağlayıcısının* hızlı fonksiyonu, yetkili müşteri hizmetleri sağlayıcısının verilerinin doğruluğunu teyit etmektir. * Bu işlev false olarak ayarlanırsa yetkilendirme yapılmaz. * Yetkilendirme gerekiyorsa kullanıcıyı yetkilendirme sayfasına yönlendirmemiz yeterlidir. */ // Oturumda hem kullanıcı adı hem de şifre hakkında bilgi varsa, // bunları kontrol ederiz if(isset($_SESSION["giriş"]) && $_SESSION["giriş"] && isset($_SESSION[ "password" ]) && $_SESSION["password"]) ( // Diğer verilerin doğrulanması başarısız olursa if(!checkAuth($_SESSION["login"], $_SESSION["password"])) ( // Yönlendirme müşteri yetkilendirme sayfası başlığına("location: login.php"); // Oturum açma komut dosyası çıkışına uygulanır; ) ) // Kullanıcının oturum açma adı veya parolası hakkında hiçbir veri yoktur, // önemlidir yetkilendirme olmadığı için kullanıcıyı // yetkilendirme sayfasına yönlendiriyoruz else ( başlık("konum: giriş.php"); // Wiki betiğinin çıkışına atandı;

Şimdi çalınan sayfamızın kodunu oluşturalım. Yeterince affedileceksin.

Muhasebecilerin yetkilendirilmesi ve tescili

Yetkilendirme başarılı.

Çalınan sayfaya erişiminiz reddedildi. Sistemden çıkış yapabilirsiniz.

Gördüğünüz gibi çalınan belge yalnızca tek bir dosya içeriyor – checkAuth.php. Diğer dosyalar diğer senaryolara dahil edilmiştir. Bu yüzden kodumuz hantal görünmüyor. Müşterilerin kayıt ve yetkilendirmelerini organize ettik. Artık serbest meslek sahibi kişilerin sistemden çıkmasına izin verilmesi gerekiyor. Bu amaçla logout.php dosyasında bir script oluşturuyoruz.

/** * Sistemden çıkış yapmak için komut dosyası. İstemci parçaları oturumlar aracılığıyla yetkilendirilir, oturum açma bilgileri ve parolaları süper küresel $_SESSION dizisinde kaydedilir. Sistemden * çıkış yapmak için $_SESSION["login"] ve $_SESSION["password"] dizilerinin değerlerini * boşaltmanız yeterli, ardından kullanıcıyı yetkilendirme sayfasına yönlendiriyoruz */ // Başlatıyoruz oturumu basit bir şekilde session_start() ; unset($_SESSION["giriş"]); unset($_SESSION["şifre"]); başlık("konum: giriş.php");

Müşteri hazırlıklarının kaydedilmesi, yetkilendirilmesi ve doğrulanması için komut dosyası. Kendinize göre özelleştirebilir, ekleyebilir, ihtiyaçlarınıza göre değiştirebilirsiniz. Sizin de yemekleriniz varsa yorumlardan sorabilirsiniz. Burada bahsedilen tüm dosyaları tek bir arşiv halinde indirebilirsiniz.

Not: Nesneye yönelik kod yazmanın daha iyi olduğunun bilincindeyim, şifreyi kapalı görünümde iletmenin ve kaydetmenin kolay olmadığını, veritabanına girilen bilgilerin önceden doğrulanması gerektiğini biliyorum. Biliyorum. Burada bundan bahsetmiyorum.

“Yenilikçi teknolojiler” faaliyetleri, kayıt ve yetkilendirme formlarının genişletilmesi hakkında bilgi sahibi olmanız için Hub'da yayınlanan bazı örnekleri de eklemek istedik.

Kayıt formuna bakalım

İşte birkaç püf noktası:

  • şifreyi kopyalamaya gerek yoktur;

Hayatı sizin için kolaylaştırmak için (bunu yapmanın en iyi yolu bu Google raporunda gösterilmektedir), bir alan ve "maskeyi" kaldıran bir onay kutusu oluşturmak en iyisidir - tüm bunlar küçük bir javascript kodunun yardımıyla yapılır.




1.jQuery kütüphanesi.

2-7. Bir öğe üzerinde başlatma.

B. Saldırgan formun HTML kodu:

5-6. Bu alanların görünürlüğü komut dosyası onay kutusu tarafından değiştirilir.

B.init.js

$(document).ready(function())( $("#testpassword1").showPassword(); $("#testpassword").showPassword(".checker", ( text: "Yapılandırılacak onay kutusu", name: "şifremi göster ")); ));

R.styles.css

Gövde ( yazı tipi ailesi: Arial, Helvetica, serif, sans-serif; ) form ( kenar boşluğu: 15px 0; dolgu: 15px; arka plan: #ccc; renk: #000; kenarlık: 1px katı #aaa; genişlik: 500px; form label.form ( float: left; width: 120px; display: blok; ) form input#testpassword1, form input#testpassword ( float: left; display: blok; ) .clear ( clear: her ikisi de; ) div.checker ( clear : her ikisi de; ekran: blok; kenarlık: 1 piksel noktalı #2d2d2d; renk: #2d2d2d; arka plan: şeffaf; genişlik: 230 piksel;

  • Girilen verilere göre otomatik yeniden doldurma alanları oluşturmak daha kolaydır;

Ne kadar az kortikosteroid uygulamanız gerekiyorsa o kadar iyidir. Bu alanlar önceden girilmiş olan verilerden doldurulabilir. Örneğin “index” alanından değerleri okuyarak “location” alanını doldurabilirsiniz. Basit bir ajax, capelus'un sağ tarafına i yazacaktır. Posta kodundan bir yer ve bölge hakkında veri çıkarmaya yönelik bir AJAX wiki'si.

A. Kitaplıkları “başlığa” dahil etmek:

1.jQuery kütüphanesi.
2. Ana komut dosyası.

B. Saldırgan formun HTML kodu:

Dizin Misto Kraina 

1.Posta kodunun girileceği alan.

B.zip_city.js:

Function fillcitystate(controlname)( var zipcode = trim(controlname.value); //boşluğu düzeltin if(zipcode.length!=5)( //alttakini kontrol edin return false; ) var zipstring = ""; xmlhttp = new XMLHttpRequest () xmlhttp.open("GET", "php/zip_city.php?zip=" + zipcode, true); // php'ye zorla sor xmlhttp.onreadystatechange=function())( //eğer sonuç reddedilirse if (xmlhttp) .readyState= = 4)( var zipstring = xmlhttp.responseText; if (zipstring!="Error")( var ziparray = zipstring.split("|"); document.getElementById("txtCity").value = ziparray; / /konum alanları için değeri ayarlayın document.getElementById("txtCountry").value = ziparray; //kenar alanı için değeri ayarlayın )) ) xmlhttp.send(null); ) //boşluk düzeltme işlevi işlev düzeltme(ler) ( var l=0; var r=s.uzunluk -1;while(l< s.length && s[l] == " ") { l++; } while(r >l && s[r] == " ") ( r-=1; ) return s.substring(l, r+1); )

G.zip_city.php: ajax sorgu çıkarıcı.

Require_once("db.php"); $db_table = "zip_şehir"; //değer için varsayılan değerin ayarlanması $returnval = "Hata"; //GET parametresinin alınması $zipcode = $_GET["zip"]; //İşleniyor if (strlen($zipcode)>5)( $zipcode = substr($zipcode, 0, 5); ) if (strlen($zipcode)!=5)( die ($returnval); ) //işleniyor veritabanındaki değer $query = "SELECT * FROM ($db_table) WHERE zip="($zipcode)""; $resultval = mysql_query($query) or die("Sorgu çalıştırılamıyor:Query: ".$query."".mysql_error($conn)); $satırsayımı = mysql_num_rows($sonuçval); if ($rowcount==1)( $row = mysql_fetch_array($resultval); $returnval = $row["zip"]."|".ucwords(strtolower($row["city"]))."|" .$row["country"];//daha fazlası, başarılı bir giriş oluşturuyor ) echo $returnval;

D.db.php: veritabanına bağlantının yapılandırılması.

//Veritabanı bağlantısı kuruluyor $dbhost = "localhost"; $dbusername = "kök"; $dbpass = ""; $db_name = "blog_login"; $conn = mysql_connect($dbhost, $dbusername, $dbpass) or die("MySQL veritabanı sunucusuna bağlanılamıyor:".mysql_error()); $db = mysql_select_db($db_name, $bağlantı) or die("Veritabanı açılamıyor:".mysql_error($bağlantı));

E. Bir veritabanı tablosu oluşturmak:

'zip_city' MEVCUT DEĞİLSE TABLO OLUŞTURUN ('id' int(11) NULL DEĞİL AUTO_INCREMENT, 'zip' varchar(5) NULL DEĞİL, 'city' varchar(255) NULL DEĞİL, 'country' varchar(255) NULL DEĞİL, BİRİNCİL ANAHTAR (`id`)) ENGINE=InnoDB VARSAYILAN CHARSET=utf8 AUTO_INCREMENT=41921;

  • giriş alanı için otomatik bir değişiklik oluşturabilirsiniz;

Her alan girilecek değeri ayarlamanıza olanak tanır. Örneğin, bir kullanıcı iki karakter girebilir, harfle başlayan ülkelerin listesini görüntüleyebilir ve istediğini kolayca seçebilir. Bundan önce kesinlikle Anavatanlık adına hiçbir iyiliğe kapılmayacaksınız. AJAX Otomatik Tamamlama, jQuery tarafından desteklenmektedir.

A. ‹Başlıktakiler>:

1.jQuery kütüphanesi.
2. jQuery için otomatik doldurma komut dosyası.
3. Ana komut dosyası.

B. Saldırgan formun HTML kodu:

Kraina 

1. Bölge adını girmeniz gereken alan.

V.init.js:

Var seçenekleri, a; jQuery(function())( options = ( serviceUrl:"./php/autocomplete.php" ); /*örnek dosyanın adresini gösterir*/ a = $("#query").autocomplete(options); / *otomatik tamamlama nesnesinin kimliğini belirtir = "sorgu"*/ ));

G. otomatik tamamlama.php: ajax sorgu toplayıcı

If(isset($_GET["query"]) && (!empty($_GET["query"])))( require_once("db.php"); $db_table = "system_countries"; //veritabanı tablo adı $ query = $_GET["query"]; //sorgular alanları oluşturur $variants = ""; $q = "SELECT `name_en` FROM `($db_table)` WHERE `name_en` REGEXP "^($query)(. * )" GROUP BY `name_en`"; ); seçenekler*/ ) $değişkenler = implode(",",$değişkenler); /*tüm seçenekleri arka arkaya yazın*/ /*bir yanıt oluşturun*/ $request = "( query:"".$query."", önerileri:[".$variants."] )"; yankı $istek; ))

D. Veritabanı tablosu oluşturmak:

'Sistem_ülkeleri' VARSA DROP TABLO; CREATE TABLE `system_countries` (`id` int(11) NULL DEĞİL auto_increment, `name_en` char(128) NULL DEĞİL, `name_ru` char(128) default NULL, `code` char(2) NULL DEĞİL, `_order` int(3) default "0", `bağımsız` minikint(1) default "1", PRIMARY KEY (`id`)) MOTOR=MyISAM DEFAULT CHARSET=utf8;

G.styles.css:

Otomatik tamamlama-w1 ( arka plan:url(/autocomplete/img/shadow.png) tekrarlama yok sağ alt; konum:mutlak; üst:0px; sol:0px; kenar boşluğu:8px 0 0 6px; /* IE6 düzeltmesi: */ _background :none; _margin:0; ) .autocomplete ( border:1px katı #999; arka plan:#FFF; imleç:default; text-align:left; 6px;/* IE6'ya özgü: */ _height:350px; _margin:0; _overflow-x:gizli; ) .otomatik tamamlama. ) .autocomplete güçlü ( font-weight:normal; color:#3399FF; )

  • Partnerinizin verilerini nasıl girmelisiniz?

Birçok çevrimiçi mağaza, ödeme ve teslimat adresi alanlarıyla birlikte çok çeşitli ödeme formları sunar. Çoğu zaman değerleri aynıdır. Girilen alanların değerlerini neden tek tıklamayla kaydetmiyorsunuz? Program basittir ve tekrarlanan değerin güvenilirliğine bağlı olarak onu farklı durumlarda durdurabilirsiniz.

A. ‹Başlıktakiler>:

1.jQuery kütüphanesi.

2. jQuery Eklentisini Seçin.

3. Ana komut dosyası.

B. Saldırı formları için HTML kodu:

Ben: Takma ad: E-posta: Ülke:
Teslimat ayrıntılarını kopyala
Ben: Takma ad: E-posta: Ülke:

Lütfen öde.

14. Onay kutusu kopyası.

V.init.js:

//sayfa tıklanırsa $(document).ready(function() ( //onay kutusu etkinleştirilirse veya devre dışı bırakılırsa $("#copyaddress").click(function() ( // etkinleştirilirse if ($( "#copyaddress") ) .is(":checked")) ( //dış görünüm giriş alanı için $("#shipping_fields input", ":visible", document.body).each(function(i) ( // ödeme alanlarındaki değerin kopyalanması / / tüm teslimat alanları için $(this).val($("#billing_fields input").eq(i).val()); ));//drop- ile çalışmaz aşağı menüler, dolayısıyla eklenti işlevleri durgunlaşır var bcountry = $ ( "#bcountry").val(); $("#scountry").selectOptions(bcountry); ) else ( //onay kutusu devre dışı bırakılırsa //for dış görünüm giriş alanı $("#shipping_fields input", ":visible" , document.body).each(function(i) ( //teslimat veri alanlarını temizle $(this).val(""); )); $( "#scountry").selectOptions(""); ) ) ) ;));

  • Görünüşe göre insanlar captcha'yı okumaktan yorulmuşlar :)

Siz bile captcha'daki okunamayan karakterleri okuyup girmekten melodik bir şekilde yoruluyorsunuz. Fahişelere merhamet edelim ama robotların geçmesine izin vermeyelim. Kullanılabilecek çok sayıda yöntem var, gelin bunlardan birine bakalım. Honeypot Captcha yaklaşımı - formda bir alan oluşturur, görünmez koristuchevi ancak bot tarafından görülebilir. Bu anlamları doğruladıktan sonra doğru kişilere sorun yaratmayan kötü spam gönderenlere zarar verebiliriz. Dönüşüm oranına captcha ekleyin.

A. Saldırgan formun HTML kodu:

Ben Takma ad E-posta

B. saldırgan js ekleyin:

Function check() ( if(document.form_find.body.value)( console.log("DİKKAT!!! SAYFADAKİ BOT!!!"); )) )

Yetki formlarını isteyelim

Yetkilendirme süreci, insanlar siteden "kaçtığında" mecazi olarak belirgindir. Orta çağda, nezih standlar zengin selamlar ve reveranslarla doluydu. Çağa ayak uyduralım ve bunu öyle yapalım ki, hoş karşılanmamız için tek gereken sıcak bir el. Sizden siteye giriş yapmanızı rica edelim.

  • Giriş yaptıktan sonra sayfada hesabınızdan mahrum bırakılırsınız;

Aralarından seçim yapabileceğiniz iki seçenek vardır: görünen form ve kalıcı pencere. Bu form, yan tarafın yalnızca küçük bir bölümünü kaplar, bu seçenek için kolay ve hızlı bir seçenektir.

A. Kitaplıkları “başlığa” dahil etmek:

3. Ana komut dosyası.

B. Saldırgan formun HTML kodu:

Yetkilendirmek için giriş: kullanıcı adı ve şifre: şifre girin

4. Form düğmesini açın.

7-22. Formun kendisi.

19. Çerezleri mümkün olduğu kadar uzun süre yüklemenizi sağlayan onay kutusu.

23. Bilgi için yer.

St jqeasy.dropdown.js:

$(document).ready(function() ( /*main function*/ $(".btnsignin").click(function(e) ( /*“Ayrıl” düğmesine tıklandığında*/ e.preventDefault(); $ ) ("#frmsignin").toggle("fast",function() ( /*formun görünürlüğünü değiştirir*/ $("#username").focus(); /*giriş imlecini oturum açma bilgilerine taşıyın field*/ )); $ (this).toggleClass("btnsigninon"); /*görünümü değiştirmek için düğmedeki sınıfı değiştirir*/ $("#msg").empty(); )); $(" .btnsignin"). ( return false; )); *tek bir form nesnesinde değil*/ $(".btnsignin").removeClass("btnsigninon"); /*şekli birleştirin ve top gibi çevirin*/ $("#frmsignin"). ; )); ( /*iyi geldi*/ $("#frmsignin").text("Oturum açıldı!"); /*metin bildirimi aşırı güçlü*/ $("#frmsignin").delay (800).fadeOut(400); $("#signbtn").html("Giriş"); /*çıkış butonunu değiştir*/ ) else ( $("#msg").html(data); $("#kullanıcıadı").focus() ; ))))); )); function validate(formData, jqForm, options) ( /*girilen verileri doğrulama prosedürü, işleme süreci */ var form = jqForm; var un = $.trim(form.username.value); var pw = $.trim(form . şifre.değer);var unReg = /^(3.20)$/;var pwReg = /^(6.20)$/;var hasError = false;var errmsg = ""; = " Oturum açma bilgilerini girin:

"; hasError = true; ) else if(!unReg.test(un)) ( errmsg = "Giriş 3 - 20 karaktere tabidir (a-z, 0-9, _). "; hasError = true; ) if (! pw) ( errmsg += "Şifreyi girin "; , #, $, %, &, *, (,), _)."; hasError = doğru; ) if (!hasError) ( $("#msg").html(" sordu... "); ) else ( $("#msg").html(errmsg); return false; ) )

G. dropdown.php:

If(($_POST["kullanıcı adı"]=="giriş") && ($_POST["şifre"]=="şifre"))( echo "OK"; )else( echo "Geçersiz kullanıcı adı veya şifre"; )

D.style.css:

Gövde( padding:20px; font:12px Verdana, Cenevre, sans-serif; color:#333; ) #container ( width:700px; /*margin:0 auto;*/ padding:13px 10px; border:1px katı #999 ; ) a.btnsignin, a.btnsignout ( arka plan:#999; dolgu:5px 8px; color:#fff; text-decoration:none; -radius:4px; border-radius:4px; ) a.btnsignin:hover, a .btnsignout:hover ( arka plan:#666; ) a.btnsigninon ( arka plan:#ccc!important; yok; ) #frmsignin ( display:none; arka plan rengi:#ccc; konum:mutlak; üst: 89px; genişlik:215px ; dolgu:12px; -yarıçap:5px;-moz-border-radius-topleft:0;-webkit-border-radius:5px;-webkit-border-top-left-radius:0; border-radius:5px; yarıçap :0; z-index:100; ) #frmsignin girişi, #frmsignin girişi ( display:block; -moz-border-radius:4px; katı #666;margin:0 0 5px; padding:5px; width:203px; ) #frmsignin p ( kenar boşluğu:0; ) #frmsignin etiketi ( font-weight:normal; ) #submitbtn ( -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; arka plan- rengi :#333;kenarlık:1px katı #fff;renk:#fff;dolgu:5px 8px; kenar boşluğu:0 5 piksel 0 0; yazı tipi ağırlığı:kalın; #000; imleç:işaretçi; ) .submit ( padding-top:5px; ) #msg ( color:#F00; ) #msg img ( marj-bottom:-3px; ) #msg p ( marj:5px 0; ) # msg p:son-çocuk ( kenar boşluğu-alt:0px; ) h1( kenar boşluğu:0 otomatik; )

Kalıcı pencere tüm dikkati yoğunlaştırır ve forma ek bilgi veya açıklama yerleştirmenize olanak tanır.

A. Kitaplıkları “başlığa” dahil etmek:

4. Ana komut dosyası.

6. Temel stiller.

7. Modal pencerenin temel stilleri.

B. Saldırgan formun HTML kodu:

Ayrılmak Özel ofis

© 2022 androidas.ru - Android hakkında her şey