Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odczyt danych z pliku i ponowne zapisanie
Forum PHP.pl > Forum > PHP
ufo1990
Odczytuje zmienne z pliku connect.php następnie chce zapisać nowe wartości i teoretycznie poniższy kod mi działa. Jednak problem pojawia się w sytuacji kiedy występuje podobny ciąg znaków wtedy dane są aktualizowane w innych zmiennych. Pytanie, w jaki sposób powiązać aby dane zapisywane w pliku były stricte do danej zmiennej.
  1. include 'connect.php';
  2. $content = file_get_contents('connect.php');
  3. $replacementsOld = array($host, $db_user, $db_name, $db_password);
  4. $replacementsNew = array($host_new,$db_user_new,$db_name_new,$db_password_new);
  5. $content = str_replace($replacementsOld, $replacementsNew, $content);
  6. file_put_contents('connect.php', $content);





vokiel
Wydaje się, że mylisz tu dwie rzeczy. Dołączenie pliku PHP aby skorzystać z zawartych w nim danych jako obiekty PHP z zapisem pliku tekstowego.

Załóżmy, że Twój plik connect.php zawiera konfigurację połączenie z bazą danych:
  1. return [
  2. 'host' => 'localhost',
  3. 'db_user' => 'username',
  4. 'db_name' => 'database',
  5. 'db_password' => 'SuperSecureP433wor0!'
  6. ];


Teraz, gdy zrobisz include takiego pliku do zmiennej możesz łatwo w kodzie korzystać z tych wartości:

  1. $config = include 'connect.php';
  2.  
  3. echo $config['host']; // localhost


Natomiast, jeśli byś chciał zapisać nowe ustawienia do pliku, to musisz po prostu odtworzyć całą zawartość w formie zwykłego tekstu, czyli:

  1. $configString = "return [
  2. 'host' => 'localhost',
  3. 'db_user' => 'username',
  4. 'db_name' => 'database',
  5. 'db_password' => 'SuperSecureP433wor0!'
  6. ];";
  7.  
  8. file_put_contents('connect.php', $configString);
ufo1990
includowane pliki nie są tablicami np. plik connect.php wygląda tak, następnie te wartości przypisuje do inputów i dalej zapisuje nowe wartości. Zastosowałem tablice bo wydawało mi się to rozsądne ale teraz widzę że jest z tym problem.
  1. $host = "localhost";
  2. $db_user = "root";
  3. $db_name = "test";
  4. $db_password = "test";
trueblue
To wygeneruj sobie plik w takiej postaci.
Nie musisz stosować żadnego str_replace.
ufo1990
tylko w jaki sposób zaktualizować nowe wartości w
  1. file_put_contents('connect.php', $content);
trueblue
Generując nowy plik. Tak jak pokazał Vokiel, ale w trochę innej postaci. Po prostu musisz wygenerować plik connect.php, w takiej postaci jak pokazałeś.
Salvation
Poczytaj o plikach env i zerknij później np. tutaj: https://github.com/vlucas/phpdotenv
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.