loading...
افزایش رتبه الکسا رایگان تضمینی
ثبت نام مستر کارت رایگان

برای ثبت نام بر روی تصویر کلیک نمایید

آخرین ارسال های انجمن
عنوان پاسخ بازدید توسط
پیامک زیبای فلسفی 0 120 hengame
اس ام اس خنده دار برای تجدید روحیه 0 106 hengame
اس ام اس مهربانی 0 104 hengame
اس ام اس سرکاری ماه رمضان 0 97 hengame
اس ام اس تبریک روز نیروی انتظامی 0 95 hengame
نحوه ورود به حالت Safe Mode در اندروید 0 103 ghazal
من او را دوست می دارم...(مرتضی درویشی) 0 97 ghazal
خیال نرگس مستت، ببست خوابم را (سلمان ساوجی) 0 108 ghazal
داستان طنز: از فرصت ها استفاده کنید! 0 94 ghazal
داستان عاشقانه همکلاسی 0 82 ghazal
اس ام اس خنده دار و سرکاری جدید 0 108 gelare
پیامک فلسفی جدید 0 80 gelare
اس ام اس خنده دار تبریک تولد 0 85 gelare
اس ام اس عاشقانه مخصوص روزای بارونی 0 99 gelare
اس ام اس عاشورای حسینی 0 92 gelare
عاشق شدن پادشاه بر کنیزک رنجور ( مولوی ) 0 88 yasamin
شعر شوق از فروغ فرخزاد 0 72 yasamin
داستان عشق و ثروت و موفقیت 0 83 yasamin
اس ام اس شهادت امام سجاد (ع) 0 82 yasamin
گفت‌وگویی پیرامون ازدواج (طنز) 0 88 yasamin
اس ام اس فلسفی و جملات قصار زیبا (8) 0 102 ziiba
اس ام اس روز عشق 0 73 ziiba
اس ام اس خنده دار و سرکاری تابستان 0 80 ziiba
اس ام اس ضد پسر 0 82 ziiba
اس ام اس ولادت امام موسی کاظم(ع) 0 79 ziiba
اس ام اس چهارشنبه سوری (2) 0 85 faranak
اس ام اس سرکاری ماه رمضان(2) 0 79 faranak
اس ام اس طنز و خنده دار (5) 0 95 faranak
اس ام اس فلسفی و جملات قصار زیبا (5) 0 79 faranak
اس ام اس خاطره های عاشقانه و غمگین 0 88 faranak
Hadi بازدید : 0 یکشنبه 20 بهمن 1392 نظرات (0)

 

php-limit-word

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

نمایش قسمتی از پاراگراف به صورت شمارش کلمه


یکی از روش های نمایش قسمتی از متن یا پاراگراف در php، تعیین تعداد و میزان کلماتی است که قصد داریم در خروجی نشان داده شوند، برای این کار از سه تابع explode ، implode و array_splice استفاده می کنیم که در تابع زیر این سه را باهم ترکیب کرده ایم.

<?php function limitword($string, $limit){ $words = explode(" ",$string); $output = implode(" ",array_splice($words,0,$limit)); return $output; } ?>

برای فراخوانی تابع، کافی است پاراگراف مورد نظر را در یک متغیر تعریف و متغیر را (به عنوان آرگومان اول) به همراه تعداد کلمات مورد نظر (به عنوان آرگومان دوم) و به صورت زیر فراخوانی کنید.

<?php $string = "آموزش کاربردی پی اچ پی نمایش قسمتی از متن و پاراگراف"; echo limitword($string,5); ?>

به این صورت در خروجی، تنها 5 کلمه اول از مقادیر متغیر فرضی string را خواهیم داشت.
توضیح:
- تابع explode با دریافت یک مقدار آرگومان به عنوان جداکننده (در اینجا فضای خالی یا " ")، متن مورد نظر را به صورت آرایه ای از کلمات تبدیل می کند.
- در قسمت بعدی، تابع implode مجددا آرایه ها را تبدیل به یک رشته می کند، البته در اینجا array_splice باعث می شود که تنها بخش خاصی از متن مورد نظر به خروجی ارسال شود.
نکته: برای محاسبه تعداد کلمات موجود در آرایه، می توانید از sizeof هم استفاده کنید.

<?php $words = explode(" ",$string); echo sizeof($words); ?>

به این صورت می توانید برنامه خود را هوشمند تر سازید؛ به فرض اگر تعداد کلمات یک متن از مقادیر مورد نظر شما بیشتر بود، قسمت array_splice اجرا شود و یا ایده های دیگری که ممکن است به ذهنتان برسد.

نمایش قسمتی از متن به صورت شمارش حروف  


یک روش دیگر برای انتخاب و نمایش قسمتی از یک متن، شمارش تعداد حروفی است که تمایل داریم به همان اندازه به خروجی ارسال شود، برای انجام این کار از تابع substr می توانیم استفاده کنیم.

<?php $string = "آموزش کاربردی پی اچ پی نمایش قسمتی از متن و پاراگراف"; echo substr("$string", 0, 25); ?>

