Gizli / görünmez HTML kodu ile nasıl başa zarif kodlama?

4 Cevap php

Ben bir ask-ve-cevap sitesi geliştiriyorum. Bir "olarak en iyi yanıtı seçin" butonuna her cevabın yanında olduğunu, bu düğme soranın görünür olmalı ama diğer izleyiciler görünmez olmalıdır. Web sayfasının diğer kısmı hemen hemen aynıdır. Peki nasıl bu web sayfası kod? Ben izleyici kimlik düğme görünür olmalıdır olup olmadığını belirlemek için her zaman kontrol etmelidir. Bir soruya pek çok cevap varsa, soranın dışında izleyiciler gizli birçok düğme bulunmaktadır. Kodlama bu tür ekstra bant genişliği bir çok atık mı? Ve ben kodlama bu tür biraz balık olduğunu düşünüyorum. Bunu yapmak için daha iyi bir yolu var mı?

Aynı problem "Yorum Ekle" butonu ile gider. Sağ altında olduğu bir 20 cevaplar varsa, orada olacaktı, düğme ve bir gizli <form><textarea></textarea></form> "Yorum Ekle" 20 <form></form>, gizli kodu büyük ölçüde HTML boyutunu artırmak gizli dosya. Zarif bir yolu yerine var mı?

Gelince düğmeyi, herhangi bir oturum açmış kullanıcının yorum ekleyebilirsiniz "yorum ekle", yani hiçbir kimlik farklılaşma yoktur. Peki nasıl sorunu ile başa çıkmak için?

4 Cevap

Eğer fazla yer alarak 20 minör formları ile ilgili iseniz (ipucu, onlar, en sunucuları kendi çıkış sıkıştırmak yok, bu yüzden ekstra formları hemen hemen uzakta sıkıştırılmış), sadece basit bağlantıları kullanabilirsiniz.

Testleri ve bunu yapmak için kullanıcının kimliğini kontrol etmelisiniz eğer sadece kullanmak gizleme. Ifadesi (hatta 20 kez koştu ise) hemen hemen sıfır ise, bu tek bir yükü.

"Prematüre optimizasyonu tüm kötülüklerin köküdür" - Bu bilgi, bu canlı.

Bunu yapmak için "şık" bir şekilde (yalancı) olacaktır:

foreach($answers as $answer)
{
    // Print answer here
    if($current_user == $question_asker)
    {
        echo "button form here";
    }
    echo "comment form here";
}

Şeyler bu tür hayır, bant genişliği bir atık değildir. Onlar şu anda sayfayı görüntüleyen kullanıcı için kullanılabilir, bu nedenle kontrol ediniz ve eğer evet, sadece sayfa üzerinde bu kontrolleri içermelidir kim senin açmış (onlar açmış iseniz) kullanıcı ilişkilerinin ne olduğunu ve öğeye onlar bakıyorsunuz.

: Bu kadar basit olabilir

if ($current_user_id == $question_asker_id) {
  // show 'accept as best answer' form
}

Bir şey için herhangi bir değişiklik izin vermeden önce de sunucu tarafında form-data kontrol ettiğinizden emin olun.

Sen hiding HTML olması gerekiyordu değil mi not include HTML zannediyorsunuz. Yani sunucu üzerinde, böyle bir şey yapıyoruz:

if ($loggedIn && $user == 'asker') {  // pseudocode
    echo acceptButton();  // outputs the HTML for the button
}

Non-asker kullanıcılar bile kendi tarayıcısında kabul düğme için HTML almazsınız.

Ben izleyici kimlik düğme görünür olmalıdır olup olmadığını belirlemek için her zaman kontrol etmelidir.

Evet, kontrol edin ve ardından düğmesine görünmüyor. Düğmeye basıldığında bir kez ve siz onu başlatılan asker olmadığını eylemi işlerken kez bu kolayca kötüye çünkü ek olarak da kontrol etmelisiniz.