Почему значения атрибутов идентификатора элемента ввода HTML имеют префикс в форме, которую я отправляю по электронной почте? - PullRequest
0 голосов
/ 25 октября 2019

Я использую PHP для составления формы HTML для отправки по электронной почте. Например, у меня есть такой код:

$userOutput .= '<input type="hidden" id="seenUser" name="seenUser" value="'.$lastUsername.'">';
$userOutput .= '<input type="hidden" id="seenToken" name="seenToken" value="'.$userToken.'">';

Когда это электронное письмо поступает в мой почтовый ящик, если я использую инспектор кода Firefox, элементы отображаются следующим образом:

<input type="hidden" id="x_683480324seenUser" name="seenUser" value="someUsername">
<input type="hidden" id="x_683480324seenToken" name="seenToken" value="6ed3738a6e20f56f83ec83d9ef77a169">

Почемузначения атрибута id имеют префиксы x_683480324?

На странице, предназначенной для получения отправки формы, я использую:

if (isset($_POST['seenUser'])&&isset($_POST['seenToken'])) {

... и это, очевидно, не удается из-за учетной записинепредсказуемого префикса.

Длинная версия

Вот форма, как она появляется в моей веб-почте. Очевидно, что onSubmit был добавлен моим провайдером веб-почты. Представляется разумным заключить, что изменения в значении form id, а также в моем вопросе - значения input id - вероятно, также были изменены поставщиком веб-почты.

<form id="x_-381141859birdsSeen" action="https://www.MYDOMAIN.com.au/MYPAGE.php" method="post" onsubmit="return window.confirm(&quot;You are about to send information to an external page. Do you want to continue?&quot;);" target="_blank">
    <h4>Pacific Baza <input type="checkbox" name="pacbaz1" value="pacbaz1"></h4>
    2019-10-23 - <a href="https://www.OBFUSCATED.org/" target="_blank">AU-NSW-KRG</a>
    <br>
    <h4>Whiskered Tern <input type="checkbox" name="whiter2" value="whiter2"></h4>
    2019-10-22 - <a href="https://www.OBFUSCATED.org/" target="_blank">AU-NSW-NEW</a>
    <br>
    <input type="hidden" id="x_-381141859seenUser" name="seenUser" value="OBFUSCATED">
    <input type="hidden" id="x_-381141859seenToken" name="seenToken" value="8c1865d190e5a11d2cfe548224bf8d56">
    <input type="submit" value="Seen them!">
</form>

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

foreach($_POST as $postName=>$postValue) {

    echo 'PostVar: '.$postName.'<br />';

    if (substr($postName, -8)==='seenUser'&&strlen($postName)>8) { // The POST variable name is longer than 8 chars and the last 8 chars are 'seenUser'
        $postedSeenUser = $postValue; // assign the convoluted variable's value to our nice simple name
    }

    if (substr($postName, -9)==='seenToken'&&strlen($postName)>9) { // The POST variable name is longer than 9 chars and the last 9 chars are 'seenToken'
        $postedSeenToken = $postValue; // assign the convoluted variable's value to our nice simple name
    }

    if ($postName==='seenUser') $postedSeenUser = $postValue;   // Just in case the variable arrives with nice clean name as desired
    if ($postName==='seenToken') $postedSeenToken = $postValue; // Just in case the variable arrives with nice clean name as desired

} // And now our variables should contain nice neat seenUser and seenToken values if they existed in some convoluted manner.

if (isset($postedSeenUser)&&isset($postedSeenToken)) {

Хотявозможно, именно эти два последних утверждения «поймать простое дело» и приведут вышеописанное к работе, остается вопрос: почему в первую очередь не сработало следующее:

if (isset($_POST['seenUser'])&&isset($_POST['seenToken'])) {

1 Ответ

0 голосов
/ 29 октября 2019

Почему значения атрибута id имеют префиксы x_683480324?

Из полного кода для элемента form выяснилось, что в форму были добавлены другие дополнения,Один из них, в частности (свойство onSubmit), предположил, что именно веб-почтовый клиент внес это конкретное изменение, и, следовательно, вероятно, другие также. непредсказуемый префикс.

Один комментатор указал, что код не мог завершиться сбоем из-за свойств id, поскольку isset работает со свойствами name, которые остались неизменными.

Не было никакого решения относительно того, почему код не удался в этот момент. Обходной путь, который обрабатывает оба случая - isset обработка name значений и / или id значений - работает, согласно примеру в вопросе.

...