Biri. PHP dosyası bir başka düzenleyebilir miyim?

8 Cevap

Yani sabitleri için bir dosya var. . I kullanıcı bunları tanımlamak ve sonra da bu küresel sabitleri (- Gerçek PHP dosyası değil xml) benim php filr düzenlemek izin istiyorum

Örneğin koduyla

<?php
// Database Constants
define("DB_SERVER", "localhost");
define("DB_USER", "root");
define("DB_PASS", "000000");
define("DB_NAME", "cms");
?>

Başka bir PHP dosyasından bu. Php dosyasını düzenlemek için nasıl? Bu mümkün mü?

Btw ileride ben yeniden tanımlayarak sabitleri ama kendisini değiştirmek mümkün olacak bazı akıllı kod sadece uygulamak istiyor.

Birisi yapabilirsem, benim dosyasında kelime "localhost" değiştirmek için bana bir işlev göstermek lütfen ...

8 Cevap

FILE_TO_REPLACE_IN.php:

<?php
define("DB_SERVER", "{DB_SERVER}");
define("DB_USER", "{DB_USER}");
define("DB_PASS", "{DB_PASS}");
define("DB_NAME", "{DB_NAME}");

SCRIPT_TO_CHANGE_WITH.php:

<?php

$searchF  = array('{DB_SERVER}','{DB_USER}','{DB_PASS}','{DB_NAME}');
$replaceW = array('localhost',  'user',     'pass',     'db');

$fh = fopen("FILE_TO_REPLACE_IN.php", 'w');
$file = file_get_contents($fh);
$file = str_replace($searchF, $replaceW, $file);
fwrite($fh, $file);

... Ya da onun gibi bir şey.

Php dosyası da dahil olmak üzere herhangi bir dosyayı düzenlerken yapabilirsiniz yazma programı.

BTW. Dikkatli olun! Eğer çok hızlı ve üzerinde bunu yapmak, ve nihayet matris ya da terminatör filmlerdeki gibi insanları öldüren başlayabilir kendisini değiştirmek için nasıl bir program göstermek eğer ...

Kendi çözüm tasarlarken eğer yapılandırma amaçlı metaprogramming (Wikipedia kontrol) kullanmaktan kaçınmalıdır.

php kullanabileceğiniz yerleşik bir ini dosya ayrıştırıcı sahiptir. Yalnızca anahtar-değer çiftleri var zaman yeterlidir.

yazı:

<?php
file_put_contents("settings.ini","[auth]
DB_SERVER=".DB_SERVER."
DB_USER=".DB_USER."
DB_PASS=".DB_PASS."
DB_NAME=".DB_NAME."
");
?>

okuma:

<?php
$auth = parse_ini_file("settings.ini");
foreach ($auth as $k => $v) {
define($k,$v);
}
?>

Zerdüştlerin CodeGenerator modülü bir göz atın. Kullanarak reflection api Eğer programlama dosyaları ve sınıfları oluşturabilirsiniz.

Güvenliği hakkında konuşurken değil, basit bir şekilde file_get_contents gibi okuma fonksiyonlarını kullanarak php dosyasını okuyabilir ve içeriği var bir kere, bazı textarea onlara göstermek gerektiğini nerede kullanıcıların düzenlemek olabilir. Bunu düzenlemek ve formu gönderdikten sonra, bilgi güncellemeniz gerekmektedir.

bu mümkün ... Ama temel PHP becerileri gerekir.

fopen veya file_put_contents kullanın. En kolay yolu sıfırdan tüm PHP dosyası yazmak için ...

fopen() fwrite() kullanarak ve php olanlar da dahil olmak üzere dosya her türlü düzenleyebilirsiniz düşüp kalkıyor.

Siz dosyayı açabilirsiniz

$lines = file('myConstants.php');

Içeriğini düzenlemek ve geri kurtarmak daha

$myFile = 'myConstants.php'
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, 'DATA HERE');
fclose($fh);