البته این روش برای کلمات فارسی چندان کاربردی نیست، چرا که هر حرف فارسی در تابع substr دو کاراکتر حساب می شود و از این گذشته، در این تابع گاهی مواقع کاراکترهای غیر استاندارد در انتهای متن مورد نظر به خروجی داده می شود که این موضوع به دلیل یونیکد حروف فارسی است.

نمایش قسمتی از متن و پاراگراف در MySQL


علاوه بر روش های بالا که صرفا متکی بر کدهای php و توابع آن هستند، در mysql و به هنگام پرس و جو یا همان query نیز این امکان وجود دارد که بتوانیم نتایج را محدود به تعداد کلمات خاصی کنیم، برای این کار از تابع SUBSTRING و به شکل نمونه زیر استفاده می کنیم.

<?php $result = mysql_query("SELECT id, SUBSTRING(text,1,30) as text FROM articles ORDER BY id DESC LIMIT 1"); ?>

در مثال بالا، با استفاده از تابع SUBSTRING در MySQL از جدول فرضی articles، ستون text کاراکترهای 1 تا 30 را انتخاب کرده ایم، البته این تابع نیز نسبت به حروف فارسی در مقایسه با حروف انگلیسی، رفتاری متفاوت دارد.
Hadi بازدید : 0 یکشنبه 20 بهمن 1392 نظرات (0)

ارسال ایمیل از طریق برنامه های سمت سرور و از جمله php، یکی از رایج ترین مباحث کاربردی در نوع خود است که دیر یا زود برنامه نویس زبان php یا لااقل علاقمند استفاده از آن را درگیر خود می کند، اگرچه php به طور پیش فرض توابعی برای ارسال ایمیل در مفسر خود گنجانده است، اما گستره استفاده از این امکان و نیازهای کاربران به حدی است که نمی توان تنها بر آن متکی بود، از طرفی بحث ارسال ایمیل با توجه به محدودیت ها و قابلیت های سرورهای مختلف، گاهی پتانسیل تبدیل شدن به یک مشکل به ظاهر پیچیده را دارد و این چیزی است که بعضا فکر و ذهن برخی از کاربران را مشغول خود می کند، به همین خاطر در این آموزش قصد داریم در حد امکان بپردازیم به نحوه ارسال ایمیل با php و کلاس phpmailer، با این امید که مفید واقع شود.
ارسال ایمیل در php با تابع mail
برای ارسال ایمیل در php روش های مختلفی وجود دارد، ساده ترین راه، ارسال ایمیل با استفاده از تابع درونی و از پیش تعریف شده ()mail و SMTP بدون بررسی نام کاربری و رمز عبور (authentication) است، معمولا، کافی است این تابع را با چند آرگومان فراخوانی کنید تا ایمیل شما ارسال شود، به طور مثال:


<?php //دریافت کننده ایمیل $to = "username@example.com"; //موضوع ایمیل $subject = "ایمیل ساده"; //متن پیام $body = "سلام، \n\n این ایمیل جهت تست ارسال شده است!"; //سربرگ های اضافه $headers = "From: yourname@example.com"; //فراخوانی تابع و ارسال ایمیل if (mail($to, $subject, $body, $headers)) { echo("<p>ایمیل شما با موفقیت ارسال شد</p>"); } else { echo("<p>خطا در ارسال ایمیل! تنظیمات سرور شما از این امکان پشتیبانی نمی کند</p>"); } ?>

توضیح:
- تابع mail به صورت از پیش تعریف شده در php وجود دارد و تنها کافی است آن را با تکمیل پارامترها، فراخوانی کنیم.
- کارکرد صحیح این تابع، تا حدود زیادی بستگی به تنظیم درست موارد مورد نیاز آن در فایل php.ini دارد (از جمله smtp_port ،SMTP ،sendmail_from در سرورهای ویندوز و sendmail_path در سرورهای لینوکس)، در سرورهای اشتراکی، معمولا دسترسی به فایل اصلی php.ini امکان پذیر نیست، بنابراین اگر نتوانید با تابع mail ایمیل ارسال کنید، به احتمال زیاد تنظیمات این فایل به درستی انجام نشده است یا سرور هاست شما، قابلیت ارسال ایمیل را محدود کرده است که باید با پشتیبانی خود در این مورد تماس بگیرید.
- همانطور که ملاحظه می کنید، این تابع سه پارامتر اصلی و چند پارامتر فرعی را می تواند در هنگام ارسال ایمیل پوشش دهد، پارامترهای اصلی آدرس ایمیل دریافت کننده، موضوع و متن پیام است، پارامترهای اضافی به صورت سربرگ ها قابل استفاده هستند که به طور مثال می توانند به صورت زیر باشند:



<?php $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'X-Mailer: php' . "\r\n"; $headers .= 'Reply-To: username@example.com' . "\r\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $headers .= 'Cc: Admin@example.com' . "\r\n"; $headers .= 'Bcc: Other@example.com' . "\r\n"; ?>

- علامت r\\n\\ در کدهای بالا برای ایجاد یک خط جدید استفاده می شوند.
- MIME یک استاندارد اینترنتی برای ارسال و دریافت ایمیل است (Multipurpose Internet Mail Extensions)، همچنین است SMTP که مخفف (Simple Mail Transfer Protocol) است.ارسال ایمیل به صورت html با تابع mail
تابع mail علاوه بر ارسال ایمیل به صورت متن ساده یا plain text برای ارسال متون به صورت صفحات html نیز قابل استفاده است، بدین منظور دو کار را باید در هنگام ارسال ایمیل انجام دهیم:
1- متن پیام ما باید به صورت یک کد html باشد، درست شبیه صفحات ساده وب که به صورت html هستند.
2- در قسمت سربرگ ها که در بالا عنوان شد، سربرگ زیر را برای پشتیبانی از زبان فارسی، به کد خود اضافه کنیم:


<?php $headers = 'Content-type: text/html; charset=utf-8' . "\r\n"; ?>


به طور مثال:


<?php //دریافت کننده ایمیل $to = "username@example.com"; //موضوع $subject = "ارسال ایمیل به صورت html"; //متن پیام به صورت html $body = "<html> <body> سلام، \n\n این ایمیل جهت<b> تست </b>ارسال شده است! </html> </body>"; //سربرگ ها $headers = "From: yourname@example.com \r\n"; $headers .= "Content-type: text/html; charset=utf-8 \r\n"; //ارسال ایمیل if (mail($to, $subject, $body, $headers)) { echo("<p>ایمیل شما با موفقیت ارسال شد</p>"); } else { echo("<p>خطا در ارسال ایمیل! تنظیمات سرور شما از این امکان پشتیبانی نمی کند</p>"); } ?>

البته ارسال سربرگ های اضافی همیشه هم ضروری نیست، برخی از سرویس های ایمیل به طور پیش فرض از یونیکد utf-8 استفاده می کنند، اما برای اطمینان از اینکه ایمیل شما در همه سیستم ها خوانا و قابل استفاده باشد، بهتر است سربرگ utf-8 را همراه ایمیل خود ارسال کنید.ارسال فایل ضمیمه با تابع mail در php
ارسال ایمیل بدون فایل های ضمیمه یا همان attachment با تابع mail در php کار چندان سختی نیست، اما اگر بخواهیم به همین صورت فایل ها را نیز به همراه نامه الکترونیک خود ضمیمه کنیم، باید چند کار دیگر را نیز انجام دهیم که در ادامه خواهیم گفت؛ ابتدا کد زیر را در نظر بگیرید:


<?php //دریافت کننده ایمیل $to = "username@example.com"; //ارسال کننده ایمیل $from = "yourname <yourname@example.com>"; //موضوع $subject = "ارسال ایمیل به همراه ضمیمه"; //کد رندوم boundary $randcode = md5("r",time()); //خط جدید $line = "\r\n"; //یا PHP_EOL //فایل ضمیمه $filename = "phpbook.zip"; //تجزیه و آماده سازی فایل برای ارسال $attachment = chunk_split(base64_encode($filename)); //سربرگ ها $headers = "From: ".$from.$line; $headers .= "MIME-Version: 1.0".$line; $headers .= "Content-Type: multipart/mixed; boundary=\"".$randcode."\""; //متن پیام به صورت ساده $body = "--".$randcode.$line; $body .= "Content-Transfer-Encoding: 7bit".$line.$line; $body .= "این یک ایمیل به همراه ضمیمه است".$line; //متن پیام به صورت html $body .= "--".$randcode.$line; $body .= "Content-Type: text/html; charset=\"utf-8\"".$line; $body .= "Content-Transfer-Encoding: 8bit".$line.$line; $body .= "این یک ایمیل به همراه <b>ضمیمه</b> است".$line; //تنظیمات فایل ضمیمه $body .= "--".$randcode.$line; $body .= "Content-Type: application/zip; name=\"".$filename."\"".$line; $body .= "Content-Transfer-Encoding: base64".$line; $body .= "Content-Disposition: attachment".$line.$line; $body .= $attachment.$line; $body .= "--".$randcode."--"; //ارسال ایمیل if (mail($to, $subject, $body, $headers)) { echo("<p>ایمیل شما با موفقیت ارسال شد.</p>"); } else { echo("<p>خطا در ارسال ایمیل! تنظیمات سرور شما از این امکان پشتیبانی نمی کند</p>"); } ?>


کد بالا با استفاده از تابع mail در php، علاوه بر ارسال متن ساده و متن به صورت html قابلیت ارسال فایل ضمیمه (attachment) را نیز دارد.
توضیح:
- قبل از هر چیز در هنگام ارسال ایمیل با ضمیمه، ما به سربرگی تحت عنوان boundary یا سرحد و کرانه احتیاج داریم، برای تفکیک قسمت های مختلف یک ایمیل (از جمله متن ساده، متن به صورت html و فایل ضمیمه) در استاندارد MIME باید از کدهای رندوم تحت عنوان boundary استفاده کنیم، البته در واقع مهم نیست این کد شامل چه عبارتی (از حروف و اعداد) باشد، مهم این است که سیستم دریافت کننده ایمیل بتواند قسمت های مختلف آن را تفکیک کند، از طرفی این کد نباید در متن پیام تکرار شده باشد، لذا معمولا از یک کد رندوم اختصاصی استفاده می شود.
- نکته مهم دیگر استفاده از تابع chunk_split و base64_encode است، به این صورت فایل ما برای انتقال به قطعات کوچکتری تقسیم شده و در چارچوب استاندارد RFC 2045 قابل انتقال است.
- همانطور که ملاحظه می کنید، در سربرگ های اولیه، مقادیر multipart/mixed را برای Content-Type در نظر گرفته ایم که این کار به دلیل ضمیمه بودن فایل به ایمیل است.
- در دو قسمت میانی کد، دو نوع متن به صورت plain text و text html ارسال کرده ایم که شما بنا بر ضرورت می توانید از هر دو یا تنها از یک روش استفاده کنید.
- نکته مهم دیگر استفاده از application/zip برای Content-Type در قسمت مربوط به فایل ضمیمه است، برای بدست آوردن Content-Type فایل های مختلف با فرمت های متفاوت، کافی است آدرس فایل خود را در سرور یا در لوکال هاست در کد زیر به جای متغیر فرضی file جایگزین کرده و آن را اجرا کنید، خروجی، Content-Type فایل شما را نشان می دهد:


<?php //تابع نمایش نوع فایل function my_mime_content_type($filename){ $mime_types = array( //files 'txt' => 'text/plain', 'htm' => 'text/html', 'html' => 'text/html', 'php' => 'text/html', 'css' => 'text/css', 'js' => 'application/javascript', 'json' => 'application/json', 'xml' => 'application/xml', 'swf' => 'application/x-shockwave-flash', 'flv' => 'video/x-flv', //images 'png' => 'image/png', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'gif' => 'image/gif', 'bmp' => 'image/bmp', 'ico' => 'image/vnd.microsoft.icon', 'tiff' => 'image/tiff', 'tif' => 'image/tiff', 'svg' => 'image/svg+xml', 'svgz' => 'image/svg+xml', //archives 'zip' => 'application/zip', 'rar' => 'application/x-rar-compressed', 'exe' => 'application/x-msdownload', 'msi' => 'application/x-msdownload', 'cab' => 'application/vnd.ms-cab-compressed', //audio/video 'mp3' => 'audio/mpeg', 'qt' => 'video/quicktime', 'mov' => 'video/quicktime', 'mpeg' => 'video/mpeg', 'mpe' => 'video/mpeg', 'mpg' => 'video/mpeg', 'wav' => 'audio/wav', 'aiff' => 'audio/aiff', 'aif' => 'audio/aiff', 'avi' => 'video/msvideo', 'wmv' => 'video/x-ms-wmv', //adobe 'pdf' => 'application/pdf', 'psd' => 'image/vnd.adobe.photoshop', 'ai' => 'application/postscript', 'eps' => 'application/postscript', 'ps' => 'application/postscript', //ms office 'doc' => 'application/msword', 'docx' => 'application/msword', 'rtf' => 'application/rtf', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', //open office 'odt' => 'application/vnd.oasis.opendocument.text', 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', ); $ext = strtolower(array_pop(explode('.',$filename))); if (array_key_exists($ext, $mime_types)) { return $mime_types[$ext]; } else { return 'application/octet-stream'; } } //آدرس فایل شما $filename = 'image/file.gif'; //خروجی echo my_mime_content_type($filename); ?>
ارسال ایمیل با استفاده از کلاس phpmailer
اگرچه کاربرد تابع mail در php بسیار آسان و ساده است، اما این تابع تنها موارد اولیه را پوشش می دهد، به فرض امکان استفاده از SMTP به صورت authentication یا بررسی نام کاربری و کلمه عبور وجود ندارد، یا نمی توان سرور ارسال ایمیل را تغییر داد و محدودیت های دیگری از این دست، لذا برنامه نویسان php بسته ها و کلاس های دیگری بدین منظور نوشته اند که یکی از معروف ترین آنها کلاس phpmailer است، علاوه بر کلاس phpmailer بسته ایمیل PEAR نیز برای php وجود دارد که البته به دلیل قدرت و انعطاف پذیری کلاس phpmailer کم تر مورد استفاده قرار می گیرد.
برای شروع آموزش این قسمت ابتدا کلاس مذکور را از لینک زیر دریافت کنید:


http://code.google.com/a/apache-extras.org/p/phpmailer

