Greenguy's Board

Greenguy's Board (http://www.greenguysboard.com/board/index.php)
-   Programming & Scripting (http://www.greenguysboard.com/board/forumdisplay.php?f=15)
-   -   PHP Referrer & Display Help (http://www.greenguysboard.com/board/showthread.php?t=63572)

A.J. Angel 2012-02-29 03:14 AM

PHP Referrer & Display Help
 
Hello,

I am currently using the following code below to display two different codes depending on referrers. It came to my attention that if the page is visited from a direct url or a bookmark for example, the include is not working. It only works if the page is visited from "somewhere".

As such, I wish to ask if someone may be able to "fix" the code. Basically, I wish to display the first code if the visitor comes from domain.com otherwise, the include is displayed no matter where else they come from. Thank you in advance.

PHP Code:

      if(isset($_SERVER['HTTP_REFERER'])) {
          
$referrer $_SERVER['HTTP_REFERER'];
          if(
stristr($referrer'domain.com')) {
               echo 
'<INSERT CODE>';
          } else {
               include 
$_SERVER['DOCUMENT_ROOT'].("/path/to/file.html");
          }
     } 


cd34 2012-02-29 11:25 AM

On a bookmark or typein, HTTP_REFERER won't be set - and your condition skips your includes in that case.

Code:

          $referrer = $_SERVER['HTTP_REFERER'];
          if( (stristr($referrer, 'domain.com')) || ($referrer=="") ) {
              echo '';
          } else {
              include $_SERVER['DOCUMENT_ROOT'].("/path/to/file.html");
          }

Disclaimer: yes, there are better ways to write that at the expense of the code being less easily modified.

A.J. Angel 2012-02-29 06:22 PM

Quote:

Originally Posted by cd34 (Post 514114)
On a bookmark or typein, HTTP_REFERER won't be set - and your condition skips your includes in that case.

Code:

          $referrer = $_SERVER['HTTP_REFERER'];
          if( (stristr($referrer, 'domain.com')) || ($referrer=="") ) {
              echo '';
          } else {
              include $_SERVER['DOCUMENT_ROOT'].("/path/to/file.html");
          }

Disclaimer: yes, there are better ways to write that at the expense of the code being less easily modified.

Good observation. What does the code below mean?

PHP Code:

|| ($referrer=="") ) 

Another helper directed me to simply delete the first condition without adding anything. I would appreciate any indications in order to understand things better. Thank you.

cd34 2012-02-29 10:29 PM

if you just delete the first condition, if the referrer is empty, it would do your include. My guess at your intention was to include the local code if it was a typein/bookmark or local site referrer, and include the /path/to/file.html if it was a remote referrer.

|| ($referrer=="") )

says: or, the referrer is empty

if you want to include the INSERT CODE for local hits + bookmarks/typeins, you want to use the || ($referrer=="") ) version. If you want only want to display INSERT CODE for local hits, and bookmarks/typeins/remote referrers get the /path/to/file.html, then just removing the isset() condition would do that.

A.J. Angel 2012-02-29 10:39 PM

Actually, my intention is the contrary, intending to display the if the visitor comes from a particular domains but in case the visitor does not come from that domain, they would be instead be displayed the include to /path/to/file.html.


All times are GMT -4. The time now is 12:13 PM.

Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© Greenguy Marketing Inc