نمایش نتایج 1 تا 6 از 6

نام تاپیک: مشکل در ارسال یک متغیر به صفحه ای خاص و نیز مشکل در دریافت لینک ارجاع به صفحه ای دیگر

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    نهاوند (استان همدان)
    پست
    98

    Question مشکل در ارسال یک متغیر به صفحه ای خاص و نیز مشکل در دریافت لینک ارجاع به صفحه ای دیگر

    با سلام خدمت دوستان
    فرض کنید که من در صفحه ی اصلی سایتم قسمتی دارم که در اون جا، جدیدترین اخبار ورزشی قرار می گیره.
    کاربر وقتی روی این لینک ها کلیک می کنه، وارد صفحه ای میشه که اون خبر در اون جا قرار داده شده.
    حالا شما در نظر بگیرید که تعدادی لینک هستن که اصلا صفحه ای برای اون ها وجود نداره. بنابراین وقتی کاربر روی اون لینک ها کلیک می کنه، با پیام خطای 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!';
    ?>
    آخرین ویرایش به وسیله Ali_Sedaghat : سه شنبه 11 آذر 1399 در 07:22 صبح

  2. #2
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: مشکل در ارسال یک متغیر به صفحه ای خاص و نیز مشکل در دریافت لینک ارجاع به صفحه ای دیگر

    رفر یعنی آدرس قبلی شما داری از فایل news.php کاربر رو میفرستی به 404.html و از اونجا کاربر رو به error.php میفرستی
    در نتیجه توی صفحه error.php رفر 404.html هستش ... شما در واقع 2 آدرس قبل رو میخای نه آدرس قبلی رو


    HTTP_REFERER چیزیه که توسط مرورگر ست میشه یعنی شما میری توی یک صفحه بعد از اونجا میری به صفحه دوم
    اینجا مرورگر شما تصمیم مییره که وقتی میخای بری تو صفحه دوم آدرس صفحه اول رو توی HTTP_REFERER بزاره
    به اینا میگن هدر میتونی راجبشون تحقیق کنی این تابع نیست و برای php ]م نیست بلکه مرورگر شماست که اینا رو مقدار دهی میکنه

    من نمیدونم وقتی میری توی 404 این رو مقدار ست میکنه مرورگر یا نه باید تست کنی
    اگه ست کنه به طور خلاصه شما باید رفر رو توی 404 بگیری با javascript و وقتی کاربر رو میفرستی به صفحه error این رو باهاش بفرستی توی GET


    document.location = 'http://site.com/error.php?ref=' + encodeURIComponent(document.referrer);


    بعد توی error.php از تو get درش بیاری


    echo urldecode($_GET['ref']);

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    نهاوند (استان همدان)
    پست
    98

    نقل قول: مشکل در ارسال یک متغیر به صفحه ای خاص و نیز مشکل در دریافت لینک ارجاع به صفحه ای دیگر

    نقل قول نوشته شده توسط plague مشاهده تاپیک
    رفر یعنی آدرس قبلی شما داری از فایل news.php کاربر رو میفرستی به 404.html و از اونجا کاربر رو به error.php میفرستی
    در نتیجه توی صفحه error.php رفر 404.html هستش ... شما در واقع 2 آدرس قبل رو میخای نه آدرس قبلی رو


    HTTP_REFERER چیزیه که توسط مرورگر ست میشه یعنی شما میری توی یک صفحه بعد از اونجا میری به صفحه دوم
    اینجا مرورگر شما تصمیم مییره که وقتی میخای بری تو صفحه دوم آدرس صفحه اول رو توی HTTP_REFERER بزاره
    به اینا میگن هدر میتونی راجبشون تحقیق کنی این تابع نیست و برای php ]م نیست بلکه مرورگر شماست که اینا رو مقدار دهی میکنه

    من نمیدونم وقتی میری توی 404 این رو مقدار ست میکنه مرورگر یا نه باید تست کنی
    اگه ست کنه به طور خلاصه شما باید رفر رو توی 404 بگیری با javascript و وقتی کاربر رو میفرستی به صفحه error این رو باهاش بفرستی توی GET


    document.location = 'http://site.com/error.php?ref=' + encodeURIComponent(document.referrer);


    بعد توی error.php از تو get درش بیاری


    echo urldecode($_GET['ref']);
    سلام دوست عزیز
    ممنونم از پاسخ شما.
    فکر کنم منظور من رو خوب متوجه نشدید.
    بگذارید یه مثال بزنم.
    فرض کنید من در صفحه ی ایندکس (اصلی) سایتم قسمتی رو دارم که در اون جا اومدم از سایت ورزش ۳ اخبارش رو برداشتم.
    چون نمی خوام آدرس سایت ورزش ۳ در لینک خبرها باشه بنابراین آدرس سایت اونو با سایت خودم عوض می کنم.
    وقتی کاربر میاد روی لینک ها کلیک می کنه به جای این که وارد سایت ورزش ۳ بشه مرورگر میاد مسیر خبر رو در سایت من جست وجو می کنه که قاعدتا این مسیر وجود نداره و پیام ۴۰۴ براش ظاهر میشه.
    بنابراین کاربر از صفحه ی ایندکس من به صفحه ی ۴۰۴ ارجاع داده میشه.
    بعد در کدی که بالا فرستادم کاربر بعد از ارجاع به فایل ۴۰۴ به طور اتوماتیک به فایل error.php منتقل میشه.
    بعد در این فایل کلمه new رو جست وجو می کنه.
    اگه پیدا کنه باید کاربر رو به همراه لینک ارجاعی به فایل news.php منتقل کنه.

    از این ها بگذریم.
    من چه طور می تونم یه فرم درست کنم و بعد بیام بدون این که دکمه ی submit رو در فرم تعریف کنم داده ها رو به صفحه ای دیگه منتقل کنم؟
    فکر کنم اگه بتونم این کار رو انجام بدم مشکلم حل بشه.
    با تقدیم احترام.

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    نهاوند (استان همدان)
    پست
    98

    نقل قول: مشکل در ارسال یک متغیر به صفحه ای خاص و نیز مشکل در دریافت لینک ارجاع به صفحه ای دیگر

    سلام مجدد خدمت دوستان
    یه سوال در رابطه با Curl دارم.
    چرا کد زیر کار نمی کنه؟

    $News_Url_Referer = http://www.mysite.com/news/1;
    $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);

    چرا مقداری که به این فیلد (News_Url_Referer) اختصاص داده شده به فایل news.php ارسال نمیشه؟
    من چه طور می تونم مقدار این فیلد (News_Url_Referer) را در فایل news.php دریافت کرده و چاپ کنم؟
    ممنون میشم کمک کنید.
    با سپاس

  5. #5
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: مشکل در ارسال یک متغیر به صفحه ای خاص و نیز مشکل در دریافت لینک ارجاع به صفحه ای دیگر

    سلام دوست عزیز
    ممنونم از پاسخ شما.
    فکر کنم منظور من رو خوب متوجه نشدید.
    بگذارید یه مثال بزنم.
    فرض کنید من در صفحه ی ایندکس (اصلی) سایتم قسمتی رو دارم که در اون جا اومدم از سایت ورزش ۳ اخبارش رو برداشتم.
    چون نمی خوام آدرس سایت ورزش ۳ در لینک خبرها باشه بنابراین آدرس سایت اونو با سایت خودم عوض می کنم.
    وقتی کاربر میاد روی لینک ها کلیک می کنه به جای این که وارد سایت ورزش ۳ بشه مرورگر میاد مسیر خبر رو در سایت من جست وجو می کنه که قاعدتا این مسیر وجود نداره و پیام ۴۰۴ براش ظاهر میشه.
    بنابراین کاربر از صفحه ی ایندکس من به صفحه ی ۴۰۴ ارجاع داده میشه.
    بعد در کدی که بالا فرستادم کاربر بعد از ارجاع به فایل ۴۰۴ به طور اتوماتیک به فایل error.php منتقل میشه.
    بعد در این فایل کلمه new رو جست وجو می کنه.
    اگه پیدا کنه باید کاربر رو به همراه لینک ارجاعی به فایل news.php منتقل کنه.
    دوست عزیز این توضیح عملکرد سایت ست که من متوجه شدم
    سوال شما این بود که چرا رفر رو نمیده و نمیتونم رفر رو بگیرم که من هم راجب رفر توضیح دادم



    این curl



    $error = false ;
    $post_data = ['News_Url_Referer'=>$News_Url_Referer];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://www.mysite.com/news.php" );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

    $output = curl_exec($ch);
    if (curl_errno($ch)) {
    $error = curl_error($ch);
    }

    curl_close($ch);

    if($error )
    {
    echo "ERROR : $error";
    }


    echo $output ;


    در حالت عادی وقتی با مرورگر یه فرم رو ثبت میکنی اگر تو صفحه هدف اررو یا مشکلی باشه تو مرورگر میبینی و متوجه میشی
    ولی شما وقتی با curl ارسال میکنی خروجی اون صفحه هدف رو باید بعدش چاپ کنی ببینی چی خروجی میده و اینجوری اگر ارروری هست متوجه بشی
    همیشه وقتی curl جوابی که میخای رو نمیده خروجیش رو چاپ کن و تو صفحه هدف هم یه سری echo یا var_dump بزار که خروجی تولید کنن اینجوری متوجه میشی که چه اتفاقاتی افتاده اونور

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    نهاوند (استان همدان)
    پست
    98

    نقل قول: مشکل در ارسال یک متغیر به صفحه ای خاص و نیز مشکل در دریافت لینک ارجاع به صفحه ای دیگر

    نقل قول نوشته شده توسط plague مشاهده تاپیک
    دوست عزیز این توضیح عملکرد سایت ست که من متوجه شدم
    سوال شما این بود که چرا رفر رو نمیده و نمیتونم رفر رو بگیرم که من هم راجب رفر توضیح دادم



    این curl



    $error = false ;
    $post_data = ['News_Url_Referer'=>$News_Url_Referer];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://www.mysite.com/news.php" );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

    $output = curl_exec($ch);
    if (curl_errno($ch)) {
    $error = curl_error($ch);
    }

    curl_close($ch);

    if($error )
    {
    echo "ERROR : $error";
    }


    echo $output ;


    در حالت عادی وقتی با مرورگر یه فرم رو ثبت میکنی اگر تو صفحه هدف اررو یا مشکلی باشه تو مرورگر میبینی و متوجه میشی
    ولی شما وقتی با curl ارسال میکنی خروجی اون صفحه هدف رو باید بعدش چاپ کنی ببینی چی خروجی میده و اینجوری اگر ارروری هست متوجه بشی
    همیشه وقتی curl جوابی که میخای رو نمیده خروجیش رو چاپ کن و تو صفحه هدف هم یه سری echo یا var_dump بزار که خروجی تولید کنن اینجوری متوجه میشی که چه اتفاقاتی افتاده اونور
    سپاس فراوان بابت وقت و کدی که گذاشتید.

تاپیک های مشابه

  1. سوال: تغیر سایز مرورگر
    نوشته شده توسط ali-akbarian در بخش طراحی وب (Web Design)
    پاسخ: 0
    آخرین پست: شنبه 06 تیر 1394, 10:12 صبح
  2. تغیر سایز
    نوشته شده توسط armindelavari در بخش jQuery
    پاسخ: 1
    آخرین پست: شنبه 25 آذر 1391, 11:15 صبح
  3. تغیر سایز بر اساس فرمت عکس
    نوشته شده توسط fakhravari در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: سه شنبه 09 خرداد 1391, 23:08 عصر
  4. تغیر سایز پنجره مرورگر
    نوشته شده توسط Mostafa_Dindar در بخش گفتگوی عمومی کامپیوتر و فناوری اطلاعات
    پاسخ: 2
    آخرین پست: چهارشنبه 13 مرداد 1389, 09:37 صبح
  5. نمایش سایز یک متغیر
    نوشته شده توسط soroush68 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 1
    آخرین پست: دوشنبه 07 مرداد 1387, 14:40 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •