[PHP] Guardar variável num ficheiro php

cd23

Power Member
Boa tarde, estou a desenvolver um CMS simples em php.
Pretendo guardar as informações da base de dados num ficheiro php de nome dbconfig.php, para isso tenho o seguinte form em html:
HTML:
<form class="form-bd" action="../scripts/var-dbconfig.php" method="post">
                        <!--Nome da BD-->
                        <label>Nome da base de dados</label>
                        <input class="textbox"type="text" name="nome-bd">
                        <!--Nome de utilizador-->
                        <label>Nome de utilizador</label>
                        <input class="textbox" type="text" name="nome-user">
                        <!--Password-->
                        <label>Password</label><br>
                        <input class="textbox" type="password" name="password">
                        <!--Servidor-->
                        <label>Servidor</label><br>
                        <input class="textbox" type="text" name="servidor">
                        <input class="btn-seguinte" type="submit" name="submit" value="Seguinte">
                    </form>

E no action do form tenho este código php:
PHP:
<?php
$bd = ($_POST['nome-bd']);
$user = ($_POST['nome-user']);
$password = ($_POST['password']);
$servidor = ($_POST['servidor']);
dbconfig = mysqli_connect($host,$username,$password,$database);

Como posso guardar de forma permanente num ficheiro php as variáveis recebidas através do form?

Obrigado
 
O PHP é provavelmente a linguagem mais bem documentada da web, por isso o melhor conselho que te posso dar é ires ao manual: http://www.php.net/manual/en/book.filesystem.php
Sim, é verdade, e é onde tiro grande parte das dúvidas. Aliás, esta já está mais ou menos resolvida, eu já consigo escrever as variávies, mas tenho outro problema. Eu preciso de escrever como string o nome da variável e a seguir a variável que vem deste script. Por exemplo eu preciso de escrever: "$bd = $bd" (esta última $bd é a variável que vem através do script que retorna o nome da bd que vem do form html, mas ao escrever o primeiro "$bd" o php assume como uma variável e não como uma texto que é o que pretendo.

EDIT:
Problema resolvido, deixo aqui como fiz para quem precisar, basta adicionar o . para juntar os nomes:

PHP:
/*Criar a variavel com a info para escrever no ficheiro*/
$info = "<?php\n
$"."bd = $bd;\n
$"."user = $user;\n
$"."password = $password;\n
$"."servidor = $servidor;\n
$"."dbconfig = $dbconfig = mysqli_connect($servidor, $user, $password, $bd)\n;
?>";

Depois é so mandar escrever com o fwrite.
 
Última edição:
Uma das soluções:
- Ao fazer submit no formulário ele corre o script onde cria um ficheiro assim:

Código:
<?php

$db='blabla';
$name='root'
$password='';

Para ler:

Código:
include_once "bd/vars.php";

Depois ao fazer echo de $db e vai retornar o 'blabla'

Abraço
 
Sim, é verdade, e é onde tiro grande parte das dúvidas. Aliás, esta já está mais ou menos resolvida, eu já consigo escrever as variávies, mas tenho outro problema. Eu preciso de escrever como string o nome da variável e a seguir a variável que vem deste script. Por exemplo eu preciso de escrever: "$bd = $bd" (esta última $bd é a variável que vem através do script que retorna o nome da bd que vem do form html, mas ao escrever o primeiro "$bd" o php assume como uma variável e não como uma texto que é o que pretendo.

EDIT:
Problema resolvido, deixo aqui como fiz para quem precisar, basta adicionar o . para juntar os nomes:

PHP:
/*Criar a variavel com a info para escrever no ficheiro*/
$info = "<?php\n
$"."bd = $bd;\n
$"."user = $user;\n
$"."password = $password;\n
$"."servidor = $servidor;\n
$"."dbconfig = $dbconfig = mysqli_connect($servidor, $user, $password, $bd)\n;
?>";

Depois é so mandar escrever com o fwrite.
Podes tirar todas as dúvidas lá.

O teu exemplo está errado, a concatenação de strings é uma operação que demora tempo adicional, e se já estás a deixar uma linha, o \n só faz com que sejam 2, ainda por cima vai depender do editor de texto, ou seja podes estar a misturar "\r\n" com "\n", sem esquecer que existe o PHP_EOL.

Manual das strings: http://php.net/manual/en/language.types.string.php

Existe várias maneiras de fazer, como tu indicaste mas com '\' atrás dos '$', indicando ao php que é para ser lido como um caracter e não processado, ou usando plicas em vez de aspas (que faz o mesmo que o '\').
Ainda podes usar o EOF, vou dar o exemplo, para este caso não é necessário, mas em algumas situações é essencial.

Código:
<?php

$info = <<<EOT
<?php
\$bd = '$bd';
\$user = '$user';
\$password = '$password';
\$servidor = '$servidor';
\$dbconfig =  mysqli_connect(\$servidor, \$user, \$password, \$bd);
?>
EOT;
?>

Código:
<?php

$info = '<?php
$bd = "'.$bd.'";
$user = "'.$user.'";
$password = "'.$password.'";
$servidor = "'.$servidor.'";
$dbconfig =  mysqli_connect($servidor, $user, $password, $bd);
?>';

echo $info;
?>

O teu código não é nada intuitivo de ler, qualquer pessoa que pegue no teu código, ou mesmo tu no futuro, vai ficar sem perceber porque fizeste aquilo.

É sempre importante tentar, errar e corrigir.
 
Podes tirar todas as dúvidas lá.

O teu exemplo está errado, a concatenação de strings é uma operação que demora tempo adicional, e se já estás a deixar uma linha, o \n só faz com que sejam 2, ainda por cima vai depender do editor de texto, ou seja podes estar a misturar "\r\n" com "\n", sem esquecer que existe o PHP_EOL.

Manual das strings: http://php.net/manual/en/language.types.string.php

Existe várias maneiras de fazer, como tu indicaste mas com '\' atrás dos '$', indicando ao php que é para ser lido como um caracter e não processado, ou usando plicas em vez de aspas (que faz o mesmo que o '\').
Ainda podes usar o EOF, vou dar o exemplo, para este caso não é necessário, mas em algumas situações é essencial.

Código:
<?php

$info = <<<EOT
<?php
\$bd = '$bd';
\$user = '$user';
\$password = '$password';
\$servidor = '$servidor';
\$dbconfig =  mysqli_connect(\$servidor, \$user, \$password, \$bd);
?>
EOT;
?>

Código:
<?php

$info = '<?php
$bd = "'.$bd.'";
$user = "'.$user.'";
$password = "'.$password.'";
$servidor = "'.$servidor.'";
$dbconfig =  mysqli_connect($servidor, $user, $password, $bd);
?>';

echo $info;
?>

O teu código não é nada intuitivo de ler, qualquer pessoa que pegue no teu código, ou mesmo tu no futuro, vai ficar sem perceber porque fizeste aquilo.

É sempre importante tentar, errar e corrigir.
Muito obrigado pela tua ajuda e esclarecimento!
Vou corrigir o meu código de forma a ficar mais simples e com melhor leitura.
Obrigado mais uma vez, abraço!

EDIT: Já agora, como posso colocar as mensagens "die" do php dentro de uma div?
PHP:
$connect = mysqli_connect($servidor, $user, $password) or die("$erro_servidor");
mysqli_select_db($connect, $bd) or die("$erro_bd");
 
Última edição:
O die é igual a um exit onde podes adicionar uma mensagem para o stderr, o que tu podes fazer é try catch (excepções), existe muitas formas de o fazer e não existe a mais correcta, depende da estrutura do teu projecto.

Sobre as excepções: http://php.net/manual/en/language.exceptions.php

PS.: Os erros aparecerem no browser depende da configuração do php, tal como os 'notice', podem estar desactivados.
 
Back
Topo