استفاده از PHP در صفحات با پسوند html. فرم در طرح خود نحوه خواندن صفحه html php
من سعی می کنم یک فرم ورود ایجاد کنم. این کد فرم HTML من است
من شخصاً آن را برای PDO گرفتم.
نکات 4 و 5
$password = mysql_real_escape_string(stripslashes(md5($_POST["رمز عبور"])));
اولاً ترتیب این اشتباه است. شما $_POST["رمز عبور"] و سپستلاش برای استفاده از stripslash - بعد ازهش های آن هیچ گونه اسلش نخواهند داشت. با این حال، اگر میخواهید از استفاده افراد از اسلش (یا هر چیز دیگری) در گذرواژهها جلوگیری کنید، باید قبل از هش کردن رشته، آنها را حذف کنید.
md5 زیر نباید بهعنوان الگوریتم هش رمز عبور استفاده شود، که ضعیف است و میتواند برای ایجاد تصادم رشتهها اغلب بیش از حد ضروری باشد.
بله تو بایدهشها یا «اثرانگشت» پسوردها را ذخیره کنید، نه خود گذرواژهها، اما در حالت ایدهآل میخواهید آن رمزهای عبور را Salt و هش کنید (حداقل با sha1)، به جای اینکه فقط آنها را در تابع md5() بیاندازید.
و "تنظیم هش رمز عبور" را با استفاده از موتور جستجوی انتخابی خود جستجو کنید.
نکته 6
SELECT ID FROM Table WHERE نام کاربری = "" . نام کاربری $. "" و رمز عبور = "" . رمز عبور $. ""؛
اضافه کردم = که در سوال اصلی وجود نداشت، اما تمام نام کاربری و رمز عبور در درخواست شما مطابقت ندارد...اگر شخصی موفق به تزریق SQL به نام کاربری شما شود، رمز عبور هرگز تأیید نمی شود. معرفی کنید:
user.id را از کاربر انتخاب کنید WHERE user.username = "fred" یا 1 = 1 -- AND user.password = "abc123"
بهتر است به جای اعتماد به تأیید رمز عبور سطح پایگاه داده، شناسه و رمز عبور اثر انگشت را از پایگاه داده انتخاب کنید و سپس رمز عبور را در برنامه ارزیابی کنید. این همچنین به این معنی است که می توانید از یک الگوریتم هش و نمک مخصوص در خود برنامه برای تأیید رمزهای عبور خود استفاده کنید.
نکته 7
$_SESSION["user"] = $_POST["نام کاربری"];
آیا این فقط نام کاربری را در جلسه ذخیره می کند؟ این به هیچ وجه نباید به عنوان "تأیید کننده ورود" استفاده شود، به خصوص اگر (ظاهراً) چیزی برای جلوگیری از ربودن در جلسه شما وجود نداشته باشد.
شناسه جلسه را می توان به راحتی از کوکی در زمان واقعی شناسایی کرد، و این تمام چیزی است که برای "قرض گرفتن" نام کاربری شخص دیگری لازم است. حداقل باید سعی کنید با مرتبط کردن آدرس IP کاربر، رشته UserAgent یا ترکیبی دیگر از دادههای نسبتا ثابت که میتواند با هر صفحه مقایسه شود، احتمال هک کردن جلسه را کاهش دهید. همانطور که قبلاً متوجه شدهام، اگر بازدیدکنندگانی دارید که از AOL استفاده میکنند)، اما میتوانید یک جلسه اثرانگشت موثر ۹۹ درصدی را برای کاهش ربودن با احتمال بسیار کمی که جلسه کاربر به اشتباه بازنشانی میشود، ممکن کنید.
در حالت ایدهآل، میتوانید یک نشانه جلسه نیز برای کاهش ایجاد کنید حملات CSRFزمانی که کاربر نیاز به انجام یک عمل "ممتاز" در پایگاه داده دارد (داده های خود را به روز کند یا چیز دیگری). توکن می تواند یک کد کاملا تصادفی و منحصر به فرد باشد که در یک پایگاه داده و/یا ذخیره می شود کوکی SSL زمانی که کاربر وارد سیستم می شود (به شرطی که کاربر نتواند هیچ اقدامی را انجام دهد که پایگاه داده را خارج از HTTPS به روز کند، زیرا این کار به سادگی داده ها را به صورت متنی واضح از طریق اینترنت منتقل می کند - که می تواند ایده بد).
نشانه در یک فیلد فرم مخفی برای هر/همه فرم ها قرار می گیرد و در هنگام ارسال آن فرم با مقدار ذخیره شده در کوکی (یا جلسه یا پایگاه داده) بررسی می شود. این تضمین می کند که شخصی که فرم را ارسال می کند حداقل یک جلسه زنده در وب سایت شما خواهد داشت.
ممکن است چندین مشکل وجود داشته باشد.
اولا،در بیانیه $match خود عملگر برابری رمز عبور را از دست داده اید:
$match = "SELECT ID FROM $table WHERE username = "".$username."" و password"".$password."";";
باید باشد:
$match = "SELECT ID FROM $table WHERE username = "".$username."" و password = "".$password."";";
دوما، رمز عبور را در پایگاه داده وارد می کنید بعد ازاستفاده از آن با استفاده از md5؟
اگر نه، پس درخواست شما سعی می کند md5 (رمز عبور) را با رمز عبور مطابقت دهد.
هنگام ایجاد حتی یک وب سایت شخصی، همه نمی توانند همه چیز را فراهم کنند راه های ممکناستفاده بیشتر از آن آماده سازی زمینه برای توسعه بیشتر سایت بسیار مهم است. اگر در گذشته یک وبسایت ایجاد کردهاید و به تمام صفحات بهطور پیشفرض پسوند html اختصاص دادهاید، و تنها پس از آن تصمیم به استفاده از PHP گرفتهاید، ادامه مطلب را بخوانید.
قبلاً برای استفاده از SSI، نام صفحات سایت باید با پسوند .shtml ختم می شد، اما امروزه اکثر سرورهای اینترنتی به گونه ای پیکربندی شده اند که SSI را می توان در صفحاتی با پسوند html استفاده کرد که بسیار راحت است. PHP داستانی کاملا متفاوت است - پسوند .php پسوند پیش فرض است. توسعه دهندگان وب سایت از قبل می دانند چه چیزی مورد استفاده قرار خواهد گرفت زبان داده شدهبرنامه نویسی، بدلیجات پسوند صحیح اختصاص داده می شود.
اما وقتی همه صفحات با پسوند html تمام می شوند چه باید کرد؟
پسوند HTML را با PHP جایگزین کنید
این را از راه های گوناگون می توان انجام داد. واضح ترین راه این است که به همه صفحات پسوند php. یا پسوندهای موجود (.html، .shtml، و غیره) را تغییر دهید. این روش دارای معایبی است. برای مثال، صفحاتی که از قبل ایندکس شده اند با پسوند html باید دوباره ایندکس شوند موتورهای جستجو. یا حتی بدتر - همه چیز لینک های خارجی، که صریحاً به یک صفحه خاص پیوند داده می شود نامعتبر خواهد بود. و باید صاحبان هر سایت را از این تغییرات مطلع کنید و صفحه دیگری با 301 خطا برای هر صفحه ایجاد کنید. البته تغییر یک پسوند به افزونه دیگر قابل قبول است، اما اگر سایت قبلاً صفحات زیادی داشته باشد و پیوندهای زیادی به صفحات مختلف از سایت های دیگر داشته باشد چه؟
به یک دلیل آگاهانه این لحظهتمام صفحات این سایت با پسوند html ختم می شود و من نمی خواستم تغییرات فوق را اعمال کنم و در نتیجه مشکلات غیر ضروری برای خودم ایجاد کنم.
شما می توانید آن را به روش دیگری انجام دهید. اگر سرور میزبان سایت از mod_rewrite پشتیبانی می کند (در اکثر موارد این کار را انجام می دهد) و دسترسی به فایل htaccess وجود دارد، می توانید خطوط زیر را به همین فایل اضافه کنید:
RewriteEngine در RewriteRule ^(.*)\.html $1\.php
با افزودن این کد به .htaccess، دیگر نگران نباشید. به لطف شگفتی های آپاچی، تمام صفحات غیرموجود درخواستی با پسوند html به طور خودکار با پسوند php. جایگزین می شوند. اما این روش تنها نیست. می توانید موارد زیر را در همان فایل htaccess بنویسید:
برنامه AddHandler/x-httpd-php .php .html .htm
به نظر من موفق ترین راه. این باعث می شود که صفحات HTML برابر با صفحات PHP باشند، به این معنی که همه توابع PHP اکنون می توانند در صفحات با پسوند HTML استفاده شوند. اگر به فایل htaccess دسترسی ندارید، می توانید نامه ای به شرکت هاستینگ بنویسید و مودبانه از ادمین ها بخواهید که در آن ثبت نام کنند. تنظیمات آپاچی(httpd.conf) مقدار لازم برای سایت.
به هر حال، اگر قبل از این سایت از SSI به صورت زیر استفاده می کرد:
سپس در حالت جدید PHP این کد باید با:
include("file.txt"); ?>
خوب، این همه است، من فکر می کنم یکی از روش های بالا کمک خواهد کرد.
PHP یک زبان برنامه نویسی جاسازی شده در سمت سرور است. بسیاری از نحو آن از C، جاوا و پرل وام گرفته شده است. و همچنین چند ویژگی منحصر به فرد را فقط برای اضافه کرد توابع PHP. هدف اصلی این زبان ایجاد صفحات HTML PHP به صورت پویا است.
PHP به HTML
هنگام ایجاد صفحات وب پیچیده، با نیاز به ترکیب PHP و HTML برای انجام وظایف خاص مواجه خواهید شد. در نگاه اول، این ممکن است پیچیده به نظر برسد، زیرا PHP و HTML دو رشته مستقل هستند، اما اینطور نیست. PHP برای تعامل با HTML طراحی شده است و کد آن می تواند در نشانه گذاری صفحه گنجانده شود.
کد PHP با استفاده از تگ های خاص در صفحات HTML گنجانده شده است. هنگامی که کاربر صفحه ای را باز می کند، سرور کد PHP را پردازش می کند و سپس نتیجه پردازش را ارسال می کند (نه کد پی اچ پی) به مرورگر.
ترکیب HTML و PHP بسیار آسان است. هر بخشی از اسکریپت PHP خارج از برچسب هاتوسط کامپایلر PHP نادیده گرفته می شود و مستقیماً به مرورگر ارسال می شود. اگر به مثال زیر نگاه کنید، می بینید که یک اسکریپت کامل PHP ممکن است شبیه به این باشد:
سلام امروز.