دريافت Firefoxشما از نسخه ساده رايت کليک استفاده مي نماييد. براي ديدن نسخه پيشرفته رايت کليک، در صورت استفاده از يک مرورگر استاندارد، [ اينجا ]کليک نماييد.

آخرين عناوين ارسالي به انجمن ها
لينک هاي دوستان
به دليل حجم زياد فقط تعدادي به صورت تصادفي نمايش داده شده اند.
آموزش php (ساخت خبر نامه قسمت چهار)
1 , 2بازديد ها: 9173, پاسخ ها: 22
آموزش php (ساخت خبر نامه قسمت چهار)
توسط mojtaba در 6 دي 1385 - 19:19 ، پست ها: 1007
سلام دوستان،
از اين که اين همه نوشتن مطلب به طول انجاميد از همتون معذرت مي خوام :oops: ...

خوب امروز ميريم سراغ قسمت مديريت (ثبت نامه ها...)
خوب فايل admin.php رو با هم مي سازيم...
توي اين صفحه لينک هاي مختلفي به قسمت هاي مختلف مديريت ميگذاريم:
خوب چون اين صفحه صفحه اي هست که کاربر بايد حتما Login کرده باشه تا بتونه اون رو ببينه پس اول از همه اعتبار سنجي کاربر رو انجام ميديم. براي اين کار ابتدا تابع session_start رو صدا ميزنيم، سپس با يه شرط بررسي ميکنيم که کاربر Login کرده يا نه. اگر نه که کاربر رو به صفحه login.html هدايت ميکنيم و اگر Login کرده که کاري بهش نداريم...

کد: انتخاب همه
<?
   
   session_start();
   
   $ClientString = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'];

   if( !isset( $_SESSION['UserName']) || $_SESSION['ClientStr'] != md5( $ClientString))
   {
   
      header( "location: login.html" );
      exit();
   
   }
?>

<a href="InsertLetter.php">Insert New Letter</a>


اون آخر هم که مي بينيد يه لينک به يه صفحه ديگه گذاشته شده که توي اون صفحه نامه هايي رو که قراره ارسال کنيم رو تو ديتابيس ثبت ميکنيم.

خوب بريم سراغ صفحه InsertLetter.php و ببينيم که چطور اخبار رو ثبت مي کنيم.
چون توي اين صفحه هم نياز هست که کاربر معتبر باشه پس همون اعتبار سنجي بالا رو براي اين هم تکرار ميکنيم...
کد: انتخاب همه
   session_start();

   $ClientString = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'];

   if( !isset( $_SESSION['UserName']) || $_SESSION['ClientStr'] != md5( $ClientString))
   {
   
      header( "location: login.html" );
      exit();
   
   }


خوب حالا يه روش جديد ياد ميگيريم و اون اينه که اگه بخواييم توي يه صفحه فرمي داشته باشيم که هر وقت دلمون خواست باشه و هر وقت خواستيم اون رو نشون نديم و فرممون به همين صفحه جاري ارسال بشه ...

خوب اول چک ميکنيم تا ببينيم که کاربر فرم رو ارسال کرده يا نه که اگه چيزي ارسال نشده فرم رو نشون بديم:
کد: انتخاب همه
if( !isset( $_POST[ 'Title' ]))
{
?>
   <form method="POST">
   <p>Letter Title:
   <input type="text" name="Title" >
   <p>
   Letter Body: <textarea name="Body"></textarea>
   <p>
   <input type="submit" name="BtnSubmit" value="Insert">
   </form>
<?
}//End of If(isset)


توي چند خط بالا چند تا نکته هست که بايد بگم: اول اين که من توي شرط چرا در تابع isset اسم دکمه را ننوشتم و اسم يکي از EditBox ها رو نوشتم... دليلش اينه که وقتي که فرمي به سمت سرور ارسال ميشه بعضي از چيزهاي اون set نميشه (توي آرايه POST ريخته نمي شه...) مثلا وقتي دکمه submit رو کليک نکنيم يعني با کليد Enter وقتي که توي يکي از EditBox ها هستيم فرم رو ارسال کنيم اون دکمه Set نميشه همچنين در مورد CheckBox ها هم همين طور هست. اگه check نخورده باشند ارسال نميشن در مورد بقيه اجزاي فرم هم اگه disabled باشند باز هم ارسال نميشن.

يه نکته ديگه که توي تگ فرم مشاهده ميشه اينه که من هيچ Action ي براي فرم خودم مشخص نکردم وقتي اين کار رو ميکنم خود صفحه جاري به عنوان action فرم در نظر گرفته ميشه ... اگه method هم ننويسم get در نظر ميگيره...

خوب حالا بريم سراغ بقيه کد ها...
توي else مربوط به همين if ي که بالا نوشتيم کد مربوط به insert رو مينويسيم...
اولين کاري که ميکنيم اينه که چيزهايي که از فرم براي ما ارسال شده رو توي چند تا متغير ميريزيم :
کد: انتخاب همه
   $Title = $_POST[ 'Title' ];
   $Body = $_POST[ 'Body' ];
   $Today = date("Ymd");


حالا به ديتا بيس متصل مي شيم:
کد: انتخاب همه
   //Connecting to db...
   include('../config.php');
   connect();


يه Query براي Insert مي نويسيم و اون رو اجرا مي کنيم:
کد: انتخاب همه
   $Sql = "INSERT INTO `letters`
         ( `title`, `sent`, `date`, `show`, `body`)
         VALUES ( '$Title', '0', '$Today', '0', '$Body')";
         
   $Result = mysql_query($Sql) or die(mysql_error() . "<br>SQL: " . $Sql);


حالا يه نکته جديد:
کد: انتخاب همه
   if( mysql_affected_rows())
   {
      
      print("The Letter Inserted Sucsessfully!");
   
   } else {
   
      print("Error: The Letter Inserting Stopped!");
   }


بله تابع mysql_affected_rows رو معرفي ميکنم که براي SQL هايي که مربوط به تغييرات در اطلاعات ميشن تعداد رکورد هايي رو که تغيير کرده رو بر ميگردونه مثلا وقتي که insert، Update يا Delete که انجام ميديم ميتونه خيلي کمکمون کنه ... که يه نمونش رو بالا ميبينيد.
کد کامل صفحه insert رو زير براتون گذاشتم:
کد: انتخاب همه
<?
   session_start();

   $ClientString = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'];

   if( !isset( $_SESSION['UserName']) || $_SESSION['ClientStr'] != md5( $ClientString))
   {
   
      header( "location: login.html" );
      exit();
   
   }

if( !isset( $_POST[ 'Title' ]))
{
?>
   <form method="POST">
   <p>Letter Title:
   <input type="text" name="Title" >
   <p>
   Letter Body: <textarea name="Body"></textarea>
   <p>
   <input type="submit" name="BtnSubmit" value="Insert">
   </form>
<?
}//End of If(isset)
else{

   //Insert The Letter...

   $Title = $_POST[ 'Title' ];
   $Body = $_POST[ 'Body' ];
   $Today = date("Ymd");
   
   //Connecting to db...
   include('../config.php');
   connect();

   $Sql = "INSERT INTO `letters`
         ( `title`, `sent`, `date`, `show`, `body`)
         VALUES ( '$Title', '0', '$Today', '0', '$Body')";
         
   $Result = mysql_query($Sql) or die(mysql_error() . "<br>SQL: " . $Sql);
   
   if( mysql_affected_rows())
   {
      
      print("The Letter Inserted Sucsessfully!");
   
   } else {
   
      print("Error: The Letter Inserting Stopped!");
   }

}//End of Else If...

?>


در جلسات بعد در مورد ارسال ايميل دسته جمعي بحث ميکنيم و اين که کاربر چطور بتونه خودش ايميلش رو از ليست ما حذف کنه.

موفق و سربلند باشيد. :wink:
[ تبليغات ] سیستم فروش e-bookسیستم فروش آنلاین کتاب و جزوه الکترونیکی و ...
توسط jaberaghidat در 6 دي 1385 - 20:26 ، پست ها: 120
ممنون آقا مجتبي جان من يك سوال واسم پيش اومده :roll:

كه اين خبر نامه قسمت اول دوم سوم چهارم همش يك پروژه است ؟

يا هر كدوم يك پروژه كامل است آيا اين قسمت ها جمعا چهار نمونه خبرنامه هستند يا

همشون يك پروژه هستند ؟
توسط mojtaba در 7 دي 1385 - 9:58 ، پست ها: 1007
سلام،
اينا همش يه پروژه هست که توي قسمت صفر توضيح دادم که چي به چيه ...
و براي مقاصد آموزشي اون رو به چند قسمت تقسيم کردم...
توسط khosravi در 7 دي 1385 - 11:44 ، پست ها: 1
به نام خدا
با سلام و وقت بخير

