Ir para conteúdo

POWERED BY:

Arquivado

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

wneo

Hospedar acima da public

Recommended Posts

Boa noite!!!

 

Pessoal, quero hospedar algumas páginas do site que estou fazendo, fora(acima) da public_html. Arquivos de conexão com banco de dados e demais includes(links) para finalidade de maior segurança. Estou utilizando servidor Locaweb.

Ocorre que ao hospedar acima da public, os arquivos não são interpretados pelo navegador... Preciso realizar alguma configuração para isso, dar alguma permissão de acesso, escrever alguma regra no htaccsess..alguma coisa do tipo...porém não sei exatamente como fazer...por isso venho aqui a lhes pedir uma ajuda...desde já agradeço o apoio...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode ter um único arquivo na public: o index.php. Esse index.php pode dar require em qualquer outro php que esteja acima da public. Mas acessar esses arquivos diretamente você não vai conseguir, pela própria razão que você citou: segurança. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu normalmente faço assim:

 

Crio um link simbólico da pasta dentro do public_html que redirecionará para a pasta fora do public_html, ai posso ter vários subdomios e domínios numa só conta, e sem bagunçar tudo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode ter um único arquivo na public: o index.php. Esse index.php pode dar require em qualquer outro php que esteja acima da public. Mas acessar esses arquivos diretamente você não vai conseguir, pela própria razão que você citou: segurança. :thumbsup:

Sim Beraldo, quero fazer isso devido questão de segurança.. mas gostaria de saber como fazer... porque quando hospedei dessa forma, o conteudo não foi exibido pelo navegador... essa pratica vou usar para proteger invasoes e demais quesitos de segurança, mas a exibição para o usuario final deve ocorrer no navegador ..então preciso saber como dar essa permissão..

Eu normalmente faço assim:

 

Crio um link simbólico da pasta dentro do public_html que redirecionará para a pasta fora do public_html, ai posso ter vários subdomios e domínios numa só conta, e sem bagunçar tudo

Sim extrem, digamos que eu tenho dentro da public o index.php, e fora da public um config.php, onde faço a conexão com o banco. Então dentro da index, faço um include: <?php include "../config.php"; ?>... porém nada é carregado..porque deve estar faltando alguma configuração ou permissão de htaccess que eu não sei fazer...compreeende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando eu fazia isso não era necessário nenhum .htaccess.

 

Tente tirar todos htaccess, e colocar um index.php nas pastas com algo simples como um echo pra ver se da certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos, consegui...eu estava fazendo errado o caminho errado no include... Porém se houver alguma questão de permissão q deva ser dada para essa operação ser permitida, não deixem de postar, porq pode ser necessario no futuro... No entanto, creio que esse método não resolveu meu problema. Eu achei que os arquivos hospedados fora da public, ficariam inacessíveis e até mesmo os links e caminhos dos mesmos não seriam visíveis na inspeção de elemento e na barra de status do navegador...saberiam me dizer, se tem algo que posso fazer nesse sentido, com essa tecnica ou outra?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você colocar em outro caminho, a pessoa só não vai poder acessar pela URL do sei site.

 

Muitos frameworks fazem o que vc está dizendo, colocam a bibliotecas em uma pasta separada do public_html e só colocam um index.php pra chamar as funções, classes, etc.

 

Sobre as permissões coloque igual ao public_html.

 

Você pode colocar um subdominio do tipo assets.site.com, public.site.com e redirecionar para uma pasta com link simbólico que vai redirecionar o cara para outra pasta. Em fim, é usar link simbólico para redirecionar para outras pastas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você colocar em outro caminho, a pessoa só não vai poder acessar pela URL do sei site.

 

Muitos frameworks fazem o que você está dizendo, colocam a bibliotecas em uma pasta separada do public_html e só colocam um index.php pra chamar as funções, classes, etc.

 

Sobre as permissões coloque igual ao public_html.

 

Você pode colocar um subdominio do tipo assets.site.com, public.site.com e redirecionar para uma pasta com link simbólico que vai redirecionar o cara para outra pasta. Em fim, é usar link simbólico para redirecionar para outras pastas.

hmm, gostei disso... links simbolicos... digamos que eu tenho um header.php, e nele fica meu menu no topo do site com links para home.php, faleconosco.php e quemsomos.php. Então eu coloco esse header fora da public e chamo via include na index que está dentro da public. Como ficaria um link simbolico nesse caso? conseguiria me dar um exemplo aplicado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

/home/usuario/scripts/header.php

 

faleconosco.php (dentro de /home/usuario/public_html)

// Sem link simbolico, o usuário não tem acesso ao arquivo
require "/home/usuario/scripts/header.php"; 


// Com um link simbolico o usuário tem acesso, mas pode servir como atalho
// link_scripts aponta para /home/usuario/scripts/
require 'link_scripts/header.php';

// Usando http://php.net/set_include_path é seguro e pode lhe cair bem
// Nele você vai por o caminho até /home/usuario/scripts/
require 'header.php';

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

/home/usuario/scripts/header.php

 

faleconosco.php (dentro de /home/usuario/public_html)

// Sem link simbolico, o usuário não tem acesso ao arquivo
require "/home/usuario/scripts/header.php"; 


// Com um link simbolico o usuário tem acesso, mas pode servir como atalho
// link_scripts aponta para /home/usuario/scripts/
require 'link_scripts/header.php';

// Usando http://php.net/set_include_path é seguro e pode lhe cair bem
// Nele você vai por o caminho até /home/usuario/scripts/
require 'header.php';

vamos ver se entendi,

<?php

ini_set('include_path', '/usr/lib/pear');

?>

 

ali no 'include_path' eu substituo pelo link simbolico, que é o que irá aparecer para o usuario no navegador, e em 'usr/lib/pear' informo o caminho verdadeiro...isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no include_path vc pode colocar o caminho verdadeiro.

 

você vai usar o link simbólico quando você precisar redirecionar uma parta para um outro caminho, como um atalho do windows.

Compartilhar este post


Link para o post
Compartilhar em outros sites

no include_path você pode colocar o caminho verdadeiro.

 

você vai usar o link simbólico quando você precisar redirecionar uma parta para um outro caminho, como um atalho do windows.

Bom diaa!!

li mais sobre o set_include_path, e percebi sua utilização como grande intimidade no que preciso... mas te faço uma pergunta=)...como aplicaria esse metodo em um script de login? (Onde tenho em uma pagina o form de login e senha e action do mesmo envia para um arquivo que verifica e se o usuario existir faço um header location:'pagina.php' direcionando o usuario para pagina do site)...No caso do set_include_path, eu teria que adicionar o mesmo em todas paginas que desejo reescrever a exibição da url...mas e nesse caso do script de login, como ficaria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use isso é um arquivo que será usado por todas as paginas:

<?php
$path = '/local/onde/os/sripts/estao';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

Depois que você fizer isso, quando você der um include/require o php vai procurar nessa pasta ai o arquivo que você está tentando incluir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use isso é um arquivo que será usado por todas as paginas:

<?php
$path = '/local/onde/os/sripts/estao';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

Depois que você fizer isso, quando você der um include/require o php vai procurar nessa pasta ai o arquivo que você está tentando incluir.

Então assim:

 

- form_login.php - Nessa pagina tenho o form para o usuario digitar login e senha

- login.php - Aqui é pra onde vem o action do form executando a verfificação de usuario e senha, caso existam, executa o header:location('diretorio/arquivo.php');

-Quando o usuario acessa a pagina, logado pela sessão...a url aparece: http://www.site.com.br/diretorio/arquivo.php?id=123

 

*Devo colocar na na login.php ?:

 

$path = '/local/onde/os/sripts/estao';

set_include_path(get_include_path() . PATH_SEPARATOR . $path);

 

*e tambm colocar nas paginas.php ?

 

*e aqui no $path= 'eu informo o diretorio sem informar o nome do arquivo?'

para que apareça na url:

 

http://www.site.com.br/diretorio/

 

isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O set_include_path nada mais é do que uma forma de dizer para o PHP que os códigos fontes podem estar também nesses diretórios passados como parâmetros para ele.

Em outras palavras, se você tem um arquivo de conexão como conectar.php e não quer deixar ele acessível pela URL www.site.com/conectar.php, você pode colocar o caminho até a pasta onde ele está no include_path e chamar pelo nome dele sem precisar colocar o caminho novamente.

