PDA

View Full Version : آموزش: ساختن یک سایت عضویت و سایت Bookmark ( مرحله به مرحله و کامل )



Dimansh
یک شنبه 14 مهر 1392, 02:45 صبح
درود . یه چند روزی هست وقت آزاد بیشتری دارم تصمیم گرفتم با اجازه بزرگان یک سیستم کامل عضویت دارای امکانات عضو گیری و تغییر پسورد و صفحه Forget Password و صفحه Bookmark و صفحه logout و دیتابیس و ... رو مرحله به مرحله آموزش بدم . البته این آموزش به صورت گُنگ تر در یکی از کتب آموزشی موجود هست که بنده اون رو روان تر و کامل تر اینجا براتون میگذارم ...

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

در آغاز باید یک دیتابیس داشته باشیم برای وبسایتمون . کدهای زیر رو در صفحه Bookmarks.sql ذخیره میکنیم.


create database bookmarks;
use bookmarks;
create table user (
username varchar(16) primary key,
passwd char(50) not null,
email varchar(100) not null
);
create table bookmarks (
username varchar(16) not null,
bm_URL varchar(255) not null,
index (username),
index (bm_URL)
);
برای نصب این SQL به phpmyadmin بروید و کل اطلاعات این فایل رو Import کنید .

Dimansh
یک شنبه 14 مهر 1392, 02:54 صبح
خوب اولین صفحه PHP که میسازیم صفحه login.php هست


<?php
require_once('bookmark-fns.php');
do_html_header('');
display_site_info();
display_login_form();
do_html_footer();
?>

همونطور که میبینید خیلی ساده هست . در سطر دوم bookmark-fns.php با دستور require_once() با برنامه ضمیمه میشود . توابع سطرهای 3 تا 6 توسط فایل bookmark-fns.php تدارک دیده شده اند ...

Dimansh
یک شنبه 14 مهر 1392, 03:02 صبح
دومین صفحه ما مربوط میشه به bookmark-fns.php که خود این صفحه 5 فایل دیگ را در بر دارد ..


<?php
require_once('data-valid-fns.php');
require_once('db-fns.php');
require_once('user-auth-fns.php');
require_once('output-fns.php');
require_once('url-valid-fns.php');
?>

Dimansh
یک شنبه 14 مهر 1392, 03:06 صبح
سومین صفحه ما مربوط میشه به صفحه عضوگیری با اسم register-form.php


<?php
require_once('bookmark-fns.php');
do_html_header('User Registration');
display_registration_form();
do_html_footer();
?>
این صفحه نیز ساده هست و در سطر دوم صفحه output-fns.php را ضمیمه میکند و 3 تابع رو از صفحه ضمیمه شده فراخوانی میکند.

Dimansh
یک شنبه 14 مهر 1392, 03:09 صبح
خوب دوستان انگشت درد گرفتم برای امشب کافیه تا فردا شب چند صفحه دیگر رو آماده میکنم تا براتون بذارم اینجا . خواهشا اینجا فعلا پاسخی نگذارید که به هم ریخته نشه تا تمام آموزش پشت سر هم باشه . فعلا تا فردا ...

navid3d_69
یک شنبه 14 مهر 1392, 05:57 صبح
من فکر می کنم این روشی که دارین آموزش میدن خیلی پیچیده میکنه شما باید تمام تابع هایی که استفاده شده رو بگین چه کاری می کنند و این که کد تابع ها رو بزارین فعلا تا اینجا شما فقط 2 تا جدول از دیتابیس رو ساختین و 3 صفحه php که همش ارور هست

AliRezaPro
یک شنبه 14 مهر 1392, 09:58 صبح
ضمن تبریک به شما دوست عزیز بابت همچبن تاپبکی , پیشنهاد بنده اینه که کاش قبل از اینکلود کردن صفحات , خود صفحات رو اول توضیح میدادید و سپس میرسیدید به این قسمت ها . با روش خودتون ادامه بدید . موفق باشید

Dimansh
یک شنبه 14 مهر 1392, 16:41 عصر
خوب صفحه چهارم ما صفحه ارجاع عضویت هست یعنی شما در صفحه register-form.php فرم ها رو پر میکنید و در این صفحه بررسی ها و عضویت انجام میشود
نام این صفحه رو میگذاریم register-new.php


