soueu Posted June 10, 2013 at 06:21 PM Report #511882 Posted June 10, 2013 at 06:21 PM 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á!
HappyHippyHippo Posted June 10, 2013 at 06:32 PM Report #511887 Posted June 10, 2013 at 06:32 PM faz output dos dois primeiros argumentos dos preg_replace e vais ver onde está o problema IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
soueu Posted June 10, 2013 at 07:07 PM Author Report #511890 Posted June 10, 2013 at 07:07 PM 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.
HappyHippyHippo Posted June 10, 2013 at 07:28 PM Report #511894 Posted June 10, 2013 at 07:28 PM 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 Portugol Plus
yoda Posted June 10, 2013 at 07:38 PM Report #511897 Posted June 10, 2013 at 07:38 PM 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)). 1 Report before you post, what have you tried? - http://filipematias.info sense, purpose, direction
taviroquai Posted June 10, 2013 at 08:01 PM Report #511902 Posted June 10, 2013 at 08:01 PM 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);
yoda Posted June 10, 2013 at 08:05 PM Report #511903 Posted June 10, 2013 at 08:05 PM (edited) 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 June 10, 2013 at 08:06 PM by yoda before you post, what have you tried? - http://filipematias.info sense, purpose, direction
taviroquai Posted June 12, 2013 at 12:04 AM Report #512187 Posted June 12, 2013 at 12:04 AM 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.
yoda Posted June 12, 2013 at 08:06 AM Report #512196 Posted June 12, 2013 at 08:06 AM A sugestão que dei não gera variável nenhuma 🙂 before you post, what have you tried? - http://filipematias.info sense, purpose, direction
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now