Mysql verileri kaldırmak için en güvenli yolu nedir?

3 Cevap php

I want to allow users as well as me(the admin) to delete data in mysql. I used to have remove.php that would get $_GETs from whatever that needed to be deleted such as... remove.php?action=post&posting_id=2. But I learned that anyone can simply abuse it and delete all my data.

So what's the safest way for users and me to delete information without getting all crazy and hard? I am only a beginner :) I'm not sure if I can use POSTs because there is no forms and the data isn't changing. Is sessions good? Or would there be too many with postings, user information, comments, etc.

Örn: James ilanları birini (o = 5 posting_id edilir) silmek istiyor. Bu yüzden kaldır linki tıklar ve o? Action = yazı & posting_id = 5 remove.php götürür.

EDIT: Alright, so now I am a little confused. While I can't be 100% secure, how do I do this with $_POSTs? SOO I should use GETs to get all the data to remove.php, THEN have a confirmation submit button and when users click on it, it put all the data into POSTs and delete from the dbc?

3 Cevap

Ben yerine aslında verileri kaldırma, silinmiş olarak 'işareti' kayıtlara tercihinde gurun8 echo edeceğiz. Ve o zaman tabii ki, sen doğrulanmış kullanıcı yazıyı silmek için izniniz olup olmadığını kontrol etmek gerekir.

Ancak, bu $_GET, hatta kimlik doğrulaması ile güvenli değildir söz very önemli görünüyor because of cross-site request forgery.

Amazon GET isteğine dayanan sepetinize şeyler ekleyerek düşünün. Ben yapmam gerekiyor Tüm bu URL ile benim sayfada bir görüntü alınır ve bu sayfayı ziyaret ve Amazon oturum herkes ürünler otomatik eklenecektir.

Sizin örnek maç için, ben Jame yazı sevmiyorum, bu yüzden benim gibi bu sitede bir resim koymak:

<img src='http://example.com/remove.php?action=post&posting_id=5'>

Ve ben sayfama ona bir bağlantı göndermek, ve zaman o senin siteye giriş oluyor umuduyla, bunu kontrol etmesini isteyin. Çünkü, tabii, o küçük düğme 'Keep me logged' olduğunu tıkladım.

Bu yüzden you are right to be concerned about using GET . If you don't want to litter pages with forms, then confirm the action by POST.

Kayıtlarını silme korkunç bir uygulama türüdür. Eğer ya da birisi bir hata yaparsa sorunu çözmek için gerçek bir başvuru yok. Expunged kayıtları diriltmek çok zordur.

Yerine kayıtları silme, kullanıcıların kayıtları "delete" zaman kapalı toggled bir "aktif" (örn. Boolean) sütun ekleyebilirsiniz. Esasen kullanıcıların onları geçiş kayıtları askıya olacak ve kayıtların dava hatalar veya kötüye kaydedilmiş olacaktır, ancak kullanıcı "silinmiş" olarak görünür. Diğer sorgu ile bu işi yapmak için, sadece eklemek bir yere aktif = 1 fıkra.

Daha sonra kalktı, geçmiş tarihli kayıtları temizlemek olurdu bazı özel tarih aralıklarla çalıştırılan bir betik olabilir. Ayrıca bakım bu tür için zaman damgası tür gerekiyordu.

Sadece bir düşünce. Bu değer ne varsa almak.

Peki bir oturum açma komut dosyası ile kullanıcıların kimlik doğrulaması başlamak zorunda.

Eğer mümkün olan en basit çözüm istiyorsanız, o zaman basit bir. Htaccess ile remove.php sahip olduğu dizini korumak öneririm username and password.

Farklı kullanıcılar veritabanı girdilerini silerek için farklı haklar varsa, o zaman muhtemelen bir PHP oturum açma komut dosyası oluşturmak ve PHP oturumu kullanmalısınız.

Ben aptal değilim, ama ben gerçek bir sitede yer olabilir basit bir PHP giriş öğretici için oldukça uzun bir süre için arama varsa bana Bonk I () (session_register kullanmak değildir, mysql_real_escape_string kullanır (), htmlspecialchars () vb) ve sadece bir bulamadık!

Muhtemelen this bir yakın geliyor, sadece session_register değiştirmek zorunda () $ _SESSION olanlarla değişkenleri bu register_globals (PHP5'ta varsayılan) olmadan çalışmak için.