راکت

جلوگیری از حذف و ویرایش ناخواسته با متد GET در PHP

8 پاسخ

سلام
من خیلی وقت پیش ها با php یه پنلی نوشتم و url برای ویرایش محصول اینجوری بوده :

domain.com/index.php?edit_product=17

یا برای حذف محصول اینجوری بوده

domain.com/index.php?delete_product=17

اون موقع با لاراول آشنا نبودم
اصلا با php هم درست و حسابی آشنا نبودم ، هنوزم نیستم 😁
میدونم باید با متد های put و delete و crf توکن و... کار میکردم ولی خب اون موقع همچین کاری نکردم چون نمیدونستم 😐
فقط موقع ورود کاربر اومدم همچین کاری کردم و آیدی کاربر رو تو سشن ذخیره کردم

$id = $_session['user_logged_in'];

و دیگه با همین آیدی مقالات کاربر رو گرفتم و با روت های بالایی که گفتم عملیات ویرایش و حذف انجام میشده
حالا به مشکلی خوردم که نگم هم خودتون فهمیدین دیگه 😐🤦‍♂️
هر کاربری توی url یه آیدی الکی وارد کنه میتونه کالایی رو ویرایش یا حذف کنه
دیگه یه جوری هم هست نمیشه بشینم دوباره 0 تا 100 با لاراول بنویسم.
ممنون میشم یه راهنمایی بکنید چیکار کنم واسه این مورد که اگه محصول مال خود کاربر نبود ویرایش نتونه بکنه
تشکر
@hesammousavi @ali.bayat @juza66 @rezajashnsaz0011

ثبت پرسش جدید

پاسخ‌ها

8
coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

سلام، ینی اون مقاله مال کاربر هست؟ ینی کلید خارجی توی جدولش قرار دادین؟ اگه اره که اون مقاله 17 رو به فرض میگیرین چک میکنید که مقاله مال همین کاربر هست، و اگه بود اجازه ادیت و حذف رو بدین

الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

@coaradsupp

بله توی جدول محصول آیدی کاربر هست و میشه چک کرد
ولی بعضی جداول وابسته آیدی کاربر داخلش نیس
برای اونا راه حلی هست؟!

شاید پاسخ شما همین‌جا باشد

coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

متوجه نشدم منظور از جداول وابسته چیه، مثال بزنید

الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

@coaradsupp
مثلا یه جدول وابسته بین محصول و گالری تصاویر محصول
توی گالری تصویر آیدی محصول هست ولی آیدی کاربر نیس
اونجا هم فکر کنم دوباره باید کوئری بزنم برگردم به جدول محصول اگه مال خود کاربر بود عملیات ویرایش روی گالری انجام بشه؟ 🤔

Reza Jashnsaz
Reza Jashnsaz
@rezajashnsaz0011

تخصص: مهندس نرم افزار

راه درستش اینه که از متد delete استفاده کنی بجای get
و csrf بذاری
.
ولی اگه میخوای همینجوری پیش بری هی باید دستی چک کنی ببینی کسی که میخواد یه کاری انجام بده همونیه که مثلا مقاله گذاشته یا نه

coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

بله، به هرحال باید شما به ایدی کاربر برسید که برسی بشه این مال کاربر هست یا خیر، و ادامه ماجرا، که این کاربر با الوکوئنت لاراول به راحتی انجام میشه ولی با php خام با دردسر فراوان :)

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

به نظرم از متد POST استفاده کنید برای این جور کارها

smart
smart
@smartgarden2016

سلام. همونطور که دوستان گفتن و خودتون هم میدونید استفاده از get برای همه این کارها اشتباهه.
حالا اگر میخواید به همین روش پیش برید یه روش اینه:
هرکاری که میخواید انجام بدین اول id محصولات کاربر رو از دیتابیس بخونید و توی یه آرایه قرار بدید.
حالا چه بخواید محصول رو مدیریت یا حذف کنید چک میکنید ببینید id اون محصول توی آرایه هست یا نه.
بخش گالری تصویر رو هم اگر بخواید ویرایش کنید بازهم id محصول رو چک میکنید که تو آرایه هست یا نه.
توی هر دو مورد اگر id توی آرایه وجود داشت یعنی محصول یا گالری تصویر مربوط به اون کاربر هست و میتونه ویرایش و حذف کنه.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام