با سلام خدمت دوستان
فرض کنید که من در صفحه ی اصلی سایتم قسمتی دارم که در اون جا، جدیدترین اخبار ورزشی قرار می گیره.
کاربر وقتی روی این لینک ها کلیک می کنه، وارد صفحه ای میشه که اون خبر در اون جا قرار داده شده.
حالا شما در نظر بگیرید که تعدادی لینک هستن که اصلا صفحه ای برای اون ها وجود نداره. بنابراین وقتی کاربر روی اون لینک ها کلیک می کنه، با پیام خطای 404 مواجه میشه مبنی بر عدم وجود صفحه ی مزبور.
من در فایل 404.html به ناچار از کدهای Html استفاده کردم که اگه لینکی وجود نداشت، کاربر به صفحه ی error.php ریدایرکت بشه. متأسفانه کدهای Php در اون فایل اصلا عمل نمی کنن.
حالا کارهایی که من می خوام انجام بدم و توش دچار مشکل هستم به این شرح هستند:
1. من چه طور می تونم بفهمم که کاربر روی کدوم لینک کلیک کرده؟
2. با کلیک کردن کاربر روی لینکی که پیام خطا میده و به صفحه ی error.php ریدایرکت میشه؛ چه طور میشه لینک ارجاع رو به طور کامل در صفحه ی error.php دریافت کرد؟
برای این کار من از تابع زیر در فایل error.php استفاده کردم.
این تابع در مرورگر کروم، اصلا لینک ارجاع رو نمایش نمیده. البته قبلا لینک ارجاعی رو نمایش می داد اما الان اصلا نمایش میده.
ولی مرورگر فایرفاکس لینک ارجاع رو نمایش میده و مشکلی نداره.
$_SERVER['HTTP_REFERER']
3. من قصد دارم یک سری داده هایی رو از فایل error.php که دارای هیچ فرم یا فیلدی نیست به فایل اصلی که news.php هست انتقال بدم؛ بدون این که فرمی تعریف کنم یا بخوام از دکمه ی Submit استفاده کنم.
برای این کار از Curl استفاده کردم، اما متأسفانه هیچ داده ای رو به فایل news.php انتقال نداد.
حتی من اومدم در فایل های error.php و news.php از تابع session_start هم استفاده کردم و از تابع زیر هم استفاده کردم اما هیچ نشستی رو از فایل error.php به فایل news.php انتقال نداد.
$_SESSION['Session_News_Url_Referer']
ممنون میشم در این رابطه منو راهنمایی کنید.
با احترام.
لینک های موجود در صفحه ی اصلی سایت که قراره کاربر با کلیک کردن بر روی اون ها به صفحه ی error.php ارجاع داده بشه.
http://www.mysite.com/news/1
http://www.mysite.com/news/2
http://www.mysite.com/news/3
http://www.mysite.com/news/4
کدهای موجود در فایل 404.html
<html>
<body onload="window.location = 'http://www.mysite.com/error.php'"></body>
</html>
کدهای موجود در فایل error.php
<?php
session_start();
$News_Url_Referer = $_SERVER['HTTP_REFERER']; //دریافت لینک ارجاعی و ذخیره ی آن در متغیر
$_SESSION['Session_News_Url_Referer'] = $News_Url_Referer; //ذخیره ی لینک ارجاعی در متغیر نشست
if (strpos($News_Url_Referer, 'news')){ //چک کردن لینک ارجاعی مبنی بر وجود کلمه ی مورد نظر، اگر وجود داشت دستورات داخل بلاک اجرا می شوند و لینک ارجاعی به فایل مورد نظر از طریق متود پست، ارسال می شود
$ch = curl_init();
curl_setopt($ch ,CURLOPT_URL ,"http://www.mysite.com/news.php");
curl_setopt($ch ,CURLOPT_POST ,true);
curl_setopt($ch ,CURLOPT_POSTFIELDS ,"News_Url_Referer=".$News_Url_Referer);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
header ("location: news.php"); //انتقال به صفحه یا فایل اخبار
}
else
echo 'Error!';
?>
کدهای موجود در فایل news.php
<?php
session_start();
echo 'News_Url_Referer --->' .$_SESSION['Session_News_Url_Referer'] .'<br>'; //نمایش لینک ارجاعی در متغیر نشست
if(isset($_POST['News_Url_Referer'])) //بررسی وجود متغیر لینک اجرایی که توسط سی یو آر ال، ارسال شده بود
echo $_POST['News_Url_Referer']; //نمایش مقدار ذخیره شده در متغیر مورد نظر که همون لینک ارجاعی می باشد
else
echo 'Error!';
?>