مشکل در نوشتن کد های پی اچ پی برای صفحه ورود ساده

mohsen_79

تازه وارد
با سلام

سوال اول :

من میخواستم یه صفحه ورود خیلی ساده بسازم

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

همه کارایی که من می خوام مثل صفحه های لاگین دیگه است

اما مشکل اینجاست که چطور کاری بکنم که وقتی رمز را وارد کرد این رمز عبور طرف را چک کنه ببینه درسته یانه

یعنی در واقع چه کدی بنویسم که مقدار وارد شده توی فیلد رمز عبور را با یکسری مقدار های دیگه که خودم از قبل وارد کردم مقایسه کنه و اگه با یک کدام از آنها یکی بود فرد را به یه صفحه دیگه بفرسته؟؟

سوال دوم :

صفحه ای که می خوام فرد به اون فرستاده بشه می خوام جوری باشه که حتما طرف مجبور بشه بیاد تو این صفحه لاگین کنه بعد بتونه به اون صفحه دسترسی داشته باشه نه اینگه اگه حتی تو این صفحه لاگینم هم لاگین نکرد بتونه با زدن آدرس صفحه ( همونی که بعد از ورود می خوام بهش فرستاده بشه ) تو آدرس بار مرورگر راحت بازش کنه.

خواهش میکنم اگه میخواین توضیح بدید کامل بگید چون من خیلی مبتدی هستم

 

william

کاربر عضو
سلام

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


کد:
<?php

// Array of passwords
$passwords = array('12345', 'qwerty', 'wxyz', 'abcd');

// The password submitted by user
$userPasswordInput = $_POST['password'];

// Check if userPassword exists in array of passwords
if( in_array($userPasswordInput, $passwords) ) {
    // Password exists; Redirect user to somewhere
    header('Location: somewhere.php');
    exit();
} else {
    // Password is wrong; Redirect to current page with a url parameter
    header('Location: currentpage.php?wrong');
    exit();
}

?>
در صورتی که مقداری که کاربر وارد میکنه با یکی از مقادیر داخل آرایه passwords یکی باشه، کاربر به فایل somewhere.php منتقل میشه. در غیر این صورت می تونیم اون رو با یک پارامتر در url به صفحه فعلی بفرستیم. برای اینکه پیام مناسب در زمان اشتباه بودن رمز به کاربر نشان بدیم می تونیم مثل این عمل کنیم:


کد:
<?php

if( isset($_GET['wrong']) )
    echo 'The password you entered is wrong. Try again!';

?>
البته این برای نمونه بود. اگه قصد دارید رمز عبور را در پایگاه داده ذخیره کنید، هیچ وقت مقدار plain text اون رو ذخیره نکنید. بر اساس اهمیت رمز می تونید اون رو با الگوریتم هایی مثل sha256 یا md5 یا ... کدگذاری کنید. یا برای جلوگیری از brute force از روش های پیچیده تر استفاده کنید. بعد رمز ورودی کاربر رو با همون الگوریتمی که استفاده کردید کد کنید و سپس مقادیر کد شده رو با هم مقایسه کنید.

در جواب سوال دوم:

همیشه یادتون باشه برای انتقال اطلاعات بین صفحات وب میتونید از session هم استفاده کنید. برای مثال این صفحه ای است که در صورتی کاربر مجاز به دیدنش است که رمز رو درست وارد کرده باشه:


کد:
<?php

// Use function below before any output
session_start();

if( !isset($_SESSION['hasAccess']) || (bool) !$_SESSION['hasAccess'] ) {
    // User has no right to access this page. Let's redirect him to login page 
    header('Location: login.php');
    exit();
}

// Rest of code... E.g. page content...

?>
در صفحه بررسی رمز عبور در صورتی که رمز عبور درست وارد شده بود کافیه session مورد نظر رو قرار بدید:


کد:
<?php

session_start();

// If user password matches, then:
$_SESSION['hasAccess'] = true;

?>
البته بهتره این موارد رو به صورت شیءگرا انجام بدید که کدهاتون منظم تر و بهینه تر باشه و از سردرگمی جلوگیری کنه.

 

mohsen_79

تازه وارد
این کد هایی را که دادی باید توی صفحه لاگین قرار بدم دیگه ؟؟

اون کد اولی را گذاشتم ولی هنوز صفحه را باز نکرده می خواد طرفو ببره تو صفحه ای که پیام بده پسورد اشتباهه

تو قسمت دوم گفتی صفحه بررسیه رمز عبور ، یعنی باید برا بررسی رمز عبور یه صفحه جدید بسازم ؟؟؟

راستی اگه میشه یکم هم در مورد قسمت دوم بیشتر توضیح بده

 

send

تازه وارد
دوست عزیز شما نسبت به این کد ها باید برای خودتون درست کنید .

نه این که این کد ها رو کپی کنید سایت شما دارای لوگین بشه

باید بعد از چک کردن یه کوکی یا سشن ست بشه

بعد توی صفحات دیگه باید اینها چک بشن که اگه ست نشده بود به صفحه لوگین بره .

 

mohsen_79

تازه وارد
دوست عزیز شما نسبت به این کد ها باید برای خودتون درست کنید .نه این که این کد ها رو کپی کنید سایت شما دارای لوگین بشه

باید بعد از چک کردن یه کوکی یا سشن ست بشه

بعد توی صفحات دیگه باید اینها چک بشن که اگه ست نشده بود به صفحه لوگین بره .
منم همین کار را می خوام بکنم ولی نمیدونم چرا این کد ها با فرمی که درست کردم جفت و جور نمیشه

 

william

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

 
بالا