Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Odczyt danych z pliku i ponowne zapisanie
ufo1990
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


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);





Go to the top of the page
+Quote Post
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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);
Go to the top of the page
+Quote Post
ufo1990
post
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


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";


Ten post edytował ufo1990 14.04.2022, 15:16:52
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


To wygeneruj sobie plik w takiej postaci.
Nie musisz stosować żadnego str_replace.
Go to the top of the page
+Quote Post
ufo1990
post
Post #5





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


tylko w jaki sposób zaktualizować nowe wartości w
  1. file_put_contents('connect.php', $content);


Ten post edytował ufo1990 14.04.2022, 15:23:04
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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ś.
Go to the top of the page
+Quote Post
Salvation
post
Post #7





Grupa: Zarejestrowani
Postów: 408
Pomógł: 74
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


Poczytaj o plikach env i zerknij później np. tutaj: https://github.com/vlucas/phpdotenv

Ten post edytował Salvation 14.04.2022, 16:19:07
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.01.2026 - 05:18