Saya menggunakan XAMPP di Windows Vista. Dalam perkembangan saya, saya punya http://127.0.0.1/test_website/
.
Bagaimana cara mendapatkan http://127.0.0.1/test_website/
PHP?
Saya mencoba sesuatu seperti ini, tetapi tidak ada yang berhasil.
echo dirname(__FILE__)
or
echo basename(__FILE__);
etc.
Jawaban:
Coba ini:
<?php echo "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; ?>
Pelajari lebih lanjut tentang
$_SERVER
variabel standar .Jika Anda berencana menggunakan https, Anda dapat menggunakan ini:
function url(){ return sprintf( "%s://%s%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['SERVER_NAME'], $_SERVER['REQUEST_URI'] ); } echo url(); #=> http://127.0.0.1/foo
Berdasarkan jawaban ini , pastikan untuk mengkonfigurasi Apache Anda dengan benar sehingga Anda dapat mengandalkannya dengan aman
SERVER_NAME
.CATATAN : Jika Anda bergantung pada
HTTP_HOST
key (yang berisi input pengguna), Anda masih harus melakukan pembersihan, menghapus spasi, koma, carriage return, dll. Apa pun yang bukan karakter yang valid untuk domain. Periksa fungsi parse_url bawaan PHP sebagai contoh.sumber
$_SERVER['HTTPS']
dan menukar,https://
bukanhttp://
dalam kasus tersebut.REQUEST_URI
sudah mencakup a/
; itu benar. @swarnendu harap lebih berhati-hati saat mengedit jawaban orang lain. Itu seharusnya menjadi komentar.Fungsi disesuaikan untuk dijalankan tanpa peringatan:
function url(){ if(isset($_SERVER['HTTPS'])){ $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http"; } else{ $protocol = 'http'; } return $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; }
sumber
Fun 'base_url' snippet!
if (!function_exists('base_url')) { function base_url($atRoot=FALSE, $atCore=FALSE, $parse=FALSE){ if (isset($_SERVER['HTTP_HOST'])) { $http = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off' ? 'https' : 'http'; $hostname = $_SERVER['HTTP_HOST']; $dir = str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']); $core = preg_split('@/@', str_replace($_SERVER['DOCUMENT_ROOT'], '', realpath(dirname(__FILE__))), NULL, PREG_SPLIT_NO_EMPTY); $core = $core[0]; $tmplt = $atRoot ? ($atCore ? "%s://%s/%s/" : "%s://%s/") : ($atCore ? "%s://%s/%s/" : "%s://%s%s"); $end = $atRoot ? ($atCore ? $core : $hostname) : ($atCore ? $core : $dir); $base_url = sprintf( $tmplt, $http, $hostname, $end ); } else $base_url = 'http://localhost/'; if ($parse) { $base_url = parse_url($base_url); if (isset($base_url['path'])) if ($base_url['path'] == '/') $base_url['path'] = ''; } return $base_url; } }
Use as simple as:
// url like: http://stackoverflow.com/questions/2820723/how-to-get-base-url-with-php echo base_url(); // will produce something like: http://stackoverflow.com/questions/2820723/ echo base_url(TRUE); // will produce something like: http://stackoverflow.com/ echo base_url(TRUE, TRUE); || echo base_url(NULL, TRUE); // will produce something like: http://stackoverflow.com/questions/ // and finally echo base_url(NULL, NULL, TRUE); // will produce something like: // array(3) { // ["scheme"]=> // string(4) "http" // ["host"]=> // string(12) "stackoverflow.com" // ["path"]=> // string(35) "/questions/2820723/" // }
sumber
$base_url="http://".$_SERVER['SERVER_NAME'].dirname($_SERVER["REQUEST_URI"].'?').'/';
Usage:
print "<script src='{$base_url}js/jquery.min.js'/>";
sumber
Its just simple to use
Output :
Array ( [scheme] => http [host] => aaa.bbb.com [path] => / )
sumber
https://example.com
fromhttps://example.com/category2/page2.html?q=2#lorem-ipsum
- that has nothing to do with the current page you are at.I think the
$_SERVER
superglobal has the information you're looking for. It might be something like this:echo $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']
You can see the relevant PHP documentation here.
sumber
Try the following code :
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http"); $config['base_url'] .= "://".$_SERVER['HTTP_HOST']; $config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']); echo $config['base_url'];
sumber
The following code will reduce the problem to check the protocol. The $_SERVER['APP_URL'] will display the domain name with the protocol
$_SERVER['APP_URL'] will return protocol://domain ( eg:-http://localhost)
$_SERVER['REQUEST_URI'] for remaining parts of the url such as /directory/subdirectory/something/else
$url = $_SERVER['APP_URL'].$_SERVER['REQUEST_URI'];
The output would be like this
http://localhost/directory/subdirectory/something/else
sumber
I found this on http://webcheatsheet.com/php/get_current_page_url.php
Add the following code to a page:
<?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; } ?>
You can now get the current page URL using the line:
<?php echo curPageURL(); ?>
Sometimes it is needed to get the page name only. The following example shows how to do it:
<?php function curPageName() { return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); } echo "The current page name is ".curPageName(); ?>
sumber
$http = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'? "https://" : "http://"; $url = $http . $_SERVER["SERVER_NAME"] . $_SERVER['REQUEST_URI'];
sumber
Try this. It works for me.
/*url.php file*/ trait URL { private $url = ''; private $current_url = ''; public $get = ''; function __construct() { $this->url = $_SERVER['SERVER_NAME']; $this->current_url = $_SERVER['REQUEST_URI']; $clean_server = str_replace('', $this->url, $this->current_url); $clean_server = explode('/', $clean_server); $this->get = array('base_url' => "/".$clean_server[1]); } }
Use like this:
<?php /* Test file Tested for links: http://localhost/index.php http://localhost/ http://localhost/index.php/ http://localhost/url/index.php http://localhost/url/index.php/ http://localhost/url/ab http://localhost/url/ab/c */ require_once 'sys/url.php'; class Home { use URL; } $h = new Home(); ?> <a href="<?=$h->get['base_url']?>">Base</a>
sumber
Simple and easy trick:
$host = $_SERVER['HTTP_HOST']; $host_upper = strtoupper($host); $path = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); $baseurl = "http://" . $host . $path . "/";
URL looks like this:
http://example.com/folder/
sumber
You can do it like this, but sorry my english is not good enough.
First, get home base url with this simple code..
I've tested this code on my local server and public and the result is good.
<?php function home_base_url(){ // first get http protocol if http or https $base_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']!='off') ? 'https://' : 'http://'; // get default website root directory $tmpURL = dirname(__FILE__); // when use dirname(__FILE__) will return value like this "C:\xampp\htdocs\my_website", //convert value to http url use string replace, // replace any backslashes to slash in this case use chr value "92" $tmpURL = str_replace(chr(92),'/',$tmpURL); // now replace any same string in $tmpURL value to null or '' // and will return value like /localhost/my_website/ or just /my_website/ $tmpURL = str_replace($_SERVER['DOCUMENT_ROOT'],'',$tmpURL); // delete any slash character in first and last of value $tmpURL = ltrim($tmpURL,'/'); $tmpURL = rtrim($tmpURL, '/'); // check again if we find any slash string in value then we can assume its local machine if (strpos($tmpURL,'/')){ // explode that value and take only first value $tmpURL = explode('/',$tmpURL); $tmpURL = $tmpURL[0]; } // now last steps // assign protocol in first value if ($tmpURL !== $_SERVER['HTTP_HOST']) // if protocol its http then like this $base_url .= $_SERVER['HTTP_HOST'].'/'.$tmpURL.'/'; else // else if protocol is https $base_url .= $tmpURL.'/'; // give return value return $base_url; } ?> // and test it echo home_base_url();
output will like this :
local machine : http://localhost/my_website/ or https://myhost/my_website public : http://www.my_website.com/ or https://www.my_website.com/
use
home_base_url
function atindex.php
of your website and define itand then you can use this function to load scripts, css and content via url like
<?php echo '<script type="text/javascript" src="'.home_base_url().'js/script.js"></script>'."\n"; ?>
will create output like this :
<script type="text/javascript" src="http://www.my_website.com/js/script.js"></script>
and if this script works fine,,!
sumber
Here's one I just put together that works for me. It will return an array with 2 elements. The first element is everything before the ? and the second is an array containing all of the query string variables in an associative array.
function disectURL() { $arr = array(); $a = explode('?',sprintf( "%s://%s%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['SERVER_NAME'], $_SERVER['REQUEST_URI'] )); $arr['base_url'] = $a[0]; $arr['query_string'] = []; if(sizeof($a) == 2) { $b = explode('&', $a[1]); $qs = array(); foreach ($b as $c) { $d = explode('=', $c); $qs[$d[0]] = $d[1]; } $arr['query_string'] = (count($qs)) ? $qs : ''; } return $arr; }
Note: This is an expansion of the answer provided by maček above. (Credit where credit is due.)
sumber
Edited at @user3832931 's answer to include server port..
to form URLs like 'https://localhost:8000/folder/'
$base_url="http://".$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($_SERVER["REQUEST_URI"].'?').'/';
sumber
function server_url(){ $server =""; if(isset($_SERVER['SERVER_NAME'])){ $server = sprintf("%s://%s%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['SERVER_NAME'], '/'); } else{ $server = sprintf("%s://%s%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['SERVER_ADDR'], '/'); } print $server; }
sumber
Try using:
$_SERVER['SERVER_NAME'];
I used it to echo the base url of my site to link my css.
<link href="//<?php echo $_SERVER['SERVER_NAME']; ?>/assets/css/your-stylesheet.css" rel="stylesheet" type="text/css">
Hope this helps!
sumber
I had the same question as the OP, but maybe a different requirement. I created this function...
/** * Get the base URL of the current page. For example, if the current page URL is * "https://example.com/dir/example.php?whatever" this function will return * "https://example.com/dir/" . * * @return string The base URL of the current page. */ function get_base_url() { $protocol = filter_input(INPUT_SERVER, 'HTTPS'); if (empty($protocol)) { $protocol = "http"; } $host = filter_input(INPUT_SERVER, 'HTTP_HOST'); $request_uri_full = filter_input(INPUT_SERVER, 'REQUEST_URI'); $last_slash_pos = strrpos($request_uri_full, "/"); if ($last_slash_pos === FALSE) { $request_uri_sub = $request_uri_full; } else { $request_uri_sub = substr($request_uri_full, 0, $last_slash_pos + 1); } return $protocol . "://" . $host . $request_uri_sub; }
...which, incidentally, I use to help create absolute URLs that should be used for redirecting.
sumber
$some_variable = substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['REQUEST_URI'], "/")+1);
and you get something like
sumber
Just test and get the result.
// output: /myproject/index.php $currentPath = $_SERVER['PHP_SELF']; // output: Array ( [dirname] => /myproject [basename] => index.php [extension] => php [filename] => index ) $pathInfo = pathinfo($currentPath); // output: localhost $hostName = $_SERVER['HTTP_HOST']; // output: http:// $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://'; // return: http://localhost/myproject/ echo $protocol.$hostName.$pathInfo['dirname']."/";
sumber
In my case I needed the base URL similar to the
RewriteBase
contained in the.htaccess
file.Unfortunately simply retrieving the
RewriteBase
from the.htaccess
file is impossible with PHP. But it is possible to set an environment variable in the .htaccess file and then retrieve that variable in PHP. Just check these bits of code out:.htaccess
index.php
Now I use this in the base tag of the template (in the head section of the page):
<base href="<?php echo ! empty( getenv( 'BASE_PATH' ) ) ? getenv( 'BASE_PATH' ) : '/'; ?>"/>
So if the variable was not empty, we use it. Otherwise fallback to
/
as default base path.Based on the environment the base url will always be correct. I use
/
as the base url on local and production websites. But/foldername/
for on the staging environment.They all had their own
.htaccess
in the first place because the RewriteBase was different. So this solution works for me.sumber
Have a look at $_SERVER['REQUEST_URI'], i.e.
$current_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
If you want to support both HTTP and HTTPS, you can use this solution
$current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
This worked for me. I hope, this will also help you. Thanks for asking this question.
sumber