Jump to content


Photo

Recuperar Pasta Atual A Ser Acessada


  • Faça o login para participar
6 replies to this topic

#1 Cleiton Garcia da Silva

Cleiton Garcia da Silva

    Normal

  • Usuários
  • 81 posts
  • Sexo:Masculino
  • Localidade:Sombrio, SC
  • Interesses:PHP, MySQL

Posted 01/06/2011, 16:11

Estou desenvolvendo um script de linguagens. Eu faço a conexão com o banco de dados, e depois eu recupero através dessa conexão a linguagem atual e faço um include:
include("linguagem/" . $conexao['pasta_da_linguagem'] . "/site.php);

Porém, eu quero utilizar o arquivo de configurações tanto para admin como para o site. Ai eu tentei fazer:


if($_SERVER['DOCUMENT_ROOT'] == '"C:/xampp/htdocs/admin"') {
		include("linguagem/" . $conexao["pasta_da_linguagem"] . "/admin.php");
	}else{
		require("linguagem/" . $conexao["pasta_da_linguagem"] . "/site.php");
	}
Ou seja, ali eu tentei fazer, com que o script identifique; Se a pasta a ser acessada é a admin eu incluo o arquivo de linguagens de ADMIN.PHP se não for eu incluo o arquivo do site.

Ou seja, quando o usuário entra na admin mostra certos valores da lingua, e quando acessa o site normal, outros valores!


Mas é obvio que desta maneira não vai funcionar, O $_SERVER["DOCUMENT_ROOT"] não serve para isso.
Procurei muito uma função para pegar a pasta, mas não encontrei.

OBS: Isso deve funcionar também para subpastas da admin, o script tem que identificar a pasta: /admin/core/meu_arquivo.inc.php
Como parte da admin.

Bem, é isso ai, abraço. Espero que possam me ajudar, obrigado! Posted Image

Edição feita por: Cleiton Garcia da Silva, 01/06/2011, 16:12.

WM Place - O lugar dos webmasters: O melhor lugar onde você encontra, conversa, discute e interage com outros webmasters, assim como você. Acessem: www.wmplace.com.br

#2 Diego Bezerra

Diego Bezerra

    Diego Bezerra

  • Moderadores
  • 938 posts
  • Sexo:Masculino
  • Localidade:Amazonas
  • Interesses:Iniciando no C# com MSSQL.

Posted 01/06/2011, 17:54

ola não sei se vc ja ouviu falar mais existe um componente especifico para trabalhar com muiltilingua chamado i18n vale a pena conferir

mais vamos ao seu exemplo deixa eu ve se consigo te ajudar vou fazer um pequeno exemplo

vou criar tres arquivo

inlges.php
<?php 
define("ALO", "Alô Mundo.");

2° pt.php
<?php 
define("ALO", "hello.");

3° teste.php

<?php
switch($_GET['lingua']){
	case'pt':
	require_once('pt.php');
	echo ALO;
	break;
	case'en':
	require_once('ingles.php');
	echo ALO;
}

neste caso ai eu fiz o seguinte se o usuario digitar
teste.php?lingua=en vai aparecer hello
se o usurio digitar
teste.php?lingua=pt vai aparecer Alô Mundo.

espero que este exemplo te ajude
Att.
Diego Bezerra
Agência Kernel - em Breve
Email/msn: diegobezerra@outlook.com
Facebook

#3 Cleiton Garcia da Silva

Cleiton Garcia da Silva

    Normal

  • Usuários
  • 81 posts
  • Sexo:Masculino
  • Localidade:Sombrio, SC
  • Interesses:PHP, MySQL

Posted 01/06/2011, 20:14

Já trabalhei deste modo. Porém, os dados se é PT ou EN estão salvos no BD.
Vou incrementar o que foi dito por mim no post anterior. O usuário não pode alterar a linguagem de nada, apenas o Administrador. Estou pensando em cada usuário selecionar a lingua preferida, lembrando que isso é só de acesso à admin, users normais não podem mecher neste tipo de config...

Seguinte:

Tem o arquivo da pasta: 'data/Config.php' e nele tem a configuração com o banco de dados. E um include de um arquivo de linguagem. Após isso, em páginas normais, eu faço o include, e puxo a linha do arquivo de linguagem. Pra melhorar o sistema de linguagens, eu fiz multi-lingue, e criei vários arquivos: en, es, ru, etc. E fiz o include do arquivo: 'data/linguagem/en/site.php' na página de configuração. Criei uma tabela chamada 'linguagens', com os campos, 'uid', 'nome' 'path', 'codigo' e nele inseri o valor '1', 'Inglês', 'en', 'en-us'. O 'uid' é apenas para separa-los, 'nome' é para identificação dos mesmos para os administradores, 'path' é o local onde está a pasta do arquivo e 'codigo' é para inserir nas páginas no código-fonte para o navegador distinguir a linguagem a ser acessada, o chamado:

<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">


passando por tudo isso, no arquivo 'data/Config.php' eu insiro uma conexão com a tabela 'configuracoes' pego o campo 'lang', que estará preenchido com o número '1' (int), depois disso eu faço outra conexão com a tabela 'linguagens' e faço um WHERE com o 'uid' = igual à que está na tabela 'configuracoes'.


Pronto, já sei a linguagem selecionada e onde o path da linguagem atual se localiza. Certo, então bastaria eu fazer um include:
include("data/linguagem/" . $LINGUAGENS["path"] . "/arquivo.php");
ou
include("data/linguagem/" . $LINGUAGENS["path"] . ".php");

Tudo bem até ai, mas se eu querer separar os arquivos da pasta 'admin' dos arquivos do site?
Aí me veio a ideia, eu faço um IF, se a URL a ser digitada conter a pasta/palavra 'admin' eu incluo o arquivo:
include("data/linguagem/" . $LINGUAGENS["path"] . "/admin.php");

Se não foi, incluo o arquivo que é do site, ou seja, se o usuário não tá acessando a pasta admin, obviamente, ele não está na administração, logo não é necessário o arquivo de linguagens da admin. Então eu incluo:
include("data/linguagem/" . $LINGUAGENS["path"] . "/site.php");

Meu intuito com isso é velocidade. Por que armazenar tudo em um arquivo, deixa-lo gigante e lerdo unindo a parte frontal e a administração? O jeito é separa-los, essa foi minha ideia, além de deixar mais organizado!

Bem, abraços, espero que eu solucione meu problema. Breve disponibilizo este script aqui, apesar de que a parte teórica já estar explicada. Posted Image

Edição feita por: Cleiton Garcia da Silva, 01/06/2011, 20:21.

WM Place - O lugar dos webmasters: O melhor lugar onde você encontra, conversa, discute e interage com outros webmasters, assim como você. Acessem: www.wmplace.com.br

#4 Diego Bezerra

Diego Bezerra

    Diego Bezerra

  • Moderadores
  • 938 posts
  • Sexo:Masculino
  • Localidade:Amazonas
  • Interesses:Iniciando no C# com MSSQL.

Posted 02/06/2011, 09:40

é um excelente explicação? só tenho uma duvida

vc falou que se o usuario tiver assesando a pasta do admin ele exibira a linguagem do ADMIN.PHP, e se ele tiver assesando a pagina do site ele pega o arquivo de linguagem SITE.PHP???
minha duvida é a seguinte...
seu site certamente vai ter a pagina / onde fica os arquivos do site e pasta ADMIN/ arquivos do admin...
dai que esta minha duvida acho que não seria nessessario usuaro o IF E ELSE para verificar se o usuario esta ou não acessando a pagina admin?
OBS: a não ser que o admin seja integrado com ao site inicial???!!!

eu acho?
que da para vc fazer da seguinte forma? 'uid', 'nome' 'path', 'codigo', 'status', 'tipo' pq estes dois?
primeiro a gente poderia ter varios cadastro exemplo 5 cadastro
dai no status a gente colocaria 1 ativo 0 inativo e tipo por exemplo admin ou site

dai na pagina do site a gente faria uma busca mais ou menos assim

de um geito mais simple
<?php
 //para a paginia inicial do site
$sql = mysql_query("SELECT * FROM nome_da_tabela WHERE status='1' AND tipo='site'"); 
while($linguagems=mysql_fetch_array($sql)){
include("data/linguagem/" . $LINGUAGENS["path"] . "/site.php");
}

//para a paginia admin do site
$sql = mysql_query("SELECT * FROM nome_da_tabela WHERE status='1' AND tipo='admin'"); 
while($linguagems=mysql_fetch_array($sql)){
include("data/linguagem/" . $LINGUAGENS["path"] . "/admin.php");
}

Att.
Diego Bezerra
Agência Kernel - em Breve
Email/msn: diegobezerra@outlook.com
Facebook

#5 Cleiton Garcia da Silva

Cleiton Garcia da Silva

    Normal

  • Usuários
  • 81 posts
  • Sexo:Masculino
  • Localidade:Sombrio, SC
  • Interesses:PHP, MySQL

Posted 03/06/2011, 19:54

Não é está a questao. Bem, eu vou fazer do jeito mais simples mesmo! tudo num só...

Rapaziada, não feliz em ter achado a resposta.. Vagando pela net, descobri a função getcwd(); que automaticamente pega a pasta a ser acessada juntamente com o DocumentRoot.

Abraço, tá resolvido ai. Quem quiser, é só usar 'getcwd();'
WM Place - O lugar dos webmasters: O melhor lugar onde você encontra, conversa, discute e interage com outros webmasters, assim como você. Acessem: www.wmplace.com.br

#6 patrick idalgo

patrick idalgo

    Turista

  • Usuários
  • 44 posts
  • Sexo:Masculino
  • Localidade:Atibaia

Posted 05/06/2011, 10:39

Não é está a questao. Bem, eu vou fazer do jeito mais simples mesmo! tudo num só...

Rapaziada, não feliz em ter achado a resposta.. Vagando pela net, descobri a função getcwd(); que automaticamente pega a pasta a ser acessada juntamente com o DocumentRoot.

Abraço, tá resolvido ai. Quem quiser, é só usar 'getcwd();'



Sei que já encontrou a solução mais vou deixar um outro jeito de fazer o que você estava procurando.

if($_SERVER['REQUEST_URI'] == '"/admin"') {
                include("linguagem/" . $conexao["pasta_da_linguagem"] . "/admin.php");
        }else{
                require("linguagem/" . $conexao["pasta_da_linguagem"] . "/site.php");
 }

Até

#7 Cleiton Garcia da Silva

Cleiton Garcia da Silva

    Normal

  • Usuários
  • 81 posts
  • Sexo:Masculino
  • Localidade:Sombrio, SC
  • Interesses:PHP, MySQL

Posted 07/06/2011, 18:01


Não é está a questao. Bem, eu vou fazer do jeito mais simples mesmo! tudo num só...

Rapaziada, não feliz em ter achado a resposta.. Vagando pela net, descobri a função getcwd(); que automaticamente pega a pasta a ser acessada juntamente com o DocumentRoot.

Abraço, tá resolvido ai. Quem quiser, é só usar 'getcwd();'



Sei que já encontrou a solução mais vou deixar um outro jeito de fazer o que você estava procurando.

if($_SERVER['REQUEST_URI'] == '"/admin"') {
                include("linguagem/" . $conexao["pasta_da_linguagem"] . "/admin.php");
        }else{
                require("linguagem/" . $conexao["pasta_da_linguagem"] . "/site.php");
 }

Até


Deste jeito não funciona amigo!
REQUEST_URI pega o nome do arquivo junto. A maneira mais correta de recuperar a pasta é 'getcwd();'.

Abraço!
WM Place - O lugar dos webmasters: O melhor lugar onde você encontra, conversa, discute e interage com outros webmasters, assim como você. Acessem: www.wmplace.com.br




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq