PDA

View Full Version : مشکل در Refrer



tehro0n
یک شنبه 21 شهریور 1389, 02:44 صبح
من ابزاری دارم طراحی می کنم که در آن ابزار آدرس لینک دهنده و آدرس ورودی را از کاربر می گیره.
فرض می کنیم چنین کدی در test.php قرار داره..


$ref = strtolower($_SERVER['HTTP_REFERER']);
$ref = urldecode($ref);
$v_to = urldecode('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
$v_rf = $ref;//$_SERVER['HTTP_REFERER'];خوب این فایل به صورت کلی به این شکل باید در اختیار کاربر قرار داده بشه.

<script type="text/javascript" src="http://localhost/Tools/test.php"></script>مشکل این کار:
خوب معلومه، من نمی تونم اینجوری استفاده کنم چون:
1- آدرس لینک دهنده میشه همین آدرس کاربر
2- آدرس ورودی هم میشه همین اسکریپت یعنی test.php
ولی باید آدرس ها یکی قبل تر باشه :دی

binyaft
یک شنبه 21 شهریور 1389, 10:31 صبح
این که مشکلی نداره ، کاربر از هر جایی بیاد داخل صفحه صفحه قبلی ثبت میشه

tehro0n
یک شنبه 21 شهریور 1389, 16:51 عصر
این که مشکلی نداره ، کاربر از هر جایی بیاد داخل صفحه صفحه قبلی ثبت میشه

این در صورتیه که داخل اسکریپت نشه! ولی در اصل کدی که صفحه قبلی ثبت میشه داخل اسکریپته و انگار کاربر وارد سایت test.php میشه و صفحه قبلیش میشه سایت خودش (نه سایت قبل از خودش!) من الان ذخیره می کنم این لینک هارو اینجوریه..! گرفتی؟

sama01
دوشنبه 22 شهریور 1389, 00:07 صبح
یعنی شما از یه سایت دیگه مراجعه می‌کنید، ولی برنامه، آدرس خودتون رو می‌نویسه؟

ولی اگر در سایت خودتان بچرخید، باید آدرس سایت خودتان را بدهد. این درسته.

tehro0n
دوشنبه 22 شهریور 1389, 02:12 صبح
یعنی شما از یه سایت دیگه مراجعه می‌کنید، ولی برنامه، آدرس خودتون رو می‌نویسه؟

ولی اگر در سایت خودتان بچرخید، باید آدرس سایت خودتان را بدهد. این درسته.

شما کد رو هی بررسی می کنید!
واضح دارم می گم!
این اسکریپت رو به صورتی فرض می کنه که انگار وارد سایت test.php شدی.. یعنی کلا این اسکریپت رو بگذاری هر جا همین حالت پیش میاد.
ولی اگه تو صفحه ای جداگانه برای سایت خود این کار را بکنید هر کسی وارد سایت شما بشه واضحه که از جایی که اومده رو نمایش می ده.
امیدوارم دیگه متوجه شده باشید چی می گم :(

sama01
دوشنبه 22 شهریور 1389, 08:26 صبح
خوب اگر من درست متوجه شده باشم، شما می‌خواهید یک سیستمی مثل وبگذر (مثلا) بسازید.
یعنی شما سایتی دارید که مثل تمام سایت‌های آمار، یک کد به کاربر می‌دن که از اون طریق می‌تونه اطلاعات بازدیدها رو به دست بیاره.

خوب. مسلما شما نمی‌تونید از referer خود php استفاده کنید.
ببینید. http_referer به این نگاه می‌کنه که چه کسی اون رو صدا زده. در مثالی که در پست اول زدید، سایت کاربر (test.php) است که اسکریپت شما رو صدا می‌کنه.
راه حال:
استفاده از کدی که سمت کاربر اجرا بشه. بله javascript.
با دستور document.referrer می‌تونید به referer دسترسی پیدا کنید و بعد با کمک کدهای Javascript،‌ به هر شکلی که مایل بودید، این اطلاعات را به اسکریپت خودتون برسونید.

تمام سایت‌هایی که تو کار آمار هستند (مثل وبگذر و پرشن‌استت و ...) همگی آدرس یک فایل javascript رو می‌دن. اون فایل، اطلاعات را با فرمت تعیین شده به سرور می‌فرسته.

tehro0n
چهارشنبه 24 شهریور 1389, 17:21 عصر
تمام سایت‌هایی که تو کار آمار هستند (مثل وبگذر و پرشن‌استت و ...) همگی آدرس یک فایل javascript رو می‌دن. اون فایل، اطلاعات را با فرمت تعیین شده به سرور می‌فرسته.

از طریق جاوا همین کار را انجام دادم منتها زمانی که referer از سمت جستجوی گوگل انجام شد تنها لینک کوچکی مانند پایین ثبت می شود! مشکل چیست؟

http://www.google.com/url?sa=tدر صورتی که باید این لینک باشد!

http://www.google.com/search?q=%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1+%D9%88%D8% A8&البته در لینک اولی url رو تبدیل به search می کنم اما در کل لینک کامل ثبت نمی شود!

روند کار من به این صورته که ابتدا با جاوا به این صورت Ref رو می گیرم و به فایل php ارسال می کنم.

var src = 'http://localhost/Tools/test.php?res='+screen.width+'x'+screen.height+'&col='+screen.colorDepth+'&ref='+document.referrer;
document.write("<script type='text/javascript' src='" + src + "'></script>");سپس از این طریق ref رو داخل متغیر ریخته و در نهایت ذخیره می کنم.


if (isset($_GET['ref']))
$ref = strtolower($_GET['ref']);

$se_arr = array('google', 'yahoo', 'bing', 'altavista', 'jamasp', 'parseek');
$_ref = str_ireplace('/url?', '/search?', $ref);
$_ref = urldecode($_ref);