دست شما درد نكنه آقا مجتبي
تشكر
توسط reza699 در 7 دي 1385 - 12:40 ، پست ها: 3
باز هم مثل هميشه عالي بود تشكر :kuss:
توسط ghasem در 7 دي 1385 - 13:14 ، پست ها: 45
سلام مجتبي جوون ...
خسته نباشي ... خيلي عالي بود ... :kuss:
ولي چرا به من سر نميزني ؟؟؟ :x حالتو ميگيرم ... :(
شوخي كردم
موفق باشي ...
به مناسبت تشكر از آقا مجتبياي شير
توسط ali712k در 9 دي 1385 - 11:14 ، پست ها: 27
با تشكر از زحمات شما(آقا مجتبي) و صبر و حوصله اي كه براي نوشتن اين مطالب آموزشي داريد.
انشالله كه خدا سايه شما را بر سر اين دانشجويان انجمن هميشه حفظ كند و روز به روز مطالب آموزشي شما و البته همكاري ديگر اعضاء انجمن افزون گردد و اين انجمن و سايت به انجمني پر بار و مهم و مرجع در زبان فارسي بدل گردد.


شعر زير را هم از كتاب حافظ به اين مناسبت كه آقا مجتبي شيرازي است آورده ام :
:o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o :o



خوشا شيراز و وضع بي مثالش
خداوندا نگهدار از زوالش
زركن آباد ما صد ركنش الله
كه عمر خضر مي بخشد زلالش
ميان جعفر آباد مصلي
عبير آميز مي آيد شمالش
به شيراز آي و فيض روح قدسي
بجوي از مردم صاحب كمالش
صبا زان لولي شنگول سر مست
چه داري آگهي چونست حالش
مكن از خواب بيدارم خدا را
كه دارم خلوتي خوش با خيالش
توسط mahdi در 11 دي 1385 - 13:02 ، پست ها: 770
آقا مجتبي دستت درد نكنه.
بازم مقالات مثل هميشه خوب و عالي :D
توسط mojtaba در 12 دي 1385 - 9:29 ، پست ها: 1007
سلام،
عزيزان از لطف همتون بسيار ممنونم ...
از شعر بسيار زيبايي که شما نوشتيد هم خيلي ممنونم
ان شاء ا... همتون موفق و سربلند باشيد. :kuss:
توسط Seyyed ali در 18 مرداد 1386 - 10:37 ، پست ها: 51
سلام چجوري ميشه نام کاربر هم به ديتابيس ارسال کرد منظورم اينه که بدون استفاده از فرم لاگين بتونيم کاربري که در حال ارسال است رو بشناسيم
توسط mojtaba در 18 مرداد 1386 - 11:41 ، پست ها: 1007
سلام،
اگه منظورت از ارسال، ثبت نام و ايميل با همه که بايد يه Edit ديگه توي فرم HTML مون بذاريم که کاربر توي اون نام خودش رو وارد کنه و بعد يه فيلد هم به Table مون اضاف مي کنيم براي نام کاربر، و بعد همش رو توش Insert مي کنيم.

موفق باشيد.
توسط Seyyed ali در 18 مرداد 1386 - 13:46 ، پست ها: 51
نه منظورم اينه که کاربري کا لاگين کرده مثلا علي رو بشناسيم منظورم اينه که بشه
اصلا اين جوري بگم
http://www.forum.rightclick.ir/profile. ... ditprofile
چطوري مي فهمه که من Seyyed ali هستم منظورم اينه
مي خوام بدونم از چي استفاده مي کنه کوکي؟ اي پي؟ session؟ يا چيز ديگه اي
توسط mahdi در 19 مرداد 1386 - 17:44 ، پست ها: 770
با استفاده از Sessionها كه روي DataBase ذخيره كرده :wink:
توسط Seyyed ali در 19 مرداد 1386 - 19:14 ، پست ها: 51
ميشه يک مثال بزني :kuss:
توسط mahdi در 21 مرداد 1386 - 19:40 ، پست ها: 770
توي سايت بگردي پيدا مي‏كني :D

1 , 2
صفحه اصليرايت کليکانجمن هاپروژه هاCopyright © 2005-2009 RightClick.ir All rights reserved.