Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zapis textarea do pliku
Forum PHP.pl > Forum > Przedszkole
Niree
Witam, chciałbym zrobic edytor pliku PHP.

Biorę więc:
  1. $schema = file_get_contents('plik.php');

(plik.php)
  1. <?php
  2. $title = 'Rejestracja';
  3. $callout = '<p class="callout" style="padding:15px;background-color:#ECF8FF;margin-bottom: 15px;">Wiadomość wysłana automatycznie, prosimy na nią nie odpowiadać.</p>';
  4. ?>

  1. <textarea class="form-control" rows="3" name="schema" style="height: 800px;"><?php echo $schema;?></textarea>
  2. ... submit itp...
  3. </form>


Kod pokazuje się OK. Po kliknięciu submit, w _POST mam nowy kod php. W momencie zapisu tego _POST do pliku, w pliku pojawiają się jakieś krzaki typu &lt; &gt; zamiast czystego kodu z _POST;

  1. file_put_contents('plik.php', $_POST['schema']);


Proszę o pomoc.

nospor
Wyglada jakbys po drodze gdzie filtrowal dane z POST
Niree
Po debugu print_r($_POST):
  1. Array ( [schema] => <?php $title = 'Aktualizacja zgłoszenia'; $subject = 'Aktualizacja '.$complaintinfo->unique_id; $callout = '<p class="callout" style="padding:15px;background-color:#ECF8FF;margin-bottom: 15px;">Wiadomość wysłana automatycznie, prosimy na nią nie odpowiadać.</p>'; ?> )


Kod:
  1. if(isset($_POST['processEmailTemplate']))
  2. {
  3. file_put_contents('plik.php', $_POST['schema']);
  4. $json['message'] = 'Dokonano edycji. Konieczne będzie odświeżenie strony...';
  5. echo json_encode($json);
  6. }


Kod po zapisie:
  1. &lt;?php
  2. $title = 'Aktualizacja zgłoszenia';
  3. $subject = 'Aktualizacja '.$complaintinfo-&gt;unique_id;
  4. $callout = '&lt;p class=&quot;callout&quot; style=&quot;padding:15px;background-color:#ECF8FF;margin-bottom: 15px;&quot;&gt;Wiadomość wysłana automatycznie, prosimy na nią nie odpowiadać.&lt;/p&gt;';
  5. ?&gt;

nospor
Zobacz jak wyglada twoj print_r w zrodle strony a nie tak sprawdzasz.... by wejsc w zrodlo strony zazwyczaj trzeba wcisnac CTRL+U
Niree
Cytat(nospor @ 17.07.2019, 15:50:26 ) *
Zobacz jak wyglada twoj print_r w zrodle strony a nie tak sprawdzasz.... by wejsc w zrodlo strony zazwyczaj trzeba wcisnac CTRL+U


Wiesz co... Potwierdziło się to filtrowanie. Mam klasę filtrującą $_POST, kompletnie o niej zapomniałem.

  1. if (ini_get('magic_quotes_gpc')) {
  2. $data = stripslashes($data);
  3. } else {
  4. $data = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
  5. }


stripslashes czy htmlspecialchars powoduje zmianę tych wszystkich znaków na tekstowe?
nospor
Tak, to wlasnie to.

Kiedy wy sie nauczycie by nie robic takich cudow? To sie robilo 100 lat temu...
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-2025 Invision Power Services, Inc.