Autor Zpráva
Josef Přerovský
Profil
Zdravím, vytvářím jednoduchý instalační script pro web, ale nemůžu přijít, ani se dopátrat na 1 věc...
když bych chtěl, aby se uložila data, které zadám na web, jako db_server, db_name, db_pass ... do souboru, třeba:
include/DB.php
a tam je:
    // napojeni na databazi
$db_server = "****"; //IP nebo URL k napojeni
$db_user = "****"; //Jmeno uzivatele k db
$db_pass = '****';  //Heslo k db
$db_name = "****"; //Jmeno databaze ve ktere jsou nahrane data
tak aby se z webového formuláře uložili data sem?

Díky za rady, a omlouvám se možná za trochu zmatené téma.


Tak nakonec jsem to vyřešil takhle:
            <?php }; if($krok == "2") { 
            $db_server = null;
            $db_user = null;
            $db_pass = null;
            $db_name = null;
            
            $data_server = $_POST["database_server"];
            $data_name = $_POST["database_name"];
            $data_user = $_POST["database_user"];
            $data_pass = $_POST["database_password"];
            if($_POST["setDatabase"]) {
                $file = 'include/DB_01.php';
                $data = "<?php
                            $db_server = '$data_server';
                            $db_user = '$data_user';
                            $db_pass = '$data_pass';
                            $db_name = '$data_name';

                            $connect = mysql_connect($db_server, $db_user, $db_pass);
                            $database = mysql_select_db($db_name);
                        ?>";
                        
                file_put_contents($file, $data, FILE_APPEND);
                header('Location: ?step=3');
            }
?>
a když to chci uložit, tak se mi nekáže v souboru zvýrazněná část.
Zkoušel jsem i to nahoře oddělat a nepomohlo.
Alphard_
Profil *
Nápad dobrý, ale je třeba doladit syntaxi jazyka. Když takto bez escapování použiteje názvy proměnných, budou nahrazeny za jejich obsah (což je null -> prázdný řetězec).

V jednoduchých apostrofech k jejich nahrazení nedojde:
if($_POST["setDatabase"]) {
    $file = 'include/DB_01.php';
    $data = '<?php
                $db_server = \''.$data_server.'\';
                $db_user = \''.$data_user.'\';
                $db_pass = \''.$data_pass.'\';
                $db_name = \''.$data_name.'\';

                $connect = mysql_connect($db_server, $db_user, $db_pass);
                $database = mysql_select_db($db_name);
            ?>';
            
    file_put_contents($file, $data);  // FILE_APPEND nedává moc smysl
    header('Location: ?step=3');
}

PS 1: vstupy nejsou ošetřené a includuje se to do stránky, takto lze zcela ovládnout web.
PS 2: Lepší než generovat kód by bylo uložit si konfigurační soubor, např. file_put_contents($file, json_encode(['server' => $data_server, 'user' => '$data_user' /*, ...*/])); Jen pozor, ať není zobrazitelný z venku.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0