به دلیل مسدود بودن خدمات code گوگل برای ip های ایران، می توانید آخرین نسخه آن را از لینک زیر نیز دریافت کنید:
دانلود کلاس phpmailer نسخه 5.2.1 - حجم 50 کیلوبایت
در نسخه بالا برخی فایل های غیر ضروری مربوط به تست های جانبی کلاس، نسبت به نسخه اصلی حذف شده اند تا از سردرگمی کاربران در مواجه با تعداد زیاد فایل های این بسته جلوگیری شود، زبان فارسی نیز برای خطاها، در قسمت language قرار داده شده است که می توانید با اعمال تغییراتی در فایل class.phpmailer.php از آن نیز استفاده کنید، یادآور می شویم اگر می خواهید این کلاس را به همراه تمام فایل های جانبی در اختیار داشته باشید، بهتر است نسخه سایت گوگل را دریافت کنید، اما اگر داشتن فایل ها و مثال های اصلی برایتان مهم است و چندان اهل کنجکاوی در موارد اضافی و جانبی نیستید، این بسته نیز کامل و مناسب است.
استفاده از کلاس بالا بسیار ساده و آسان است، کافی است مطابق الگوی زیر موارد مورد نظر را با توجه به سرور خود تنظیم کرده و فایل را اجرا نمائید.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>وبگو | ارسال ایمیل با کلاس PHPMailer</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- http://webgoo.ir --> </head> <body> <?php require_once('class.phpmailer.php'); $mail = new PHPMailer(true); $mail->IsSMTP(); try { $mail->Host = "mail.example.com"; // آدرس SMTP سرور شما $mail->SMTPAuth = true; // استفاده از SMTP authentication $mail->Username = "yourname@example.com"; // نام کاربری SMTP $mail->Password = "************"; // کلمه عبور SMTP $mail->AddReplyTo('yourname@example.com', 'Your Name'); // افزودن پاسخ به ارسال کننده $mail->AddAddress('username@example.com', 'User Name'); // تنظیم آدرس گیرنده ایمیل $mail->SetFrom('yourname@example.com', 'Your Name'); // تنظیم قسمت ارسال کننده ایمیل $mail->Subject = 'PHPMailer تست'; // موضوع ایمیل $mail->AltBody = 'برنامه شما از این ایمیل پشتیبانی نمی کند، برای دیدن آن، لطفا از برنامه دیگری استفاده نمائید'; // متنی برای کاربرانی که نمی توانند ایمیل را به درستی مشاهده کنند $mail->CharSet = 'UTF-8'; // یونیکد برای زبان فارسی $mail->ContentType = 'text/html'; // استفاده از html $mail->MsgHTML('<html> <body> این یک <font color="#CC0000">تست</font> است! </body> </html>'); // متن پیام به صورت html //$mail->AddAttachment('images/phpmailer.gif'); // ضمیمه کردن فایل $mail->Send(); // ارسال echo "پیام با موفقیت ارسال شد\n"; } catch (phpmailerException $e) { echo $e->errorMessage(); // پیام خطا از phpmailer } catch (Exception $e) { echo $e->getMessage(); // سایر خطاها } ?> </body> </html>

توضیح:
- همانطور که گفتیم ارسال ایمیل با کلاس phpmailer بسیار آسان و کاربردی است، کافی است ابتدا فایل اصلی برنامه یعنی class.phpmailer.php را در صفحه خود وارد کنید (با استفاده از require یا include)، سپس موارد مورد نیاز را مطابق با سرور و حساب خود تنظیم نمائید.
- در قسمت IsSMTP مشخص می کنیم که می خواهیم از SMTP برای ارسال ایمیل استفاده کنیم و برای استفاده از این امکان باید آدرس میل سرور، نام کاربری و کلمه عبور را مطابق الگو تکمیل نمائید.
- قسمت AltBody برای کسانی است که برنامه مدیریت ایمیل آنها تنها از متن ساده پشتیبانی می کند و امکان دیدن ایمیل های html را ندارند.
- قسمت MsgHTML متن پیام به صورت html را در خود جای می دهد، این متن هم می تواند با فراخوانی یک فایل جانبی (با تابع file_get_contents) باشد یا اینکه به صورت مستقیم وارد شود، به فرض در هنگام کار با فرم های ایمیل می توان متن دریافتی از فرم را به یک متغیر نسبت داده و متغیر را به عنوان محتوای ایمیل ارسالی در نظر گرفت.
- اگر نیاز به ضمیمه کردن فایل یا فایل هایی در ایمیل خود دارید، می توانید از قسمت AddAttachment که در مثال بالا غیر فعال شده است، استفاده کنید، ذکر این نکته ضروری است که فایل شما باید از قبل بر روی سرور قرار گرفته باشد و سپس آدرس آن به صورت داینامیک جایگزین شود که خود نیاز به کمی مهارت در برنامه نویسی php دارد.استفاده از SMTP گوگل برای ارسال ایمیل در php
با استفاده از کلاس PHPMailer شما می توانید از سایر سرورهای SMTP که در آنها حساب کاربری دارید نیز برای ارسال ایمیل استفاده نمائید، البته در عمل سرویس های ایمیل معمولا پس از مدتی برخی از پورت های عمومی خود را محدود کرده یا تغییر می دهند؛ با این وجود یکی از پرکاربردترین این سرورها، سرویس ایمیل سایت گوگل است که تقریبا محدودیت های آن از سایر موارد مشابه کم تر است، البته در لحظه ای که آین آموزش نوشته می شود، ظاهرا پورت 465 SSL آن برای برنامه های جانبی مسدود شده است و خطای timeout می دهد، اما پورت 587 TLS همچنان کار می کند، در کنار این دو پورت امن، پورت 25 نیز وجود دارد که نیازی به رمزنگاری ندارد، برای اینکه این کد در سرور شما به درستی کار کند، بهتر است همه موارد را بررسی کنید، ارسال ایمیل از این طریق محاسن و در عین حال معایبی دارد، بهترین مزیت آن این است که محدودیت برخی از هاست های اشتراکی را ندارد، توضیح اینکه در بیشتر هاست ها برای ارسال ایمیل محدودیت هایی به صورت روزانه و یا ساعتی قائل می شوند، ظاهرا و به گفته تیم پشتیبانی گوگل، در سرویس این شرکت روزانه بالغ بر 2000 ایمیل از یک اکانت قابل ارسال است، اما معایب این سرویس این است که ممکن است از طرف گوگل پورت های آن مسدود شود یا بدون اطلاع قبلی تغییر پیدا کند و یا به ip های برخی کشورها سرویس ندهد و... که این استقلال برنامه ما را تحت تاثیر قرار می دهد، به هر صورت تصمیم به استفاده یا عدم استفاده از این امکان را به عهده شما می گذاریم.
بدین منظور لازم است الگوی بالا را به شکل زیر تغییر دهید:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>وبگو | ارسال ایمیل با کلاس PHPMailer و سایت گوگل</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- http://webgoo.ir --> </head> <body> <?php require_once('class.phpmailer.php'); $mail = new PHPMailer(true); $mail->IsSMTP(); try { $mail->Host = "smtp.gmail.com"; // آدرس SMTP سایت گوگل $mail->SMTPAuth = true; // استفاده از SMTP authentication $mail->SMTPSecure = "tls"; // استفاده از پروتکل امن $mail->Port = 587; // درگاه خروجی سرویس ایمیل گوگل $mail->Username = "yourname@gmail.com"; // نام کاربری حساب گوگل $mail->Password = "************"; // کلمه عبور حساب گوگل $mail->AddReplyTo('yourname@example.com', 'Your Name'); // افزودن پاسخ به ارسال کننده $mail->AddAddress('username@example.com', 'User Name'); // تنظیم آدرس گیرنده ایمیل $mail->SetFrom('yourname@example.com', 'Your Name'); // تنظیم قسمت ارسال کننده ایمیل $mail->Subject = 'PHPMailer تست'; // موضوع ایمیل $mail->AltBody = 'برنامه شما از این ایمیل پشتیبانی نمی کند، برای دیدن آن، لطفا از برنامه دیگری استفاده نمائید'; // متنی برای کاربرانی که نمی توانند ایمیل را به درستی مشاهده کنند $mail->CharSet = 'UTF-8'; // یونیکد برای زبان فارسی $mail->ContentType = 'text/html'; // استفاده از html $mail->MsgHTML('<html> <body> این یک <font color="#CC0000">تست</font> است! </body> </html>'); // متن پیام به صورت html //$mail->AddAttachment('images/phpmailer.gif'); // ضمیمه کردن فایل $mail->Send(); // ارسال echo "پیام با موفقیت ارسال شد\n"; } catch (phpmailerException $e) { echo $e->errorMessage(); // پیام خطا از phpmailer } catch (Exception $e) { echo $e->getMessage(); // سایر خطاها } ?> </body> </html>

