اين سورس يک مثال خيلی ساده برای لاگين شدن تو ياهو! به وسيله php و فرستادن انواع پکت هست
اين مثال تنها به وسيله سوکت نوشته شده و به فايل ديگه اي وابسته نيست
توجه داشته باشيد بعد از لاگين شدن و گرفتن کوکی اون آيدی، ميتونيد کوکی رو ذخيره کنيد و در دفعات بعدی از کوکی که ذخيره کرديد استفاده کنيد و تا زمانی که پسورد آيدی رو عوض نکريد ديگه نيازی نيست مجددا برای اون آيدی کوکی بگريد
در اين صورت آيدی و سرور به هيچ وجه بن نميشه
دمو از اين مثال
سلام دوست من یک سوال داشتم در این مورد
این اسکریپت فشار به سرور نمیاره مثل میل سرور ها ؟
اگه بشه امکان ارسال smily و buzz هم بهش اضافه کرد خیلی خوبه
smil كه سادست!
فقط كدش رو ارسال كن!
(۱۱-آبان-۱۳۸۸, ۰۹:۲۳:۳۵)jaber نوشته است: [ -> ]سلام دوست من یک سوال داشتم در این مورد
این اسکریپت فشار به سرور نمیاره مثل میل سرور ها ؟
اگه بشه امکان ارسال smily و buzz هم بهش اضافه کرد خیلی خوبه
نه فکر نکنم فشار بياره چون فقط به سرور وصل ميشه و 2 ،3 تا پکت ميفرسته
من روش رو يک هفته جايی قرار دادم که روزی نزديک به 700 ،800 بار اجرا ميشد و برای آيدی خودم پيغام ميفرستاد و مشگلی نداشت البته با هاست free
برای buzz تو پکت pm تنها متن <ding> رو بنويسيد
برای شکلک ها هم از کدش استفاده کنيد
چند تا نکته
-اگه فقط برای فرستادن پيغام استفاده ميکنيد پکت های ديگه و sleep دو ثانيه رو پاک کنيد.
-بعد از فرستادن پکت لاگين يک ثانيه مکس ايجاد شده, چون سرور سرعت بالايی داره يک ثانيه زمان زيادی هست اگه بتونيد از تابع ديگری برای ايجاد مکسه چند صدم ثانيه اي استفاده کنيد بهتر ميشه.
اینم پکت dc برای این اسکریپت php این پکت رو فقط باید توی یک for 1000 تایی بگذارید و هی صداش کنید تا طرف dc بشه ولی 100 تاش هم کافیه . یاهو 10 رو هم میزنه و یاهو error میده و بسته میشه.
کد:
public function Dc($from,$to)
{
return $this->ym_header(220,"1^$" . $from . "^$5^$" . $to . "^$222^$1^$265^$" . chr(10) . "^$266^$1^$302^$268^$300^$268^$27^$" . "PROGRAMER BY MPk^$28^$88888888888888^$301^$268^$303^$268^$");
{
آیای امکان دریافت پاکت هم هست؟ مثلا پیامهایی که دیگران برای آی دی بفرستن را بگیریم....
متشکر
با php نه، چون بعد از تمام شدن اجرای دستورات سوکت بسته ميشه
يعنی نميتونه منتظر چيزی بمونه اما ميتونه پيغام های آفلاين و تعداد ايميل و آيدی های ادليست و يه سری اطلاعاتی که بعد از لاگين آيدی فرستاده ميشن رو گرفت.
من این برنامه ای که شما دادین را تبدیل به یک کلاس کامل تر کردم و کار با اون خیلی ساده شده که به زودی اون را در همین پست قرار میدم.
من به این صورت کار کردم که در صفحه ی php یک حلقه بی نهایت قرار دادم و زمان اجرای مجاز را هم برای صفحه نا محدود قرار دادم و فرمانها را در این حلقه ی بینهایت از یک فایل میگیرم و اجرا میکنم. با این کار سوکت همیشه هست و به ارسال و دریافت اطلاعات میپردازه.
البته بعد از اون اطلاعات را به جای فایل در دیتا بیس ذخیره کردم که با یک صفحه دیگه میتونم اطلاعات را بفرستم و یا اطلاعات دریافتی را ببینم.
با این حال آیا میشه این کلاس را کاملتر کرد؟
فایل جدید را پیوست کردم.
این برنامه همان برنامه قبلی هست با این تفاوت محتوای ارطبات با سوکت برای ارسال پاکت خودش نیز در یک کلاس قرار گرفته و برای ارسال پاکت به دو خط کد بیشتر نیاز نیست:
ابتدا فایل کلاس برنامه را وارد میکنیم :
کد php:
require('class.WebYMSG.php');
سپس یک شیء از کلاس یاهو مسنجر میسازیم و متد ارسال آن را صدا میزنیم. به همین راحتی:
کد php:
$yahoo = new yahooMessenger($yahooID,$passWord);
$yahoo->send($PMto,$Msgto);
خب حالا اگر کوکی از قبل موجود بود اون را به عنوان پارامتر سوم به سازنده ارسال می کنیم.
در فایل پیوست من کوکی را اگر موجود نباشه برای بار اول درسافت میکنم و در یک فایل ذخیره میکنم و در دفعات بعد کوکی را از اون فایل میگیرم.
اينکه تو يه حلقه بی نهايت قرار بگيره اصولی هست ؟ به سرور فشار نمياد؟
توی حلقه بینهایت کار خاصی انجام نمیده. هر بار فقط محتوای فایل را چک مکنه.
خب راه حل بهتری هم هست. میتونیم یک پورت را هم باز کنیم و برنامه php را روی اون پورت در حالت شنود قرار بدیم و فرمان را از طریق سوکت بهش بدیم و اون هم اجرا کنه.
اینجوری برنامه ما در حالت اجرا میمونه و سوکت مسنجر را هم باز نگه میداره.
بالاخره راه زیاده.
ساخت حلقه برای زنده نگه داشتن سوکت اصلا عقلانی نیست. چند تا حلقه رو فکر می کنید سرور بتونه پشتیبانی کنه و قبول کنه.
نقل قول: خب راه حل بهتری هم هست. میتونیم یک پورت را هم باز کنیم و برنامه php را روی اون پورت در حالت شنود قرار بدیم و فرمان را از طریق سوکت بهش بدیم و اون هم اجرا کنه.
اینجوری برنامه ما در حالت اجرا میمونه و سوکت مسنجر را هم باز نگه میداره.
سوکت شما بعد از تموم شدن کارش تموم میشه و ربطی به ادامه کل برنامه شما نداره. البته می تونید تو تنظیمات php زمان بسته شدن سوکت رو بزارید 0 ولی بازم مشگلات دیگه ای هست که سراغتون میاد. حتی میتونید با توابع سوکت سوکتی بسازید که تا زمانی که برنامه باز هست سوکت باز بمونه . اونطوری حرف بالای شما قابل انجام هست. فکر کنم با تابع setoption برای سوکت و مقدار nonclose بود البته دقیق یادم نیست. اگر اشتباه گفتم ببخشید.
چرا وقتی سر یه چیزی فکر می کنید گیر میدید به یه زبان؟.وقتی میشه از چند زبان استفاده کرد این کارا لازم نیست.
تنها راه اصولی برای این کار نوشتن یه dll یا extension با c یا c++ برای php هست .که البته این زحمتش کشیده شده و هست .یعنی دیگه زحمت نوشتنش هم نمی خواد بکشید .تو سایت سورس فرج بود فکر کنم یه همچین چیزی سال پیش دیدم. بگردید پیدا می کنید.