PDA

View Full Version : آموزش: حذف سطرهای یک جدول به صورت ajax



mahdi_1986
شنبه 26 فروردین 1391, 03:58 صبح
با سلام
حدود 2 الی 3 روزی می شود که دنبال یک کدی بودم که به صورت زیر عمل کند:
وقتی اطلاعات از پایگاه داده خوانده می شود و در جدولی نمایش داده می‌شود در انتهای هر سطر لینکی قرار داده شود که وقتی کاربر بر روی آن کلیک می‌کند ابتدا از کاربر سوال شود که آیا از حذف این رکورد اطمینان دارد یا خیر؟ اگر جواب مثبت بود سطر مورد نظر حذف شود و جدول بدون Refresh شدن بروز شود.
من از روش زیر استفاده می‌کنم، و امیدوارم درست باشد:
4 فایل به نام های زیر داریم:
1-
conf.php
2-
delete.php
3-
delete_row.js
4-
index.php

در فایل conf.php متغیرهای لازم برای ارتباط با پایگاه داده قرار دارد.
در فایل delete.php کارهای سمت سرور را انجام می‌دهد.(برای حذف کردن از جدول پایگاه داده)
در فایل delete_row.js هم کدهای مربوط به ajax قرار دارد.
در فایل index.php هم اطلاعات از پایگاه داده خوانده می شود و در جدول نشان داده می‌شود.

فایل مورد نطر در پیوست وجود دارد.
در ضمن اگر فایل مورد نظر ایراد داشت بنده حقیر رو به علت کم سوادی زیاد ببخشید، هر کی توانست فایل را کامل‌تر کند تا شاید روزی به کاره کسی بیاد،
اگر سوالی بود در خذمت هستم،

یا حق

eshpilen
شنبه 26 فروردین 1391, 09:49 صبح
فقط از نظر اصولی/امنیتی، باید $id رو قبل از درج در کوئری از تابع mysql_real_escape_string عبور بدی.
کلا با هر دیتایی از سمت کلاینت که میخواید مستقیما در کوئری درج کنید باید همین کار رو انجام بدید. فرقی نمیکنه GET باشه، POST یا حتی دیتایی که از یک کوکی گرفته شده. البته اگر id قبل از این کار بوسیلهء متد دیگری طوری فیلتر میشه که احتمال وجود کاراکترهای خاص درش وجود نداره، مثلا چک میشه که حتما یک عدد صحیح باشه، اونوقت نیازی به mysql_real_escape_string نیست، اما با این وجود استفاده از mysql_real_escape_string حتی در این موارد، یک عادت خوب و لایهء امنیت اضافه و از نظر تغییرات احتمالی آینده بهتره (که اگر فرضا کد بخش ولیدیت شما/فرمت id تغییر کرد بخاطر فراموش کردن اثرات این کار یک حفرهء امنیتی در برنامه بوجود نیاد).

ضمنا اگر جعل کردن id میتونه خطرناک باشه، مثلا کاربر بتونه با دادن یک id دلخواه رکوردی رو که مجاز به حذفش نیست حذف کنه، باید قبل از عملیات، مجاز بودن مقدار id رو هم چک کنید که از طرف اون کلاینت قابل قبول باشه. مثلا طرف فقط بتونه رکوردهایی رو که متعلق به اکانت کاربری خودش هستن حذف کنه.