پس از اجرای کد برای اولین بار، ممکن است سرویس گوگل دسترسی برنامه را مسدود کند تا از شما مجوزهای لازم را دریافت نماید، بدین جهت اگر با خطای authentication مواجه شدید، لازم است که به ایمیل خود مراجعه کرده و با پیروی از دستورالعمل پیام ارسالی از طرف گوگل، مبنی بر تلاش برای استفاده از حساب شما در یک برنامه جانبی، اجازه استفاده از حساب کاربریتان را به برنامه خود بدهید و از نو آن را اجرا کنید، توجه کنید که به اشتباه بر روی لینک ها کلیک نکنید، در غیر این صورت برنامه شما ممکن است مسدود شود و برای ارسال ایمیل از این طریق با مشکل مواجه شوید.ارسال ایمیل در لوکال هاست و WampServer
برای ارسال ایمیل از طریق لوکال هاست و برنامه سرور محلی WampServer، با استفاده از SMTP سرویس ایمیل گوگل یا همان GMail، ابتدا لازم است که آخرین نسخه wamp را روی سیستم خود نصب کنید، این برنامه را می توانید از لینک زیر دریافت نمائید.


www.wampserver.com

پس از نصب برنامه، به دلیل استفاده گوگل از پروتکل های امن و عدم پشتیبانی wamp (به طور پیش فرض) از این امکان، باید تغییراتی در فایل اصلی php.ini اعمال نمائید تا ایمیل شما از این طریق قابل ارسال باشد، لذا پوشه ای که برنامه را در آن نصب کرده اید باز کرده و آدرس زیر را ادامه دهید تا به فایل php.ini برسید.


\bin\apache\apache*.*.**\bin

در این فایل با استفاده از نت پد (notepad) یا هر ویرایشگر متنی دیگر و با کمک قابلیت کلمه یاب یا Find، به دنبال عبارت openssl بگردید تا به خط مربوط به extension=php_openssl.dll برسید، اگر در ابتدای این خط علامت ; بود، آن را حذف کنید و فایل خود را ذخیره کرده و برنامه WampServer را (اگر در حال اجرا بود) بسته و مجددا اجرا کنید یا از امکان شروع مجدد آن استفاده نمائید، اکنون اگر تابع ()phpinfo را در یک فایل php خروجی بگیرید، در قسمت Phar امکان OpenSSL support باید فعال یا enabled باشد، در غیر این صورت در هنگام ارسال ایمیل از طریق phpmailer و wamp، پیام زیر را دریافت خواهید کرد.


Warning: stream_socket_enable_crypto() [streams.crypto]: this stream does not support SSL/crypto

حال همه چیز آماده است تا از کلاس PHPMailer و SMTP گوگل استفاده نمائیم.
در پایان مجددا یادآور می شویم که ممکن است برای اولین بار، گوگل کد شما را مسدود کند تا مجوز اجازه و دسترسی برنامه را از شما دریافت نماید، لذا اگر با این خطا در اکانت gmail خود مواجه شدید، باید از دستورالعمل آن پیروی کرده و مجوز دسترسی از حساب خود را به برنامه بدهید.

Hadi بازدید : 0 یکشنبه 20 بهمن 1392 نظرات (0)

php-google-page-rank






پیج رنک گوگل یا google page rank که به اختصار به آن PR هم می گویند، یکی از مهم ترین و جنجال برانگیزترین مباحث بین مدیران وبلاگ ها و سایت های مختلف بوده و کماکان هست، تا جایی که برخی به هر روشی که شده، سعی می کنند پیج رنک خود را بالا ببرند و حتی خیلی چیزهای دیگر را فدای آن می کنند! به هر صورت بحث ما در مورد اینکه چگونه پیج رنک خود را افزایش دهیم یا مسائل از این دست نیست، بلکه می خواهیم ببینیم چگونه می توان با زبان برنامه نویسی PHP، نمره پیج رنک گوگل سایت یا وبلاگ خود را به دست آورد، البته در این مطلب نمی خواهیم نحوه ساخت ابزار نمایش پیج رنک گوگل را آموزش دهیم، بلکه می خواهیم پایه و مبنای اصلی کار برای برنامه نویسان، که همان عددی است که گوگل برای آدرس سایت ها و وبلاگ های درخواست شده بر می گرداند را با PHP دریافت کنیم، اینکه از این عدد چطور استفاده خواهیم کرد، بستگی به ایده های ذهنی و سلیقه خودتان دارد.

پیج رنک گوگل چیست؟


بد نیست قبل از اینکه وارد بحث اصلی شویم، مروری داشته باشیم به اینکه اصلا پیج رنک گوگل چیست؟ جواب این است که پیج رنک الگوریتمی پیچیده برای آنالیز یک لینک (صفحه) از لحاظ میزان ارزشمندی و محبوبیت در وب است، ارزشمندی یک لینک (صفحه) نیز بر اساس میزان و اهمیت صفحاتی است که به آن، لینک خروجی داده اند، به این ترتیب گوگل نمره ای از 0 تا 10 برای هر سایت (و در واقع برای هر لینک) در نظر می گیرد، هر چه این عدد بالاتر باشد، یعنی گوگل برای آن صفحه یا لینک ارزش بیشتری قائل است و اعتبار بیشتری به آن لااقل در تئوری می  دهد، البته در نمایش نتایج جستجو، پیج رنک، تنها یک بُعد کار است، الگوریتم های گوگل آنقدر پیچیده شده اند که بسیاری از عوامل را درهنگام نمایش مطالب سایت ها و وبلاگ ها در لیست نتایج جستجو دخیل می کنند، یا نوع امتیاز دهی گوگل به سایت ها و وبلاگ هایی که به فرض به تعداد زیادی لینک خروجی می دهند با سایت ها یا وبلاگ هایی که تنها به چند عدد لینک بسنده می کنند، فرق دارد، بعضا دیده شده، گوگل حتی رتبه سایتهای تبلیغاتی و پُر از لینک خروجی را به شدت کاهش داده و باعث حیرت همگان شده است.
به لحاظ تجاری عنوان پیج رنک یا page rank توسط گوگل ثبت شده است اما به لحاظ سابقه تاریخی این عنوان ابتدا متعلق به دانشگاه استنفُرد امریکا (Stanford University) بود و امتیاز آن در سال 2005 توسط شرکت گوگل از این دانشگاه خریداری شد، به تدریج با پیروی از گوگل، سایر رقبای جدی آن نیز تا حدودی این معیار را در الگوریتم های جستجوی خود اعمال کرده اند و اکنون تقریبا پیج رنک بالا تر یکی از نشانه های احتمال موفقیت بیشتر در وب است (البته تنها یکی از نشانه ها نه همه چیز!).

پیج رنک گوگل از چه آدرسی قابل دریافت است؟


پیج رنک گوگل را بر روی تولبارهای نمایش پیج رنک که در مرورگرهای مختلف تحت عنوان پلاگین نصب می شوند، می توان دریافت کرد، این تولبار ها با ایجاد درخواست به آدرس toolbarqueries.google.com و با ارسال آدرس صفحه مورد نظر، عددی را در جواب بین 0 تا 10 دریافت می کنند (برای صفحاتی که هنوز رتبه ای ندارند، هیچ چیز دریافت نمی شود) و آن عدد را به اشکال مختلف پردازش کرده و معمولا به صورت گرافیکی نشان می دهند.

محاسبه پیج رنک گوگل با کدهای php


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

