CodeIgniter-フォームの検証
検証は、Webアプリケーションを構築する際の重要なプロセスです。これにより、取得するデータが適切かつ有効に保存または処理できるようになります。CodeIgniterは、このタスクを非常に簡単にしました。簡単な例でこのプロセスを理解しましょう。
例
ビューファイルを作成する myform.php 以下のコードを保存します application/views/myform.php。このページには、ユーザーが自分の名前を送信できるフォームが表示されます。このページを検証して、送信中に空にならないようにします。
<html>
<head>
<title>My Form</title>
</head>
<body>
<form action = "" method = "">
<?php echo validation_errors(); ?>
<?php echo form_open('form'); ?>
<h5>Name</h5>
<input type = "text" name = "name" value = "" size = "50" />
<div><input type = "submit" value = "Submit" /></div>
</form>
</body>
</html>
ビューファイルを作成する formsuccess.php に保存します application/views/formsuccess.php。フォームが正常に検証されると、このページが表示されます。
<html>
<head>
<title>My Form</title>
</head>
<body>
<h3>Your form was successfully submitted!</h3>
<p><?php echo anchor('form', 'Try it again!'); ?></p>
</body>
</html>
コントローラファイルを作成する Form.php に保存します application/controller/Form.php。このフォームは、適切に検証されていないか、にリダイレクトされていない場合、エラーを表示しますformsuccess.php ページ。
<?php
class Form extends CI_Controller {
public function index() {
/* Load form helper */
$this->load->helper(array('form'));
/* Load form validation library */
$this->load->library('form_validation');
/* Set validation rule for name field in the form */
$this->form_validation->set_rules('name', 'Name', 'required');
if ($this->form_validation->run() == FALSE) {
$this->load->view('myform');
}
else {
$this->load->view('formsuccess');
}
}
}
?>
次の行をに追加します application/config/routes.php。
$route['validation'] = 'Form';
ブラウザで次のURLにアクセスして、この例を実行してみましょう。このURLは、サイトによって異なる場合があります。
http://yoursite.com/index.php/validation
次の画面が表示されます-
コントローラに検証を追加しました- Nameフォームを送信する前の必須フィールドです。そのため、名前フィールドに何も入力せずに送信ボタンをクリックすると、下の画面に示すように、送信する前に名前を入力するように求められます。
名前を正常に入力すると、次のような画面にリダイレクトされます。
上記の例では、必要なルール設定を使用しています。CodeIgniterには多くのルールがあり、以下で説明します。
検証ルールリファレンス
以下は、使用可能なすべてのネイティブルールのリストです-
ルール | パラメータ | 説明 | 例 |
---|---|---|---|
required |
番号 | フォーム要素が空の場合はFALSEを返します。 | |
matches |
はい | フォーム要素がパラメータの要素と一致しない場合はFALSEを返します。 | 一致する[form_item] |
regex_match |
はい | フォーム要素が正規表現と一致しない場合はFALSEを返します。 | regex_match [/ regex /] |
differs |
はい | フォーム要素がパラメータの要素と異ならない場合はFALSEを返します。 | 異なる[form_item] |
is_unique |
はい | フォーム要素がパラメータのテーブルおよびフィールド名に固有でない場合はFALSEを返します。注-このルールを機能させるには、クエリビルダーを有効にする必要があります。 | is_unique [table.field] |
min_length |
はい | フォーム要素がパラメータ値よりも短い場合はFALSEを返します。 | min_length [3] |
max_length |
はい | フォーム要素がパラメータ値よりも長い場合はFALSEを返します。 | max_length [12] |
exact_length |
はい | フォーム要素が正確にパラメータ値でない場合はFALSEを返します。 | 正確な長さ[8] |
greater_than |
はい | フォーム要素がパラメータ値以下または数値でない場合はFALSEを返します。 | 大なり記号[8] |
greater_than_equal_to |
はい | フォーム要素がパラメータ値よりも小さいか、数値でない場合はFALSEを返します。 | great_than_equal_to [8] |
less_than |
はい | フォーム要素がパラメータ値以上であるか数値でない場合はFALSEを返します。 | less_than [8] |
less_than_equal_to |
はい | フォーム要素がパラメータ値より大きい場合、または数値でない場合はFALSEを返します。 | less_than_equal_to [8] |
in_list |
はい | フォーム要素が所定のリスト内にない場合はFALSEを返します。 | in_list [赤、青、緑] |
alpha |
番号 | フォーム要素に英字以外が含まれている場合はFALSEを返します。 | |
alpha_numeric |
番号 | フォーム要素に英数字以外のものが含まれている場合はFALSEを返します。 | |
alpha_numeric_spaces |
番号 | フォーム要素に英数字またはスペース以外のものが含まれている場合はFALSEを返します。最初または最後のスペースを避けるために、トリム後に使用する必要があります | |
alpha_dash |
番号 | フォーム要素に英数字、アンダースコア、またはダッシュ以外のものが含まれている場合はFALSEを返します。 | |
numeric |
番号 | フォーム要素に数字以外が含まれている場合はFALSEを返します。 | |
integer |
番号 | フォーム要素に整数以外のものが含まれている場合はFALSEを返します。 | |
decimal |
番号 | フォーム要素に10進数以外が含まれている場合は、FALSEを返します。 | |
is_natural |
番号 | フォーム要素に自然数-0、1、2、3など以外のものが含まれている場合はFALSEを返します。 | |
is_natural_no_zero |
番号 | フォーム要素に自然数以外のものが含まれているが、ゼロ-1、2、3などが含まれていない場合はFALSEを返します。 | |
valid_url |
番号 | フォーム要素に有効なURLが含まれていない場合、FALSEを返します。 | |
valid_email |
番号 | フォーム要素に有効な電子メールアドレスが含まれていない場合はFALSEを返します。 | |
valid_emails |
番号 | カンマ区切りのリストで指定された値が有効な電子メールでない場合、FALSEを返します。 | |
valid_ip |
番号 | 指定されたIPが無効な場合はFALSEを返します。'ipv4'または 'ipv6'のオプションのパラメーターを受け入れて、IP形式を指定します。 | |
valid_base64 |
番号 | 指定された文字列に有効なBase64文字以外のものが含まれている場合はFALSEを返します。 |