-1

フォームの一部のフィールドが空の場合、メッセージ (jquery など) を表示したい。ポップアップか何か。私のコントローラーには、次のコード スニペットがあります。

    if($this->form_validation->run() == FALSE) 
    {
        $this->load->view('registry_v');
        //Here I want to show some message, some popup or anything (not echo)
        //Saying that some field is missing or empty.
    }
4

2 に答える 2

1

これは、タスクに対してどのように行うべきかの例です。

<!DOCTYPE html>
<html>
<head>
<script>
function validateForm()
{
var age = document.forms["myForm"]["age"].value;

if (age == null || age == "")
  {
  alert("Enter your age.");
  return false;
  }


}
</script>
</head>

<body>
<form name="myForm" action="age.php" onsubmit="return validateForm()" method="POST">
Age: <input type="text" name="age">
<input type="submit" value="Submit">
</form>
</body>

</html>

このようなタスクの一般的なアプローチは、Javascript を使用してクライアントのマシンで入力をチェックすることです。ただし、クライアントの入力は決して信頼されるべきではありません (クライアントは間違いを犯す可能性があり、意図的に誤ったデータを提供しようとする可能性があり、SQL インジェクションなどの攻撃を実行しようとする可能性があります)、常にクライアントの入力を再度確認する必要がありますが、サーバー上ではもう側。

基本的なロジック:
1)。クライアント マシンでクライアントの入力を確認します。何か問題がある場合は、警告を発するか、エラーを書き込んでください。チェックがエラーなしで完了した場合 - ユーザー入力を受け入れ、サーバーに送信します。(Javascript/JQuery で実行)
2)。この入力でサーバーロジックを実行する前に、サーバー側でユーザーの入力をもう一度確認してください (SQL インジェクションやその他の潜在的に危険なクライアントのアクションを防ぎます)。(バックエンド言語、あなたの場合はPHPによって実行されます)。

あなたのタスクに関しては、アラート機能でスクリプト部分をエコーできます。しかし、このアプローチは完全に間違っています。

  • サーバーの負荷が増加し、Web サイトをプログラミングする際の主な目標は、サーバーへのユーザー要求を最小限に抑えようとすることです。これを行うには、できるだけ多くのクライアント側の計算とチェックを行う必要があります (セキュリティを維持しながら、ユーザーはスクリプト ソースをチェックして、データが自分の側でどのように計算されるかを確認できることを忘れないでください)。
  • まだ JavaScript を使用しているため、クライアントのページで最初から実行しないのはなぜですか?
  • より複雑で、読みにくく、整理されていないコードを作成します

したがって、不要なサーバー要求を実行しているだけであり、回避する必要があります。

基本的に、クライアント側でクライアントの入力をチェックし、ビジネス ロジック (誰も見てはならない) を実行し、サーバー側でデータベースの作業を行います。

また、基本的な PHP/Web 開発の本を読んで、ユーザーとのやり取りの基本的なロジックを学ぶことをお勧めします。これにより、将来的に多くの時間を節約できます。

于 2012-12-03T20:11:27.367 に答える
1

これをサーバー側で行うのは非常に面倒です。この種のことにはjavascriptを使用したいと思います。ただし、クライアント側で javascript が無効になっている可能性があるため、フィールドの下の単純なラベルなど、いくつかの代替手段に適切に分解する必要があります。

サーバー側で可能なこと、PHPコードからJavaScriptをエコーすることですが、これは良い習慣とは見なされないかもしれません. 個人的には反対ですが、どうするかはあなた次第です。

于 2012-12-03T19:25:48.303 に答える