<?php //آدرس لینک جهت دریافت پیج رنک گوگل $website = 'http://named.r98.ir'; //انتقال به صفحه پیش فرض در صورتی که لینک تنظیم نشده باشد if (!isset($website)){ header("Location: http://named.r98.ir"); die(); } if($website){ if( !strstr($website,"http://") && !strstr($website,"https://") ){ $website = "http://".$website; } } //تنظیمات اتصال به سرور گوگل $googlehost='toolbarqueries.google.com'; //تنظیم واسط کاربری فرضی $googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5'; //تبدیل یک رشته به عدد صحیح 32 بیت function StrToNum($Str, $Check, $Magic) { $Int32Unit = 4294967296; // 2^32 $length = strlen($Str); for ($i = 0; $i < $length; $i++) { $Check *= $Magic; if ($Check >= $Int32Unit) { $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit)); $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check; } $Check += ord($Str{$i}); } return $Check; } //ساخت یک کد رندُم برای لینک function HashURL($String) { $Check1 = StrToNum($String, 0x1505, 0x21); $Check2 = StrToNum($String, 0, 0x1003F); $Check1 >>= 2; $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F); $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF); $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF); $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F ); $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 ); return ($T1 | $T2); } function CheckHash($Hashnum) { $CheckByte = 0; $Flag = 0; $HashStr = sprintf('%u', $Hashnum) ; $length = strlen($HashStr); for ($i = $length - 1; $i >= 0; $i --) { $Re = $HashStr{$i}; if (1 === ($Flag % 2)) { $Re += $Re; $Re = (int)($Re / 10) + ($Re % 10); } $CheckByte += $Re; $Flag ++; } $CheckByte %= 10; if (0 !== $CheckByte) { $CheckByte = 10 - $CheckByte; if (1 === ($Flag % 2) ) { if (1 === ($CheckByte % 2)) { $CheckByte += 9; } $CheckByte >>= 1; } } return '7'.$CheckByte.$HashStr; } function getch($url) { return CheckHash(HashURL($url)); } //دریافت عدد پیج رنک برگردانده شده توسط گوگل function getpr($url) { global $googlehost,$googleua; $ch = getch($url); $fp = fsockopen($googlehost, 80, $errno, $errstr, 30); if ($fp) { $out = "GET /tbr?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n"; $out .= "User-Agent: $googleua\r\n"; $out .= "Host: $googlehost\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { $data = fgets($fp, 128); $pos = strpos($data, "Rank_"); if($pos === false){} else{ $pr=substr($data, $pos + 9); $pr=trim($pr); $pr=str_replace("n",'',$pr); return $pr; } } fclose($fp); } } ?>


توضیح:
- کد بالا یک شبیه ساز تولبار گوگل است که پیج رنک لینک های درخواستی را نمایش می دهد (به صورت اعداد صفر تا 10).
- آدرس لینک (سایت، وبلاگ یا صفحه) خود را باید در متغیر website در بالای کد، تعریف کنید.
- سپس قسمت مربوط به if و http، https بررسی می کند که آیا لینک شما معتبر است یا خیر، اگر لینک با http یا https شروع نشده باشد، در ادامه، مقادیر به متغیر website اضافه خواهند شد تا لینک به صورت استاندارد درآید.
- در گام بعدی، تنظیمات مربوط به اتصال به سرور گوگل در آدرس toolbarqueries.google.com با یک واسط کاربری (UserAgent) فرضی (در واقع جعلی) اعمال می شود.
- قسمت های مربوط به توابع StrToNum، HashURL و CheckHash به طور ساده فرمولی است برای ایجاد کد عددی، مطابق با آدرس لینک درخواستی، این کد توسط گوگل با آدرس لینک مورد نظر تطبیق داده می شود و اگر صحیح باشد عدد پیج رنک را برمی گرداند.
- در تابع getpr، اتصال به سوکت با fsockopen و پورت 80 انجام می شود و نهایتا نتیجه به صورت عددی از 0 تا 10 به عنوان پیج رنک برگردانده می شود.

فراخوانی تابع محاسبه و نمایش پیج رنک گوگل


تابع بالا را به صورت زیر می توان فراخوانی کرد تا نتیجه محاسبه، به صورت یک عدد بین 0 تا 10 نمایش داده شود (برای صفحاتی که هنوز نمره ای دریافت نکرده اند، هیچ چیز نشان داده نخواهد شد).


<?php //فراخوانی تابع و نمایش عدد پیج رنک گوگل $pr = getpr("$website"); echo $pr; ?>

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

تعداد صفحات : 134

درباره ما
ارایه جدیدترین آموزش ها ترفندها نرم افزارها و...مربوط به سایر شبکه های اجتماعی مانند نامد نیمباز واتس اپ موزات و...نرم افزارهای کاربردی ،مدیریتی ،گرافیکی ،مهندسی،برنامه نویسی و...،پیامکسرا ،مرکز تصاویر ،قالب سایت و ویلاگ ،اخبار روز جهان و ایران ،افزایش بازدید سایت و وبلاگ,رتبه الکسا
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • نویسندگان
    آرشیو
    نظرسنجی
    به سایت ما چه امتیازی میدهید؟
    آپلودرها


    آمار سایت
  • کل مطالب : 402
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 74
  • آی پی امروز : 37
  • آی پی دیروز : 47
  • بازدید امروز : 78
  • باردید دیروز : 62
  • گوگل امروز : 4
  • گوگل دیروز : 4
  • بازدید هفته : 280
  • بازدید ماه : 837
  • بازدید سال : 7,816
  • بازدید کلی : 93,501