سلام دوستان،
از اين که اين همه نوشتن مطلب به طول انجاميد از همتون معذرت مي خوام

...
خوب امروز ميريم سراغ قسمت مديريت (ثبت نامه ها...)
خوب فايل 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...
?>
در جلسات بعد در مورد ارسال ايميل دسته جمعي بحث ميکنيم و اين که کاربر چطور بتونه خودش ايميلش رو از ليست ما حذف کنه.
موفق و سربلند باشيد.
