چگونه : یک فرم ساده ثبت نام در PHP با امکان کار با دیتابیس MySQL بنویسیم ؟!

145 دیدگاه

سلام 🙂

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

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

  • فرم دریافت اطلاعات : فرم دریافت اطلاعات شامل ساختاری از تگ های مختلف فرم مانند <form>,<input>,<textarea>,<select>  و … می باشد که با توجه به نیازمان می توانیم ورودی های مختلفی مانند متن ، دکمه ، منوی پایین افتادنی،متن طولانی و … را با آنها ایجاد کنیم.در انتها نیز این فرم داده ها را به فایلی که درش مشخص کرده ایم ، ارسال می کند
  • فایل PHP برای پردازش اطلاعات ارسالی فرم : حالا که داده ها را از طریق فرم در اختیار داریم نیاز به کدهایی داریم تا آنها را پردازش کنیم.منظور از پردازش عموما دو کار است.اول اعتبارسنجی (validation) برای اطمینان از اینکه کاربر داده های صحیحی وارد کرده است یا نه .فرضا امتحان می کنیم که در ورودی ارسالی کاربر برای تلفن ، حروف موجود نباشد و … .دوم هم بلایی که می خواهیم بر سر داده ها بیاوریم.ممکن است بخواهیم آنها را به آدرسی ایمیل کنیم ، یا در دیتابیس ذخیره کنیم و یا در یک فایل متنی روی هاست مان ویا اصلا خروجی pdf بگیریم و یا های دیگر 🙂

در اینجا فرض می کنیم که می خواهیم یک فرم ثبت نام کاربران داشته باشیم که سه ورودی نام کاربری ، کلمه عبور و ایمیل کاربر را دریافت کند و بعد از اینکه مطمئن شد آدرس ایمیل از قالب درستی برخوردار است ( em[email protected] ) ، همه اطلاعات را در جدولی بنام users ذخیره کند .

در همین رابطه :   برنامه نویسی گام به گام یک سیستم حرفه ای مدیریت کاربران با php (قسمت اول)

قدم اول – کد HTML

فرم ما کدهایی شبیه زیر خواهد داشتکه باید آن را در فایلی بنام index.html ذخیره کنید :

index.html
<!doctype html>  
<html lang="fa">
<head>
<meta charset="utf-8">  
<title>Simple form</title>

<style type="text/css">
body,input[type="submit"]
{
	  text-align:center;
	  font:.9em tahoma
}
form 
{
	  width:400px;
	  margin:200px auto 0 auto;
	  border:1px silver solid
}

</style>
</head>

<body dir="rtl">
<form action="register.php" method="post">
نام کاربری : <input name="username" type="text" /> <br />
کلمه عبور :  <input name="password" type="password" /><br />
ایمیل : <input name="email" type="text" /><br />
<input name="send" type="submit" value="ثبت نام" />
</form>
</body>
</html>

همانطور که می بینید این صفحه از قوانین html5 نیز تا حدودی تبعیت می کند . در خط 8 یک سبک css تعریف کردیم تا استایل مربوطه را هم به تگ body اعمال کند و هم به همه تگ های input که خصیصه type شان برابر submit باشد (در کد بالا یکی داریم !)

در خط 24 نیز دو خصیصه مهم داریم که اولی action است و تعیین می کند بعد از اینکه کاربر روی دکمه ثبت نام کلیک کرد ، اطلاعات فرم به کدام صفحه فرستاده شوند و دومی نیز method یا روش ارسال داده هاست که معمولا از پست استفاده میشود .

 

قدم دوم – کد PHP

حالا باید ترتیب صفحه ای را بدهیم که در قسمت action فرم تعریف کردیم.

دقت کنید که می توانیم هر دو یعنی هم فرم و هم کدهای php را در یک صفحه واحد داشته باشیم و در آن صورت خصیصه Action باید خالی باشد.

کد های صفحه register.php ما به این صورت هستند :

register.php
<?php

$con=mysql_connect('localhost','root','');

if(!$con) {die ('MySQL connect error !');}

if(!mysql_select_db('test')){die('MySQL database select error !');}

$user=$_POST['username'];
$pass=$_POST['password'];
$mail=$_POST['email'];

if(!$user)
{

  	die('لطفا نام کاربری را وارد کنید !');

}
if(!$pass)
{

    die('لطفا کلمه عبور را وارد کنید !');

}
if(!$mail)
{

    die('لطفا ایمیل را وارد کنید !');
}
if(!preg_match("/[a-zA-Z0-9._-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z\.]+/",$mail))
{

    die('آدرس ایمیل صحیح نیست !');

}

