以下代码适用于处理我们网站的忘记密码部分的模板。 (请不要因为它的愚蠢而责备我,我没有写出来) 如果$ _POST ['PID']具有非数字字符,我需要做的是嵌入'/ inc / forgot_password_form'并带有'你的PID必须是数字'的消息。 我如何修改此代码来做到这一点?
我知道我可以使用我的jQuery验证器在客户端进行,但我宁愿在这里做,因为我还可以检查最小值并为它显示特殊消息。
{if segment_2 == 'submit'}
<?
$embed_params = 'EmailAddress="' . $_POST['EmailAddress'] . '" PID="' . $_POST['PID'] . '" ';
?>
{embed='/inc/forgot_password_form' message='{exp:forgot_password:send_email code="{segment_3}" <?=$embed_params?>}' <?=$embed_params?>}
{if:elseif segment_2 == 'reset'}
{embed='/inc/forgot_password_reset' email='{exp:forgot_password:check_code code="{segment_3}" }' code="{segment_3}"}
{if:elseif segment_2 == 'reset_submit'}
{embed='/inc/forgot_password_reset' message='{exp:forgot_password:update_password code="<?=$_POST['code']?>" password="<?=$_POST['password']?>" }' }
{if:else}
{embed='/inc/forgot_password_form' }
{/if}
使用新代码进行编辑:
所以你这么说是这样做的?
{if segment_2 == 'submit'}
<?
$embed_params = 'EmailAddress="' . $_POST['EmailAddress'] . '" PID="' . $_POST['PID'] . '" ';
if (!is_int($_POST['PID']) {
{embed='/inc/forgot_password_form' message='You submitted an invalid Member #.' <?=$embed_params?>}
} else {
{embed='/inc/forgot_password_form' message='{exp:forgot_password:send_email code="{segment_3}" <?=$embed_params?>}' <?=$embed_params?>}
}
?>
{if:elseif segment_2 == 'reset'}
{embed='/inc/forgot_password_reset' email='{exp:forgot_password:check_code code="{segment_3}" }' code="{segment_3}"}
{if:elseif segment_2 == 'reset_submit'}
{embed='/inc/forgot_password_reset' message='{exp:forgot_password:update_password code="<?=$_POST['code']?>" password="<?=$_POST['password']?>" }' }
{if:else}
{embed='/inc/forgot_password_form' }
{/if}
答案 0 :(得分:1)
通过PHP执行此操作非常简单,只需使用is_int函数。
if (is_int($_POST['PID'])){
// do this code
}
else{
// Do this code
}
答案 1 :(得分:0)
菲利普的答案很好,但我想我会分享一些代码片段,如果您正在使用GET / POST变量,可能对您有所帮助。它将所有GET和POST变量存储为EE全局变量。我将其存储在我的引导程序文件(system/config.php
)中,但您也可以将其添加到system/expressionengine/config/config.php
:
// Turn $_GET into global variables
foreach ($_GET as $key => $value) {
$default_global_vars['get:' . $key] = $value;
}
// Turn $_POST into global variables
foreach ($_POST as $key => $value) {
if(!is_array($value)) {
$default_global_vars['post:' . $key] = $value;
}
}
使用此代码,您可以将PID字段称为{post:PID},而不是$ _POST ['PID']。它并不完全适用于您的情况,因为您可能会在模板中使用PHP来验证PID。但是,理想情况下,您应该编写或找到一个EE插件来为您执行此操作并将PHP保留在模板之外。上面的代码片段可以在您使用表单时随时帮助实现该目标。
另外,请原谅非回答,但要留下评论太大了。