توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : شناسایی موتور جستجو و حل مشکل کامپوننت تبلیغات
emad_67
12-29-2008, 08:22 PM
سلام
کامپوننت تبلیغات مامبو اگر باهاش کار کرده باشید مشکلی داره مه تعداد نمایش بنر رو خیلی بیشتر از حذ بازدید سایت نشون میده. من فکر میکنم علتش اینه که بازدید ربات های موتور جستجو رو هم ثبت می کنه. برای اینکار من کد های ماژول و خود کامپوننت رو یه تغیری توش دادم:
برای ماژول این کد ها رو اضافه کردم:
$robotlist = array("msnbot","Teoma","alexa","froogle","inktomi" ,
"looksmart","URL_Spider_SQL","Firefly",
"NationalDirectory","Ask Jeeves","TECNOSEEK",
"InfoSeek","WebFindBot","girafabot","crawler",
"<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>
"Scooter","Slurp","appie",
"FAST","WebBug","Spade",
"ZyBorg","rabaz");
$IsBot=false;
foreach($robotlist as $bot)
{
if(ereg($bot, $_SERVER['<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>;]))
{
$IsBot=true;
break;
}
}
و در خطی که query آپدیت نوشته شده بود از متغیر Isbot استفاده کردم تا فقط کاربرای واقعی رو ثبت کنه.
if(!$IsBot)
{
$database->setQuery( "UPDATE #__banner SET impmade=impmade+1 WHERE bid='$banner->bid'" );
if(!$database->query()) {
echo $database->stderr( true );
return;
}
}
اما انگار نه انگار و مثل قبل تعداد نمایش بنر ها کلی با آمار سایت فرق داره. ضمنا نام این ربات ها رو هم تو یه سایتی پیدا کردم، هر چند توی log سرور نام خیلی هاشون نبود.
توی log نام های ربات های گوگل و یاهو و msn با نام های Googlebot و Slurp و msnbot ثبت میشه که منم عینا اونا رو در آرایه قرار دادم ولی نتیجه ای نداد.
عین همین تغییرات رو در فایل banner.php در فولدر کامپوننت ها هم اعمال کردم.
از دوستانی که php بلدن خواهش میکنم اگه راه دیگه ای هست بگن.
با تشکر :)
emad_67
12-30-2008, 07:39 PM
یه نفر اینجا php کار نبود؟
بابا راهی؟ نظری؟ پیشنهادی؟
بازدید های مامبو با ست کردن کوکی روی مرورگر کاربر، به ازای یک بازدیدکننده واحد ، تا مدت خاصی یکبار محسوب میشن.
یعنی شما در یک دقیقه 100 تا Hit دارید و از صد صفحه بازدید می کنید. اما به خاطر کوکی که قبلش در مرورگر ساخته شده، بازدید جداگانه ای به حساب نمی یاد.
این افزایش دیدن تبلیغات، غیر واقعی نیست . چون که آمار تبلیغات، تعداد hit هست و آمار مامبو تعداد بازدید.
یا علی
emad_67
12-31-2008, 07:08 AM
بازدید های مامبو با ست کردن کوکی روی مرورگر کاربر، به ازای یک بازدیدکننده واحد ، تا مدت خاصی یکبار محسوب میشن.
یعنی شما در یک دقیقه 100 تا Hit دارید و از صد صفحه بازدید می کنید. اما به خاطر کوکی که قبلش در مرورگر ساخته شده، بازدید جداگانه ای به حساب نمی یاد.
این افزایش دیدن تبلیغات، غیر واقعی نیست . چون که آمار تبلیغات، تعداد hit هست و آمار مامبو تعداد بازدید.
یا علی
ممنون بابت پاسخت،
من آمار تبلیغات رو با گزارشی که وبگذر میده مقایسه میکنم نه با آمار مامبو.
اختلاف این آمار هم خیلی بالاست، مثلا در یک بازه زمانی من 100 تا بازدید ندارم، بعد آمار نمایش بنر 1000 تا زیاد میشه.
حالا برای حلش باید چیکار کرد؟ آیا از ربات ها هست اصلا؟
emad_67
12-31-2008, 07:21 AM
راستی منظورت از آمار بازدید های مامبو، ماژول آمار بازدید ها بود یا خود آمار تعداد صفحاتی که ذخیره میشه؟
آمار تعداد صفحات فکر میکنم دقیق باشه چون تست که کردم مشکلی نداشت.
سیستم آمار مامبو اونی هست که در تنظیمات کلی فعال میشه.
اون ماژول فقط آمار رو نشون میده. اگر دقت کنید، آمار که غیر فعال میشه اون ماژول هم چیزی رو نمایش نمی ده.
خوب طبیعیه. روبوت ها و crawler ها وقتی وارد سایت شما میشن، یا کلا هر سیستم و مرورگری که جاوااسکریپت رو اجرا نکنه، برای آمار وبگذر چیزی ممحاسبه نمیشه، اما برای کامپوننت ...
emad_67
12-31-2008, 08:50 AM
سیستم آمار مامبو اونی هست که در تنظیمات کلی فعال میشه.
اون ماژول فقط آمار رو نشون میده. اگر دقت کنید، آمار که غیر فعال میشه اون ماژول هم چیزی رو نمایش نمی ده.
توی فایل اون ماژول آمار، آمار از جدول mos_stats_agents خونده میشه و نمایش داده میشه، و همون گفته شما هم در مورد ثبت کوکی درسته. اما آماری که در قسمت بازدید صفحات در زیر منوی آمار ذخیره میشن، تعداد بازدید هر مطلب هست که در فیلد hits همون مطلب ذخیره میشه.
الان چرا برای بازدید هر مطلب همچین مشکلی وجود نداره؟ و بازدید ربات ها رو ثبت نمیکنه؟ و ارسال کوکی هم فکر نکنم درش وجود داشته باشه.
خوب طبیعیه. روبوت ها و crawler ها وقتی وارد سایت شما میشن، یا کلا هر سیستم و مرورگری که جاوااسکریپت رو اجرا نکنه، برای آمار وبگذر چیزی ممحاسبه نمیشه، اما برای کامپوننت ...
این مورد احتمالش پایین هست و تعداد کاربرایی که جاوا اسکریپت روی مرورگرشون غیر فعال باشه خیلی کمتر از چیزی هستند که بخواد این اختلاف فاحش رو بین آمار وب گذر و نمایش بنر ها به وجود بیاره.
حالا راهکار پیشنهادی شما برای شناسایی ربات ها چیه؟ و اینکه چرا اون کدی که در بالا گذاشتم جواب نمیده؟
ممنون سعید جان :) ;)
emad_67
12-31-2008, 08:54 AM
فکر کنم منظورتو بد گرفتم از این جمله:
خوب طبیعیه. روبوت ها و crawler ها وقتی وارد سایت شما میشن، یا کلا هر سیستم و مرورگری که جاوااسکریپت رو اجرا نکنه، برای آمار وبگذر چیزی ممحاسبه نمیشه، اما برای کامپوننت ...
منظورت اینه که چون ربات ها جاوا اسکریپت رو نادیده میگیرن پس آماری هم در برای وبگدز ثبت نمیشه درسته؟
روبوت ها اجرا نمی کنند جاوا اسکریپت رو
emad_67
12-31-2008, 05:08 PM
آقا با تست هایی که انجام دادم اینجوری فهمیدم که تنها وقتی که ربات وارد سایت میشه مقدار متغیر $IsBot در کد بالا true هست و وقتی که در حال crawl کردن سایت هست دیگه true نیست.
حتی کد رو به این شکل قرار دادم:
if(!ereg("Googlebot", $_SERVER['<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>;]))
{
$database->setQuery( "UPDATE #__banner SET impmade=impmade+1 WHERE bid='$banner->bid'" );
if(!$database->query()) {
echo $database->stderr( true );
return;
}
echo "updated";
}
در کد بالا خواستم وقتی که بازدید کننده Googlebot نباشه، کلمه updated توی صفحه قرار بگیره. سورس html ئی که موقع ورود goolebot دیده میشه کلمه updated درش نیست، یعنی اینکه این دستور درست کار کرده، اما در همون لحضاتی که سایت داره crawl میشه، نمایش بنر ها هم تعدادش زیاد میشه، یعنی دیگه این شرط جواب نمیده و انگار user-agent، دیگه Googlebot نیست.
این مورد رو برای msnbot هم تست کردم و همین نتیجه به دست اومد.
ضمنا تست های بالا رو با سایت زیر انجام دادم:
<b><font color=red>فقط کاربران عضو انجمن می توانند لینک ها را مشاهده کنند</font></b>
که ربات های شبیه سازی شده رو به سایت میفرسته.
یه در خواست دیگه هم اینکه شما میدونی فیلد hits مطالب در کدوم فایل مامبو آپدیت میشه؟
با تشکر ;)
در فایل خاصی نیست. بلکه در هر فایلی که متد hit رو فراخوانی کنه.
متد در این فایل تعریف شده :
includes\database.php
;)
یا علی
emad_67
01-01-2009, 07:40 PM
در فایل خاصی نیست. بلکه در هر فایلی که متد hit رو فراخوانی کنه.
متد در این فایل تعریف شده :
includes\database.php
;)
یا علی
ممنون، من میخوام بدونم که چه جوری کد نویسی انجام شده که برای مطالب بازدید ربات ها ثبت نمیشه. برای همین پرسیدم که hit تو کجا آپدیت میشه. در واقع میخوام بدونم کجا این متد فراخوانی میشه که نحوه کد نویسی قبل از فراخوانی رو ببینم.
با تشکر ;)
این متد زیر کلاس mosDBTable در فایل database.php تعریف شده (خط 944 در مامبو 465 )
function hit( $oid=null )
و این متد هم خودش متدهای دیگه ای رو فراخوانی میکنه.
یا علی
emad_67
01-02-2009, 12:24 PM
این متد زیر کلاس mosDBTable در فایل database.php تعریف شده (خط 944 در مامبو 465 )
function hit( $oid=null )
و این متد هم خودش متدهای دیگه ای رو فراخوانی میکنه.
یا علی
منظورمو نگرفتی باز :D
وقتی روی ادامه مطلب کلید میکنیم همچین لینکی داریم:
index.php?option=com_content&amp;task=view&amp;id=
که در واقع پارامتر ها به فایل index.php پاس داده شدن، توی فایل index.php هم اصلا خبری از متد فراخوانی شدن تابع hit نیست، حتی مقدار query string ها هم در جایی چک نشه.
من میخوام بدونم بعد از کلیک رو ادامه مطلب تو کجا متد hit فراخوانی میشه.
منظورمو نگرفتی باز
چرا من گرفتم. شما هنوز نگرفتی :D
شما تا چه حد با برنامه نویسی آشنایی دارید ؟!
تمام عملیات بخش کاربری با استفاده از همین Index.php هست.
شما چیز دیگری رو می بینید ؟ لینکستان ، تمام کامپوننت ها ، ثبت نام و ...
نحوه کد نویسی قبل از فراخوانی رو چکارش دارید ؟
شما همین خود hit رو نیاز دارید. حالا از هر جایی فراخوانی بشه، همین کد اجرا میشه.
یا علی
emad_67
01-02-2009, 02:07 PM
شما تا چه حد با برنامه نویسی آشنایی دارید ؟!
تقریبا هیچی.
نحوه کد نویسی قبل از فراخوانی رو چکارش دارید ؟
شما همین خود hit رو نیاز دارید. حالا از هر جایی فراخوانی بشه، همین کد اجرا میشه.
آخه این hit که فقط یک query توش نوشته شده و فیلد مورد نظر رو تو دیتابیس آپدیت میکنه. برای من اصلا مهم نیست این تابع hit. من میخوام بدونم توی جایی که این hit فراخوانی شده قبلش شرطی یا کد خاصی وجود داره که باعث میشه که بازدید ربات ها رو ثبت نکنه؟
الان چرا وقتی ربات ها از سایت بازدید می کنن تعداد hit ها بالا نمیره؟؟؟
البته توی تابع hit اون قسمت log item رو نفهمیدم برای چیه، ولی فکر نکنم ربطی به این موضوع داشته باشه.
اول اینکه وقتی برای یک مطلب hit ثبت میشه که مطلب به صورت کامل دیده بشه نه خلاصه.
در بیشتر صفحات فقط خلاصه مطلب دیده میشه.
در ثانی روبوت ها همیشه از تمام صفحات سایت بازدید نمی کنند. چرا که مطالب آخرین سطح ساختار محتوای مامبو هستند و روبوت هم همیشه به عمیق ترین لایه های پیوندها مراجعه نمی کنه.
و سوم هم اینکه فکر نکنم مامبو بازدید روبوت ها رو برای مطالب ثبت نکنه.
شاید به دلایل اول و دوم که کمتر hit روی مطالب ثبت میشه، این تصور بوجود اومده که بازدید روبوت ها ثبت نمی شه.
در هر حال تنها جایی که متد hit فراخوانی میشه اینجاست :
components\com_content\content.php
سورس رو ببینید :
if ( !$params->get( 'intro_only' ) ) {
$obj = new mosContent( $database );
$obj->hit( $row->id );
}
هیچ شرطی در مورد روبوت ها برای ثبت hit قبل از فراخوانی متد ذکر نشده.
یا علی
emad_67
01-02-2009, 03:56 PM
اول اینکه وقتی برای یک مطلب hit ثبت میشه که مطلب به صورت کامل دیده بشه نه خلاصه.
در بیشتر صفحات فقط خلاصه مطلب دیده میشه.
در ثانی روبوت ها همیشه از تمام صفحات سایت بازدید نمی کنند. چرا که مطالب آخرین سطح ساختار محتوای مامبو هستند و روبوت هم همیشه به عمیق ترین لایه های پیوندها مراجعه نمی کنه.
اینکه همیشه از تمام مطالب سایت بازدید نمی کنن درسته ولی به نظرم به عمیق ترین لایه های پیوند ها میرن، حتی جاهایی رو که آدم فکر شو هم نمیکنه سر مزنن. من قبل از اینکه sh404sef رو نصب کنم در سایتم لینک هایی ایندکس شده بود که اصلا اون لینک معلوم نبود از کجا اومده بود. با کلیک روی اون هم کلی ارور داده میشد.
اما به هر حال آماری که از hit مطلب نشون داده میشه با آمار نمایش بنر ها زمین تا آسمون فرق داره. مثلا من مطالبی دارم که بعد از 1 سال هم 400 تا بازدید نداشتن، اما با 2 روز قرار دادن یک بنر تقریبا 1500 تا 2000 بار نمایش داده میشه که زیاد منطقی نیست. حالا هر چقدر هم ربات ها همه مطالب رو crawl نکنن بازم هم غیر منطقیه.
ممنون ;)
vBulletin® v4.2.5, Copyright ©2000-2026, Jelsoft Enterprises Ltd.