آموزش php >> کارتهای الکترونیکی با php وmysql
آموزش مقدماتی تا حرفه ای زبان برنامه نویسی php
|
آیا شما تا به حال خواسته اید که کارتهای الکترونیکی برای سایت تان بسازید ؟ این کار را اخیرا من انجام داده ام و همزمان با آن همه یک روش کار درست بدست آوردم . بنابراین اینجا یک خودآموز سریع است و از این جهت شما مجبور نیستید کارهایی را که من انجام داده ام را بپذیرید . همچنین در این خودآموز شما ممکن است برای نکات بیشتر ارجاعهایی به “ Floppydogs” داشته باشید . ولی آنچه بر روی آن است نیز از روی کد من در Floppydogs.com آمده است .
حال آیا اینکه شما فکر کنید که این کار یک قطعه session ساده و آسان می خواهد، درست است ؟ خیر ، اینکار را نکنید، خود من هم دقیقا علت آن را نمی دانم چرا که اگر من در session_destory( ) این کار را انجام می دادم session ID از پذیرفتن آن به این روش امتناع می ورزید .
اشکال این ایجاد کردن ها زمانی بود که کاربر یک e_card را ارسال می نمود و موقعی که سعی می کرد که برگردد و یک کارت جدید را ایجاد کند اینکار را نمی توانست انجام دهد زیرا که خطایی مبنی بر ID مشابه پیش می آمد ( چه زحمتی! ) . برای اینکار اول از همه من، باید عکسها را بسازم و آشکار است که همه آنها بر روی
صفحه index.php نمایش داده می شود ، کد اینجا :
به طور معمول هر تصویر یک imagename متفاوت دارد حالا من برای ساختن makecard.php در جائیکه کاربر می رسد و در his/her/its اطلاعات شخصی را وارد می کند از session ها استفاده نمودم که در صورت صرفنظر از این قسمت این خودآموز دیگر بلا استفاده می شود .
session_start
();
session_register
(
"image");
?>
رجیستر سازی تصویر به این معنی است که موقعی session خراب شده است، کاربر عکس را انتخاب و به نام متغیر آن به چسباند . همه اطلاعات session باید همزمان با شروع HTML شروع به رفتن کند . حال کد زیر :
echo
$image
;
?>
">
اگر شما بدانید که چگونه از فرم ها استفاده کنید در اغلب مواقع ضروری بیشتر باید
از آن استفاده کنید .
در اینجا یکی از خصیصه های امنیتی Escapeshellcmd( ) اینست که کاربران بدجنس نمی
توانند دستورات mysql را وارد فیلد ها بکنند و از آن طریق اطلاعات شما را بگیرند
.اگر شما همه جزئیات آن را بخواهید ، می توانید در راهنمای دستی آن نگاه کنید .
در ادامه من در یک جا به این مسأله برخورد کردم که اگر کاربر یک تصویر را انتخاب
کند و در آن موقع به ذهنش برسد که باید برگردد و his/her/its را تغییر داده باید
چکار کند زیرا که تصویر یک متغیر رجیستر شده است و در تصویر اول هیچ موضوعی نمانده
که انتخاب نشده باشد . با این وجود خوشبختانه این حالت نیز آسان می باشد و در بالای
صفحه index.php من به راحتی کد زیر را اضافه کردم :
session_start
();
session_destroy
();
?>
و سپس به یاد می آورد که قبل از هر کاری از HTML آن را وارد کند و حالا کارت را
می فرستد .
قدم اول این بود که یک جدول درون mysql ایجاد کنید ، شما می توانید خودآموز های
بیشتر را از روی devshed پیدا کنید .برای گرفتن یک ID منحصر به فرد برای هر کارت
من از یک تابع استفاده کردم ( که دوباره هر کدام قبل از HTML می روند ) و آن را
به صورت session_destory( ) ذکر کردم تا نتواند ظاهر شود و ID خودش را خراب کند
. به همین دلیل اطلاعات در داخل session هستند اگر شما کتاب Core php programming
را که منبع اصلی من نیز می باشد را داشته باشید این تابع را خواهید شناخت .
session_start
();
function
CreateID
(
$length
=
16
){
$Pool
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$Pool .= "1234567890floppydogs";
for($index = 0; $index < $length; $index++){
$sid .= substr($Pool,(rand()%(strlen($Pool))), 1);
}
return($sid);
}
$sid=CreateID();
?>
اساسا این تابع یک مجموعه طبقه بندی شده از ۱۶ کاراکتر را تولید می کند که از
کاراکتر های انتخابی من ساخته شده است مشروط بر اینکه درون $Pool باشد .حال هر
چیزی می خواهید وارد جدول mysql بکنید و ترتیب نگهداری متغیر هایتان را به یاد
داشته باشید . اگر در آنجا یک عنصر با همان ID وجود داشته باشد mysql بصورت اتوماتیک
در صورتی که اجرا شود یک خطا برمی گرداند که در مورد ( نتیجه !) است و یک ID جدید
می سازد .
$result
=
mysql_query
(
"INSERT INTO ecards VALUES('$sid', '$s_name', '$s_email','$r_name',
'$r_email','$message', '$image')");
if(!$result){
$sid=CreateID();
$result = mysql_query("INSERT INTO ecards VALUES('$sid', '$s_name', '$s_email','$r_name',
'$r_email','$message', '$image')");
}
?>
حال با پست کردن موفقیت آمیز یک پیام با عنوان him/her/its گیرنده می فهمد که
he/she/it یک e_card دارد ! و در پایان نمی تواند session را خراب کند همچنین کاربر
می تواند در صورتی که he/she/it بخواهد برود و کارتی دیگر بسازد .
$mailTo
=
"$r_email";
$mailSubject = "You Have A FloppyDog!";
$mailHeader = "From: $s_name";
$message = "You lucky person, you! Someone has thought of you in a warm
and fuzzy way and sent you a floppydog studios (TM) e-card! You can view this
card at the following webpage: ";
$message .= "http://www.floppydogs.com/ecards/viewcard.php?ID=";
$message .= $sid;
mail($mailTo, $mailSubject, $message, $mailHeader);
session_destroy();
?>
این هم از این . لحظات خوشی با e_card سازی داشته باشید .اگر شما بخواهد همه این
کارها را ببینید می توانید مقداری از کارتهای الکترونیکی را موقعیکه همه آنها روی
هم گذاشته شد از طریق floppydogs.com برای دوستانتان بفرستید .
موفق باشید
خمس علمتان قبول باشه