نمایش نتایج: از شماره 1 تا 10 , از مجموع 86

موضوع: آموزش ساخت سيستم كاربري - ورود/عضويت

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #11
    عضو دائم Rezash آواتار ها
    تاریخ عضویت
    Feb 2010
    محل سکونت
    مشهد
    نوشته ها
    1,923
    تشکر تشکر کرده 
    889
    تشکر تشکر شده 
    2,385
    تشکر شده در
    1,535 پست

    Post پاسخ : آموزش ساخت سيستم كاربري - ورود/عضويت

    سلام
    بالاخره رسيدم سر وقت ادامه آموزش!
    خب حالا فرض كنيد قرار هست بيش از يك يا چند كاربر داشته باشيم،و عضو گيري هم بكنيم در اين صورت بهتر گزينه استفاده از ديتابيس هست
    خب يك جدول خيلي ساده براي اعضا در نظر مي گيرم
    1. شناسه اي منحصر به فرد براي هر عضو
    2. نام كاربري
    3. رمز عبور
    4. نام كاربر
    پس ابتدا يك ديتابيس جديد بسازيم :
    کد:
    CREATE DATABASE `learn` ;
    حالا جدول مورد نيازمون
    کد:
    CREATE TABLE `learn`.`user` (
    `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `user` VARCHAR( 255 ) NOT NULL ,
    `pass` VARCHAR( 255 ) NOT NULL ,
    `name` VARCHAR( 255 ) NOT NULL
    ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
    اگر با دستورات sql آشنايي نداريد هيچ جاي نگراني نيست؛ چون با php my admin و ابزارهاي مشابه مي تونيد اين ضعف رو بهبود ببخشيد
    اندكي توضيح در مورد اين كد
    دستور Creat table كه از نامش مشخصه يك جدول ايجاد مي كنه!
    `learn`.`user`
    در اينجا learn نام ديتابيس و user نام جدول ما هست. مي تونيم از به كاربردن كلمه learn كه اسم ديتابيس هست صرف نظر كنيم البته در صورتي كه در برنامه همزمان با بيش از يك ديتابيس در ارتباط نباشيم.
    id همون شناسه كاربر هست كه از نوع عدد صحيح و حداكثر 10 رقمي تعريفش كردم
    در خصوصيت اين شناسه و موارد بعدي NOT NULL زدم يعني مقدار اين فيلد ها نبايد تهي باشد
    شناسه خاصيت مهمي داره به نام AUTO_INCREMENT كه براي فيلد ها اصلي و عددي استفاده ميشه
    در واقع به ازاي هر كاربر جديدي كه به ديتابيس اضافه مي كنيم اين فيلد به صورت خودكار يك واحد براي اون كاربر افزايش پيدا مي كنه
    COLLATE جدول رو هم utf گذاشتم تا از utf پشتيباني بشه!
    --
    خب حالا بريم سر وقت كد نويسي
    فايل config.php
    اين فايل براي اتصال به ديتابيس استفاده شده كه در ادامه توضيح ميدم:
    کد PHP:
    <?php
    $server 
    'localhost';
    $username 'root';
    $password 'mysql';
    $database 'amozesh';
    $Connection mysql_connect$server $username $password ) or die(mysql_error());
    mysql_select_db$database $Connection ) or die(mysql_error());
    ?>
    تابع mysql_connect رو چند باري توضيح دادم پس نقل قول ميزنم:
    mysql_connect : اين تابع سه آرگومان (ورودي) اجباري مي گيرد که اولي نام هاست،دومي نام کاربري ديتا بيس و سومي کلمه عبور ديتا بيس مي باشد.
    mysql_select_db : ديتابيس شما را با توجه به اطلاعات داده شده در مرحله قبل انتخاب مي کند تا بتواني عملياتي مانند نوشتن،خواندن،حذف و ... را انجام بديد.
    فكر نكنم اين بخش كد چيز خاصي داشته باشه
    فرم ثبت نام:
    کد HTML:
    <form action="signup.php" method="post">
    Username : <input name="user" type="text" /><br>
    Password : <input name="pass" type="password" /><br>
    Name : <input name="name" type="text" /><br>
    <input name="submit" type="submit" value="register!"></form>
    فرم خيلي ساده نوشته شده ؛ فقط قسمت هاي action و method و name رو دقت كنيد كه بعدا ازشون استفاده مي شه در برنامه.
    عضو گيري - فايل signup.php
    کد PHP:
    <?php
    include('config.php');
    if(empty(
    $_POST['user']))
    die(
    'username is empty!');
    if(empty(
    $_POST['pass']))
    die(
    'password is empty!');
    if(empty(
    $_POST['name']))
    die(
    'name is empty!');
    $user $_POST['user'];
    $pass $_POST['pass'];
    $name $_POST['name'];

    mysql_query("INSERT INTO `user` SET `user`='$user',`pass`='$pass',`name`='$name'") or die(mysql_error());
    echo 
    "Registeration was successfull! now login!";
    ?>
    در خط 2 فايل اتصال به ديتابيس رو لود كردم، درواقع اين تنظيمات رو در يك فايل ديگه نوشتم تا هر بار و در هر بخش مجبور به تكرارش نباشيم
    در خط 3 الي 8 چك كردم كه مقاديري كه از فرم ارسال شده اند خالي نباشند.
    در سه خط بعدي اين مقادير رو به سه متغير كمكي با نام دلخواه نسبت دادم
    در خط بعدي در تابع mysql_query يوزر جديد رو اضافه كردم!
    براي افزودن يك ركورد به جدول بايد از INSERT استفاده كنيم
    من query رو به زبان فارسي بيان مي كنم :
    در داخل جدول user سطر جديدي درج كن كه در آن مقدار فيلد user برابر متغير user ، فيلد رمز عبور برابر متغير رمز عبور و نام برابر متغير نام باشد.
    خارج از تابع
    در غير اين صورت برنامه خاتمه پيدا كنيد (or die)
    كه در داخل die خروجي رو mysql_error گذاشتم.اين تابع خطاي رخ داده رو بر مي گردونه و مي تونيم بفهميم اشكال كار كجا بوده
    در خط آخر پيام موفقيت در عضويت رو بيان كردم!
    فرم ورود -- login.html
    کد HTML:
    <form action="login.php" method=post>
    <input name=username value="" size="20">
    <input name=password value="" size="20" type="password">
    <input type=submit name=submit value="Login">
    </from>
    اين فرم رو در ابتداي آموزش داشتيم.
    فايل login.php
    کد PHP:
    <?php
    session_start
    ();
    include(
    'config.php');
    if(isset(
    $_POST['username']) && isset($_POST['password']))
        {
        
    $username $_POST['username'];
        
    $query mysql_query("SELECT `pass` FROM `user` WHERE `user`='$username'") or die(mysql_error());
        
    $data mysql_fetch_array($query);
            if(
    $data['pass'] == $_POST['password'])
            {
            
    $_SESSION['username'] = $_POST['username'];
            
    HEADER('LOCATION: index.php');
            }
            else
            die(
    'wrong username/password!');
        }

    ?>
    تنها تغييري كه در اين فايل نسبت به فايل آغاز برنامه داشتيم ، اين بود كه اطلاعات اعضا رو از ديتابيس مي كشيم بيرون و اعتبار سنجي مي كنيم
    من هم فقط بخش هاي تغيير يافته رو توضيح ميدم
    خط 7 : انتخاب كن ، مقدار فيلدي با نام pass را از جدول user در جايي كه فيلد username برابر با متغير $username باشد
    در خط بعد ، تابع mysql_fetch_array() نتيجه به دست آمده از تابع mysql_query رو در قالب يك آرايه مي ريزه
    پ.ن : براي درك بهتر متغير $data رو از تابع print_r رد كنيد
    چون اين تابع رو هم در آموزش هاي ديگه توضيخ دادم بيشتر از اين روش نمي مونم
    در خط بعدي بررسي كردم كه اگر مقدار پسورد موجود در آرايه data با مقدار پسوردي كه كاربر در فرم ارسال كرده يكسان بود لوگين كن و گرنه پيغام خطا بده
    logout هم كه تغيير خاصي نكرده.
    خواستم به قولي كه دادم عمل كرده باشم و آموزش رو امشب گذاشته باشم ، ببخشيد كمي خسته بودم!جايي رو اگه بد توضيح دادم بگيد تا بيشتر توضيح بدم
    فايل zip شده فايل ها رو هم گذاشتم.
    سپاس
    فایل های پیوست شده فایل های پیوست شده
    بک آپ بگیرید قبل از آنکه پشیمان شوید!
    تشخیص سیستم مدیریت محتوای سایت - سایت شخصی

  2. تعداد تشکر ها ازRezash به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 2
    آخرين نوشته: March 11th, 2013, 12:50
  2. پاسخ ها: 0
    آخرين نوشته: May 16th, 2011, 01:12
  3. آموزش ساخت يك سيستم وبلاگ دهي
    توسط Rezash در انجمن PHP-MySQL
    پاسخ ها: 12
    آخرين نوشته: December 17th, 2010, 18:09
  4. معرفی سيستم مديريت آموزشگاه اتود + نسخه نمايشی
    توسط amiri113 در انجمن مباحث دیگر
    پاسخ ها: 0
    آخرين نوشته: February 1st, 2010, 18:08

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •