Autor Zpráva
Fisak
Profil *
Zdravím... potřeboval bych poradit jak přepsat určitý řádek v souboru.. dám příklad mam soubor index.php kde mam
if(isset($_POST["edit_file"]))
{
$text_file = $_POST["text"];
unlink("upload/config.php");
$soubor_config = fopen("upload/config.php", "a+");
fwrite($soubor_config, $text_file);
fclose($soubor_config);
}

takhle se přepíše celý obsah ale jak docílit toho aby se přepsal jen určitý řádek nebo jen určitý text např 3. řádek nebo jen text $promenna = "text"; ???
kajaman
Profil
Fisak:
fce file načte celý soubor do pole, kde bys mohl vyměnit ten řádek a zapsat vše zpět do souboru,
popř. funce file_get_contents načte soubor do stringu, který můžeš prohledat a nahradit požadovaný text napž. pomocí fce preg_replace
Fisak
Profil *
netušim co tam mam blbě :(
if(isset($_POST["zmenit"]))
{
    $displ_err=eregi_replace('[^a-z]', '', $_POST["display_error"]); 
    $page = file_get_contents('index.php');
    
     if($displ_err == "off") {
        $patterns = "@ini_set('display_errors', 'on');";
        $zmena = preg_replace($patterns, "@ini_set('display_errors', 'off');", $page);
        $soubor_config = fopen("index.php", "a+");
        fwrite($soubor_config, $zmena);
        fclose($soubor_config);
    }
}



prostě mi to nepřepisuje ten index....
Alphard
Profil
Fopen a+ bude přidávat na konec, pro váš účel to není vhodný modifikátor.

Vypisuje se nějaká chyba? Jaký soubor tento script vykonává, index.php? Pro hledání závady samozřejmě prohlížejte různé debug výpisy proměnných, vykoná se první podmínka? Vykoná se druhá podmínka? Je v $zmena správný obsah?
Obecně to nevypadá moc pěkně, nešlo by napsat to trochu obecněji? Rozhodně bych si taky dynamicky neměnil index, když už, tak něco, co se includuje.
Fisak
Profil *
jo to se dá zařídit ... ale první problém je v tom že chci přepsat php kód takže to asi nepobírá ten file_get_contents protože když dam echo $page tak se mi nic nevypíše... tam vidim chybu
Alphard
Profil
Obecně nemá file_get_contents() problém načíst php soubor.
Fisak
Profil *
soubor _system/opconfg.php:
// debug ochrana
@ini_set('display_errors', 'on');
define('_PS_DEBUG_SQL_', false);

 $start_time = microtime(true);

 // varování o compatibilitě
define('_PS_DISPLAY_COMPATIBILITY_WARNING_', true);

 // SSL konfigurace
define('_PS_SSL_PORT_', 443);

 // PHP konfigurace
ini_set('upload_max_filesize', '100M');
ini_set('default_charset', 'utf-8');
ini_set('magic_quotes_runtime', 0);
soubor index.php
if(isset($_POST["zmenit"]))
{
    $displ_err=eregi_replace('[^a-z]', '', $_POST["display_error"]); 
    $page = file_get_contents('_system/opconfg.php');
    
     if($displ_err == "off") {
        $zmena = preg_replace("'display_errors', 'on'", "'display_errors', 'off'", $page);
        $soubor_config = fopen("_system/opconfg.php", "a+");
        fwrite($soubor_config, $zmena);
        fclose($soubor_config);
        redirects_page(admin, developer, options);
    }
    
     if($displ_err == "on") {
        $zmena = preg_replace("'display_errors', 'off'", "'display_errors'", $page);
        $soubor_config = fopen("_system/opconfg.php", "a+");
        fwrite($soubor_config, $zmena);
        fclose($soubor_config);
        redirects_page(admin, developer, options);
    }
    
 }

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