Вызывание вставной функции в зависимости от входа к шаблону

У меня есть шаблон, который берет вход от формы и и делает несколько операций. Эти операции вызывают вставные функции, и я хотел бы, чтобы один из них вызвал различную функцию, если один из входных параметров устанавливается.

Это - шаблон кода:

{if segment_2 == 'submit'}
    <?
      $embed_params = 'email="' . $_POST['email'] . '"';
      $embed_params .= 'PID="' . $_POST['PID'] . '"';
      $embed_params .= 'DOB="' . $_POST['DOB'] . '" Site="" site="'.$_POST['site'].'"';
    ?>
    {embed='/forgot_password_form' message='{exp:forgot_password:send_email code="{segment_3}" <?=$embed_params?>}' <?=$embed_params?>}
{if:elseif segment_2 == 'reset'}
    {embed='/forgot_password_reset' email='{exp:forgot_password:check_code code="{segment_3}"}' code="{segment_3}" <?=$embed_params?> site="<?=$_POST['site']?>"}
{if:elseif segment_2 == 'reset_submit'}
    {embed='/forgot_password_reset' message='{exp:forgot_password:update_password code="<?=$_POST['code']?>" password="<?=$_POST['password']?>" site="<?=$_POST['site']?>" }' }
{if:else}
    {embed='/forgot_password_form' }
{/if}

Они получают электронную почту с кодом сброса, когда send_mail плагин функционирует s названный и затем когда они нажимают на ссылку сброса, это звонит forgot_password/reset , чтобы загрузить форму сброса и когда они представляют форму сброса, это называет forgot_password/reset_submit, чтобы обновить их пароль.

Теперь, если $ _POST ["электронная почта'] установлен, я хочу звонить exp:forgot_password:send_email , если это не установлено, я хочу звонить exp:forgot_password:show_pass .

Я собираюсь возвратить их фактическое имя пользователя и пароль, чтобы показать против сброса их его.

Как я звонил бы show_pass вместо send_email , если адрес электронной почты не установлен здесь? Или я должен просто использовать вставной код, чтобы определить?

0
nl ja de

1 ответы

Очень желательно избегать использования PHP в шаблонах в этом случае, это еще более важно, поскольку вы берете сырые ПОЧТОВЫЕ данные и не делаете никакой проверки или проверок безопасности на них настолько вводный ваш веб-сайт до уязвимостей системы обеспечения безопасности.

Используйте Мо' добавление Переменных (EE2 и EE3 совместимый), чтобы собрать ПОЧТОВЫЕ данные, которые санируют его также.

{if segment_2 == 'submit'}
    {embed='/forgot_password_form' 
        message='{exp:forgot_password:send_email code="{segment_3}"
            email="{post:email}"
            PID="{post:PID}"
            DOB="{post:DOB}"
            Site="{post:site}"}'
        email="{post:email}"
        PID="{post:PID}"
        DOB="{post:DOB}"
        Site="{post:site}"}

{if:else}
    {if segment_2 == 'reset'}
        {embed='/forgot_password_reset' 
            email='{exp:forgot_password:check_code code="{segment_3}"}'
            code="{segment_3}"
            email="{post:email}"
            PID="{post:PID}"
            DOB="{post:DOB}"
            Site="{post:site}"}
    {if:elseif segment_2 == 'reset_submit'}
        {embed='/forgot_password_reset' 
            message='{exp:forgot_password:send_email code="{segment_3}"
                code="{post:code}"
                password="{post:password}"
                Site="{post:site}"}'}
    {if:else}
        {embed='/forgot_password_form'}
    {/if}
{/if}

Я не на самом деле уверен, где вы хотите звонить send_email или show_pass во всем этом, но здесь это:

{if "{post:email}"}
    {exp:forgot_password:send_email}
{if:else}
    {exp:forgot_password:show_pass}
{/if}

Как вы собираетесь показать, что пароль как EE использует 1 путь шифрование? Или разве это не связано с членством EE?

Все вышеупомянутое основано на вашем коде, но лично, я повторно учел бы партию и поместил бы ее в ваше добавление, чтобы обработать ее. Вы не должны передавать ПОЧТУ, сегмент или переменные места тогда, поскольку они все будут доступны из вашего добавления. Тогда вы могли просто иметь:

{exp:forget_password}
    {if "{route}" == "form"}
        Display the form content in this template instead of embed using variables 
        output from your tag pair plugin (with post data correctly sanitized using 
        correct EE form class).

    {if:else}
        Display the reset content in this template, as above
    {/if}
{/exp:forget_password}
0
добавлено
I' m, не читая лекции, поскольку я ничего не знаю о вашем подходе или уровне знаний, идеально я хотел дать вам уравновешенный ответ, не создавая нить 2 путей разговор, как я узнаю больше. Также представление лучшей практики делает ответ полезным для других людей в будущем, которые имеют подобные или связанные проблемы и натыкаются на это обеспечение качества.
добавлено автор Owen, источник
1. Да, это не базирующееся членство EE. 2. Да, мы знаем о слабых местах "безопасности", очистка сделана в плагине. 3. Я просто ненавижу его, когда люди читают лекции вам о вещах как это. 4. Эта вся установка EE будет уходить через несколько месяцев, таким образом, это будет, все просто выбрасывает код, так или иначе, но thatnks.
добавлено автор DBr, источник