آموزش و سورس ساخت صفحه ورود و خروج در PHP
0 0

آموزش و سورس ساخت صفحه ورود و خروج در PHP


آموزش و سورس ساخت صفحه ورود و خروج در PHP

در این پست نحوه ساخت صفحه ورود کاربر به سایت ( login ) و خروج از سایت ( logout )را در PHP برایتان قرار داده ایم.

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

در پست های قبلی ثبت نام در سایت را با اعتبارسنجی های مختلف در سایت قرار داده بودیم.

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

در این آموزش ما از یک قالب ساده استفاده کردیم که شما می توانید کدهای بخش ثبت نام را در قالب خودتان کپی کنید همچنین برای ظاهر فرم نیز از چند خط کد Css استفاده کردیم تا ظاهر فرم زیباتر به نظر برسد.

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

<?php session_start(); ?>
<?php include("function.php"); ?>
<html>
<head>
    <meta charset="UTF-8">
    <title>ورود به سایت</title>
    <link href="style.css" type="text/css" rel="stylesheet">
</head>
<body>
<?php
if (isset($_POST['submit'])) {
    $username = $_POST["txtUsername"];
    $password = $_POST["txtPassword"];
    if ($username != "" && $password != "") {
        $found_user = attempt_login($username, $password);
        if ($found_user) {
            $_SESSION["username"] = $found_user["UserName"];
            $_SESSION["user_id"] = $found_user["UserId"];
            header("Location: profile.php");
        } else {
            $_SESSION["Message"] = "نام کاربری یا رمز عبور شما صحیح نمی باشد";
        }
    } else {
        $_SESSION["Message"] = "فیلدهای ستاره دار باید تکمیل شوند";
    }
}
?>
<div class="wrapper">
    <div class="header">
        <a href="http://www.iranganj.ir"><img style="margin-top: 20px;margin-right: 30px;" src="logo.png"></a>
    </div>
    <div class="main">
        <div class="sidebar">
            <ul>
                <li>
                    <a href="register.php">ثبت نام</a>
                </li>
                <li>
                    <a href="login.php">ورود</a>
                </li>
            </ul>
        </div>
        <div class="content">
            <fieldset>
                <legend>برای ورود به سایت نام کاربری و رمزعبور خود را وارد کنید</legend>
                <?php
                if (isset($_SESSION["Message"])) {
                    $output = "<div class=\"error-box\">";
                    $output .= $_SESSION["Message"];
                    $output .= "</div>";
                    $_SESSION["Message"] = null;
                    echo $output;
                }
                ?>
                <form method="post" action="login.php" name="form1">
                    <div>
                        <div>نام کاربری خود را وارد کنید<span class="required ">*</span>
                        </div>
                        <input type="text" name="txtUsername" placeholder="نام کاربری خود را وارد کنید">
                    </div>
                    <div>
                        <div>پسورد
                            <span class="required ">*</span></div>
                        <div>
                            <input type="password" name="txtPassword" placeholder="رمز عبور خود را وارد کنید">
                        </div>
                    </div>
                    <div>
                        <div>
                            <input type="submit" name="submit"
                                   style="width: 150px;height: 30px;font-size: 15px;" value="ورود">

                        </div>
                    </div>
                </form>
            </fieldset>
        </div>
    </div>
    <div class="footer">
        <h4 style="text-align: center;padding: 20px;"><a href="http://www.iranganj.ir">تمامی حقوق متعلق با سایت
                ایران گنج می باشد</a></h4>
    </div>
</div>
</body>
</html>

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

در کدهای بخش فرم ما از 2 تکست باکس استفاده کردیم. همچنین همچنین از تگ span استفاده کردیم و جلوی هر کدام از تکست باکس ها علامت ستاره را قرار داده ایم و همچنین از کلاس required استفاده کردیم تا رنگ ستاره ها قرمز شود. همچنین در داخل هر تکست باکس از مشخصه placeholder آن استفاده کردیم و متنی را در آن قرار دادیم. که کاربر آن متن را مشاهده می کند و تا زمانی که چیزی در کادر متن وارد نکرده آن متن نمایش داده می شود.

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

برای این کار ابتدا با استفاده از دستور if ای که نوشتیم چک می کنیم که آیا کاربر بر روی دکمه ورود کلیک کرده یا نه. اگر کلیک کرده باشد نام کاربری و رمزعبور را دریافت می کنیم سپس چک می کنیم که فیلدها خالی نباشند اگر خالی نبودند تابع attempt_login را فراخوانی می کنیم وگرنه پیغام فیلدهای ستاره دار باید تکمیل شوند را چاپ می کنیم .که کدهای آن به صورت زیر می باشد.

function attempt_login($username, $password)
{
    $connection = mysqli_connect("localhost", "root", "", "training");
    if (mysqli_connect_errno()) {
        die("database connection failed: " .
            mysqli_connect_error() .
            "(" . mysqli_connect_errno() . ")"
        );
    }
    $query = "SELECT * ";
    $query .= "FROM users ";
    $query .= "WHERE UserName='{$username}' AND Password='{$password}' ";
    $user_set = mysqli_query($connection, $query);
    if (!$user_set) {
        die("database query failed");
    }
    if ($user = mysqli_fetch_assoc($user_set)) {
        return $user;
    } else {
        return null;
    }
}

در تابع attempt_login ابتدا به دیتابیس وصل می شویم کدهای این بخش را قبلا توضیح دادیم. سپس یک دستور select نوشته ایم که نام کاربری و رمزعبور را چک می کند اگر در دیتابیس چیزی وجود داشته باشد آن سطر را برمی گرداند و گرنه null را بر می گرداند.

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

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

بعد از ساخت پایگاه داده باید کدهای مربوط به بخش ثبت نام را بنویسیم که کدهای آن به صورت زیر می باشد.

اگر توجه کنید کاربر اگر نام صفحه profile.php را در مروگر تایپ کند آن صفحه را لود می کند ما باید کاری انجام دهیم که کاربر زمانی که لاگین کرد بتواند وارد صفحه پروفایل شود.

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

function logged_in_user()
{
    return isset($_SESSION["username"]);
}

function confirm_logged_in_user()
{
    if (!logged_in_user()) {
        header("Location: login.php");
    }
}

با استفاده از تابع confirm_logged_in_user این کار را انجام می دهیم در ابن تابع یک if نوشته ایم که تابعی را صدا می زند در تابع logged_in_user چک می کند که سشن کاربر وجود دارد یا نه اگر وجو داشت صفحه profile.php اجرا می شود و گرنه کاربر به صفحه لاگین هدایت می شود تا وارد سایت شود.

تابع confirm_logged_in_user در ابتدای صفحه profile فراخوانی شده است.

در صفحه پروفایل نیز یک لینک برای خروج از پروفایل قرار دادیم که این لینک صفحه logout.php را فراخوانی می کند که کدهای آن به صورت زیر می باشد.

<?php
session_start();
$_SESSION["username"] = null;
$_SESSION["user_id"] = null;
header("Location: login.php");
?>

در این صفحه ابتدا سشن را شروع کرده ایم سپس تمامی سشن ها را برابر null قرار دادیم و در آخر نیز کاربر را به صفحه login هدایت کرده ایم.

توجه : فایل sql پایگاه داده نیز ضمیمه برنامه می باشد.

دانلود

نویسنده حسین فتحی
گروه مطلب PHP
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۱۳ دی ۱۳۹۳
منبع ایران گنج
تعداد نظرات ۶
قیمت کاربران VIP
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.
خرید VIP
امکان خرید از درگاه های بانکی و حساب مجازی

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

نظر / سوال

Captcha
نظرات کاربران

  • mm

    متاسفانه من از این کد به این صورت استفاده کردم session_start(); function logged_in_user() { return isset($_SESSION["username"]); } الان تو همه صفحات با این ارور مواجه میشم Forbidden You don't have permission to access /web_site/login.php on this server.

    پاسخ
    • مدیر

      با سلام و درود

      این خطا ارتباطی به این کدها ندارد مشکل شما عدم دسترسی می باشد کدهای برنامه خودتان را به صورت خط به خط چک نمایید و مشکلتان را پیدا نمایید.

      نکته ای هم که وجود دارد همیشه زمانی که می خواهید از سشن در صفحه ای استفاده کنید باید دستور session_start اولین خط در آن صفحه باشد و هیچ دستوری قبل از آن نوشته نشود.

      پاسخ
  • mm

    function logged_in_user() { return isset($_SESSION["username"]); } function confirm_logged_in_user() { if (!logged_in_user()) { header("Location: login.php"); } } این کد کار نمیکنه

    پاسخ
    • مدیر

      با سلام و درود

      در صفحه ای که از این کدها استفاده می کنید کد زیر را در اول صفحه اضافه کنید

      <?php ob_start(); ?>

      همچنین در انتهای کدها کد زیر را قرار دهید

      <?php ob_flush(); ?>

       

      پاسخ
      • mm

        سلام بازم مشکل داره استفاده از این دو کد ربطی به ورژن php نداره؟

        پاسخ
        • مدیر

          با سلام و درود 

          نه ربطی به ورژن پی اچ پی نداره

          شما فایل ضمیمه را دانلود نمایید و آن را اجرا کنید چون فایل هایی که در سایت قرار داده می شوند به صورت تست شده می باشند و همچنین اینکه دقیقا خطایی که می دهد چیست چون شما باید نسبت به خطایی که میدهد برنامه خودتان را خطایابی نمایید.

          پاسخ