Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo Freitas Nobrega

[Resolvido] Url raiz

Recommended Posts

Cara, vou dar uma dica, assim como eu uso hoje...

 

public function getUrl(){
    return $this->root = "sua URL raiz";
}

 

quando voce chamar ela, é só dar um

 

<?php echo $suaVariavel->getUrl() ?>

 

Abrçs

 

gremio10 obrigado pela ajuda!

 

Mas não estou com problemas para gerar o protocolo (http:// | https://) e nem o nome do servidor http_host (localhost). A minha dificuldade esta em gerar o que vem após, no meu caso do teste em minha máquina a saída seria a pasta (gemak), ficando http://localhst/gemak. Alguns sugeriram fazer diretamente por constantes, mas supondo o usuário utilize a pasta "carro", teria que ficar http://localhost/carro.

 

Estou sendo claro? rs :ermm:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cheguei a seguinte forma. Alguém possuí uma solução mais efetiva? ^_^

 

$burl = sprintf( 'http%s://%s%s' , isset( $_SERVER[ 'HTTPS' ] ) ? 's' : null , $_SERVER[ 'HTTP_HOST' ] , $_SERVER[ 'REQUEST_URI' ] );
$path = pathinfo( $burl );
if( $path['extension'] ) {
return $path['dirname'] . '/';
} else {
return $path['dirname'] . '/'  . $path['filename'] . '/';
}

 

Saída:

url -> http://localhost/gemak/index.php
out -> http://localhost/gemak/

url -> http://localhost/gemak/?id=5
out -> http://localhost/gemak/

url -> http://localhost/gemak/index.php?id=5
out -> http://localhost/gemak/

url -> http://localhost/gemak/
out -> http://localhost/gemak/

 

Classe teste:

<?php
class url {
protected $url;

function __construct( $url = NULL ) {
	if( !is_null( $url ) ) {
		$this->add( $url );
	}
}

public function validate( $url ) {
	if (preg_match("|^http(s)?://[a-z0-9-]+(\.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i", $url)) {
		return true;
	} else {
		return false;
	}
}

public function add( $url ) {
	if( $this->validate( $url ) ) {
		$this->url = $url;
	} else {
		echo 'url inválida';
		return false;
	}
}

public function getString() {
	return $this->url;
}

public function get() {
	return parse_url( $this->url );
}

public function base() {
	$path = pathinfo( $this->url );
	if( $path['extension'] ) {
		return $path['dirname'] . '/';
	} else {
		return $path['dirname'] . '/'  . $path['filename'] . '/'; //pode utilizar ['basename'] tbm
	}
}
}

$url = new url;
$burl = sprintf( 'http%s://%s%s' , isset( $_SERVER[ 'HTTPS' ] ) ? 's' : null , $_SERVER[ 'HTTP_HOST' ] , $_SERVER[ 'REQUEST_URI' ] );
$url->add( $burl );
print $url->base();
?>

 

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra que toda essa complicação.

 

Se o sistema é todo "dinâmico" subentende-se que o index.php é o responsável por direcionar a requisição efetuada.

 

Com isso em mente:

 

basename( dirname( $_SERVER['SCRIPT_FILENAME'] ) )

Que é o que propunha a propriedade basepath do código que postei, resolveria teu problema. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra que toda essa complicação.

 

Se o sistema é todo "dinâmico" subentende-se que o index.php é o responsável por direcionar a requisição efetuada.

 

Com isso em mente:

 

basename( dirname( $_SERVER['SCRIPT_FILENAME'] ) )

Que é o que propunha a propriedade basepath do código que postei, resolveria teu problema. :thumbsup:

 

Seria isso :ermm: e qual seria o tratamento em seu getRequestUri?

<?php
class url {	
const SCHEME_HTTP = 'http';
public $basepath;

function __construct() {
	$this->basepath = basename( dirname( $_SERVER['SCRIPT_FILENAME'] ) );
}

public function getRequestUri() {		
	return $_SERVER['REQUEST_URI'];
}

public function getBaseUrl() {     
	$parts   = parse_url( $this->getRequestUri() ); 		 
	$scheme  = ( isset( $parts['scheme'] ) ? $parts['scheme'] : self::SCHEME_HTTP ); 		 
	return sprintf( '%s://%s/%s', $scheme, $_SERVER['HTTP_HOST'], $this->basepath ); 
}
}

$url = new url;
print $url->getBaseUrl();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O "tratamento" é particular ao meu sistema, para facilitar o roteamento, mas em resumo seria forçar a inclusão de uma barra final ao endereço, caso a URL já não seja uma barra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O "tratamento" é particular ao meu sistema, para facilitar o roteamento, mas em resumo seria forçar a inclusão de uma barra final ao endereço, caso a URL já não seja uma barra.

 

Entendi!!!

Valew pessoal pela força e paciência! Pode fechar! :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Revivendo o tópico :lol:

 

Utilizei o código que o nosso amigo Paulo Nobrega colocou mas agora está me dando um problema de que

 

digamos meu caminha seja : http://localhost/meusite/ se uso o getBaseUrl() vem tranquilo, uso perfeito, mas se entro em alguma pasta, digamos http://localhost/meusite/minhasImagens/ ele só me retorna http://localhost/minhasImagens/

 

alguém sabe como que eu faço para puxar toda a url sem que ele pegue a ultima pasta e sem o arquivo.php ?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai depender do seu sistema.

 

No meu caso, TODA requisição é direcionada para index.php, então aquilo que eu postei lá em cima funciona perfeitamente.

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.