0

次のコードは、当社の Web サイトのパスワードを忘れたセクションを処理するテンプレートです。(愚かなことを非難しないでください。私が書いたわけではありません) $_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 に答える