آژانس هواپیمایی
pop up

شمارنده کلیک واسه لینک دونی

شروع موضوع توسط amir ‏9 آگوست 2004 در انجمن مجموعه مقالات مووبل تایپ

  1. amir

    amir مدیران قدیمی

    تاریخ عضویت:
    ‏15 دسامبر 2002
    نوشته ها:
    893
    تشکر شده:
    4
    سلام !
    ببخشید یه خورده دیر شدش ، این چند روزه همش می رفتم عروسی !! نرسیدم که این - به قول مشاهیر - مقاله رو بنویسم !! ( مقاله اسم شیکی است ها !)
    خوب حالا واسه این (Hit Counter ) باید کارهای زیر رو انجام بدهید !
    اول از همه بگم که شیوه کار چه جوری است ، که اگه کسی جور بهتری بلد بود بگه ، کلا این " Hit Counter" بر این مبنا کار می کنند که وقتی روی لینک کلیک می کنین این لینک می ره یه فایلی که عملیات شمردن رو انجام می ده باز می کنه و بعد از این که اون یه دونه کلیک شمرده شدش اون فایل به صفحه اصلی redirect می شود. پس مشاهده می گردد که نوشتن یه تقه شمار هیچ کاری نداره و فقط باید یه خورده باهاش ور بری که یه کدی بنویسی که زور کمتر ی به سرور بیاره !!! این کدهایی که من نوشتم مثلا ادعا می کنه که زور کم میاره به سرور !!! اگه به نظر شما زیاد میاره بگین که اصلاحش کنم.
    خوب شروع می کنیم:
    اول یه دونه table به قرار زیر توی دیتا بیس MT بسازید :
    PHP:
      CREATE TABLE `mt_hits` (
        `
    uidint(11NOT NULL auto_increment,
        `
    urlint(11NOT NULL default '0',
        `
    hitsint(11NOT NULL default '0',
        `
    catint(3NOT NULL default '0',
        `
    datedate NOT NULL default '0000-00-00',
        
    PRIMARY KEY  (`uid`)
      ) 
    TYPE=MyISAM;
      
    فیلد های این table به درد های زیر می خورند :
    URL : توی اون مقدار entry_id از تیبل mt_entry نوشته می شه ( بعدا که بخواهید عملیات redirect رو انجام بدین به درد می خوره )
    hits : توش تعداد کلیک ها نوشته می شه ( می خواهین می تونین الکی بیایید دستی زیادش کنین ملت خیال کنند کلی کلیک خورده ! )
    Cat: توی اون شماره Category که لینک بهش تعلق داره قرار می گیره ( البته اگه چند تا دسته توی MT تعریف کرده باشین وگرنه به دردتون نمی خوره !)
    date : این هم ورمیداره ماه و سال موقعی که لینک پست شده رو می نویسه ! موقعی به درد می خوره که بخواهین آرشیو تاریخی داشته باشین و هیت های ماه یا سال رو نشون بدین !

    بعد از اینکه table محترم رو ساختین حالا می ریم سراغ اون فایل شمارنده و ریدایرکت کننده ! این فایل با کلیک کردن روی هر لینک فعال می شه و اول چک می کنه می بینه که اون لینک قبلا توی دیتا بیس ثبت شده یا نه ! اگه نشده باشه اونو اضافه می کنه و اگر هم موجود باشه که خوب یه دونه به کلیک های قبلیش اضافه می کنه ! بعد از پایان یافتن عملیات فوق الذکر ! این فایل به صفحه که لینک اصلی اونجاست redirect می شه ! ( اسم فایل رو هم می زاریم go.php که اسم شیک و با کلاسی است!)
    قبل از اینکه این go.php رو بسازین یه فایل واسه وصل شده به دیتا بیس می سازیم اسمش رو هم می زاریم db.php و این چند تا خط رو می نویسیم توش!

    PHP:
    <?php
      $dbhost 
    "localhost"// The host where your database is
      
    $dbname "database";  // Your database name
      
    $dbuser "root";      // The user name
      
    $dbpass "password";  // The user's password
      
      
    $connect mysql_connect($dbhost$dbuser$dbpass);
      
    mysql_select_db($dbname$connect);
      
    ?>
      
    توضیح هم فکر نکنم بخواد! خداییش خیلی تابلو است بعدش این go.php رو می سازیم
    PHP:
    <?php
      
      
    include ('db.php');
      
    $a explode(",",$_REQUEST['url']);
      
    $url $a[0] - 1;
      
    $cat $a[1] - 1;
      
    $year $a[2];
      
    $month $a[3];
      
    $date $year."-".$month."-00";
      
    $query "SELECT `hits` FROM `mt_hits` WHERE `url`='$url'";
      
    $res mysql_query($query) ;
      
    $query "SELECT `entry_text` FROM `mt_entry` WHERE `entry_id` = '$url'";
      
    $res2 mysql_query($query);
      
    $row2 mysql_fetch_array($res2);
      
    $loc $row2['entry_text'];
      if ( 
    $row mysql_fetch_array($res) )
      {
      
        
    $new_hit $row['hits'] + 1;
        
    $rr mysql_query ("UPDATE `mt_hits` SET `hits` = '$new_hit' WHERE `url` = '$url' LIMIT 1");
        
    header ("Location: $loc");
      }
      else
      {
        
    mysql_query("INSERT INTO `mt_hits` ( `uid` , `url` , `hits` , `cat` , `date` ) VALUES ('', '$url', '1', '$cat', '$date')");
        
    header ("Location: $loc");
      }
      
      
    ?>
    خوب حالا ببینیم این فایل چی کار می کنه !
    اولش که به دیتا بیس وصل می شه ( از طریق همون فایل db.php که قبلا ساخته بودیم ! )
    بعدش می یاد یه متغیر به اسم url رو که از طریق لینک بهش می دیم تیکه تیکه می کنه ! ( یه نیگاه به تریپ لینک های www.webgardi.com بندازین دستتون میادش که مدل اون لینک چه جوری است )
    هر لینک 4 تا تیکه داره قسمت اول entry_id است که از توی تیبل mt_entry خونده شده و از طریق اون لینک اصلی پیدا می شه ، قسمت دومش ID اون بخشی است که پست توش زده شده ! قسمت سوم و چهارم هم ماه و سال است !
    بعد از اینکه لینک رو تیکه تیکه کرد میاد چک می کنه که قبلاا همچین لینکی بوده یا نه ! اگر بوده که یکی به hit هاش اضافه می کنه اگر هم نیست که یه دونه خط توی table اضافه می کنه و مقدار کلیک اون رو هم می زاره 1 !
    این از کل چیز های php که لازم داشتید ! این دو تا فایل رو هم کپی می کنید بغل دست همدیگه !
    حالا باید این لینک هایی که فایل go.php لازم داره بسازین !
    واسه این کار باید لینک ها رو توی MT به فرمت زیر بنویسین
    این کد برای یک لینک لینکدونی خواهد بود و لازمه که کدهای مناسب لینکدونی رو توش قرار بدین.
    این فرض هم شده که توی EntryBody شما URL کامل رو نوشتین
    به صورت http://www.link.com
    در قسمت Title هم عنوان لینک و در قسمت More هم توضیحاتی که در حالت OnMouseOver میاد نوشته شده است.

    PHP:
      <a target="_blank"
     
    href="go.php?url=<$MTEntryID$>,<MTEntryCategories><$MTCategoryID$></MTEntryCategories>,<$MTEntryDate format="%Y"$>,<$MTEntryDate format="%m"$>"
      
    title="<$MTEntryMore$>">
      <
    $MTEntryTitle$>
      </
    a>
      

    تا اینجای کار لینک هاتون درست ساخته می شه و روش که کلیک کنین می ره یه دونه به تعداد کلیک هاش توی دیتا بیس اضافه می کنه !
    حالا باید این اطلاعات رو از دیتا بیس بخونیم و جلوی هر لینکی تعداد کلیک هاشو بنویسیم !
    واسه این کار این چند خط رو بالای تمپلیت mt بنویسید:
    منظور هم تمپلیت صفحه ای است که توش لینکدونی است.


    PHP:
      <?
      
    include ('db.php');
      GLOBAL 
    $array;
      
    $link_id $_REQUEST['url'];
      
    $query "SELECT * FROM `mt_hits` ORDER BY `uid` DESC LIMIT 20";
      
    $res mysql_query($query);
      while (
    $row mysql_fetch_array($res))
      {
        
    $key $row['url'];
        
    $value $row['hits'];
        
    $array[$key] = $value;
      }
      function 
    hits($id)
      {
        GLOBAL 
    $array;
        if (isset(
    $array[$id]))
        {
          echo 
    $array[$id];
        }
        else
        {
          echo 
    "0";
        }
      }
      
    ?>
      
    یه عدد 20 می بینین توی خط چهارم ! این عدد رو برابر تعداد پستهایی که می خواد توی صفحه دیده بشه قرار بدین !
    مثلا اگه 50 تا لینک نشون می دین اون رو بزارین 50 .
    بعد از اینکه اوو کد رو بالای تمپلت گذاشتین حالا این تیکه کد mt رو جلوی هر پستتون قرار بدین که تعداد لینک هاش رو نشون بده !

    PHP:
      [ <?  hits(<$MTEntryID$>); ?> clicks ]
      
    همین !
    سوال یا مشکلی بود در قسمت زیر بپرسید! اگر بلد بودم در خدمتم.
    http://forum.persiantools.com/showthread.php?t=8038