Bilinmeyen bir hata dinamik bir web sitesi oluşur En iyi uygulamalar?

5 Cevap php

Ben (her site gibi) bazı gizli hataları olan bir PHP sitesi var. Soru, bir hata oluştuğunda ne olması gerektiğini nedir?

Bir hata durumunda sayfa biraz kırık nerede olduğunu, hatta bazen bir iç hata mesajı sayfasına dökülür, PHP çok ve diğer siteleri görmek, ancak genellikle sitesi kısmen kullanılabilir kalır.

Ben takip diğer yaklaşım anında sayfa işlemeyi sonlandırmak ve kullanıcıya bir hata mesajı göstermek için.

Sizce daha kullanıcı dostu bir yaklaşım hangisi? Sayfanın bir kısmı hala render ve kullanışlı olabilir, böylece uygulamanın, ne olursa olsun hata devam edelim? Yerine gösterilmesi gereken bu kullanıcı ve uygun bir hata mesajı bir yarı pişmiş sayfayı göstermek için daha kötü çünkü ya, derhal denetim akışını sonlandırmak?

Güncelle: Bu sayfa bulunduğunda, daha doğrusu bu davalar hakkında yaklaşık 404 sayfa değil, ama sorun bunu üreten sırasında ortaya çıkar.

5 Cevap

PHP E_ERROR mesajlarının ve E_WARNING düzeyi arasındaki farklılık (diğerleri arasında, ancak bu 2 en yaygın olması muhtemeldir). E_WARNING düzeyi uyarıları sadece devam etmeden önce atılmış olacak ise PHP'nin varsayılan davranış, E_ERROR düzeyi hataları, senaryonun tüm diğer yürütülmesini durdurmak olacaktır.

PHP Manual açıklandığı üzere, bu sebeple yapılır; Genel olarak, ölümcül hataları sadece o vardır, ve bu özel hata işleyicileri kullanarak mümkün olsa bile, komut dosyası yürütülmesine devam çalışmamalısınız. Umarım - - çok nadir, ancak bir attırmayı yaptığında, ben kullanıcıya açık, anlamlı hata sonlandırmak ve görüntülemek için en iyi uygulama düşünün ölümcül hatalar vardır.

Uyarılar olsa farklı bir yaklaşım hak; onlar ölümcül değil ve yürütme sonlandırmak yok çünkü, sadece belki düzgün görüntülenemiyor sayfanın hangi kısmının kullanıcıya gösteren küçük bir uyarı göstermek, hata oturum ve sadece komut yayınlanmaya devam etmelidir.

never kullanıcıya PHP'nin varsayılan hata / uyarı mesajları göstermek için ama ben öneririm. Onlar profesyonelce çirkin ve sitenizin veritabanı ve dosya yapısına daha fazla kötü amaçlı kullanıcıların fikir verebilir.

TL;DR version: PHP'nin varsayılan davranışı Kaynaş, ama her zaman biraz daha göze hitap eden bir şey için hata işleyicisi değiştirin.

Edit: Ben sorunun parçası oynanırsa, ve gerçekten 'bilinmeyen' bir kısmını alamadım. Benim cevabım yine olsa duruyor; sürece hata (yani tamamen, senaryonun akışını aksatmayacak) ölümcül değil gibi yürütülmesini durdurmak için hiçbir neden yoktur. Onlar bir E_ERROR seviyesinin sanki komut (sorgulanan tüm içeriği engellemek yani Veritabanı hataları) geri kalanını etkisi yok hataları olsa da, ele alınmalıdır.

Ben sunucu tüm 404 Kullanıcı ve 500, 503 vb işlemek izin .. ve otomatik bir Oops ile güzel bir sayfada kullanıcı işaret gibi! bozulmamış sitede gezinmeye mesajı o / o oradan gidebilirsiniz. Ayrıca ben geri gitmek butonunu (bir javascript history.go (-1) ekleyerek Seviyorum: İnsanlar rağmen bu yaklaşımı hakkında karışık duygular var

if you dnt know how2 add the apache server error re-directs just check out http://onlamp.com/onlamp/2003/02/13/davidsklar.html

Bilinmeyen bir hata tanımı gereği oluştuğunda Eh neyse, bu bilinmeyen bulunuyor. Yani ne yapacağını otomatik olarak bilmeniz gerekir.

En iyi yolu güzel bir hata mesajı (her bir çerçeve bir hata olduğu zaman, belirli bir içeriği görüntülemek için destekler) göstermektir.

Eğer bu hataları izlemek ve bunları düzeltebilirsiniz yüzden kendinize bir e-posta gönderme tabii ki, aynı zamanda yapıyor olması gereken bir şeydir.

Bu genel bir soru ve sadece PHP ile sınırlı değildir.

Bir yarı pişmiş sayfayı göstermek asla. Bir sayfa kullanıcı (nedeni önemli değil) için kullanılamaz kılacak bir hata varsa, bir hata sayfası görüntülemeniz gerekir. Eğer alamayan bir RSS beslemesi gibi - - sayfa zaten kabul ettik, bir hata varsa o zaman devam edin ve sayfanın çalışma kısmını göstermek.

Işleme bir hata varsa, diğer yandan, - yine, sebebi önemli değil - Eğer kullanıcı ve onları yeniden izin verdiğini göstermektedir.

Raylar üzerinde Ruby, biz (doğrulama sorunları dahil olmak üzere) bir işlem hatası sonra her sayfasını yeniden görüntülemek için hazırız. Bir sorun render varsa, ancak bir hata sayfası gösterilir olacaktır.

Bu, tüm sağduyu, ama sadece hatalar% 99 kökeni bilinmeyen (istatistik yapılmış, ancak temelde doğrudur) ama iyi bir yazılım (kullanıcı açısından) bu incelikle tepki yapılmış olduğunu unutmayın.

Oldukça Django çerçeve uygulama gibi bana geri "İç hata" sayfası ve e-posta geri izleme ve diğer hata ayıklama bilgileri göstermek için. Bu muhtemelen benim sorunu gidermek için en iyi yoldur. (Özellikle kolayca tekrarlanabilir değildir.)