<?php
require_once('bookmark-fns.php');
$email=$_POST['email'];
$username=$_POST['username'];
$passwd=$_POST['passwd'];
$passwd2=$_POST['passwd2'];
session_start();
if(!filled_out($_POST))
{
do_html_header('Problem:');
echo 'You have not filled the form out correctly - please go back and try again.';
do_html_footer();
exit;
}
if (!valid_email($email))
{
do_html_header('Problem:');
echo 'that is not valid email addres. please go back and try again.';
do_html_footer();
exit;
}
if($passwd != $passwd2)
{
do_html_heading('Problem:');
echo ' the passwords you entered do not match - please go back and try again.';
do_html_footer();
exit;
}
if ( strlen($passwd)<6 || strlen($passwd) > 16)
{
do_html_header('Problem:');
echo ' your password must be between 6 and 16 characters . please go back and try again.';
do_html_footer();
exit;
}
$reg_result = register($username, $email, $passwd);
if ($reg_result === true)
{
$_SESSION['valid_user'] = $username;
do_html_header('registration succsessful');
echo ' your registration was successful . go to the members paage to start setting up your bookmarks.';
do_html_url('members.php', go to members page');
}
else
{
do_html_header('Problem:');
echo $reg_result;
do_html_footer();
exit;
}
do_html_footer();
?>

توضیحات این صفحه : در سطر دوم ابتدا صفحه bookmark-fns رو ضمیمه میکنیم که شامل 5 تابع هست که در تاپیک شماره 2 این صفحه با توابعش معرفش شیده . خط 3 تا 6 با استفاده از متد POST 4 ورودی داریم که اونها رو ذخیره میکنیم و در سطر هفتم یک سِشِن یا همون جلسه رو استارت میزنیم . از خط 8 تا 51 تماما با if های متوالی ورودی هامون رو بررسی میکنیم . در خط 8 بررسی میشود که فرم پر شده باشد . در خط 15 ببرسی میشود که ایمیل معتبر باشد . در خط 22 بررسی میشود که کلمه عبور و تکرار کلمه عبور یکسان باشد . در خط 29 بررسی میشود که کلمه عبور بین 6 تا 16 کاراکتر باشد . این مقدار رو میتوانید شما تعیین کنید که بیشتر باشد یا کمتر . در خط 36 ورودی ها در تابع reg_result وارد میشود و خط 37 میگه اگه تابع برابر مقدار درست باشه یک سِشِن ایجاد کن به نام valid_user با ورودی username .

Dimansh
یک شنبه 14 مهر 1392, 17:29 عصر
صفحه ورود به سیستم . بعد از اینکه کاربر در صفحه لوگین ورودی های خودش رو وارد کرد باید به صفحه ورودی بیاید . در این صفحه به غیر از ورودی bookmark ها هم نیز نمایش داده میشود . نام این صفحه member.php است


<?php
require_once('bookmark-fns.php');
session_start();
global $_POST
@username = $_POST['username'];
@$passwd = $_POST['passwd'];
if ($username && $passwd)
{
if (login($username, $passwd))
{
$_SESSION['valid_user'] = $username;
}
else
{
do_html_header('Problem:');
echo 'you could not be logged in you must be logged in to view this page.';
do_html_url('login.php', 'Login');
do_html_footer();
exit;
}
}
do_html_header('Home');
chek_valid_user();
if ($url_array = get_user_urls($_SESSION['valid_user']));
display_user_urls($url_array);
display_user_menu();
do_html_footer();
?>

خوب این بار هم طبق قبل صفحه bookmark-fns رو ضمیمه میکنیم که از توابعش استفاده کنیم . در سطر 9 میگنه اگر یوزر و پسورد درست بود سشن از تابع یوزرنیم ایجاد بشه وگرنه ارور های توابع رو بیاره ...
ضمنا در تمامی این صفحات میتوانیم از تابع include به جای require_once استفاده کنیم .

Dimansh
یک شنبه 14 مهر 1392, 19:29 عصر
خوب حالا میخواهیم صفحه خروج از سایت یا همون logout.php رو آماده کنیم


<?php
require_once('bookmark-fns.php');
session_start();
$old_user = $$_SESSION['valid_user'];
unset($_SESSION);
$result_dest = session_destroy();
do_html_header('LOGGING Out');
if (!empty($old_user))
{
if($result_dest)
{
echo 'Logged out.<br/>';
do_html_url('login.php', 'Login');
}
else
{
echo ' could not log you out<br/>';
}
}
else
{
echo ' you wew not logged in and so have not been logged out<br/>';
do_html_url('login.php', 'Login');
}
do_html_footer();
?>

Dimansh
یک شنبه 14 مهر 1392, 20:15 عصر
صفحه تغییر کلمه عبور یا change-passwd-form.php


<?php
require_nce('bookmark-fns.php');
session_start();
do_html_header('Change password');
chek_valid_user();
display_password_form();
display_user_menu();
do_html_footer();
?>
این صفحه فرم تغییر پسورد هست

رضا قربانی
دوشنبه 15 مهر 1392, 09:35 صبح
تشکر ، خیلی خوبه که دارید به رایگان برای برنامه نویس های عزیز آموزش میدید .
تشکر از شما
موفق و پیروز باشید