2012-04-23 6 views
0

次のコードは、当ウェブサイトのパスワードを忘れたセクションを処理するテンプレートです。 (私はそれが愚かであると私に嫌がらせをしないでください、私はそれを書いていません) $ _POST ['PIDの場合、あなたのPIDは数字でなければなりません'というメッセージで '/ inc/forgot_password_form' ']は数値でない文字を持ちます。 このコードを変更するにはどうすればよいですか?

私は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

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

+0

これは、フォームの送信に使用されたコードに関係なく、フォーム経由で送信されるすべてのGET/POST値に対して機能するはずです。 – Bitmanic

関連する問題