Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ricardo Godoi

Criar function base_url()

Recommended Posts

Ola, estrou sem ideia de como começar uma function base_url()

ja tenho uma que so faz a função de paga a uri do site e exibir

function base_url() {
	$urlserver = $_SERVER['HTTP_HOST'] == 'localhost' ? 'http://localhost/servidor/inoveservidor' : 'http://inoveservidor.com';
	return $urlserver;
}

minha ideia e fazer que nem a da codeigniter

que você fazendo assim, base_url().'dir/dir/arquivo.php' ele exibi e assim tbm, base_url('dir/dir/').'/arquivo.php'

 

mas to sem a ideia da logica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

com um pouco de desforço, fiz essa

function site_url( $arquivo = '') {
	$urlServer = $_SERVER['HTTP_HOST'] == 'localhost' ? 'http://localhost/servidor/inoveservidor' : 'http://inoveservidor.com';
	if( is_array($arquivo)){
		return $urlServer.'/'.(implode('/', $arquivo));
	}else if( is_string ($arquivo)){
		return $urlServer.'/'.ltrim($arquivo,'/');
	}
	return $urlServer;
}

mas agora com eu faço para ele procurar o / caso existir na url, ex: site_url('ADMIN/sys')."/index.php"

essa / que vem antes do index.php, como eu faço para o sistema ver ela, e se achar ela, deixa e e nao tiver colocar, sem ter que eu coloca ela com fiz no script '/'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar preg_match, para verificar se o parâmetro da função possui barra no final, assim:

if ( preg_match( "/\/$/", $arquivo ) )
    // possui barra no final
else
    // não possui barra no final

No seu exemplo, sua função não sabe nada sobre "/index.php". Ela só vai saber sobre o "ADMIN/sys", que é o parâmetro que ela recebe. Só será possível tratar a barra nesse valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, fiz assim

function site_url( $arquivo = '') {
	$urlServer = $_SERVER['HTTP_HOST'] == 'localhost' ? 'http://localhost/servidor/inoveservidor' : 'http://inoveservidor.com';
	if( is_array($arquivo)){
		return $urlServer.'/'.(implode('/', $arquivo));
	}else if( preg_match( "/\/$/", $arquivo)){
		// possui barra no final
		return $urlServer.'/'.ltrim($arquivo,'/');
	}else {
		// não possui barra no final
		return $urlServer.'/'.ltrim($arquivo);
	}
	return $urlServer;
}

echo site_url('ADMIN', 'site').'/index.php'; // Exibe assim: http://inoveservidor.com/ADMIN/index.php
echo '</br>';
echo site_url('ADMIN').'/ok'; // Exibe assim: http://inoveservidor.com/ADMIN/ok
echo '</br>';

<?php echo site_url('ADMIN'); ?>ok // Exibe assim: http://inoveservidor.com/ADMINok

mas minha duvida é, o ok da ultima linha ele não coloco a barra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque não simplificar?

function getBaseUrl(){ // fonte: http://stackoverflow.com/questions/2820723/how-to-get-base-url-with-php
 return sprintf(
  "%s://%s%s",
  isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
  $_SERVER['SERVER_NAME'],
  $_SERVER['REQUEST_URI']
 }
}
 
function site_url($uri){
    return getBaseUrl() . $uri;
}

Use assim:

site_url('ADMIN/index.php'); // Exibe assim: http://inoveservidor.com/ADMIN/index.php'>http://inoveservidor.com/ADMIN/index.php

site_url('ADMIN/ok'); // Exibe assim: http://inoveservidor.com/ADMIN/ok'>http://inoveservidor.com/ADMIN/ok

site_url('ADMIN'); ?> // Exibe assim: http://inoveservidor.com/ADMIN

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria algo do tipo

function base_url( $data ) {
	return $_SERVER["REQUEST_SCHEME"] . '://' . $_SERVER['HTTP_HOST'] . '/' . $data;
}

echo base_url("page/")."index.php";
// Exibe:
// 'http://' ou 'https://' de acordo que foi requisitado ao servidor.
// 'localhost' ou 'inoveseridor.com' de acordo com o que foi requisitado ao servidor.
// E 'page/'
// 
// Resultado final:
// http://localhost/page/index.php 

------------------------------------------------------

 

 

Ola, estrou sem ideia de como começar uma function base_url()

ja tenho uma que so faz a função de paga a uri do site e exibir

function base_url() {
	$urlserver = $_SERVER['HTTP_HOST'] == 'localhost' ? 'http://localhost/servidor/inoveservidor' : 'http://inoveservidor.com';
	return $urlserver;
}

minha ideia e fazer que nem a da codeigniter

que você fazendo assim, base_url().'dir/dir/arquivo.php' ele exibi e assim tbm, base_url('dir/dir/').'/arquivo.php'

 

mas to sem a ideia da logica.

 

Só relembrando que esse código é redundante.

1) A variável $_SERVER['HTTP_HOST'] contém a url que tu usou como acesso.

Exemplo: Se tu acessou no teu navegador a url 'http://localhost/teste' ela conterá o 'localhost', agora, se tu digitou 'http://inoveservidor.com' ela vai conter 'inoveservidor.com' como valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.