json_decode($data, true); // Returns data in array format
json_decode($data); // Returns collections
Итак, если вам нужен массив, вы можете передать второй аргумент как 'true' в функцию json_decode
.
Yes. The following class implements the IHttpModule Interface and registers and event that will fire before the HttpRequestValidationException check occurs. It checks that the request is a POST and that "testinput" is not null and then HTML Encodes it. The Class needs to be registered in your Web.config as an httpModule.
class...
using System;
using System.Collections.Specialized;
using System.Reflection;
using System.Web;
public class PrevalidationSanitizer : System.Web.IHttpModule
{
private HttpApplication httpApp;
public void Init(HttpApplication httpApp)
{
this.httpApp = httpApp;
httpApp.PreRequestHandlerExecute += new System.EventHandler(PreRequestHandlerExecute_Event);
}
public void Dispose() { }
public void PreRequestHandlerExecute_Event(object sender, System.EventArgs args)
{
NameValueCollection form = httpApp.Request.Form;
Type type = form.GetType();
PropertyInfo prop = type.GetProperty("IsReadOnly", BindingFlags.Instance
| BindingFlags.IgnoreCase | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy);
prop.SetValue(form, false, null);
if (httpApp.Request.RequestType == "POST" != null
&& httpApp.Request.Form["testinput"])
httpApp.Request.Form.Set("testinput"
, httpApp.Server.HtmlEncode(httpApp.Request.Form["testinput"]));
}
}
web.config entry...
<system.web>
<httpModules>
<add type="PrevalidationSanitizer" name="PrevalidationSanitizer" />
...
У меня возникло бы искушение исключить плохой шаблон размещения XML-данных в полевом посте через HTML-форму. Я понимаю, что вы хотите переносить "плавно", что, как я понимаю, означает, что вы хотите какое-то время поддерживать как страницы ASP, так и ASPX. Однако в этом случае вам следует рассмотреть возможность одновременного изменения формы и цели действия формы.
Думаю, это похоже на совет, который я дал здесь . Только в этом случае ситуация ухудшается, поскольку шаблон кода в исходном ASP не соответствует желаемому, даже в рамках ограничений классического ASP.
Если вы не хотите полностью переносить форму ASP и ее действие page в то же время рассмотрите возможность модификации страницы ASP для использования XHR для отправки XML в ashx, который помещает XML в безопасное место и возвращает GUID. Поместите возвращенный GUID в скрытое поле вместо поля, которое изначально содержало XML. На принимающей странице ASPX используйте GUID для получения ранее отправленного XML.
Похоже, хлопот много. Что плохого в использовании флага validateRequest
на уровне страницы?
Просто убедитесь, что вы правильно дезинфицируете ввод и закодируете его, если вам нужно его где-нибудь сохранить и / или убедитесь, что вы не плюете вернуть поле в браузер без его кодирования.