Jump to content
Sign in to follow this  
soueu

Manipular ficheiro de configuração

Recommended Posts

soueu

Boas pessoal,

Estou desenvolvendo um Painel de Administração e me encontro na seguinte situação:

Código do Painel de Administração (config_geral.php):

<?php
require_once('../includes/SimpleConfig.php');
SimpleConfig::setFile('../includes/config.php');
$config = SimpleConfig::getInstance();
?>


<form method="post">
<h3>Informações Básicas</h3>
<p><b>URL Base:</b></p> <input type="text" name="Furl" class="username" placeholder="<?php echo $config['URL_Site']; ?>" />
<br><br>
<p><b>Email Site:</b></p> <input type="text" name="Fmail" class="username" placeholder="<?php echo $config['Email_Site']; ?>" />
<br><br>
<p><b>Registos:</b></p>
<br><input type="radio" name="Fregistos" value="ativados">Ativados<br><br><input type="radio" name="Fregistos" value="desativados">Desativados
<br><br><br>
<p><b>URL Atualizações:</b></p> <input type="text" name="Fatualizacao" class="username" placeholder="<?php echo $config['URL_Atualizacao']; ?>" />
<br><br>
<input type="submit" name="Fconfig" class="submit" value="Submeter" />
</form>

<?php
if(isset($_POST['Fconfig'])) {
$configphp = file_get_contents('../includes/config.php');

$configphp = preg_replace("/$config\['(Site_URL)', '[^']+?'\];/", "define('$1', '" . $_POST['Furl'] . "');", $configphp);
$configphp = preg_replace("/$config\['(Email_Site)', '[^']+?'\];/", "define('$1', '" . $_POST['Fmail'] . "');", $configphp);
$configphp = preg_replace("/$config\['(URL_Atualizacao)', '[^']+?'\];/", "define('$1', '" . $_POST['Fatualizacao'] . "');", $configphp);

$cphp = fopen('../includes/config.php', 'w');
fwrite($cphp, $configphp);
fclose($cphp);
}
?>

Código do Ficheiro de Configuração (config.php):

<?php
$config = array();
$config['Site_URL'] = 'http://localhost/projeto';
$config['Email_SITE'] = 'teste@localhost';

$config['Registo_ativado'] = True;
$config['URL_Atualizacao'] = 'https://localhost/projeto/update';

return $config;
?>

Ou seja, consigo visualizar os dados do ficheiro de configuração (config.php) perfeitamente. O problema está na hora de os editar... Por alguma razão os valores do ficheiro de configuração não estão a ser atualizados/substituídos com os do POST.

Alguma ajuda?

Obrigado desde já!

Share this post


Link to post
Share on other sites
HappyHippyHippo

faz output dos dois primeiros argumentos dos preg_replace e vais ver onde está o problema


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
soueu

Eu já tentei modificar o preg_replace de diversas formas, mas não estou conseguindo...

Acho que seria algo mais parecido com:

$configphp = preg_replace("/$config\('(Site_URL)', '[^']+?'\];/", "$config['$1', '" . $_POST['Furl'] . "'];", $configphp);

Mas assim obtenho o seguindo erro:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\pap\admin\config_geral.php on line 113

Linha 113 é a linha do preg_replace acima.

Share this post


Link to post
Share on other sites
HappyHippyHippo

faz output dos dois primeiros argumentos dos preg_replace e vais ver onde está o problema

já fizeste o que te disse para fazeres ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
yoda
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\pap\admin\config_geral.php on line 113

Porque é que nunca leem o que os erros dizem? Por ser inglês?

O que o erro está a dizer é que a variável que estás a passar para essa função está vazia (unexpected T_ENCAPSED_AND_WHITESPACE) e que deveria conter algo (expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)).

  • Vote 1

Share this post


Link to post
Share on other sites
taviroquai

Esse pattern faz match no ficheiro? Não me parece...

Pelo que percebi queres trocar a forma de definir a configuração, em vez de array, trocar por constantes com DEFINE.

Porque complicar? Porque simplesmente não usas no ficheiro de origem DEFINE('SITE_URL', '{{site_url}}'); e depois substituis com str_replace('{{site_url}}', $site_url, $configphp);

Share this post


Link to post
Share on other sites
yoda
Porque complicar? Porque simplesmente não usas no ficheiro de origem DEFINE('SITE_URL', '{{site_url}}'); e depois substituis com str_replace('{{site_url}}', $site_url, $configphp);

Continua complicado .. é bem mais simples guardar a informação do $config num objecto que possa ser acedido sem ser instanciado (ou sem ser instanciado mais que uma vez), evitando sobrecarregar o sistema com constantes.

Outra sugestão :

<?php

return array(
  'site_url' => '...',
  'test' => '...'
);


Edited by yoda

Share this post


Link to post
Share on other sites
taviroquai

Continua complicado .. é bem mais simples guardar a informação do $config num objecto que possa ser acedido sem ser instanciado (ou sem ser instanciado mais que uma vez), evitando sobrecarregar o sistema com constantes.

Sobrecarregar o sistema com constantes??? Só se forem muitas mesmo mas isso não se sabe... e este assunto já é offtopic...

Se só é necessário uma configuração de 3 ou 4 valores que se possa usar em toda a aplicação, não se justifica colocar em variáveis... a melhor solução são constantes.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.