2012-04-23 64 views
0

以下代碼用於處理我們網站的忘記密碼部分的模板。 (請不要反駁我的愚蠢,我沒有寫出它) 我需要做的是在'Your PID must be numeric'的信息中嵌入'/ 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} 

回答

1

通過PHP來做這件事很簡單,就是你的is_int函數。

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

// do this code 

} 
else{ 

// Do this code 

} 
+0

看到編輯後。 – MB34 2012-04-24 15:03:11

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字段爲{後:PID}而不是作爲$ _POST [ 'PID']。它不完全適用於您的情況,因爲您可能會在模板中使用PHP來驗證PID。但是,理想情況下,您應該編寫或找到一個EE插件來爲您完成此操作,並將PHP保留在模板之外。上面的代碼片段可以幫助你在任何時候處理表單。

此外,請原諒未答覆,但它太大,不能留下評論。

+0

這是否適用於整個網站中的所有GET/POST?即使在第三方插件? – MB34 2012-04-24 15:03:58

+0

這應該適用於通過表單提交的所有GET/POST值,而不管使用何種代碼提交它們。 – Bitmanic 2012-04-24 17:01:06