Bu flash, php ve mysql kötü bir giriş algoritma mı?

4 Cevap php

Sitem flaş olduğunu. Oturum flaş da. Bu giriş akışı:

  1. Kullanıcı adı ve şifrenizi girin

  2. Sayfayı authentication.php Gönder

  3. İşte authentication.php sayfasında benim şüphe:

    (1) sonrası parametrelerini kontrol edin, yani kullanıcı adı ve şifre

    (2) Sha / parola hash

    Kullanıcıların tablo (3) Q1 (sorgu 1) seçin kullanıcı adı ve şifre

    Eşleşti Eğer kullanıcı yasağı durumu hakkında hala varsa (4), başka bir sorgu (Q2) do, kontrol

    Kullanıcı bugün için ilk günlük ise kullanıcı ban durumu değilse (5), bir sorgu yapmak (Q3) kontrol etmek için

    (6) ilk günlüğünde ise, kullanıcıya senin için biraz para sorgu (Q4) güncellerim

    (7) oturumu, kimliği, bir karma oturum değişkeni md5 kullanarak oluşturun. yani

    $ _SESSION ['Loggin'] = 1;

    $ _SESSION ['Hash'] md5 (username.secret) =;

    (Ben sadece bu görmezden, başka bir sayfaya başka bir kimlik doğrulaması için $ _SESSION ['hash'] kullanın)

  4. Yanıp sonucu döndürür.

Ben mysql sorguları, 2 karma (php hesaplamalar) alots onun çok kötü bir giriş akışı, biliyorum. Ben hala bu daha iyi bir yol arıyorum / düşünüyorum. Vb akışını iyileştirmek için nasıl bir fikir sorguyu birleştirerek gibi? (Ben yukarıda bahsedilen tüm şeyler karşılaması gerekir)

[Şimdiki giriş yavaş]

4 Cevap

Aşağıdaki soruların cevapları yardımcı olacağını sorunun daha soyut bir görünüm elde etmek için:

  • Ne ortam gelişiyor? % 100 Yerel (lokal kodu ve Db veya yerel kod ve dış Db? Vb)?
  • Bu benzer bir şey geliştirdik ve bu sorunları olmadı, hepsi% 100 'taze' kod mi?

Bir yan not olarak ben bir web sayfaları boyut ve indirmek için geçen sürenin dökümünü gösterir Chromes yerleşik kaynak monitör kullanabilirsiniz. Ben FireFox / Kundakçı olandan bu daha yararlı buluyorum.

Sorgu süresi test etmek phpMyAdmin veya benzeri gibi bir şey sizin sorguların her test ettiniz mi? Her sorgunun toplam süresi ekleyin ve fark ne olduğunu görmek.

Good luck, Alex

Merhaba ben bir tek sorgudaki birleşimler yapmayı tercih ederim.

SELECT u.user_id, u.name, u.password, u.last_last FROM users u 
LEFT JOIN banned b ON u.user_id = b.user_id
WHERE u.name = ? AND u.password = ?;

Sürecin kendisi kötü değil.

Bu performans verileri olmadan yavaş neden söylemek gerçekten zor. % 90 şans performans var düşündüğünüzden daha tamamen farklı bir yerde kaybolur. Etrafında kilitleniyor nerede olduğunu görmek için (milisaniye dahil) geçerli saati yazdıracak kod satır bir çift koymak.

Bir kesinlikle yardımcı olabilir ama orada harcanan zaman değilse, sadece anlamak ve korumak için kod zor yapacaktır katılın. Eğer DB erişim uzun sürer bulursanız, ben size sorguları için doğru dizin olduğunu kontrol etmek öneririz. Indeksler Tamam iseniz katılmak yazmak için yardıma ihtiyacınız varsa, tabloların DLL ile bir soru gönderebilir. Ama önce, performansını ölçmek.

Performans ve güvenlik ile ilgili bir kaç fikir:

3 Adımlar - 6: veritabanından okurken size veritabanı doğru tasarlanmış (ve göründüğü gibi ArneRie sadece pseudo-yayınlanmıştır varsa, kullanıcı adı, şifre, kullanıcı durumunu ve tek bir sorguda son giriş tarihini seçmek gerekir sadece bunu MySQL deyimi).

(Onlara ödül vererek) kullanıcıyı güncellenmesi bir kerelik INSERT / UPDATE ve bu kadar performans etkisi olmamalıdır.

Kenara MySQL sorgu sayısı aşağı kesim (ve isteğe s kullanarak alted hashes for passwords) işlemi Tamam görünüyor.