$pass_hash=md5($pass);
$query= mysql_query ("insert into users (u_username,u_password,u_email)
                                  values('$user','$pass_hash','$mail');
");

if(mysql_affected_rows()>0)
{

  die ('ثبت نام کاربر تکمیل شد !');

}
else
{

  die('مشکلی بوجود آمده است !');	

}
?>

در این کد از خط 3 تا 7 به اتصال به دیتابیس و انتخاب پایگاه داده مورد نظر مربوط است.از خط 13 تا 35 نیز کدهای شرطی با دستور if قرار دارند که کار validation (که در ابتدا صحبت شد) را انجام می دهند.

در همین رابطه :   چگونه : در PHP ساده و سریع تر با MySQL کار کنیم؟

از خط 9 تا 11 ، مقادیری را که توسط فرم فرستاده شده اند و در متغیر سراسری POST_$ قرار دارند را می گیریم.

در خط 30 از عبارات منظم برای تشخیص اینکه قالب ایمیل صحیح است یا نه استفاده شده است.مثلا حتما دارای علامت @ باشد.

در خط 37 ، رمز عبور را با استفاده از تابع md5 ،هش (hash) کردیم.همانطور که می دانید قبل از ذخیره کلمات عبور در دیتابیس بهتر است آنها را به صورتی در آوریم که اگر توسط افرادی نیز خوانده شدند باز قابل بازگشت به اصل خود نباشند.در واقع تفاوت هش با کد کردن در همین است که هش قابل بازگشت نیست ولی موردی که کد شده باشد را می توان معکوس کرد و آن را بدست آورد.بدین ترتیب یک کد 32 حرفی از رمز کاربر ایجاد می کنیم.

در خط 38 همه اطلاعات دریافتی را بوسیله یک کوئری ،در پایگاه داده وارد می کنیم.

از خطوط 42 تا 53 نیز یک شرط قرار دارد تا مشخص شود عملیات وارد کردن داده ها موفقیت آمیز بوده یا نه.این کار توسط تابع mysql_affected_rows انجام می شود.کار این تابع ، برگشت دادن تعداد ردیف هایی است که روی شان عملیات های مختلف مانند : وارد کردن داده (کار ما) ، حذف داده و ویرایش داده رخ داده است.بنابراین در اینجا چون مشخصات یک کاربر را وارد می کنیم ، در صورت انجام موفقیت آمیز ورود داده ، مقدار یک را برگشت می دهد و می توان با توجه به آن پیام مناسبی را به کاربر نمایش داد.

 

کدهای sql برای ایجاد جدول user را می توانید از پایین پست دانلود کنید

در همین رابطه :   برنامه نویسی سیستم ساده ثبت نظرات با PHP/MySQL و jQuery به صورت AJAX

 

حالا می توانید با دیدن جدول users در دیتابیس ببینید که داده مورد نظر وارد شده است یا خیر

امیدوارم به درد دوستان خورده باشه .هر سوال یا نظری دارید میتونید در بخش نظرات پایین مطرح کنید.

 

دسته بندی : PHP

145 نظر

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

  2. سلام.من نمیتونم به پایگاه داده متصل مای اسکیوال شم.البته فقط هم آپاچی رونصب کردم.ارور هم اینه.
    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\Hilton\get.php:3 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Hilton\get.php on line 3
    کداتصالمم اینه:
    <?php
    if(isset($_POST['send'])){
    mysql_connect("localhost","root","");
    mysql_select_db("infodb");

    /* print("شما به طور غیر قانونی و بدون طریق ثبت وارد شدید…"); */
    $uname=$_POST['uname'];
    $tell=$_POST['tell'];
    $email=$_POST['email'];
    $date=date('Y/m/d');

    //query
    $sql="INSERT INTO `userinfo` (`uname`,`tell`,`email`,`date`) VALUES('$name','$tell','$email','$date')";
    $result=mysql_query($sql) or die(mysql_error());
    if (mysql_affected_rows()==1)
    {
    print($uname.'’.$tell.”.$email);
    echo’اطلاعات با موفقیت ارسال شد.’;
    }
    else{
    echo’خطا درثبت اطلاعات’;
    }

    //print($uname.”.$tell.”.$email);

    }
    else
    {
    print(“رسترسی شما رد شد::”);
    }

    میشه لطفا جوابو به ایمیلم بفرستی.خیلی ضروریه.خواهش میکنم.

  3. مطلب به جا و خوبی بود. من سوالی دارم
    سایتم فورم ثبت نام داره ولی میخواهم یکی از فورم ها را که سوال تلفون هست را به چیز دیگیری تغیر بدهم و جواب سوالی که باید کسی که عضو سایت میشه وارد کنه خیلی طولانی هست مثلا 36 تا حرفو عدد هست
    ولی بعد از اتمام کار
    The (name:) field cannot exceed 32 characters in length.
    من چطوری میتوانم این مقدار را زیاد کنم
    لطفا راهنمایی کنید سایتم به زبان php هست
    متشکرم بدورد

      1. سلام استاد
        سایت به صورت قالب اماده میباشد ترجمه کردم و راست چین شده
        در مورد سوالی که کردید من زیاد اشنایی با کد نویسی ندارم
        لینک سایتم به صورت ازمایشی
        http://btckurd.forsayara.com/user/register
        تنها میخواهم یکی از فرم ها را برای یک موضوع خاصی استفاده کنم و جواب ان طولانی هست
        مثل ادرس کیف بیت کوین بیشتر از 34 حرف هست ولی در این فورم قبول نمیکنه
        متشکرم
        ممنون میشم راهنمایی کنید

        1. سلام . سیستم سایت وردپرس هست یا خبر ندارین ؟ به هر حال فکر می کنم کدهای سایت تون باید بررسی بشه و شاید تو دیتابیس هم که این اطلاعات ذخیره میشه نیاز به تغییر باشه . قبل از دیدن کدهاتون بیشتر از این نمی تونم چیزی بگم

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

  4. درود بر شما
    من تازه دارم php یاد میگیرم و فعلا در حال ساخت صفحه لاگین هستم دو تا سوال داشتم
    1-من برای صفحه کد کپچا تولید کردم ولی متاسفانه این کد اعتبار سنجی نمیشه
    2- من دو تا صفحه عادی و مدیر دارم میخوام وقتی مدیر لاگین کرد به صفحه خودش بره و کاربران عادی هم به صفحه خودشون چگونه باید انجامش بدم ممنون میشم پاسخ بدهید.http://s9.picofile.com/file/8312321134/ex.zip.html

    متاسفانه داخل تمام انجمن ها سوالم را مطرح کردم ولی خیلی حرفه ای پاسخ میدهند و من اصلا متوجه نمیشم

  5. سلام روز بخیر
    من میخوام اطلاعاتم رو از یه database و با queryهای مشخص بخونم و توی قالب یه فرم pdf دربیارم. میتونید راهنماییم کنید که چطور این کار رو انجام بدم؟

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

  6. سلام من برای اتصال پایگاه به php از MySQL وmysqliوpdo استفاده کردم اما همش وقتی برنامه اجرا میشه خط مربوط به اتصال به پایگاه ایرور میده میخواستم بدونم مشکل از برنامه هست یا مشکل کد نویسی هست

  7. سلام برای اینکه بتونم برنامه بنویسم باید از کدام نسخه ها استفاده کنم برای برنامه نویسی php
    برای کد نویسی جدید phpباید mysqli رو یاد بگیرم یا pdo

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

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

  9. سلام
    چ جوری میفهمیم اتصال با پایگاه داده برقرار شده؟
    من این کدا رو نوشتم موقعی که دکمه ثبت رو میزنم کدای register.php رو میاره. با wamp server کار میکنم.
    لطفا کمکم کنین…منتظر جوابتونم

  10. There are no doubt many PHP Blogs, also I have been following this Blogs from fotolia.ir & it is really very nice to learn more about many PHP here.

    Also check out:- thehtmlcoder.com

  11. سلام
    خسته نباشید
    چجوری متونیم email و password ایمیلمون رو در یک فرم که با php نوشته شده وارد کنیم و وارد اکانت جیمیلمون بشیم؟

    1. سلام
      ممنونم . این کار از لحاظ امنیتی و عدم نیاز به این کار توصیه نمیشه ولی تا جایی که بنده می دونم تنها راهش استفاده از selenium هست .در این روش شما یک واسط بین خودتون و مرورگرتون(مثلا فایرفاکس) نصب می کنین و از طریق php می تونین مرورگر رو کنترل کنین یعنی بگین برو به آدرس سایت جیمیل . این اطلاعات رو در فرم ورود وارد کن . دکمه ورود رو بزن و …. همه اینها رو اتوماتیک انجام میدید

  12. سلام لطفا راهنماییم کنید ببینید یه صفه ساختم عین شما بعد یوزر نیم و پسورد و ایمیل رو میگیره بعد بهم بگید که چه کد رو استفاده کنم که این ایمیل و پسورد و یوزر نیمش توی پایگاه داده ام ذخیره بشه و یه بخش ای دی هم گزاشتم برا هر کس چه جوری بهشون ای دی بدم؟ و این که هر کس در پایگاه داده ذخیره شد میخام بره صفحه لاگ این بعد یوز پس بزنه و راهنمایی کنید از کجا کاری کنم که یوزر پسش رو از بانک بگیره زود تر کمکم کنید ممنون میشم سایتتون هم عالی بود اموزش خوبی داره خسته نباشید

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

    1. سلام . ممنونم
      به طور ساده در جدول منو باید یک فیلد دیگه(id_ostad) برای هر استاد اضافه کنین که id استاد مربوط به هر منو داخل اون ذخیره بشه(موقع insert) . یک جدول دیگه هم برای اساتید باید ایجاد بشه تا اسم و فامیل و id و یوزر پس هر استاد داخلش ذخیره میشه .استاد که لاگین کرد id شو می ریزید تو جلسه (session) . بعد موقع Insert منو جدید، توفیلد id_ostad اون رو وارد می کنین.

  14. با سلام و خسته نباشید، کاربر با موفقیت ثبت میشه ولی تو صفحه این اخطار هم نمایش داده میشه:
    Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\test\register.php on line 3
    {main}( )
    mysql_connect ( )
    ..\register.php:3
    مشکل از چی میتونه باشه؟ ممنون.

  15. $query= mysql_query (“insert into user (name,pass,mail)
    values(‘$user’,’$pass_hash’,’$mail’)”);
    if($query)
    { die (‘ثبت نام کاربر تکمیل شد !’); }
    else{ die(‘مشکلی بوجود آمده است !’); }
    ولی پیغام میده
    “مشکلی بوجود آمده

    1. $query= mysql_query(“insert into user (name,pass,mail) values(‘$user’,’$pass_hash’,’$mail’)”);
      if(mysql_affected_rows() > 0)
      { die (‘ثبت نام کاربر تکمیل شد !’); }
      else{ die(mysql_error().‘مشکلی بوجود آمده است !’); }

      این کد رو تست کنید

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

    1. سلام
      از طریق Query String راحت ترین راه هست . اول باید id اون رکورد رو در یک لینک به این صورت قرار بدید :


      b.php?id=8

      بعد در فایل b.php مقدار id رو به این صورت می گیرید :


      $id = $_GET['id'];

  17. با سلام
    میشه بگین چجوری میشه یه سیستم ثبت سفارش راه انداخت
    یعنی کاربر بیاد تو سایت عضو بشه و سفارششو ثبت کنه و بعد از ثبت اطلاعات کالای موردنظرش تو جدول سفارش تو دیتابیس ذخیره بشه
    و یه ارتباطی بینشون باشه که مثلا کاربرali20فلان محصول رو سفارش داده
    مرسی اگه توضیح بدین.

  18. سلام یه سوال مهم دارم
    چجوری میشه تو phpتعداد رکورهای برگشتی رو محدود کنیم
    یعنی تو صفحه اول که 4 تا محصول رو نشون دادیم
    دکمه های preview , next رو بزاریم و با کلیک رو دکمه next ادامه محصولات نمایش پیدا کنند
    یه توضیحی میفرمایین
    خیلی فوریه

    1. سلام
      تو mysql باید دستور limit رو استفاده کنید . ولی برای صفحه بندی کردن مطالب یکم بیشتر کار داره . روش های مختلفی هم هست . مثلا اینجا یه کلاس حاضری برای این کار نوشتن : http://code.tutsplus.com/tutorials/how-to-paginate-data-with-php–net-2928
      به فارسی هم جستجو کنین مطالبی هست . انشاا… مطالبی در همین مورد خواهیم نوشت .
      پ.ن : ممنون میشم ایمیل واقعی تون رو بنویسید

  19. سلام
    کد ها بالای فرم هست و action فرم هم خالی نیست
    چون میخواد پسورد تغییر کنه و بعدش پیغام رو بالای فرم نشون بده

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

    1. سلام
      بخش اول صحبت هاتون رو متوجه نشدم . در مورد بخش دوم در این مقاله چیزی گفته نشده ولی اگه خودتون می خواین بنویسین باید از Session ها در php استفاده کنید . در session به جای ایمیل کاربر باید نام کاربری کاربر رو ذخیره کنید.

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

    1. سلام
      خوشحالم مفید بوده براتون . برای اینکه در بالای فرم نمایش پیدا کنه باید دستورات php رو در بالای فرم قرار بدید و نه در فایل دیگه. action فرم رو هم باید خالی بزارین تا به خود همین فایل که فرم داخلش هست ارسال بشه . پسوند فایل هم باید php باشه تا دستورات php اجرا بشن .

  21. سلام
    من دوجدول شهر (با سه ستون ایدی شهر, ایدی استان,شهر) و استان (با دو ستون نام استان,ایدی استان) در sql دارم که داخل جدول شهر نام شهر ها و داخل جدول استان نام استان ها درج شده حالا میخوام اینارو بیارم تو کمبوباکس که وقتی کاربر رو استان مورد نظرش کلیک میکنه در کمبوباکس شهر نام شهر های استان مرتبط ظاهر بشه.
    میخوام با آژاکس بنویسم ولی چیزی نمیدونم من کدشو میخوام چیکار کنم؟

  22. سلام
    اگه بخوایم تو صفحه ثبت نام
    بعد از اینکه همه فیلد ها پر شدند توسط کاربر
    و کاربر روی ارسال کلیک کرد
    یک تیک سبز رنگ بیاد بالای فرم و بگه اطلاعات با موفقیت ذخیره شد
    و اگه مقادیر فیلد ها نامعتبر بود و یا اگه خالی بود یه پیغام خطا نشون بده
    چجوری مینویسیم اینو
    لطفا بگین

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

      die ('<span style="background:green;color:white">ثبت نام کاربر تکمیل شد !</span>');

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

    1. سلام
      باید این کد رو در خط 12 قرار بدین :
      if(str_len($pass)>6)
      {

      die('کلمه عبور باید کمتر از 6 حرف باشد !');

      }

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

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

      موفقیت

  25. سلام.من می خواهم که ایمیل منحصر به فرد باشد که اگر کسی با یک ایمیل ثبت نام کرد دیگر نتواند ثبت نام کند و هم چنین طول کلمه عبور حداقل 6 حرف باشد.می شه لطفا راهنماییم کنید؟

  26. سلام من هرچه گشتم نتونستم دانلود SQLرو پیدا کنم
    کدهای sql برای ایجاد جدول user را می توانید از پایین پست دانلود کنید
    این کدهای SQLکجاست ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

  27. با سلام و خسته نباشید و با تشکر از توضیحتان
    لطفا خط زیر را برام تشریح کنید.

    متشکرم.

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

  29. خواهشا کمک کنید
    آقای زمانی کیا هستم چرا جواب منو نمیدین
    برای ریزالت 30 رکورد آخر ثبت نام شده چی باید بنویسم
    برای ویرایش هر کدام از این 30 ریزالت چی بنویسیم
    و برای حذف هر کدام از این ریزالت ها چی بنویسیم

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

    هر چقدر هزینش باشه میدم خواهش می کنم اینکارو در حقم بکنید

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

  32. سلام. واسه شماره شناسنامه اگه بخوام طولشو چک کنه
    if(!$sh){

    die(‘shomare shenasname ra vared konid !’);
    }
    if(!preg_match(“/[0-9]{10}/”,$sh))
    خطا میده

  33. salam va khaste nabashid,,,bebakhshid ma ye proje darim tarahi site laptop,vagti to gesmat order kilide sabt ro mizanim text ha khali mishe vali dataha dar my sql zakhire nemishan,,lotfan age mishe komak konid
    in ham code haye php ma
    <?php

    $name = $_post ['n'];
    $codeposti = $_post ['c'];
    $tell = $_post ['t'];
    $address = $_post['a'];
    $message = $_post ['m'];

    $a=mysql_connect('localhost:8001','root','');

    if(!$a)
    {
    die("not connected");
    }
    mysql_select_db('buy',$a);

    @$f=mysql_query("insert into buy (name,codeposti,tell,address,message)values('$name','$codeposti','$tell','$address', '$message')") ;
    echo'’;

    if (!$f)
    {
    die(“not insert”);
    }
    else
    {
    echo’*** ba movafagiyat sabt shod***’;
    }

    echo ”;

    ?>

  34. سلام خسته نباشید.
    من با دریم ویور کدهای بالا را نوشتم ولی خطوط 37 و38 کد php رو عینا در خروجی چاپ میکنه!!!!!!!!!!!!!!!!!!!!
    لطفا مرا یاری کنید.ممنون

  35. سلام،سورس مربوط به فایل دیتابیس رو وقتی ایمپورت می کنم داخل phpmyadmin ارور میده لطفاً راهنمایی کنید.

  36. با سلام اول ممنون ازسایت خوبتون .دوم اینکه من یه سایت دارم طراحی میکنم می خوام صفحه ارتباط با مارو باphpوصل کنم به پایگاه داده ،(البته اینم بگم که با نرمافزار دریم ویور cs4 دارم طراحی می کنم)ولی یه مشکلی هست اونم وقتی که می خوام از منوی windowگزینه server behavior رو انتخاب می کنم و از علامت +گزینه my sqlconnection را انتخاب می کنم ودر مرحله آخر که می خوام نام دیتا بیسم رو انتخاب کنم ارور setup site’s testing serverرو میده ،نمیدونم چکار کنم چطوری باید تنظیم کنم خواهش می کنم کمکم کنید….دیگه دارم دیوونه میشم….اگه بتونید کمک کنید یه عمر دعاگوتون میشم..

  37. سلام
    این فرمو چطوری باید تو لوکال بالا بیارم ؟
    برای بالا اوردن توی لوکال باید sql server رو نصب کرد؟
    لطفا کامل توضیح بدین

  38. سلام
    ممنون از آموزش مفید شما
    یک سوال الان من این قسمت md5 کردن رو به فرم خودم اضافه کردم
    ولی وقتی کاربر میخواد وار سایت بشه میگه پسور اشتباهه و وقتی پسوردی که hash شده رو میزنم وارد سایت میشه .

  39. ضمن عرض سلام و خسته نباشید
    با تشکر از آموزش خوبتان
    اگر بخواهم پیغام های خطا یا validation و پیغام های موفقیت در ثبت اطلاعات و خطا در ثبت اطلاعات در صفحه ی اصلی نمایش داده بشود چیکار باید انجام بدهم ؟
    در ضمن اگر امکان دارد فرم را تا حدودی پیشرفته تر نمایید ( منظورم آموزش است )
    به عنولن مثال قرار دادن دکمه جستجو و نمایش grid اطلاعات
    و ….

    موفق و پایدار باشید

  40. سلام دوست عزیز… شاید بتونی کمکم کنی?
    فرمی رو که من ساختم که یه سری اطلاعات به زبان فارسی رو در داخل دیتا بیس ذخیره میکنه. ولی این اطلاعات به صورت فارسی ذخیره نمیشه و با حروفی این شکلی احمد ذخیره میشه!
    هر کاری هم میکنم درست نمیشه!
    از utf8_unicode و utf8-general و utf8-persian هم در یتا بیس استفاده کردم ولی بازهم درست نشد! شما راهنمایی نداری؟ لطفا اگه راه حلی داری برام ایمیل کن. تشکر

  41. سلام ببخشین چه طوری میشه واسه کاربر شرط گذاشت که اگر پسوورد رو سه بار غلط زد کپچا برایش ظاهر شود؟

  42. سلام من این کد را نوشتم ولی وقتی داده وارد میکنم فقط جواب مشکلی رخ داده است را میده … میشه علتش رو توضیح بدید

  43. سلام
    ی سوال دارم اگه بخوام ی combobox یعنی فیلد انتخابی توی فرم بذارم میشه کدشو بگید(فیلد کشویی) و کاربر هرچس انتخاب کرد به دیتابیس بفرسه ممنون

  44. سلام علی جان خسته نباشی

    1 سوال کوچیک داشتم میخواستم راهنمایی کنی منو

    سوال :

    اگر بخوام تو صفحه خودم یک تگ select بذارم که با انتخاب هر optaion از این select برای من یک المنت Select دیگه با option های مختلف ظاهر بشه چکار کنم ؟

    منظورم رو با یک مثال میگم که بهتر متوجه بشی :

    فرض کن یک لیست انتخاب جلوی کاربر هست ( select ) بعد به محض اینکه کاربر option اول رو انتخاب میکنه ، یک لیست انتخاب دیگه ظاهر میشه
    ( مشکلم کد جاوا هست نمیدونم چی بزنم ) .

  45. سلام خسته نباشید
    من ی سایت کارت پستال طراحی کردم ولی هرکاری می کنم نمی تونم عکس ارسال کنم
    لطفا کمکم کنید

  46. سلام
    با سپاس از آموزشتان من کارهای بالا را انجام دادم منتها در وارد نمودن اسامی فارسی دیتا بیس فارسی نشان نمیدهد فکر کنم یکجای کدهای بالا باید ویرایش شود لطفا بررسی نمایید

  47. سلام
    چطور اطلاعات رو از پایگاه داده select کنم و تو همون صفحه نمایش بدم به طوری که اسکرول هم داشته باشه.میشه دستورشو برام بگید؟ممنون میشم اگه زود بگین آخه عجله دارم!

  48. با سلام
    ممنون از آموزش خوبتون
    من اتصال پایگاه داده رو انجانم دادم ولی تتو select مشکل دارم .

    if(!mysql_select_db(‘users’)){die(‘MySQL database select error !’);}

    هر بلایی سرش آوردم نشد.
    لطفا” راهنمایی کنید

    1. سلام
      ممنونم ، اول باید دیتابیس رو بسازید و بعد اسمشو اینجا وارد کنین . اینکارو با phpmyadmin می تونید انجام بدید

  49. سلام
    ممنون بابت مطلب لطفا اموزش اتصال این فرم رو به این سیستم ETCHATبنویسیدچون سیستم ثبت نام نداره.

  50. سلام

    چگونه یک فایل متنی رو در پایگاه داده ذخیره می کنیم ؟ پروژه من در باره بانک مقالات هست ولی نمی دونم چطوری باید فایل ها رو ذخیره کنم ممنون میشم.

  51. باسلام
    برنامه ی ثبت نام کاربر رو نصب و اجرا کردم
    میخام اطلاعاتی که کاربر وارد کرده و ثبت شده است را مشاهده کنم
    لطفا راهنمایی کنید؟؟؟؟؟؟؟
    با تشکر

  52. دوست عزیز ، حق با شما بود با vertrigo که run کردم سیستم بالا اومد .

    حالا برای اینکه یه فرم لوگین برای همین ثبت نام داشته باشیم چه کار کنیم .

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

    با تشکر
    Bvk

  53. سلام
    مرسی بابا آموزش
    من 1 وب سایت در دریم ویور طراحی کردم ، و در هاست و دمین یکی از دوستانم تستش کردم، ولی خوب در صفحه ای که من می خواهم کاربر اطلاعات وارد کنه خروجی به هیچ فایلی داده نمی شه خیلی مطالعه کردم مثل اینکه من باید 1 فایل php برای ارجا خروجی داشته باشم ولی اصلا نمی دونم چگونه بنویسم می شه به من لطفا کمک کنید مثلا می خواهم در فرمم اسم و فامیل بازدید کننده رو بگیرم
    مرسی

    1. سلام دوست عزیز
      خوب مثل همین صفحه تقریبا باید بنویسین . اول یه فرم با دو ورودی(input) اسم و فامیل و بعدش هم یه فایل php که اینا رو بگیره و یا به ایمیلی ارسال کنه یا تو دیتابیس ذخیره کنه

  54. سلام : ضمن تشکر بابت آموزشی که ارائه دادید ، دوست عزیز من یک مشکل پیدا کردم اونم موقعی که ثبت رو میزنم به صفحه register.php که میره کد صفحه رو نشان میده و ذخیره نمیشه . اسم بانک هم test هست در ضمن users.sql هم import کردم . ممنون میشم اگر راهنمایی کنید

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

  55. سلام

    بخواهیم برای تعداد کارکتر در ورودی فیلد پسورد شرط بزاریم به چه شکلی میشه نوشت مثلا” : کمتر از 4 کارکتر نباشد

    1. سلام
      می تونید از تابع strlen استفاده کنید . مثلا :
      if(strlen($pass)<4)
      {
      echo 'رمز بايد بزرگتر از 4 کاراکتر باشد';
      }

  56. سلام
    توضیح مسئله : من یه فرم ثبت نام دارم که میخوام بعد از ثبت اطلاعات 3 فیلد به ایمیل کاربر ارسال بشه و تا حدودی انجام دادم به شرح زیر :
    1- ایمیل( از فرم اول فرا خوانی میشود ) و سابجکت (از فرم دوم بصورت ثابت می باشد ) ارسال میشه .
    2- وقتی از داخل فایل دوم متن body بین ‘ ‘ پر میشه اون هم ارسال میشه ولی وقتی از یک متغیر فرا خوانی میشه ارسال نمیشه .

    کاری که بنده کردم :
    بنده یه فرم نوشتم با phpmailer به این صورت که 3 تا فیلد را میگیره و در $Message ذخیره میکنه و به فایل class.phpmailer.php از طریق SESSION میفرسته اما در class.phpmailer.php در فانکشن $body فرا خوانی نمیشه .
    خلاصه کدها :
    فایل اول :
    $Message = ”
    Name : $username
    Last Name : $password
    credit :$credit
    expire : $exdate”;

    $Message = $_POST[‘Message’];
    $_SESSION[“Message”] = $Message;

    فایل دوم :
    function htmlmail($to, $from, $subject, $body) {
    global $error,$guser,$gpwd;
    $mail = new PHPMailer(); // create a new object
    $mail->IsSMTP(); // enable SMTP
    $mail->SMTPDebug = 0; // debugging: 1 = errors and messages, 2 = messages only
    $mail->SMTPAuth = true; // authentication enabled
    $mail->SMTPSecure = ‘ssl’; // secure transfer enabled REQUIRED for GMail
    $mail->Host = ‘smtp.gmail.com’;
    $mail->Port = 465;
    $mail->Username = $guser;
    $mail->Password = $gpwd;
    $mail->SetFrom($from);

    $mail->Subject = ‘اکانت کاربری شما فعال گردید ‘;
    $mail->CharSet = ‘UTF-8’;

    $mail->Body = $Message ;
    $mail->AddAddress($to);
    $mail->IsHTML(true);
    $mail->CharSet = “utf-8”;
    if(!$mail->Send()) {
    //$error = ‘Mail error: ‘.$mail->ErrorInfo;
    return false;
    } else {
    //$error = ‘Message sent!’;
    return true;

    با تشکر

    1. سلام
      بالای همه صفحات تون تابع session_start(); رو نوشتید ؟ اگه بله لطفا همه فایل های مربوط به ارسال ایمیل رو تو یه فایل zip برای بنده ارسال کنید تا اگه شد حلش کنیم

      موفقیت

  57. سلام و عرض خسته نباشید
    بنده میخواستم یک فرم ثبت نام بنویسم و میخواستم فیلد ایمیل از دیتا بیس چک شود و در صورت تکراری بودن هشدار داده شود و کدی که نوشتم به این صورت میباشد ولی عمل نمی کند لطفا” بنده را راهنمائی کنید :
    // 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

    1. سلام . متشکرم
      مي تونيد از کد زير استفاده کنيد

      $result=mysql_query("select * from account where email='$email'");
      if(mysql_affected_rows()>0) die_error(“ايميل تکراري ميباشد“);

  58. یه سوال دیگه هم دارم راجع به همین مطلب. ببخشیدا. مثلا من میخوام اگه فرم ثبت نام کامل بود، پیغام “ثبت نام کاربر تکمیل شد” بالای “نام کاربری” نشون داده بشه و داخل صفحه دیگه‌ای نره. میشه اینم برام یه مثال بزنید؟

    1. برای این کار باید فرم ثبت نام و کدهای php در یک فایل باهم باشند مثلا بنام register.php .اگه می خواید پیام در بالا نمایش داده بشه می تونید همین کدها رو در بالای کدهای html فرم قرار بدید . فقط باید مشخص کنید که اگر کاربر روی دکمه ثبت نام کلیک کرد بخش php اجرا بشه و نه از اول .چون هنوز داده ای برای ثبت نداریم.برای این کار هم باید تمام کدهای php رو داخل یک شرط if قرار بدید و بگید که اگر if($_POST['send']) اون موقع کدهای php اجرا بشن

  59. و یه سوال دیگه:) ببخشید من انقدر سوال می‌کنما. مثلا برای رمز عبور اگر بخوام بگم حداکثر مقدار x باشه باید چجوری تعریفش کنم؟ من زیاد وارد نیستم تازه دارم یاد می‌گیرم، خلاصه باید ببخشید دیگه.

        1. بله ولی باید موقع ثبت نام هم چک کنید که همون اندازه مورد نظر شما باشه وگرنه خطا بده با تابع strlen

          1. اممم اینو میشه یه مثال بزنید. آخه الان که داخل فرم محدودیت 10 رو داره خب بیشتر از این مقدار که نمیتونیم عدد بدیم پس چجوری میشه؟

  60. یه سوال! مثلا همین اعضا رو اگر بخوایم جهت نمایش داخل آمارگیر بکار ببریم از چه کدی باید استفاده کنیم؟ میشه راهنمایی کنید؟

      1. مثلا من دیدم جاهایی در قسمت آمارگیرشون چنین چیزی دارن:

        بازدید امروز:
        بازدید دیروز:
        تعداد اعضا:
        و …

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

        1. مثلا با کدی مثل :
          $r5=mysql_query("select count(*) from users");
          و تعداد کاربران تو این تابع هست :
          mysql_result($r5,0)
          می تونید echo یا هر کاری خواستین بکنین

          1. با اجازتون من این چند مورد که یادم دادین رو امتحان کنم. اشکالی داشتم باز مزاحمتون میشم. از نظر شما که ایرادی نداره؟

  61. دستتون درد نكنه من هرجا رفتم براي آموزش يه تيكه ناقص داشت. اين آمورش ساده و درعين حال پركاربرد و مفيد هست. خيلي ممنون.

    1. ممنون دوست عزیز ، خوب دوستان زیادی این سوال رو دارند و این مطلب رو دقیقا در جواب همین موضوع نوشتیم.

  62. علی جان از php سر در نمیارم ولی فک کنم یوزر نیم رو مستقیم میریزی تو دیتابیس و این یعنی sql injection بهتره از نظره امنیتی بررسی بشه در دات نت به راحتی روش هایی برای جلوگیری از sql injection و XSS وجود داره در php رو خبر ندارم

    1. درسته محمدجان ، چون بیشتر قصدم تو این بحث فقط آموزش خیلی ساده کار با دیتابیس بود با توجه به سوالات مکرر دوستان، دیگه نخواستم کدها زیاد پیچیده بشن .ولی در مثال های کاربردی حتما باید ورودی ها بررسی بشن همونطور که شما گفتی .
      تو php هم راه های مختلفی هست که ساده ترینش تابع mysql_real_scape_string است.
      ممنون از نظر بجایی که دادی 🙂

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *