Display current URL of webpage (dynamic) in HTML - php

I have this code in my HTML:
<h3 id="left">Lorem Ipsum </h3>
<h3 id="right">[Current URL Here]</h3>
I want to display (dynamicly) the current URL inside the <h3> tags. I've been trying to figure it out for a few days, but I'm really a mobile developer, not an HTML developer, so it's proven difficult. I need this for an app I'm working on, so Please go easy on me :)
Thanks in advance.

document.getElementById('right').innerHTML = window.location.href;

If you wanted to do it in PHP, it's a little more involved:
$url = !empty($_SERVER['HTTPS']) ? 'https://' : 'http://';
$url .= $_SERVER['HTTP_HOST'] . htmlspecialchars($_SERVER['REQUEST_URI']);
As aronasterling points out, you need to sanitize $_SERVER['REQUEST_URI'] to prevent XSS.

Well, you simply cannot do it in pure HTML.
With javascript, you can go with
<h3 id="right">
<script type="text/javascript">
document.write(location.href);
</script>
</h3>
Otherwise, if you are requesting a page on the server, you should rather have it done in there.

the php code for getting complete url of current page is as follows
<?php
$protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
echo $protocol.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
?>
Reference
if you want to use javascript use the method suggested by #MooGoo
full usage of that script is as follows
<SCRIPT LANGUAGE="JavaScript">
document.getElementById('right').innerHTML = window.location.href;
</SCRIPT>
use this after you declared/defined <h3 id="right">[Current URL Here]</h3>
Hope helpful

<script type="text/javascript">
var segments = window.location.pathname.split('/');
var toDelete = [];
for (var i = 0; i < segments.length; i++) {
if (segments[i].length < 1) {
toDelete.push(i);
}
}
for (var i = 0; i < toDelete.length; i++) {
segments.splice(i, 1);
}
var filename = segments[segments.length - 1];
console.log(filename);
document.write(filename);
</script>

While the JavaScript are what is more common, you could also use Server-Side Includes:
<h3 id="right">
<!--#echo var="SERVER_NAME" -->/<!--#echo var="DOCUMENT_URI" -->
</h3>
instead of SERVER_NAME you can try HTTP_HOST
instead of DOCUMENT_URI you can try REQUEST_URI; one includes the query string, the other doesn't

Php Code:
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
<h3 id="right">echo curPageURL();</h3>

Related

Getting full URL with PHP on Windows doesn't work

I am trying to build a language switch for a site of mine, but, as the hosting MUST BE a Windows IIS with PHP, I am not able to get the full URL of the page viewed by the visitor.
Say I am on domain.com/page.php?id=23, what I get using the old fashioned
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
is an empty string.
So I have tried a solution found here on stackoverflow to get the full URL
function getFullUrl() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER['HTTP_X_REWRITE_URL'];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER['HTTP_X_REWRITE_URL'];//$_SERVER["REQUEST_URI"] blank
}
return $pageURL;
}
but still nothing. I get something like: domain.com/page.php? in some cases and doman.com/? in others.
Is there a definitive way to get the full url in that scenario?
Thank you very much.
EDIT
It seems that the thing cannot be done on that server. I solved using a client side work around written in js+jQuery (I used purl plugin)....horrible :) Here it is:
$('.lang').each(function(){
$(this).click(function(e){
e.preventDefault();
var lingua = $(this).find('a').data('lang');
var url = window.location.href;
var urlParts = purl(url);
if (url.indexOf("?") >= 0)
{
var queryString = urlParts.attr('query').split('&');
var langIndex = queryString.indexOf('lang');
if(langIndex > -1)
{
queryString.splice(langIndex,1);
var newUrl = urlParts.attr('protocol')+urlParts.attr('host')+urlParts.attr('path')
window.location = newUrl + '&lang='+lingua;
}
else window.location = url + '&lang='+lingua;
}
else
window.location = url + '?lang='+lingua;
});
});
It seems to work, even if I don't get why if "lang" is already in the query string, the script doesn't recognize it and continues adding &lang every time I click on the links. Sure, it works anyway, but it is horrible to watch a URL like &lang=en&lang=fr&lang=pl&lang=de
This line returns empty
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
because it should be this:
$url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
You need quotes for the keys....see here in the manual.

How to get specific part of url?

I am working on search function which I want make my search more easier and I had store href inside my db. Therefore, I need to get specific part of current page url eg : abc.php.
But now I only can get full url which is eg : http://abc_system/user/abc.php. Is it one of the solution is used substring?I am looking for some help. Hope you guys can help me out. Thanks in advanced.
This is my code which return url result:
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
You need to use basename() function for get your filename from the URL string.
<?php
$url = "http://google.com/sdfsaf/abcd.php";
echo basename($url); // It will returns abcd.php
?>
Demo
Use **parse_url()** if you want to split url to its components,
For more info, Refer : http://www.php.net/manual/en/function.parse-url.php

Update a paremeter in a url instead of adding a new one

having a bit of trouble. Basically I have created some pagination. The problem is each time I click on a page number url it just adds the parameter to the url even if it already exists.
so for instance I land on the page. My url is now example.com/page?pagenum=1, I click the second page so my url is now example.com/page?pagenum=1&pagenum=2. Now it all works fine but as you can imagine is going to get a bit messy so would rather it update the parameter that's already in the URL. I'm currently using the following to get the current page URL:
<?php
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
?>
and then the Link is something like:
<a href='<?php echo curPageURL(); ?>&pagenum=<?php echo "1"; ?>'> 1 </a>
Update
I have other paremeters in the URL I need to keep, I only need to update 'pagenum'
The problem exists because REQUEST_URI contains both the path and query string, and you're appending a new query string to that every page turn. To extract the path, you could use this code, taken from this answer:
$path = strtok($_SERVER["REQUEST_URI"], '?');
You can then copy existing query string fields, but remove pagenum:
$fields = $_GET;
unset($fields['pagenum']); // remove any existing pagenum value
$path .= '?' . http_build_query($fields); // re-append the query string
You could then use more or less your existing link code:
<a href='<?php echo $path; ?>&pagenum=<?php echo "1"; ?>'> 1 </a>
You can use http_build_query like so:
$all_params = $_GET;
$all_params["page"] = "2";
$link = "page.php?" . http_build_query($all_params); // "page.php?page=2&foo=bar"

ampersand not passing in a string variable via url

I am trying to pass a big url as a string to another php page and fetch it there via $_REQUEST[]
but it's not working.
Here is the code (JavaScript) from first page:
var url="index.php?module=Contacts&return_module=Campaigns&action=UD_DetailView&popuptype=detailview&select=enable&form=EditView&form_submit=false";
var intermediate_url="choose_template.php?variable_url="+url;
window.location=intermediate_url;
The code on other page is:
<?php
echo "url = ".$_REQUEST['variable_url'];
?>
The echo I get on page choose_template.php is this :
url = index.php?module=Contacts
I don't understand. Why does it break at the occurance of first & ?
What should I do to bypass it ?
Try using in js:
url = encodeURIComponent(url);
Than in php:
echo "url = ". urldecode($_REQUEST['variable_url']);
When manipulating url, you should use urlencode and urldecode functions
http://php.net/manual/en/function.urlencode.php
http://php.net/manual/en/function.urldecode.php
In javascript:
url = encodeURIComponent(url)
Try using urlencode():
var url="<?php echo urlencode('index.php?module=Contacts&return_module=Campaigns&action=UD_DetailView&popuptype=detailview&select=enable&form=EditView&form_submit=false')?>";
var intermediate_url="choose_template.php??variable_url="+url;
window.location=intermediate_url;
If i understand correctly you what to echo out the full name of the current page: Use this to get it:
function curpage() {
$pu = 'http';
if ($_SERVER["HTTPS"] == "on") {$pu .= "s";}
$pu .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pu .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {$pu .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];}
return $pu;
}
<?php echo "url = ".curpage(); ?>
This will alway work fine!

Getting url of the current page

I am trying to get the website url of the current page on which the person is. I would use it in the social share buttons that I am creating. The websites are all Wordpress websites. I got the following url for getting the current url,
<?php if (is_home()) { echo site_url(); } else { echo the_permalink(); } ?>
The script does not execute and when I click the button, the url does not generate but the php script is displayed in the browser as it is.
Please help out. Thanks
You would use
<?php echo $_SERVER['PHP_SELF']; ?>
This gives you the url of the current page. For example index.php or something similar
Using Javascript:
var currentURL = document.URL;
alert(currentURL);
Using PHP:
<?php
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
?>
If you want file name
Use PHP Magic Constants such as __FILE__

Categories