No caso do arquivo form_login.php ele não pode estar escondido pois o navegador precisa acessar ele, o mesmo vale para o login.php, já que o navegador terá de fazer a requisição para ele. Já o conectar pode ficar escondido, pois que acessa ele é só o PHP e não o usuário.

Se você quiser esconder o nome desses arquivos, você pode:
1. Usar .htaccess para faze ele acessar o arquivo por outro nome (site.com/login)
2. Redirecionar tudo para o index.php usando .htaccess e de lá é feito um include para as paginas que estarão em outra pasta escondida (como os frameworks fazem hoje em dia)
3. Se eu lembrar de outro eu falo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O set_include_path nada mais é do que uma forma de dizer para o PHP que os códigos fontes podem estar também nesses diretórios passados como parâmetros para ele.

 

Em outras palavras, se você tem um arquivo de conexão como conectar.php e não quer deixar ele acessível pela URL www.site.com/conectar.php, você pode colocar o caminho até a pasta onde ele está no include_path e chamar pelo nome dele sem precisar colocar o caminho novamente.

 

No caso do arquivo form_login.php ele não pode estar escondido pois o navegador precisa acessar ele, o mesmo vale para o login.php, já que o navegador terá de fazer a requisição para ele. Já o conectar pode ficar escondido, pois que acessa ele é só o PHP e não o usuário.

 

Se você quiser esconder o nome desses arquivos, você pode:

1. Usar .htaccess para faze ele acessar o arquivo por outro nome (site.com/login)

2. Redirecionar tudo para o index.php usando .htaccess e de lá é feito um include para as paginas que estarão em outra pasta escondida (como os frameworks fazem hoje em dia)

3. Se eu lembrar de outro eu falo

Então, com htaccess creio que seja o metodo mais eficas...tenho lido sobre..mas não consegui fazer ainda...voce sabe como ficaria a escrita do htaccess para essa finalidade?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você reescrever um arquivo? ou redirecionar tudo para o index?

Sei mto pouco sobre a questão... ouvi falar de reescritas do tipo:

 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
e
DirectoryIndex ola.php default.html index.php index.html index.htm
...Mas não exatamente como aplicá-las corretamente..e tbm não sei se estão certas para oq preciso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

RewriteEngine On

 

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-l

 

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Essa ai redireciona tudo para o index.php e passa a URL acessada como parâmetro, menos pastas e arquivos, o terceiro parâmetro eu não lembro pra que serve.

 

DirectoryIndex ola.php default.html index.php index.html index.htm

Essa ai ta dizendo que se a pessoa não digitar nada o sistema tem de procurar por esses arquivos ai na ordem digitada

 

O que você quer deve ser algo assim:

Options +FollowSymLinks
RewriteEngine On
RewriteRule arquivo-de-teste test.php

Se você tiver um arquivo chamado test.php e acessar a url por www.site.com/arquivo-de-teste, o test.php vai ser executado

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Essa ai redireciona tudo para o index.php e passa a URL acessada como parâmetro, menos pastas e arquivos, o terceiro parâmetro eu não lembro pra que serve.

 

Essa ai ta dizendo que se a pessoa não digitar nada o sistema tem de procurar por esses arquivos ai na ordem digitada

 

O que você quer deve ser algo assim:

Options +FollowSymLinks
RewriteEngine On
RewriteRule arquivo-de-teste test.php

Se você tiver um arquivo chamado test.php e acessar a url por www.site.com/arquivo-de-teste, o test.php vai ser executado

 

hmmm então RewriteRule arquivo-de-teste test.php onde arquivo-de-teste é pasta que será exibida na barra de endereço do navegador, e o test.php é a pagina que tem dentro da pasta arquivo-de-teste, certo?

Preciso fazer um por um? informar link por link?

por exemplo, se eu tivesse 4 paginas dentro do diretorio arquivo-de-teste, eu deveria escrever a regra dessa forma:

 

RewriteRule arquivo-de-teste test1.php

RewriteRule arquivo-de-teste test2.php

RewriteRule arquivo-de-teste test3.php

RewriteRule arquivo-de-teste test4.php

 

Assim?

 

ou existe uma definição global?

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.