ببخشید اگه دیر آپ میکنم.
امروز براتون میخوام آموزش ساخت آخرین مراجعین رو بزارم، نمونشم در این بلوک کناری قرار داره.
خوب اول یک بانک اطلاعاتی مثلا با نام refer_end بسازید، بعد دستورات sql زیر رو درون بانک اطلاعاتی مورد نظر درج کنید تا جداول مورد نظر ساخته بشن.
1 2 3 4 5 6 7 8 9 10 |
<span style="color: #808080; font-style: italic;">-- </span> <span style="color: #808080; font-style: italic;">-- Table structure for table `refer`</span> <span style="color: #808080; font-style: italic;">-- </span> <span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">`refer`</span> <span style="color: #66cc66;">(</span> <span style="color: #ff0000;">`ip`</span> int<span style="color: #66cc66;">(</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">)</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>, <span style="color: #ff0000;">`page`</span> varchar<span style="color: #66cc66;">(</span><span style="color: #cc66cc;">225</span><span style="color: #66cc66;">)</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>, <span style="color: #ff0000;">`date`</span> varchar<span style="color: #66cc66;">(</span><span style="color: #cc66cc;">225</span><span style="color: #66cc66;">)</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>, <span style="color: #ff0000;">`back_page`</span> varchar<span style="color: #66cc66;">(</span><span style="color: #cc66cc;">225</span><span style="color: #66cc66;">)</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span>, <span style="color: #ff0000;">`browser`</span> varchar<span style="color: #66cc66;">(</span><span style="color: #cc66cc;">225</span><span style="color: #66cc66;">)</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">)</span> |
سپس یک فایل php مثلا با نام refer_end.php میسازین و شروع میکنین به نوشتن دستورات…
ادامه دستورات در (دنباله)
ابتدا به بانک اطلاعاتی مورد نظر متصل میشین
1 2 3 |
<span style="color: #000000; font-weight: bold;"><?php</span> <span style="color: #0000ff;">$result</span> = <a style="color: #000060;" href="http://www.php.net/mysql_connect"><span style="color: #000066;">mysql_connect</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">"localhost"</span>, <span style="color: #ff0000;">"root"</span>, <span style="color: #ff0000;">""</span><span style="color: #66cc66;">)</span>;<a style="color: #000060;" href="http://www.php.net/mysql_select_db"> <span style="color: #000066;">mysql_select_db</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">"refer_end"</span><span style="color: #66cc66;">)</span>; |
بعدش دوتا متغییر برای تنظیمات برناممون اضافه میکنیم.
1 2 3 |
<span style="color: #808080; font-style: italic;">// تنظیمات</span> <span style="color: #0000ff;">$view</span> = <span style="color: #cc66cc;">10</span>; <span style="color: #0000ff;">$out</span> = <span style="color: #cc66cc;">2592000</span>; |
1. متغییر اولی تعیین میکنه یه میخوایین چه تعداد نمایش داده بشه، مثلا من مقدار ۱۰ رو بهش دادم که ۱۰ تای آخر رو به نمایش میزاره
۲٫ متغییر دومی واسه اینکه بعد از یه مدت دادههایی که در بانک اطلاعاتی بودن رو پاک می کنه، چون ما به ۱۰ تا یا ۲۰ تای آخر نیاز داریم و نمیخواییم بانک اطلاعاتیمون رو سنگین کنیم، الان من به این متغییر مقدار ۲۵۹۲۰۰۰ رو دادم که بر حسب ثانیست و حدود ۱ ماه میشه، که بعد از یک ماه داده ها حذف میشن و دوباره شروع به کار میکنه.
خوب دستور بعدی مشخصات بازدید کنندگان رو در بانک اطلاعاتی درج میکنه.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<span style="color: #808080; font-style: italic;">// درج داده ها در بانک اطلاعاتی</span> <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><a style="color: #000060;" href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'HTTP_REFERER'</span><span style="color: #66cc66;">]))</span> <span style="color: #66cc66;">{</span> <a style="color: #000060;" href="http://www.php.net/mysql_query"><span style="color: #000066;">mysql_query</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">"insert into `refer` (ip, page, date, back_page, browser) values ( '"</span>.<span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'REMOTE_ADDR'</span><span style="color: #66cc66;">]</span>.<span style="color: #ff0000;">"', '"</span>.<span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'REQUEST_URI'</span><span style="color: #66cc66;">]</span>.<span style="color: #ff0000;">"', '"</span>.<a style="color: #000060;" href="http://www.php.net/time"><span style="color: #000066;">time</span></a><span style="color: #66cc66;">()</span>.<span style="color: #ff0000;">"', '"</span>.<span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'HTTP_REFERER'</span><span style="color: #66cc66;">]</span>.<span style="color: #ff0000;">"', '"</span>.<span style="color: #0000ff;">$_SERVER</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'HTTP_USER_AGENT'</span><span style="color: #66cc66;">]</span>.<span style="color: #ff0000;">"' ) "</span><span style="color: #66cc66;">)</span>; <span style="color: #66cc66;">}</span> |
اول چک میکنه که آیا یک کاربر از صفحه ای به این صفحه مراجعه کرده یا نه، اگه از سایتی یا صفحهای دیگه مراجعه کرده باشه، در بانک اطلاعاتی مشخصاتش ذخیره میشه.
این دستور هم دادهها رو بعد از زمان مشخص شده پاک میکنه.
1 2 3 |
<span style="color: #808080; font-style: italic;">//پاک کردن داده ها از بانک اطلاعاتی بعد از یک مدت مشخص </span> <span style="color: #0000ff;">$timeout</span> = <a style="color: #000060;" href="http://www.php.net/time"><span style="color: #000066;">time</span></a><span style="color: #66cc66;">()</span> - <span style="color: #0000ff;">$out</span>; <a style="color: #000060;" href="http://www.php.net/mysql_query"><span style="color: #000066;">mysql_query</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">"DELETE FROM `refer` WHERE `date` < $timeout"</span><span style="color: #66cc66;">)</span>; |
خوب در آخر سرم دادهها رو به نمایش میزاریم.
اول دادهها رو از بانک اطلاعاتی میگیریم، سپس چک میکنیم که آدرس مراجعه کننده اولش http:// داره یا نه، اگه نداشت اولش http:// رو میچسبونه و بعد با استفاده از تابع split و با توجه به ‘/’ تکه تکه میکنه آدرسو و سومین تکه رو جدا میکنه و به نمایش میزاره، به این مثال توجه کنین http://www.mjm3d.ir/123 خوب اگه تیکه تیکش کنیم اولی میشه http: و بعدش دومی هم که مقداری نداره و سومی هم که www.mjm3d.ir میشه.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<span style="color: #808080; font-style: italic;">//گرفتن داده ها از بانک اطلاعاتی و نمایش داده ها</span> <span style="color: #0000ff;">$result</span> = <a style="color: #000060;" href="http://www.php.net/mysql_query"><span style="color: #000066;">mysql_query</span></a> <span style="color: #66cc66;">(</span><span style="color: #ff0000;">"SELECT * FROM `refer`</span> <span style="color: #ff0000;">ORDER BY `date` DESC</span> <span style="color: #ff0000;">LIMIT "</span>.<span style="color: #0000ff;">$view</span><span style="color: #66cc66;">)</span>; <a style="color: #000060;" href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">"<ul>"</span>; <span style="color: #b1b100;">while</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$row</span> = <a style="color: #000060;" href="http://www.php.net/mysql_fetch_array"><span style="color: #000066;">mysql_fetch_array</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$result</span><span style="color: #66cc66;">))</span> <span style="color: #66cc66;">{</span> <span style="color: #0000ff;">$ref_long</span> = <span style="color: #0000ff;">$row</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'back_page'</span><span style="color: #66cc66;">]</span>; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><a style="color: #000060;" href="http://www.php.net/strtoupper"><span style="color: #000066;">strtoupper</span></a><span style="color: #66cc66;">(</span><a style="color: #000060;" href="http://www.php.net/substr"><span style="color: #000066;">substr</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$ref_long</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">7</span><span style="color: #66cc66;">))</span> != <span style="color: #ff0000;">"HTTP://"</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span> <span style="color: #0000ff;">$ref_long</span> = <span style="color: #ff0000;">"http://"</span> . <span style="color: #0000ff;">$ref_long</span>; <span style="color: #66cc66;">}</span> <span style="color: #0000ff;">$sp</span> = <a style="color: #000060;" href="http://www.php.net/split"><span style="color: #000066;">split</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">"/"</span>, <span style="color: #0000ff;">$ref_long</span><span style="color: #66cc66;">)</span>; <span style="color: #0000ff;">$ref_short</span> = <span style="color: #0000ff;">$sp</span><span style="color: #66cc66;">[</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">]</span>; <a style="color: #000060;" href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">"<li></span> <span style="color: #ff0000;"><a</span> <span style="color: #ff0000;">title=</span><span style="color: #000099; font-weight: bold;">\"</span><span style="color: #ff0000;">".</span><a style="color: #000060;" href="http://www.php.net/date"><span style="color: #000066;">date</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'j F Y - h:i A'</span>, <span style="color: #0000ff;">$row</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'date'</span><span style="color: #66cc66;">])</span>.<span style="color: #ff0000;">"</span><span style="color: #000099; font-weight: bold;">\"</span> <span style="color: #ff0000;">href=</span><span style="color: #000099; font-weight: bold;">\"</span><span style="color: #ff0000;">".</span><span style="color: #0000ff;">$ref_long</span>.<span style="color: #ff0000;">"</span><span style="color: #000099; font-weight: bold;">\"</span>> <span style="color: #ff0000;">".</span><span style="color: #0000ff;">$ref_short</span>.<span style="color: #ff0000;">"</span> <span style="color: #ff0000;"></a></span> <span style="color: #ff0000;"></li>";</span> <span style="color: #66cc66;">}</span> <a style="color: #000060;" href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">"</ul>"</span>; <span style="color: #000000; font-weight: bold;">?></span> |
این هم سورس کامل + فایل sql
لینک دانلود: refer_end.zip
حجم:۲ kb
پسورد: mjm3d.ir
محمد جواد مسعودیان
آخرید نوشته های محمد جواد مسعودیان (نمایش همه )
- آخرین مراجعین - جولای ۱۳, ۲۰۰۹
عالی بود.
مرسی آقا مازیار
خوب بود فقط دو نکته.
اگر از خود سایت به خود سایت لینک بشه نیازی نیست در لیست مراجعین ظاهر بشه و دیگه اینکه چون ممکنه عرض بلوک محدود باشه شاید بهتر باشه یه تیکه اون نشون داده بشه و باقیش سه نقطه بزاره.
لینک پروژه وردپرس فارسی هم زیر وبلاگت بزار.
ممنون آقا نبی
—
بله این دو نکته رو میدونم، تو فکرش هم بودم، ولی عجله دادشتم، دیگه این دو نکته رو توجه نکردم، بزودی در نسخه جدیدش اینها رو لحاظ میکنم.
با تشکر
سلام کارتون خوب بود
ولی یه چیز دیگه هم که توجه نشده وبرای من لازمه این که وقتی یه سایت یا صفحه که توسط سرویس ssl محافظت میشه و در یو آر ال اون https و جود داره آدرسشو ثبت نمیکنه
یا اینکه اگه با متد post یه سری متغیر هایی رو برای اون صفحه ارسال کنه بازم لینک صفحه مذکور رو ثبت نمیکنه…
لطفا برسی کنید