0

以下代码用于处理我们网站的忘记密码部分的模板。(请不要因为它的愚蠢而责备我,我没有写它)我需要做的是嵌入 '/inc/forgot_password_form' 如果 $_POST['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}
4

2 回答 2

1

通过 PHP 执行此操作非常简单,只需使用is_int函数即可。

if (is_int($_POST['PID'])){

// do this code

}
else{

// Do this code

}
于 2012-04-23T21:06:21.827 回答
0

Philip 的回答很好,但我想我会分享一段代码,如果您经常使用 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 排除在您的模板之外。每当您使用表单时,上面的代码片段都有助于实现该目标。

另外,请原谅没有答案,但它太大了,不能作为评论留下。

于 2012-04-24T14:17:14.730 回答