آری آرامش ما مرد خطر می خواهد
صبح پیروزی ما خون جگر میخواهد
می وزد از همه جا بوی گل یاس شهید
از کجا آمده اند این همه عباس شهید
زوالجناح از نفس این بار نخواهد افتاد
علم ازدست علمدار نخواهد افتاد
…
وب سایت حسین دیندارلو
آری آرامش ما مرد خطر می خواهد
صبح پیروزی ما خون جگر میخواهد
می وزد از همه جا بوی گل یاس شهید
از کجا آمده اند این همه عباس شهید
زوالجناح از نفس این بار نخواهد افتاد
علم ازدست علمدار نخواهد افتاد
…
مشکل چیست که کجا بودنش مهم باشد یا نباشد؟
وقتی ندانی از کجا میخوری ، هی میخوری و هی … مسئله از جایی شروع می شود که بدانی از کجا می خوری و مشکل از آنجایی که ندانی از کجا.
چرا یادم می رود که اوضاع بر وفق مراد نیست؟ چرا سرم مثل کبک زیر برف است. مشکل این است که یادم می رود مسئله چیست.
یاد گرفتن پرسیدن سوالات بجا ، آموزش بجا ، صرف انرژی بجا ، تفریح و عشق و حال بجا و کار بجا. فکر میکنم این زندگی ایده آل من باشد ولی چون از رسیدن به آن ناتوانم همه چیز شافل شده است و فکر می کنم بجاست. مسیر های موفقیتم در یک راستا قرار ندارد و من در حال حرکت به ناکجا.
مسائل را باید بشناسم ، ذهنم گویی خانه ی دانشجویی ریخت و پاش است و از حدی که حائز اهمیت باشد گذشته.
مشکل چیست؟ مسئله یادم نرود.
در مطلب جلوگیری از تزریق هدر ایمیل در مورد حفره ی امنیتی email header injection در فرم های php گفتم. حال میخواهم بگویم چگونه ایمیل های حاوی عبارات Bcc و Cc و Content-Type را فیلتر کنیم تا ایمیل های حاوی این عبارات بلاک شود و از گزند تزریق هدر ایمیل در امان بمانیم.
راه حلی که میخواهم بگویم ورودی کاربر را برای عبارات مشکوک بررسی می کند و اگر عبارت مشکوکی پیدا شود متغیری برابر با true می شود ، سپس از این متغیر برای جلوگیری از ارسال ایمیل استفاده می شود.
…
چنانچه قصد داشته باشیم مقادیر دریافت شده از فرم php را با ایمیل ارسال کنیم یک خطر ما را تحدید می کند به نام حفره ی امنیتی تزریق هدر ایمیل یا email header injection
با استفاده از باگ تزریق هدر ایمیل میتوان فرم های آنلاین را به یک ارسال کننده اسپم تبدیل کرد. اگر ما اجازه ندهیم عبارات Content-Type و Cc و Bcc پردازش شود از email header injection جلوگیری کرده ایم زیرا این موارد هدرهای ایمیلی هستند که مهاجمان به درون اسکریپت شما تزریق می کنند تا با این روش ایمیل هایی را به افراد زیادی ارسال کنند.
…
در نوشته ی حفظ ورودی کاربر هنگام ارسال ناقص فرم php که مقدمه ی این مطلب بود به نیازسنجی این مسئله و توضیح کلی پرداختم که چرا باید ورودی کاربر حفظ شود و اگر بعد از ارسال ناقص یک فرم کلیه فیلد ها خالی شود و کاربر مجبور باشد دوباره همه ی فیلد ها را پر کند چه می شود و چطور باید پیشگیری کنیم را هم به صورت کلی گفتم.
در این نوشته به تشریح آن می پردازم. همانطور که گفتم راه حل برای این مشکل ایجاد فیلدهای فرم ثابت است که در آن از یک دستور شرطی برای استخراج ورودی کاربرد از داخل آرایه ی سوپرگلوبال $_POST استفاده می کنیم و در فیلدهای ورودی متنی و ناحیه ی متنی مخصوص کامنت نمایش می دهیم.
…
این مبحث به چه می پردازد ؟ در این نوشته قصد دارم درباره ی حفظ ورودی کاربر هنگام ارسال ناقص یک فرم صحبت کنم. زمانی که یک فیلد خالی مانده است چه باید کرد ؟ چطور از ورودی بقیه فیلد ها محافظت کنیم؟
اهمیت حفاظت از اطلاعات ورودی فرم هنگام ارسال ناقص و خالی بودن فیلد ها در چیست ؟ متصور می شویم برای پر کردن یک فرم 10 دقیقه زمان صرف شده است. کاربر بعد از اتمام پر کردن فیلد های فرم روی دکمه ی ارسال کلیک می کند و با یک پیغام روبرو می شود که میگوید یک یا چند فیلد فراموش شده است. اگر مجبور باشد تمام فیلد ها را مجدد پر کند بسیار ناراحت کننده خواهد بود. باید راه حلی پیاده کنیم که از اطلاعات ورودی صحیح محافظت کند.
…
در اولین قسمت از پردازش فرم php آرایه های خالی برای پردازش فیلد های خالی و خطاها ساختیم. بررسی کردیم فرم ارسال شده باشد. مقصد و موضوع برای فرم خود تعیین کردیم چون قرار است فرم از طریق ایمیل ارسال شود. دو آرایه ی expected و required هم برای ممانعت از تزریق متغیر های دیگر و تعیین فیلد های اجباری ایجاد کردیم.
قسمت دوم آموزش
تا به اینجا زمینه هایی برای پردازش فرم ایجاد شده است حال نوبت به هسته ی پردازشگر است که مخصوص این فرم هم نیست و میتوان آن را در هر اسکریپت پردازش فرم دیگری اینکلود کرد. پس یک فایل دیگر به نام processmail.php ایجاد کرده و در فرم خود ، پایین تر از آرایه ی $reqeired اینکلود می کنیم.
…
بخش اول – پردازش فرم پی اچ پی خالی نبودن فیلد ها
چرا فیلد ها نباید خالی بمانند ؟ وقتی فیلد هایی مانند جزئیات تماس خالی بمانند اطلاعات مورد نیاز دریافت نشده و کاربر نیز هیچ پاسخی از شما دریافت نمی کند. وجود داشتن یا نداشتن ورودی یک فیلد اساسی ترین موردی است که در هر فرم php باید پردازش شود.
…
فرم php کجا باید پردازش شود ؟
توانایی استفاده از یک اسکریپت برای تعدادی فرم وسوسه برانگیز است. همچنین باعث صرفه جویی در زمان می شود. مشکلی که وجود دارد این است که ارسال داده های ورودی به فایل اکسترنال برای پردازش باعث می شود که اخطار دادن به کاربر برای خاطاها بدون از دست رفتن ورودی های کاربر سخت باشد.
برای حل این مسئله از روش خودپردازش یا self-processing form استفاده می شود.
وقتی فرم ارسال می شود با بارگزاری مجدد صفحه دستوری شرطی اسکریپت را پردازش می کند که دو خروجی دارد.
اگر تایید اعتبار مبتنی بر سرور خطایی شناسایی کرد که فرم با پیغام های خطا نمایش داده می شود، در حالی که ورودی کاربر حفظ می شود تا دوباره مجبور نباشد همه را وارد کند.
حالت دوم هم بدون مشکل داده ها را ارسال می کند.
بگذارید این مطلب را عملی تر پیش ببریم. برای این که به تفاوت های بین get و post در php پی ببرید بهتر است از یک فرم واقعی استفاده کنید.
برای استفاده از متد بایستی در تگ form مقدار خاصیت method را تعیین کنیم
…