Как сохранить большой текст в базу данных и обезвредить его?

Добрый вечер.

Использую редактор Markdown Editor. Он будет вызван на странице, после чего набирается какой-то текст в разметке. Затем мне необходимо сохранить это все в MySQL для последующего вывода через парсер.
В Readme вижу такой метод для получения текста из редактора (он встроен в <textarea>):
editor.codemirror.getValue();

Теперь у меня несколько вопросов:
  1. Получается, что я получаю текст в переменную JS. Как ее засунуть в PHP?
  2. Что делать с переносами строк?
  3. Какие функции использовать при записи в БД, чтобы вырезать случайно вставленные пользователем коды JavaScript?
  • Вопрос задан
  • 799 просмотров
Пригласить эксперта
Ответы на вопрос 2
trevoga_su
@trevoga_su
Как ее засунуть в PHP?
купить учебник по пхп
Ответ написан
archakov06
@archakov06
Frontend-разработчик (ReactJS)
1. Да, получается так. Отправить можно так:

var text = editor.codemirror.getValue();
$.post('/addnews',{post_text:text,post_parametr:'значение'},function(data){
//... в data будет ответ от сервера
});


2. Используй PHP функцию: str_replace() или обрабатывай через JS, функцией: replace(). Пример:
var text = 'я 123 тру-кодер 123 жи есть!';
var result = text.replace(/123/g,'');
alert(result);


3. Тут надо придумывать логику скрипту. Определяй регулярками и вырезай ими, или используй вот эту функцию, я ей часто пользуюсь:
function process($source) {
			
		if( function_exists( "get_magic_quotes_gpc" ) && get_magic_quotes_gpc() ) $source = stripslashes( $source );  

		$source = str_ireplace( "{include", "&#123;include", $source );
		$source = str_ireplace( "{content", "&#123;content", $source );
		$source = str_ireplace( "{custom", "&#123;custom", $source );

		$source = $this->remove( $this->decode( $source ) );
			
		if( $this->code_count ) {
			foreach ( $this->code_text as $key_find => $key_replace ) {
				$find[] = $key_find;
				$replace[] = $key_replace;
			}
				
			$source = str_replace( $find, $replace, $source );
		}
			
		$this->code_count = 0;
		$this->code_text = array ();

		$source = preg_replace( "#<script#i", "&lt;script", $source );

		/*if ( !$this->safe_mode ) {
			$source = preg_replace_callback( "#<iframe(.+?)src=['\"](.+?)['\"](.*?)>(.*?)</iframe>#is", array( &$this, 'check_frame'), $source );
		}*/

		//$source = str_ireplace( "<iframe", "&lt;iframe", $source );
		//$source = str_ireplace( "</iframe>", "&lt;/iframe&gt;", $source );
		$source = str_replace( "<?", "&lt;?", $source );
		$source = str_replace( "?>", "?&gt;", $source );

		$source = addslashes( $source );			
		return $source;

	}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы