2012-03-21 5 views
1

Прежде чем я смогу с этим сообщением, позвольте мне сделать это ясно, я абсолютно ничего не могу изменить о строке, которую я собираюсь показать вам, она должна оставаться такой, какой она есть ,Работа с обратными косыми чертами в JavaScript, PHP и MSSQL

Мне нужно найти способ разбора строки без каких-либо механизмов экранирования. У меня есть эта строка: «A2 & 11203 [3 \ 813+! 5> di», который используется этой программой, с которой мне приходится иметь дело.

SQL разбирает эту строку просто отлично (обратный слэш и все), но JavaScript и PHP продолжать использовать его в качестве отводящего робота и удаление номера 8.

Что происходит в моей заявке, он получает эту строку, а затем с помощью JavaScript, перенаправляет на веб-страницу вместе со строкой, проблема заключается в том, что обратная косая черта удаляется, что я должен иметь.

Этот код был найден в другом столбце stackoverflow, и он работает для того, что мне нужно, но мне нужно остановить JavaScript (и, в конечном итоге, PHP) от удаления обратного слэша.

function post_to_url(path, params, method) { 
    method = method || "post"; // Set method to post by default, if not specified. 

    // The rest of this code assumes you are not using a library. 
    // It can be made less wordy if you use one. 
    var form = document.createElement("form"); 
    form.setAttribute("method", method); 
    form.setAttribute("action", path); 

    for(var key in params) { 
     if(params.hasOwnProperty(key)) { 
      var hiddenField = document.createElement("input"); 
      hiddenField.setAttribute("type", "hidden"); 
      hiddenField.setAttribute("name", key); 
      hiddenField.setAttribute("value", params[key]); 

      form.appendChild(hiddenField); 
     } 
    } 

    document.body.appendChild(form); 
    form.submit(); 
} 

Строка должен быть обработан полностью сырыми, я только что проверил базу данных, и есть несколько случаев с несколько backslashs везде вместе с проклятым рядом любого символа, который вы можете найти на английской клавиатуре.

Любые идеи относительно того, что я могу сделать по этой проблеме? Я вынужден использовать JavaScript в качестве главного перенаправителя.

+0

Это полная бессмыслица, что вы не можете избежать строки.Строка не является даже действительной как часть URL-адреса, и ваш веб-браузер * * автоматически экранирует строку для вас, прежде чем отправлять ее, поэтому ее побег * будет происходить по крайней мере один раз, поэтому почему бы и другие случаи не поддерживать данные, которые у вас есть? –

+0

и где строка в вашем коде? –

+0

Строка является основным идентификатором, привязанным к учетной записи, она уникальна для каждой записи. Строка поступает из приложения, которое встроено в основную программу, которая передает данные на HTML-страницу, я пытаюсь выяснить, как переносить эту строку с HTML-страницы и перенаправить на мой сервер отчетов. В лучшем случае процессор HTML очень скудный, честно говоря, я удивлен, что он вообще может обрабатывать JavaScript. – iarp

ответ

0

Невозможно правильно скрыть обратную косую черту, мы перешли на 4 других поля, которые идентифицировали бы учетную запись, а затем вытащили учетную запись в php, больше не нужно было ничего скрывать.

2

Я предполагаю, что ваш поток что-то вроде:

В PHP, получить данные из SQL базы данных и выводить их в коде JavaScript. Затем, позже отправьте его обратно на PHP для обработки.

В этом случае вам нужно что-то сделать для строки, прежде чем передавать ее на JavaScript.

Вы можете достичь этого, позвонив по строке json_encode.

Например, вместо того, чтобы что-то вроде:

var myvar = "<?php echo $var; ?>"; 

Вы бы:

var myvar = <?php echo json_encode($var); ?> 

Это означает, что, независимо от того, какие символы в строке, вы всегда будете иметь, что точная строка в JavaScript, обратная косая черта и все такое.

Когда JavaScript передает его обратно на PHP, предположительно через форму, обратная косая черта поддерживается просто отлично - это верно для любой формы, так как пользователь может вводить все обратные косые черты, которые они хотят. Просто будьте осторожны, чтобы использовать соответствующую функцию экранирования для используемого типа базы данных, чтобы гарантировать, что любые специальные символы (например, обратные косые черты) будут правильно экранированы.

+0

Нет, я не знаю, что написана в основной программе, но это дает мне возможность извлекать переменные и передавать их в HTML-документ, в этом документе я использую JavaScript, чтобы затем перенаправить страницу на мой сервер отчетов который запускает скрипты php. Основная программа -> HTML-документ (перенаправление JavaScript) -> Отчетный php-сервер. Я пытаюсь передать переменную из главной программы на сервер отчетов. – iarp

Смежные вопросы