نقطه ویرگول;

هر از گاهی از هر چیزی

هر از گاهی از هر چیزی

ساخت فرم ثبت نام(Register) با PHP

چهارشنبه, ۶ بهمن ۱۳۸۹، ۱۲:۳۴ ب.ظ
فرم عضویت در سایت نیز یکی دیگر از نیازها و ویژگی های یک سایت پویاست،با توجه به آموزش های قبلی که در سایت قرار گرفته بود و همچنین درخواستهایی برای آموزش این قسمت،تصمیم گرفتم تا نمونه از یک صفحه ثبت نام رو به صورت مجزا و ساده آموزش بدم.بهتر می بینم تا ابتدا به فایلهایی که برای این آموزش نیاز خواهد بود اشاره ی بکنم.
  • register-form: این فایل همان فرم ثبت نام ما را تشکیل خواهد داد که متشکل از فیلد های ورودیست.
  • register-exec:بعد از پر کردن فرم بالایی و ساب میت کردن اطلاعات به این صفحه منتقل شده و پس از صحت اطلاعات در دیتابیس ذخیره خواهد شد.
  • register-success:بعد این که ثبت نام با موفقیت انجام شد به این صفحه هدایت خواهیم شد.
به روال پست های قبلی من کد ها رو میزارم و اگه توضیحاتی بود داخل کد ها به صورت کامنت میزارم.و این آموزش ادامه پست قبلی هستش که حتما باید مطالعه بشه
خب یک فایل پی اچ پی با نام register-form ایجاد کرده و کد زیر رو داخلش قرار میدیم:

 session_start();
?>




Login Form



//در اینجا ست میکنیم که آیا خطایی در وارد کردن اطلاعات وجود د ارد یا نه؟!
if( isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0 ) {
echo '
    ';
    foreach($_SESSION['ERRMSG_ARR'] as $msg) {
    echo '
  • ',$msg,'
  • ';
    }
    echo '
';
unset($_SESSION['ERRMSG_ARR']);
}
?>


























First Name
Last Name
Login
Password
Confirm Password
 



سپس فایلی به نام register-exec ساخته و کد های زیر رو داخلش قرار میدیم:

 //برای استفاده از قابیت های سشن استارتش میکنیم
session_start();

//اطلاعات اتصال به دیتا بیس رو میخونیم
require_once('config.php');

//خطاهایی که هنگام ولیدیش رخ میده رو آرایه میکنیم
$errmsg_arr = array();
$errflag = false;

//به مای اس کیو ال متصل میشیم
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) {
die('Failed to connect to server: ' . mysql_error());
}

//دیتابیسمون رو انتخاب میکنیم
$db = mysql_select_db(DB_DATABASE);
if(!$db) {
die("Unable to select database");
}

//اطلاعات دریافتی از فرممون رو به کمک این تابع از اس کیو ال اینجکشن محافظت میکنیم
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}

//تمامی فرم ها جز به جز کلین میشن
$fname = clean($_POST['fname']);
$lname = clean($_POST['lname']);
$login = clean($_POST['login']);
$password = clean($_POST['password']);
$cpassword = clean($_POST['cpassword']);

//ولیشین فرم انجام میشه
if($fname == '') {
$errmsg_arr[] = 'First name missing';
$errflag = true;
}
if($lname == '') {
$errmsg_arr[] = 'Last name missing';
$errflag = true;
}
if($login == '') {
$errmsg_arr[] = 'Login ID missing';
$errflag = true;
}
if($password == '') {
$errmsg_arr[] = 'Password missing';
$errflag = true;
}
if($cpassword == '') {
$errmsg_arr[] = 'Confirm password missing';
$errflag = true;
}
if( strcmp($password, $cpassword) != 0 ) {
$errmsg_arr[] = 'Passwords do not match';
$errflag = true;
}

/*در اینجا نام کاربری وارد شده چک میشه و اگه قبلا ثبت نام کرده باشه
پیام مناسب به آرایه خطاها ارسال میشه
*/
if($login != '') {
$qry = "SELECT * FROM members WHERE login='$login'";
$result = mysql_query($qry);
if($result) {
if(mysql_num_rows($result) > 0) {
$errmsg_arr[] = 'Login ID already in use';
$errflag = true;
}
@mysql_free_result($result);
}
else {
die("Query failed");
}
}

