PHP - Bu yeniden gönderilmesini engellemek için iyi bir yöntem var mı?

4 Cevap

Bu webform resubmission, ancak bu sefer içerik bir web tabanlı RPG önlenmesi ile ilgilidir. Oyuncu bir canavar yendi sonra bir öğe damla olur. Yani geri düğmesine basarak gelen kullanıcıyı engellemek isteyen, ya da 'kveırılan' madde-damla için, ferahlatıcı tutmak olacaktır.

Öğe açılan benzersiz bir 'açılır-işlem-id' depolamak için bir DB kullanarak, sık sık olduğu gibi bana olanaksız görünüyor. Ben aşağıda bir fikri eğlenceli ediyorum:

  1. Her mücadele için, geçerli tarih-saat, kullanıcının kimliği dayalı ve DB ve oturum içine saklamak eşsiz bir değer yaratmak. Bu bir kimliği göz önüne alındığında, değeri geri getirebilir mümkündür

  2. Oturumdan değeri DB varsa, o zaman 'savaş' geçerli ve kullanıcı mücadele ile ilgili tüm sayfalara erişmesini sağlamak. Bu DB yoksa, o zaman yeni bir savaş durumu başladı

  3. Savaş bittiğinde, benzersiz değer DB temizlenir.

  4. DB 30mins eski değerleri temizlendi.

Bu yöntemin herhangi görüşler, iyileştirmeler veya tuzaklar karşıladı

4 Cevap

Bu soru şey var, çok öznel size can yapmak veya can not çevresinde zaten mevcut veri / çerçevesine bağlı olarak, yapın.

Verdiğiniz çözüm çalışması gerektiğini, ancak mevcut var eşsiz mücadele / yağma / kullanıcı verilere bağlıdır.

Ben bu en iyi olduğunu düşünüyorum ne olduğunu alabilir? Ben iyi olduğunu düşünüyorum budur :)

  1. Bu mücadele veri eşsiz bir parça ile birlikte, kullanıcı kimliği alın. Bir şey savaş başlangıç ​​zamanı gibi, muharebe bitiş saati, vb
  2. Bir veritabanı içinde saklayın, ya da ne kadar depolama sistemi var
  3. Eğer ganimet toplamak sonra, bu kayıt silme

Eşsiz bir mücadele veri varsa bu kullanıcı kimliği ve o yolu, onların yağma yok.

Ve haklısın; yağma her parça izleme geçici veri depolama daha iyiyiz, çok fazla.

Makul bir yaklaşım gibi görünüyor. Ben oyuncu yerde zaten mücadele olduğu gerçeğini saklamak zannederler. Bir kavgadan kaçınmak istiyorsanız Aksi takdirde, onlar sadece kendi tarayıcısı kapatabilirim?

Biten mücadele ve ganimet bırakarak bir atomary işlem olarak tedavi edilmelidir. Bir kavga varsa, herhangi bir düşme yağma var olamaz.

Bu oyun tasarımına bağlıdır: Yalnızca hamle arasında sayılmasını döner, ve bu nedenle uzun duraklar Roguelikes yönünde daha gider misin (: NetHack in hile kabul edilmez sohbet odası, not yoluyla diğer insanlara danışmanlık gibi) kesinlikle mümkündür? Kullanıcılar sadece kendi oyunlarını belirli noktalarında veya herhangi bir yerde kaydedebilir miyim? Yani tasarımında büyük bir fark yapar, örneğin bir Thorarin benzer patlatır için yol yapım bahseder.

Oyun sadece bir kurtarışla geleneksel roguelike yol giderse, bodrum ve permadeath çevirin, daha sonra herhangi bir oyun ile ilgili bilgi (envanter, haritalar, düşmanlar ve onların devlet ile birlikte herhangi bir karakter için geçerli dönüş numarasını kaydetmek mümkün olacaktır ), ve daha sonra bu nedenle iki kez dönüş oynamaya önlemek için, oyuncu herhangi bir işlem de buna karşı kontrol edin.

Bu formu yeniden olsa bile bu tamamen yeni bir savaş / hazine karşılaşma üretecek şekilde Alternatif, istemci tarafında javascript içinde her şeyi paket olabilir.