Регистрационная форма CFML мешает правильному использованию атрибута encodeForHTMLAttribute?

Люси 5.2

МС SQL сервер 2014

Привет, друзья,

Мне нужна помощь с задачей CFML — это форма регистрации на конференцию для клиента.

В приведенном ниже коде я правильно использую encodeForHTMLAttribute? Я провел некоторое исследование атрибута encodeForHTML, например, https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-e-g/encodeforhtmlattribute.html -- но я не уверен а) если я использую его правильно, или б) если мне вообще нужно его использовать.

Приведенный ниже CFML выглядит разумным? Как всегда спасибо за вашу помощь.

Эрик

<!--- begin CFOUTPUT for user input fields --->
<cfoutput>
<li>
<label for="Title"><h3>Title (Ms., Mr., Dr. etc.):</h3></label>
<input type="text" name="Title" placeholder="Title" value="#encodeForHTMLAttribute(Trim(Left(form.Title,255)))#" maxlength="255" tabindex="1" size="70" autofocus="true" />
</li>

<li>
<label for="x_first_name"><h3>First Name:</h3></label>
<input type="text" name="x_first_name" placeholder="First Name" value="#encodeForHTMLAttribute(Trim(Left(form.x_first_name,255)))#" maxlength="255" tabindex="2" size="70" required="yes" />
        <span class="form_hint">Enter First Name</span>
</li>

<li>
<label for="MiddleInitial"><h3>Middle Initial:</h3></label>
<input type="text" name="MiddleInitial" placeholder="MI" value="#encodeForHTMLAttribute(Trim(Left(form.MiddleInitial,255)))#" maxlength="5" tabindex="3" size="1" />
</li>

<li>
<label for="x_last_name"><h3>Last Name:</h3></label>
<input type="text" name="x_last_name" placeholder="Last Name" value="#encodeForHTMLAttribute(Trim(Left(form.x_last_name,255)))#" maxlength="255" tabindex="4" size="70" required="yes" />
        <span class="form_hint">Enter Last Name</span> 
</li>

<li>
  <label for="Credentials"><h3>Credentials:</h3></label>
<input type="text" name="Credentials" placeholder="Credentials (e.g. RN, MSN, PhD, MD)" value="#encodeForHTMLAttribute(Trim(Left(form.Credentials,255)))#" maxlength="255" tabindex="5" size="70" required="yes" />
     <span class="form_hint">Credentials (e.g. RN, MSN, PhD, MD)</span> 
</li>

<li>
<label for="x_company"><h3>Current Position and Organization:</h3></label>
<input type="text" name="x_company" placeholder="Current Position and Organization" value="#encodeForHTMLAttribute(Trim(Left(form.x_company,255)))#" maxlength="255" tabindex="6" size="70" required="yes" />
        <span class="form_hint">Enter Current Position and Organization</span>               
</li>

<li>
<label for="x_address"><h3>Address:</h3></label>
<input type="text" name="x_address" placeholder="Please enter your address" value="#encodeForHTMLAttribute(Trim(Left(form.x_address,255)))#" maxlength="255" tabindex="7" size="70" required="yes" />
        <span class="form_hint">Please enter your mailing address</span> 
</li>

<li>
<label for="x_city"><h3>City:</h3></label>
<input type="text" name="x_city" placeholder="Please enter your city" value="#encodeForHTMLAttribute(Trim(Left(form.x_city,255)))#" maxlength="255" tabindex="8" size="70" required="yes" />
        <span class="form_hint">Please enter your city</span> 
</li>

<li>
  <label for="x_state"><h3>State or Province:</h3></label>
<input type="text" name="x_state" placeholder="Please enter your State or Province" value="#encodeForHTMLAttribute(Trim(Left(form.x_state,255)))#" maxlength="255" tabindex="9" size="70" required="yes" />
        <span class="form_hint">Please enter your State or Province</span>             
</li>                     


<li>
<label for="x_zip"><h3>ZIP or Postal Code:</h3></label>
<input type="text" name="x_zip" placeholder="Please enter your ZIP or Postal Code" value="#encodeForHTMLAttribute(Trim(Left(form.x_zip,25)))#" maxlength="255" tabindex="10" size="70" required="yes" />
        <span class="form_hint">Please enter your ZIP or Postal Code</span>               
</li> 

           <li>
<label for="x_country"><h3>Country:</h3></label>
<input type="text" name="x_country" placeholder="Please enter your country" value="#encodeForHTMLAttribute(Trim(Left(form.x_country,255)))#" maxlength="255" tabindex="11" size="70" required="yes" />
        <span class="form_hint">Please enter your country</span>                
</li>  

           <li>
<label for="TelephoneWork"><h3>Work Telephone:</h3></label>
<input type="text" name="TelephoneWork" placeholder="Please enter your work telephone number" value="#encodeForHTMLAttribute(Trim(Left(form.TelephoneWork,25)))#" maxlength="25" tabindex="13" size="70" />
        <span class="form_hint">Please enter your work telephone number.</span> 
</li>     

<li>
<label for="x_email"><h3>email address:</h3></label>
<input type="text" name="x_email" placeholder="Important: Please enter your valid email address." value="#encodeForHTMLAttribute(Trim(Left(form.x_email,128)))#" maxlength="128" tabindex="16" size="70" required="yes" />
        <span class="form_hint">Enter Email Address</span> 
</li>

<li>
<label for="SpecialRequirements"><h3>Special Requirements -- dietary, mobility, etc.:</h3></label>

<input type="text" name="SpecialRequirements" placeholder="Important: Please enter special requirements, if any." value="#encodeForHTMLAttribute(Trim(Left(form.SpecialRequirements,255)))#" 
maxlength="255" tabindex="18" size="70" />

</li>
</cfoutput><!--- /CFOUTPUT for user input fields --->

person Eric B    schedule 05.01.2018    source источник
comment
Первые два вопроса должны были быть отдельным вопросом о SO. По последнему мало информации. Добро пожаловать в СО   -  person James A Mohler    schedule 05.01.2018
comment
Джеймс, прости меня за это! Я буду более сознательным в будущем. Я очень ценю ваше время и помощь. Эрик   -  person Eric B    schedule 05.01.2018
comment
Без проблем. ТАК. имеет немного другую модель (вопросы и ответы, один вопрос в потоке, глобальные изменения, ..) Требуется немного привыкнуть :-)   -  person SOS    schedule 05.01.2018
comment
редактирование вопроса, чтобы сделать его не вопросом, не одобряется.   -  person rlemon    schedule 05.01.2018


Ответы (2)


Вопрос 1

При задании атрибутов используйте такое значение в полях формы.

encodeForHTMLAttribute()

Вопрос 2

Денежные поля для долларов США должны быть

type="number" step="0.01"

Другие валюты имеют разную гранулярность

Вопрос 3

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

person James A Mohler    schedule 05.01.2018
comment
Джеймс, спасибо! Это действительно полезно. 1. Так должен выглядеть encodeForHTMLAttribute? ‹input type=text name=Title placeholder=Title value=‹cfoutput›#encodeForHTMLAttribute(Trim(Left(form.Title,255)))#‹/cfoutput› maxlength=255 tabindex=1 size=70 autofocus=true /› 2. И как это выглядит? ‹input type=число step=0,01 name=OptionalDonation placeholder=Пожалуйста, введите только числовое значение; например, 50.00 value=‹cfoutput›#OptionalDonation#‹/cfoutput› size=10 /› Stack говорит, что я не могу добавить больше текста в это сообщение? Эрик - person Eric B; 05.01.2018
comment
@EricB - Лично я бы использовал один набор тегов cfoutput для всей формы, а не для каждого поля. ТАК. комментарии ограничены небольшим количеством символов, но вы всегда можете отредактировать вопрос, чтобы добавить дополнительные сведения. Однако звучит как 3) должен быть вообще отдельный вопрос. - person SOS; 05.01.2018
comment
Понятно. Я собираюсь попробовать это снова. знак равно - person Eric B; 05.01.2018
comment
Вы можете создать ответ на свой вопрос. - person James A Mohler; 06.01.2018
comment
Джеймс, я собираюсь отредактировать этот вопрос и сократить его до одного вопроса. Я не уверен, как ответить на свой вопрос; я почти уверен, что дал бы неправильный ответ. знак равно - person Eric B; 06.01.2018
comment
Просто для дальнейшего использования. Вы должны были оставить вопрос как есть И создать ответ. В нынешнем виде никто не знает, с чем вы боролись и каким было окончательное решение. Не волнуйтесь, хотя. Требуется некоторое время, чтобы понять, как SO делает вещи. - person James A Mohler; 06.01.2018
comment
Дорогой Джеймс: во-первых, спасибо =) Я разобрался. Я очень ценю доброту. Я решил сконцентрироваться на атрибуте encodeForHTMLAttribute и провел над ним дополнительные исследования. Я не совсем уверен, что он мне нужен, и я, вероятно, уберу его из приложения. Я также работаю над другими вопросами, которые я изначально опубликовал, и я думаю, что после некоторых исследований и испытаний я приближаюсь к решению. Спасибо всем, кто ответил на мои вопросы. Надеюсь, ваши выходные проходят хорошо. знак равно - person Eric B; 06.01.2018

Ваш первый вопрос, In the code below, am I using encodeForHTMLAttribute correctly?. Ответ отрицательный, потому что вы используете его не в том месте.

Функция encodeForHTMLAttribute изменяет определенные символы на их html-эквиваленты. Например, символ "меньше" < становится &lt;. Если бы вы выводили это в теге отображения веб-страницы, таком как абзац или деталь таблицы, вы бы увидели <. Однако во входном теге вы увидите &lt; Это то, что вы хотите, чтобы ваши пользователи видели?

Ваш следующий вопрос, Does the CFML below look reasonable?. Синтаксис в порядке, но тот факт, что он содержит html для предварительного заполнения из сообщения формы, кажется мне странным. Вы заставляете своих пользователей публиковать одну и ту же информацию дважды?

person Dan Bracuk    schedule 06.01.2018
comment
Дэн, спасибо. Почитав еще немного, я пришел к выводу, что функция encodeForHTMLAttribute мне вообще не нужна. Я не совсем уверен, почему это было там в первую очередь. Я думаю, что это имело смысл, по какой-то причине, в то время. ›››› Вы заставляете своих пользователей публиковать одну и ту же информацию дважды? Нет, это не мое намерение. Эти поля формы взяты из формы вставки/обновления; люди добавляют свою информацию только один раз. Большое спасибо за этот полезный ответ. Эрик - person Eric B; 07.01.2018
comment
Источник покажет &lt;, но пользователь все равно должен увидеть ‹. @EricB - Если ввод содержит специальные значения, такие как кавычки и т. Д., Это одна из причин, по которой вы можете его использовать. trycf.com/gist/d26005391c415b58be8894ae54a2f5b5/. Обратите внимание, что первый ‹input› не отображает значение должным образом. - person SOS; 07.01.2018
comment
Агеакс -- классно! Я вижу это сейчас. TryCF выглядит как отличный инструмент. Спасибо, еще раз. Эрик - person Eric B; 09.01.2018