//اگه اطاعات وارده شده دارای خطا باشند به فرم ثبت نام ریدایرکت میشن
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: register-form.php");
exit();
}
//اگه اطاعات وارد شده دارای خطا نباشند اطلاعات در دیتابیس ذخیره میشه
$qry = "INSERT INTO members(firstname, lastname, login, passwd) VALUES('$fname','$lname','$login','".md5('$password')."')";
$result = @mysql_query($qry);

//در اینجا بررسی میشه که آیا کوئری به صورت موفق انجام شد یا نه
if($result) {
header("location: register-success.php");
exit();
}else {
die("Query failed");
}
?>

سپس فایلی به نام register-success ساخته و کد زیر رو داخلش قرار بدید:




Registration Successful



Registration Successful


Click here to login to your account.



این سه فایل رو به همراه فایلهای آموزشی قبلی در یک پوشه قرار داده و سپس اجرا کنید.
امیدوارم به درد خور بوده باشه

نظرات  (۵۳)

۰۸ بهمن ۸۹ ، ۱۵:۳۴ آموزش ساخت صفحه ورود (لاگین) | PHPDevelopers.ir
[...] test و گذرواژه test این آموزش رو تست کنید. در ادامه نیز آموزش ساخت فرم ثبت نام رو مطالعه کنید که مکمل این آموزش می [...]
ممنون از این پست . بدردم خورد.
من پی اچ پی رو شروع کردم.و دارم پیشرفت میکنم.اگه سوالی داشته باشم میتونم ازتون بپرسم.با تشکر از شما
سلام دوست عزیز
ما اینجاییم که از همدیگه یاد بگیریم،سوالی بود بنده و دوستان در خدمتیم
70000000000000000000000000000000000000000000000000000 بار مرسی!
salam agha dastetun dard nakone ba in sitetun vaghean beehtariiiiinid
man tunestam projamo ba in ghesmat tamum konam .. mamnuuuuuuuun;)
سلام. آیا این برای وردپرس چند سایته هم کاربرد داره؟
من متوجه نشدم منظورتون چیه؟؟؟!!!!
ولی به هر حال خود وردپرس بخش ثبت نام داره
منظور بنده اینه که آیا می شه برای قسمت ثبت نام وردپرس چند سایته گزینه ای برای ورود رمز عبور دلخواه کاربر ایجاد کرد؟
زیاد نیست این همه تشکر؟ :D
خواهش می کنم
منظورت وردپرس mu هستش؟
وردپرس mu رو با وردپرس معمولی ترکیب کردن و شده یکی
این کار برای امنیت کاربرانه
وگرنه می شه این کارو کرد
سعی می کنم یه آموزش براش جور کنم
چطور می تونیم فایل php رو در صفحه فراخوانی کنیم؟
در فایل register-form همه صفحه با html کار شده و فایل register-exec هم از طریق action فراخوانی میشه
تا اینجا می تونیم صفحه رو با فرمت html. ذخیره کنیم
اما اون قسمتی که برای ست کردن خطا در وارد کردن اطلاعات قراردادید رو میشه بصورت دیگه ای در صفحه وارد کرد؟ که فرمت صفحه همون html باقی بمونه؟
چون الان صفحه از فرمت html خارج شده و برای اجرای کد نیاز هست که کل صفحه رو با فرمت php. ذخیره کنیم
سلام
خیلی کامل و جالب بود.
من نیاز به یه فرم عضویت دارم که علاوه بر عضو کردن و ذخیره یوزر و ارسال اطلاعات به ایمیل عضو، اطلاعات رو به صورت حلقه ای از کاربر بگیره.
مثلا نام و نام خانوادگی و ایمیل رو که گرفت، رشته و زیر رشته و شاخه و این چیزها رو هم بگیره و ذخیره بکنه.
نمونه:
نام: حمید
نام خانوادگی: حمیدی
رشته: اگر ریاضی بود> زیر شاخه: 1-برق2-کامپیوتر3-صنایع 4..... الی آخر...........اگر رشته هنر بود مثلا: زیر شاخه: تجسمی! 2-موسیقی3-طراحی پارچه الی آخر!!
میتونید به من کمک کنید؟
یا آموزشی از این مورد در سایت قرار بدین؟
ممنون
htmlو php هیچ فرقی با هم ندارن یعنی خیلی راحت می تونید تگ های html رو در هر دو نوع استفاده کنید. پس بهتره از همون صفحه ی php استفاده کنید که بعدها شاید کارای دیگه ای هم بخواید بکنید.
برای این کار بهتره از ایجکس (ajax) استفاده کنید.
دوتا dropdown می گذارید. اولی انتخاب رشته
دومی انتخاب زیر شاخه
وقتی اولی رو عوض کرد، محتوای دومی هم براساس اون عوض می شه.
این لینک می تونه کمکتون بکنه:
http://php-ajax-code.blogspot.com/2007/07/ajax-triple-dropdown-with-states-cities.html
ممنون.
اما سایتی که دادید باز نمیشه :(
سایت مشکلی نداره
من تست کردم
با فیــ.ــلـ.ـترشکـ.ـن باز کنید شاید باز بشه
ممنون.باز شد
سلام
این کد ها باید درکجا در نوت پد بنویسم یا نرم افزار خاصی دارد ،و دیتا بیس کجا باید طراحی کنم
شما از پایه آشنایی ندارید.
باید پی اچ پی یاد بگیرید (از ابتدا از نصب وب سرور تا نوشتن یه سایت ساده) بعد بتونید از این کدها استفاده کنید.
در پی اچ پی این کد را می نویسم جواب می دهد ولی می خواهم اچ تی ام آن را عوض کنم ارور می دهد و خودم صفحه طراحی کنم ارور می دهد باید با چه پسوندی آن عوض کنم .
مشکلتون و خطا رو واضح بیان بفرمایید تا بشه کمکتون کرد
سلام، خوبی شما من سعید هستم یه دس کوچیکی داریم ت طراحی، قسمت امنیتی یه reg با چه مواردی کامل میشه ؟ مثلا بستن دریچه های ورودی textbox ها ! راهه حل می خوام تا نشه یه reg و به راحتی دور زد و با نوشتن یه کد مخملی از rees hack نتونن راحت کد و بفرستن تو database . لطفا اگه امنیت نویسی انجام دادی راهه حل بده !
دوست عزیز من چیزی از حرفهای شما رو متوجه نشدم
سلام
من یک فرم ثبت نام پی اچ پی دارم که شامل چهار کادر است
حالا می خواستم موقع ثبت فرم فرد یک کد را هم برای ثبت نام وارد کنه یعنی یک کد چهار رقمی را وارد کنه و ثبت نام کنه برای جلوگیری از اسپم
یا با یک آی پی بیشتر از یکبار اجازه ثبت نام نداشته باشه
میشه کمک کنید چگونه این کد را داخلش وارد کنم؟
کمک کنید نیاز دارم
سلام . لطفا برای سورس لاگین و قسمت پروفایل بالا ، آموزش ویرایش اطلاعات را نیز آموزش دهید . بسیار ممنون
سلام
واقعا مطلب خوبی بود و مرســـــــی !
ولی چند تا سوال دارم :
1- وقتی ما پسورد رو با تابع clean پاکسازی و ایمن میکنیم چرا دوباره توی درج تو جدول همونی که کاربر وارد کرده میزنیم ؟ ($_POST['password'] و بجاش $password رو نمیزنیم ؟
2- اگه قراره پسورد md5 بشه دیگه چه نیازی هست clean بشه ؟
3- همین الان یادم بودا !!!!! :دی
سلام دوست عزیز
در مورد سوال اول حق با شما بود،کد اصلاح شد،باید md5('$password') در جدول ذخیره میشد.
در مورد سوال دوم هم:
md5 ربطی به clean کردن نداره،ما اطلاعات وارد شده را از کارکترهای خاصی که در اس کیو ال اینجکشن مورد استفاده قرار میگیرند پاک میکنیم،و این دو تابع عملکرد یکسانی ندارند،کاربرد md5 در هش کردن داده هاست
سلام از آموزشتون خیلی ممنونم
خیلی واسم مفید بود
ولی یه مشکل اساسی دارم
من دقیقاً کد هارو مطابق کد شما نوشتم فقط اتصال به دیتابیس رو یه ذره تغییر دادم که با بقیه سایتم جور شه
البته تو حالت عادی با اتصال شما هم تست کردم همین مشکل رو داشت
تو فرم لاگین هیچ مشکلی ندارم و به خوبی لاگین میشه
مشکل من اینجاست که وقتی از طریق فرم رجیستر یک کاربر جدید اضافه می کنم رمز عبور اشتباه کد میشه یعنی جوری کد میشه که فرم لاگین نمیشناسه
مثلاً رمز پیشفرض که test هست و با لاگین مشکلی نداره کد شدش میشه 098f6bcd4621d373cade4e832627b4f6
ولی با فرم رجیستر وقتی رمز رو test میزنم کد شدش میشه 243e61e9410a9f577d2d662c67025ee9
به همین ترتیب تمام رمز ها اشتباه کد میشه یعنی من با هیچ رمز جدیدی نمیتونم وارد سیستم بشم.
اگه زودتر جواب بدید ممنون میشم آخه خیلی عجله دارم
اگه رفع نشد لطفاً بگید چطور بدون کد کردن بریزم تو جدول
بازم ممنون
راستی یه سایت دارم میزنم مال هتل
این سایت سیستم رزرو آنلاین داره
یعنی کاربر مشخصاتشو میده بعد اتاق رو انتخاب میکنه بعدم تاریخ شروع و تاریخ پایان
حالا من میخوام یه لیست از تمام اتاقام داشته باشم که جلوی هر اتاق بنویسه رزرو نشده یا اگه شده از کی تا کی
اینو میخوام بر اساس جدول رزروام چک کنه یعنی مثلاً واسه اتاق 104 تمام رزرو هارو چک کنه اگه 104 رو پیدا نکرد بنویسه رزرو نشده
اگه پیداش کرد تاریخ شروع و پایانش رو چاپ کنه
تو فرم رزرومم یه مشکل دارم اونم اینه که نمیدونستم چجوری چک کنم که طرف مقدار تکراری وارد نکنه اومدم فیلد شماره اتاق رو کلید کردم حالا اگه یه اتاق رزرو بشه دیگه کلاً نمیشه اون اتاق رو رزرو کرد.
ولی من میخوام واسه روزای بعدش بشه
در ضمن واسه این جداول فرم ویرایش و حذف و نمایش کل هم ساختم
اگه بتونید راهنماییم کنید یا یه فرم رزرو واسم بذارید خیلی خیلی ممنون میشم
فقط این یه پروژه درسیه وقت زیادی ندارم
بازم ممنون
مرسی دمت گرم دقیقا دنبال این مطلب بودم.
سلام .
خیلی معماری mvc رو تقریبا رعایت کردین اما در این برنامه اصلا از زیر برنامه استفاده نشده و کد ها یه خورده زیاد است .
سلام منه سایتی با هاست 20مگ خریدم ولی اصلا بلد نیستم قالب براش طراحی کنم با فرمت پی اچ پی
و تو هاست سایتم قالب رو بارگذاری کنم تا وقتی ادرس رو وارد میکنم صفحه نخست سایت رو ببیسنم لطفا کمکم کنید
مراحل کار رو از فکر کنم یه ماهی زود شروع کردی دوست عزیز
اول با توجه به نوع کنترل پنلت سایتت یادبگیر که چه طور می تونی یه فایل ساده html رو آپلود کنی. بعد که این کار رو یاد گرفتی باید ببینی قالبت رو برای چی می خوای سیستم مدیریت محتوایی مثل وردپرس یا جوملا داری یا نه فقط یه سایت رو طراحی کردی و می خوای تو هاستت آپلود کنی. بعد که تو همه اینا به نتیجه رسیدی باید قالبت رو آپلود کنی.
خیلی کار داری خیلییییییییییییییییی
عالی بود
سلام .یه برنامه نوشتم میخوام اسم user رو که میگیره کد کنه.
با دستور md5 بلدم .
میخوام کد برگشت پذیر باشه به همون اسم.
لطفاً جواب بدید.
دوست عزیز
مطالبی در این مورد روی سایت وجود داره:
http://www.phpdevelopers.ir/آموزش-هشینگ-hashing-و-محافظت-گذرواژه-ها-بخش-ا/
من یک فرم نظر سنجی در سایتم گذاشتم که پس از زدن کلید ثبت اطلاعات در دیتا بیس ثبت میشه.حالا میخوام همین اطلاعات به ایمیلم هم فرستاده بشن تا بتونم بخونمشون.
لطفا راهنمایم کنین .کد ها php هستند
دوست عزیز
مطلبی با همین موضوع در سایت وجود داشت میتونید از این کمک بگرید:
http://www.phpdevelopers.ir/آموزش-ارسال-ایمیل-با-php/
سلام لطفا قسمت پروفایل و ویرایش اطلاعات توسط کاربر هم بزارین
۲۲ دی ۹۰ ، ۰۷:۲۳ www.1love.dxd.ir‌جدیدترین چت روم نوار قرمز زیر صفحه
این کد را در کجای وب لاگ قرار دهیم
سلام من در بلاگفا وبلاگ دارم و بلاگفا این امکان رو نداره که من بتونم فرم عضویت رو قرار بدم لطفا من راهنمایی کنید با تشکر
باسالم
آموزشتون عالی بود
ولی من یه سوال ذهنم رو گرفته اگه ما بخوایم تو همه صفحه که فرم داریم یعنی کاربر اطلاعات رو وارد می کنه کدهای php بزاریم وقتی می خوایم این کار رو انجام بدیم
$fname = clean($_POST['fname']);
$lname = clean($_POST['lname']);
$login = clean($_POST['login']);
$password = clean($_POST['password']);
$cpassword = clean($_POST['cpassword']);
خطا از نوع Notic میده که متغییر ها تعریف نشده اند. ما باید از چه طریقی مقادیر فرم رو به متغییرها نسبت بدیم.یا اصلا نسبت ندیم چه جوری از اطلاعات فرم استفاده کنیم.
----------------------------------------------------------------------------------------------------------------------
اینو به خاط این پرسیدم چون مثلا اگه بخوایم پیغام ثبت نام تکمیل شد رو بالای فرم قرار بدیم از چه طریقی انجام پذیر هست.اگه ممکنه یه راحل بگید.ولی مورد بالا رو می خوام بدونم چجوری اون کاری که گفتم مممکنه
مرصی
درود
اقا من اینارو اپلود کردم در هاستم. ایمیل رو برام ارسال می کنه ولی فعال نمی شه ممنون می شم کمکم کنید.
با تشکر
بدرود
سلام میشه لطف کنین یه اموزش در ارتبلط با ساخت فرم ثبت نام توسط php البته با استفاده از پایگاه داده اکسس بزارین ؟
سلام و عرض خسته نباشید
بنده میخواستم یک فرم ثبت نام بنویسم و میخواستم فیلد ایمیل از دیتا بیس چک شود و در صورت تکراری بودن هشدار داده شود و کدی که نوشتم به این صورت میباشد ولی عمل نمی کند لطفا" بنده را راهنمائی کنید :
// Check the e-mail address
$result = mysql_num_rows(mysql_query("SELECT email FROM account WHERE email='$emailCHecker'"));
if($result > 0)
{
{die_error("ایمیل تکراری میباشد");}
}
//Check the e-mail address
سلام دوست عزیز کدت رو به صورت زیر تغییر بده مشکلت حل میشه:
 $result = mysql_num_rows(mysql_query("SELECT email FROM account WHERE email='$emailCHecker'"));
if($result > 0)
{
echo "ایمیل تکراری میباشد";
}
ایمیلت چیه برادره من؟
amin2oia AT gmail
لطفآ بهم خبر بده. ممنون.
با کدوم برادری برادر؟ :-)
codeblocks1 ات جیمیل
هر برادری که حس برادری بیشتری داره :دی
ممنون.
۲۹ فروردين ۹۱ ، ۱۳:۰۲ محمودرضا شکیبا
لطفا آموزش ثبت سوال در وب سلیت با استفاده از دستورات php را به ایمیلم بفرستید.با تشکر از سایت خوبتون
سلام
ممنون از اموزش مفیدتون
خیلی وقته دنبال یه همچین اموزشی میگشتم
میخاستم برم کلاس خصوصی گفتن 175تومن
فقط میخاستم بدونم شما طراحی سایت هم کار میکنین,؟
اگه کار میکنین چه جوری میتونم سفارش طراحی یه سایت بدم بهتون اگه ممکنه ایمیلتونو بدین
با تشکر
خوشحالم مفید واقع شده
طراحی هم تا حدودی کار میکنیم،چه من چه دوستانم
ایمیلم:
codeblocks1 [at]gmail[dot]com
سلام من یه مشکلی دارم اینکه وقتی مقادیرو کاربر وارد میکنه این پیغام میده : Query failed و وقتی هم هیچی وارد نمیکنیم این پیغام :
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp2\www\SiSuf\config.php:6) in C:\wamp2\www\SiSuf\login-exec.php on line 42
اصن درست کار نمیکنه نه فرم لاگین نه فرم رجیستر ، لطفآ کمک کنید ، مرسی

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی