PHPのHTMLフォームを介してデータを転送する。 アクションフォーム属性のPHP _

このPHPレッスンでは、言語の基本的な概念が検討されています:Webページを送信する要求を持つ処理フォーム、フォームのメインコントロール構造、PHPフォームからファイルへのデータをファイルに記録する、PHPの日付関数日付()

1.すべてのファイルを思い出します pHP。 走ったときだけテストしてください デンバー ブラウザのアドレスバーからのみ。 ダブルクリックでPHPファイルを実行することはできません。

2.デンバーを運営します。

運動1.簡単な形の処理

このクラスPHPでは、HTMLページのフォーム処理、フォームフィールドのPHP変数の作成を検討してください。

図1のように形式を作成する。 3.1。 送信ボタンをクリックすると、フォームからのデータが管理者に転送され、クライアントは画面上の答えを見ることがわかります。 オーダー処理。 フォームを書くのが難しい場合は、以下のコードを実装してフォルダに保存してください。 php_2。 名前の下 forma_bob.html フォームハンドラの形式が属性に書かれていることをお知らせします アクション。 鬼ごっこ .

図3.1。

2.ユーザーがデータを送信した後に回答を受け取るためには、PHPでフォームハンドラを作成する必要があります。 下のコードを作成してフォルダに保存します。 php_2。 名前の下 zakaz.php。

3.ハンドラのパフォーマンスを確認してください。 これを行うには、ファイルを実行します forma_bob.html 入力してブラウザを介して 住所欄 ブラウザアドレス http://localhost/php_2/forma_bob.html.

4.フォームフィールドに、任意の番号を入力してクリックします。 命令を送る。 結果は図4になる。 3.2。

図3.2

可変フォーム

注文形式の全使用点は、クライアントの順序に関する情報を受信することです。 PHPシナリオ内部のフォームフィールドには、フォームフィールドと同じ名前の変数の両方にアクセスできます。 舌で PHP変数 彼らはドル記号から始めるので認識しやすい $ .

フィールドの内容にアクセスできます。 t t 次の方法で:

$ Tireqty //短いスタイル

$ _post ['tireqty'] //ミディアムスタイル

$ http_post_vars ['tireqty'] //ロングスタイル

変数への参照のために長いスタイルを使用しますが、使いやすさを簡単にします。 これは便利なIです。 安全な方法 選択したバージョンと設定に関係なく、すべてのシステムで効果的に機能するデータを操作します。

1つの変数の内容を別の変数にコピーすると、PHP言語の指定が平等の符号を使用するために、割り当て操作を適用します( = )。 以下に引用されたコード文字列は、名前付きの新しい変数を作成します $ Tireqty そして内容を転送します $ _post ['tireqty'] この新しい変数に:

$ tireqty \u003d $ _ POST ['tireqty']

このスクリプトは出力を生成しないため、違いはありませんが、ディスクリプタの上下に配置されます。 。 通常、このブロックはスクリプトの先頭に置かれます。

5.ファイル内の zakaz.php。 次のようにコードを変更して、フォームのパフォーマンスを確認してください。 結果は図4になる。 3.3。 数字は、入力したデータによって異なります。

図3.3。

演習2.フォーム「ボブからの自動部分」フォーム用の電卓の作成

このPHPレッスンでは、計算のための主な算術PHP関数を考慮してください。

1.ファイル forma_bob.html 名前の下に保存します forma_bob_2.html

2.ファイル zakaz.php。 名前の下に保存します zakaz_2.php。

3.ファイル内。 forma_bob_2.html 図4のように、それが見えるように「ボブからの自動部分」の形式を変更する。 3.4。 ハンドラの名前を変更することを忘れないでください。 zakaz_2.php。。 難しいと思われる場合は、以下のコードを実装できます。

図3.4。

4.ファイルに新しいフォーム処理を作成します zakaz_2.php。以前のレッスンから得られた知識を使う。 処理には、次の出力と条件が含まれている必要があります。

各製品のコストは定数によって決まります。 PHP定数は定義関数によって設定されます。 例を定義します( "pokrprice"、10)。 最初の関数パラメータは、大文字で書かれている定数の名前であり、2番目のパラメータは定数の値です。

論理演算 または 表記 ||

論理演算 そして 表記 && .

4.操作を比較します > 、 もっと少なく < , 多いか等しい\u003e \u003d、少なく、等しい <=

5.コンピュータから時間を読み取る機能 日付( "h:i、j f")

6.セミコロン数をフォーマットする機能 number_format。。 例 number_format($ sumnalog、2)。 最初のパラメーターはフォーマット記号の変数であり、2番目のパラメーターはセミコロン数です。

7.フォーム処理を作成するのが難しいと思われる場合は、以下のコードを使用できます(図3.8)。

図3.8。

演習3.テキストファイルのフォームからデータを記録する

私たちのPHPレッスンでは、形式からテキストファイルと日付()の日付関数へのデータの記録を検討します。

1.最後の閉鎖ブレース後のハンドラファイル「Auto Parts」フォームで、コードを追加します。

図3.9。

2.プログラムを確認してください。 テキストファイル orders.txt. 自動的に作成され、その内容を表示します。

コントロールタスク

このレッスンを検討した後、PHPは受信した知識を確保するために参照ジョブを\u200b\u200b実行するように招待されます。

図3.10

図1のように、形状を作成する。 3.10。

図2のように、注文結果を表示するフォーム処理を作成する。 3.11(結果はフォームに入力されたデータによって異なります。

3.注文の結果は別のテキストファイルに記録する必要があります。

注文リストは次のことを反映している必要があります。

  • 商品の種類
  • 1台のPCです。 品。
  • 注文された商品の数。
  • 配達、売上税および割引なしの注文の総費用。
  • 配達コスト
  • 売却税の価値。
  • パーセントとルーブルの割引。
  • 配信、売上税および割引を考慮して注文価値。
  • 配達先住所

問題の条件:

  1. 商品価格:
    • ハンドル - 10ルーブル。
    • 本 - 100ルーブル。
    • お土産 - 1000ルーブル。
    • コンピューター - 10,000ルーブル。
  2. 売上税 - 18%。 割引を考慮してすべての商品の合計価値に税金を追加します。
  3. 送料 - 500ルーブル。 配送料は、割引と売上税を考慮してすべての商品の合計価値に追加されます。
  4. 割引:
    • ハンドルや本を5枚未満の順序を注文するとき。 割引 - 5%、5から10個。 - 10%以上10個以上。 - 20%。
    • お土産やコンピュータを10から20のPCに注文するとき。 割引 - 10%、20~30個。 - 20%、30枚以上。 - 40%。

「PHPフォームはPHPの形式で動作しています」 - PHPチュートリアルの8番目のレッスン。 このレッスンでは、PHPの処理形態について説明します。

フォームで動作します

PHPユーザーがフォームフィールドに入力したデータを処理できます。 送信ボタンをアクティブにした後、データはページに送信されます - 要素フィールドフィールドで指定されたハンドラ

。 ハンドラページでは、PHPスクリプトが見つかります。これは、取得したデータに対して特定の操作を実行します。たとえば、指定されたユーザー要求に文字を生成して送信します。

ハンドラにデータを転送します。

フォームからのデータは、ペアの名前/値のシーケンスとしてサーバーに送信されます。 つまり、各フォーム要素の名前(タグの名前属性に表示される)は、この項目の値(入力または選択されたユーザー)に関連付けられていることを意味します。 送信に使用されるフォーマット名/値は、name \u003d valueのビューを持ちます。

フォームからハンドラプログラムへ送信されたすべてのデータは、次のスーパーグローバルアレイにあります。$ _ GET、$ _POST、および$ _REQUEST。

$ _get - getメソッドによって送信されたすべての値が含まれています。

$ _POST - POSTメソッドによって送信されたすべての値を保持します。

$ _REQUEST-Contert POSTおよびGETメソッドによって送信されたすべての値。

姓:

市:

メッセージ:

ボタンを押した後参加する すべてのデータはハンドラに送信されますprocess.php。 。 このフォームはその方法を使用しています役職。 すべての変数はアレイの内側に配置されます $ _post。

さてハンドラを作成しましょう。

エコー "名前: "" $ _post [fname]。 ""
»;
エコー "姓: "" $ _post ["lname"]。 ""
»;
エコー都市: "" $ _post ["City"]。 ""
»;
エコー "
»;
"あなたのメッセージ:"。 $ _post ["message"];
?>

このファイルをフォームページでディレクトリ内に配置します。 さて、フォームを使用するとき、データはハンドラに転送され、それによってユーザーデータを含むメッセージが表示されます。

array $ _Request.

スーパーグローバルアレイの使用$ _Request. 特にデータの転送方法が知られていない場合は非常に便利です。

Foreachサイクルのおかげで、$ _REQUEST配列の値を整理できます。

この例 $ _REQUEST配列のすべての値を画面に表示します。 これは、ユーザーによるデータ入力の正確さを確認するために行うことができます。 つまり、ユーザーはデータをフォームに入力し、[送信]をクリックするが、データを画面に表示するのではなく、メッセージが入力され、碑文が確認または拒否されます。 このアイデアは、多くのサイト、一般的に多くのプログラムで適用されます。

このレッスンでは、Formsを処理するためにPHPを使用することを学びました。 あなたが見ることができるようにphpです 強力なツール フォーム処理を可能にし、その後の許可のためにデータベース内のユーザーデータを保存するなど、ユーザーデータを介して多種多様な操作を作成でき、ユーザーメールにメッセージを送信することができます。

次のレッスンでは、直接処理前にユーザーが入力したデータを確認することを学びます。

ブラウザにブロックされているJavaScriptがあります。 サイトの仕事のJavaScriptを許可してください。

フォームで動作します

HTML形式は、WebページのWebページからデータを転送するために使用されます。 PHPでフォームを扱うためには、いくつかの特別な資金があります。

事前定義された変数

PHPでは、特定の環境ですべてのアプリケーションを実行するときに変更されない多数の定義済み変数があります。 それらは環境変数または変数とも呼ばれます。 これらは、ApacheのWebサーバーの設定、およびこのブラウザの要求に関する情報を反映しています。 URL値、クエリ文字列、およびその他のHTTPリクエスト要素を取得することができます。

すべての事前定義変数は$ Global連想配列に含まれています。 環境変数に加えて、このアレイにはプログラムで定義されているグローバル変数も含まれています。

実施例1。

$ Globals Arrayを表示します $ value)echo "\\ $ globals [\\" $ key \\ "] \u003d\u003d $ value
"; ?>

その結果、すべてのグローバル変数のリストが環境変数を含む画面に表示されます。 最も一般的に使われています。

変数description建物
$ _SERVER ["HTTP_USER_AGENT"]名前とクライアントのバージョンMozilla / 5.0(互換性、Googlebot / 2.1; + http://www.google.com/bot.html)
$ _SERVER ["REMOTE_ADDR"]IPアドレス144.76.94.14
getenv( "http_x_forwarded_for")内部クライアントIPアドレス
$ _SERVER ["request_method"]リクエスト方法(GetまたはPost)取得する。
$ _SERVER ["query_string"]URLで送信された符号化データを取得するように要求するとき
$ _SERVER ["request_url"]クエリ文字列を含むクライアントのフルアドレス
$ _SERVER ["HTTP_REFERER"]要求が行われたページのアドレス
$ _server ["php_self"]実行中のプログラムへのパス/ index.php。
$ _SERVER ["server_name"]ドメインウェブサイト
$ _SERVER ["request_uri"]仕方/php/php_form.php。

ユーザー入力処理

PHP入力処理プログラムは、入力型を含むHTMLテキストから分離でき、1ページに配置できます。

実施例2。

入力処理の一例

method \u003d "post"\u003e

カード番号:

なぜなら、ここでデータ転送ボタンはありません キーを押すと、1つのフィールドからなるフォームが自動的に送信されます。 .

選択されたすべての値にアクセスするために多値選択を持つ要素を処理するときは、要素名に2つの角かっこを追加する必要があります。 複数の楕円を選択するには、Ctrlキーを押しました。

例3.1。

リスト

例3.1の結果:

ティーコーヒーミルクハムチーズ

例3.2。

ex1.htmファイルからの処理リスト

    「; foreach($ valueとしての$ item)エコー」
  • $ value ";エコー"
"; ?>

例4 checkbox-flagsから値を受信します

$ v)(($ v)echo "あなたはプログラミング言語を知っています$ k!
「;elles echo」プログラミング言語$ kを知りません。
"; } } ?>
msgstr "" method \u003d "post"\u003eあなたはどのプログラミング言語を知っていますか?
PHP。
per

例4の結果:

どんなプログラミング言語を知っていますか? PHP。 per

実施例5。

"; ?>
method \u003d "post"\u003e

実際のフィールド名を気にせずにフォームを処理できます。

これを行うには、(送信方法に応じて)$ HTTP_GET_VARSまたは$ HTTP_POST_VARSの連想配列を使用できます。 これらの配列には、送信されたフォームの各要素に対してペアの名前/値が含まれています。 気にしない場合は、連想配列$ _REQUESTを使用できます。

実施例6。

転送方法にかかわらず任意の入力の処理 $ value)echo "$ key \u003d\u003d $ value
"; ?>

例7. "@"演算子を使ってボタンを押します。

">

ブラウザヘッダーの送信、ユーザーを新しいページにリダイレクトすることができます。

例えば:

サーバーにファイルを転送します。 ファイルを注ぐ。 アップロードします。

PHPはファイルをサーバーに送信できます。 ファイルを送信するように設計されたHTMLフォームには、ectype \u003d "multipart / form-data"引数が含まれている必要があります。

さらに、MAX_FILE_SIZEという名前の隠しフィールドは、ファイルをコピーするファイルの前の形式にあります。 送信されたファイルの最大サイズは、この隠しフィールドに記録する必要があります(通常2 MB以下)。

フィールド自体はファイルを転送することです - Type \u003d "file"引数を使用して通常の入力要素です。

例えば:

method \u003d "post"\u003e

ファイルがサーバーに転送された後、一意の名前を受け取り、一時ファイルのディレクトリに保存されます。 ファイルへのフルパスは、名前がこのファイルを転送するためのフィールド名と一致するグローバル変数に記録されます。 さらに、PHPは他のグローバル変数で送信されたファイルに関する詳細情報を保持します。

実施例8。

転送されたファイルの処理 ";エコー"名前: "$ _ファイル[" userfile "] ["名前 "]。"
";" echo "サイズ:" $ _ファイル["userfile"] ["size"]。 "
";" Type: "。$ _ファイル[" userfile "] [" type "]。"
"; } ?>
method \u003d "post"\u003e

サーバーへのファイルをダウンロードする例

ダウンロードしたファイルのトランスコーディングサーバに問題がある場合、コードシンボル 0x00 スペースに置き換えられます(コードシンボル 0x20)、ファイルに追加します httpd.conf。 Apacheカタログ(/ usr / local / apache)から次の行

CharsetRecodeMultipartforms OFF

実践の中で最も一般的なタスクの1つは、フィードバックの形を実装することです。 HTMLコードを書いているTobashをCSSでデザインし、ユーザーから受信したデータを処理して自分のメールに送信し、入力データを適切に入力するためのJSスクリプトを書いているPHPスクリプトを作成します。私たちのスパムのメールボックスがボットの攻撃から落ちなかったことを確認するための尊敬。

上記の瞬間のすべてが私たちのレビューおよび詳細にコメントしています。

そのため、フィードバックフォームの作成を開始します。

HTML。

まず第一に、我々はHTMLコードを書く、それはユーザーを埋めるフィールドに設定されます。 彼らは発行され続けるでしょう。 コードコードは次のようになります。

< form method= "post" action= "mail.php" > < div class = "left" > < label for = "name" > 名前: < input maxlength= "30" type= "text" name= "name" /> < label for = "phone" > 電話: < input maxlength= "30" type= "text" name= "phone" /> < label for = "mail" > Eメール: < input maxlength= "30" type= "text" name= "mail" /> < div class = "right" > < label for = "message" > メッセージ: < textarea rows= "7" cols= "50" name= "message" > < input type= "submit" value= "送ります" />

そして視覚的にはこのように見えます:

私は同意しますが、すべてが醜いですが、何も明確なものですが、私たちはただ始まったばかりです。

上記のコード詳細を検討してください。

  • < form method= "post" action= "mail.php" > …


    フォームを作成するには、フォームタグを使用する必要があります。 コードインタプリタのフォームの先頭と終わりを決定するのは彼です。 彼は、任意のタグと同様に、属性全体の属性を持ちますが、必須フォームは2つだけです。具体的にこのファイルには、ユーザーが入力したメールに送信されるPHPスクリプトが含まれています。このファイルはmail.phpと呼ばれ、問題のページと同じサイトディレクトリにあります。 )。
  • < input maxlength= "30" type= "text" name= "name" />


    次に、代わりに続きます。 これは、ユーザーが必要な情報を入力する実際のフォームフィールドです(type \u003d "text"は、テキストになると言っています)。 maxlength属性は、このフィールドフォームでユーザーを入力できる文字数を示します。 最も重要な属性はnameです - 特定のフィールドの名前を指定します。 将来のPHPスクリプトではこれらの名前にありますが、その情報の着信を処理します。 ご希望の場合は、PlaceHolder属性を設定することができます。これは、カーソルを内部にインストールするときにフィールド内のテキストが消えて表示されます。 PlaySholderの問題の1つは、古いブラウザでサポートされていないことです。
  • < label for = "name" > 名前:


    プレースホルダーを拒否した場合に使用されます。 通常のフィールドシグネチャでは、form属性は特にこの署名を含むものを報告します。 米国への関心分野の価値は名前で示されています。
  • < textarea rows= "7" cols= "50" name= "message" >


    また、入力がユーザ情報によって管理されることを意図しているので、今度のみ、フィールドは長いメッセージに対して鮮鋭化される。 行文字列、COLSのフィールドのサイズを文字数で指定します。 一般的に、彼らは私達の分野の高さと幅を設定します。
  • < input type= "submit" value= "送ります" />


    これがフォームを送信するためのボタンであるという事実は、米国のtype \u003d "submit"、および値をこのボタンの内側にあるテキストを設定します。
  • < div class = "right" >


    さらなる視覚的設計フォームにのみ使用されます。

CSS

私たちのフィードバックフォームが発表可能に見えるようにするために発行される必要があります。 次の結果を得るために:

このコードを使用しました。

フォーム(バックグラウンド:#F4F5F7;パディング:20px;)フォーム。 左、フォーム。 right(display:インラインブロック;縦方向:TOP;幅:458px;)フォーム。 right(pidding-左:20px;)ラベル(Display:ブロック;フォントサイズ:18px; text-align:center; margin:10px 0px; px 0px;)入力、TextArea(境界線:1px Solid#82858D;パディング:10px;フォントサイズ:16px;幅:436px;)TextArea(height:98px; Margin- Bottom:32px;)入力[type \u003d "submit"](width:200px; float:none; background:#595b5f;色:#fff; text-変換:大文字;)

CSSをペイントするために詳細には、私はポイントを見ません、私は重要なポイントにのみあなたの注意を引います:

  1. 各タグの登録をフォームに書き込まないでください。 コードの一対のコードが必要なすべての項目を作るようにセレクタを構築しようとします。
  2. 線を使用したり、インデントの作成、タイプ別に追加のタグを作成したりする < br>, < p> そのため、これらのタスクでは、CSSはディスプレイプロパティに完全に対処しています。ブロックとパディング付きマージン。 なぜ使わないのかについて < br> レイアウトでは、記事タグBRで読むことができますが、必要ですか。 。
  3. フォームにテーブルレイアウトを使用しないでください。 これはこのタグの意味論と矛盾し、検索エンジンは意味コードが大好きです。 視覚文書構造を形成するには、十分なDIVタグと、それによってCSSで設定された表示プロパティ(inline-blocks)と垂直方向整列:top(それらを中心に実行することはできません)画面)、私たちは彼らに必要な身長とvoilaを尋ねて、余分なものは何もありません、そして私たちが必要とするすべてのものはあります。

サイトデザインで時間を節約したい人のために、私はサイトを作成するときにCSSフレームワークを使うこと、特に自己書籍を助けることができます。 この計画の私の選択はTwitter Bootstrapです。 その使用を伴うフォームの設計上のレッスンを見ることができます。

PHP。

さて、それは私たちのフォームを作動可能にする時が来ました。

サイトのルートディレクトリに行き、そこにMail.phpファイルを作成します。これには、フォームタグのform属性のパスが以前に表示されます。

最終的には、そのコードは次のようになります。

あなたのメッセージは正常に送信されました \\ "JavaScript:history.back()\\"\u003e戻る

" ; if(!空($ _post ["name"])と!空($ _post ["phone"])と!空($ _post ["mail"])と!空($ _post ["メッセージ"])) ($ name \u003d trim(strip_tags($ _post ["name"])); $ phone \u003d trim(strip_tags($ _post ["Phone"])); $ mail \u003d trim(strip_tags($ _post ["mail"]) );; $ message \u003d trim(strip_tags($ _post ["message"])); mail(、 "あなたは:" $ name "を書きました。"
その数: "$携帯電話"
彼のメール: "$ mail。 "
彼のメッセージ:」
。 $メッセージ、); エコー。 「あなたのメッセージは正常に送信されました!
あなたは間もなく答えを受け取るでしょう
$戻る」
; 出口; )他の(エコー;出口;)?\u003e

この文書のHTMLとCSS部分の説明はスキップできます。 本質的に、これはあなたがあなたの要求と必要性を手配することができるサイトの通常のページです。 ITの最も重要な部分を検討してください - PHPフォーム処理スクリプト:

$ back \u003d "

\\ "JavaScript:history.back()\\"\u003e戻る

" ;

この文字列へのリンクを作成して前のページに戻ります。 ユーザーがこのページに落ちるのかわからないので、それは小さなJS機能で行われます。 将来的には、必要な場所でそれを撤回するために単にこの変数を参照します。

if(!空($ _post ["name"])と!空($ _post ["phone"])と!空($ _post ["mail"])と!空($ _post ["メッセージ"])) ( //ハンドラの内側の部分 その他(エコー 「すべてのフィールドにメッセージを入力するには!$ BANK」; 出口; )

ここでは、フィールドの豊かさを形チェックにネジをかけます。 あなたが$ _post ["name"]という点で引用符で述べたように、私たちは私たちのインコネインの名前属性の値を書きます。

すべてのフィールドが入力されている場合、スクリプトはその内部部分のデータの処理を開始しますが、少なくとも1つのフィールドが入力されていない場合、メッセージはすべてのエコーフォームフィールドを記入する要求が表示されます。すべてのフィールド!$ back "および参照前のページに戻る参照。最初の文字列を作成しました。

フォームハンドラの内側にDale Insert:

$ name \u003d trim(strip_tags($ _post ["name"]))。 $ phone \u003d trim(strip_tags($ _post ["Phone"])); $ mail \u003d trim(strip_tags($ _post ["mail"]))。 $ message \u003d trim(strip_tags($ _post ["message"]))。

したがって、HTMLタグと不要なギャップからユーザー入力データを清掃しまし\u200b\u200bた。 これにより、私たちに送信されたメッセージ内の悪意のあるコードが入手することから自分自身を保護することができます。

チェックは複雑になる可能性がありますが、それはすでにあなたの要求にあります。 サーバー側の最小限の保護はすでに設定されています。 さらに、JSを使用してクライアント側でやります。

JSを支持してサーバー側のフォームを保護することを完全に拒否することは推奨されません。これは非常にまれですが、Unimumesはブラウザで切断されたJSが見つかります。

タグをクリーニングした後、メッセージを送信してください。

郵便物 ( "[email protected]", "address_ightを使った文字"「私はあなたを書きました:」 $ name ""
その数: "$携帯電話"
彼のメール: "$ mail。 "
彼のメッセージ:」
。 $メッセージ、 "content-type:text / html; charset \u003d windows-1251") ;

これはこの行であり、その形成に従事し、私たちにメッセージを送信します。 それは次のように埋められます:

  1. "mail_dl_information_camers @ gmail.com" - 引用符の挿入あなたのメールを挿入する
  2. 「address_nameを持つ文字」は、メールに来るメッセージの件名です。 あなたはここで何かを書くことができます。
  3. 「あなたは書きました: "$ name" < br /> その数: "$携帯電話" < br /> 彼のメール: "$ mail" < br /> 彼のメッセージ: "$ message - 私たちはメッセージテキスト自体を形成します。$ name - 前の手順からフィールドにアピールを控えめに入力した情報を挿入します。引用符はこのフィールドのタグを意味します。 < br /> メッセージが一般的に読みやすくなるように、線の転送を行います。
  4. content-type:text / html; charset \u003d windows-1251 - 最後に、メッセージ内で送信されたデータのデータ型とそのエンコーディングの明確な指示があります。

重要!

ドキュメントの「先頭」に指定されたエンコーディング( < meta http- equiv= "Content-Type" content= "text / html; charset \u003d windows-1251" /> )、content-typeからのエンコード:text / htmlメッセージ。charset \u003d Windows-1251および一般に、PHPファイルのエンコーディングは、ロシア語または英語の文字の代わりに「KraKoyarbra」と一致する必要があります。

多くの人が明示的に送信されたメッセージのエンコーディングを示すものではありませんが、何人かのメールクライアントには将来問題があるかもしれません(読み取り不能な文字が郵便局に来る)、それを示すことをお勧めします。

適切なデータのための形式の検証

そのため、ユーザーが不注意の分野で笑わないと、入力データを確認する必要があります。

これは、サーバー側のPHPとクライアント側のJSの両方で行うことができます。 私は2番目のオプションを使います。そうすれば、人がすぐに彼が正しくなかったものを見つけて、ページに追加の遷移をすることなくエラーを修正することができるからです。

スクリプトコード同じファイル内の挿入、ここでフォームのHTML部分があります。 私たちの事件のために、それはこのように見えます:

< script> 関数checkform(form)(var name \u003d form。値。値; var n \u003d name。一致(/ ^ [A- ZA- ZA- ZA- ZA- ZA- ZA- ZA- ZA- ZA- ZA- ZA-ZA- I] + $ /)。 if(!N)(警告( 「名前が正しく入力されている場合は、エラーを修正してください」); falseを返します。 )var phone \u003d form。 電話。 値; VAR P \u003d電話機。 一致(/ ^ [0 - 9 +] [0 - 9 - ] * [0 - 9 - ] + $ /)。 if(!p)(警告(警告) 「電話機が正しく入力されていません」); falseを返します。 )var mail \u003d form。 郵便物。 値; var m \u003dメール。 一致(/ ^ [A- ZA- Z0-9] [A- ZA- Z0-9 \\。_-] * [A- ZA- Z0-9 _] * @([A- ZA- Z0-9] + ([A- ZA- Z0-9 - ] * [A- ZA- Z0-9] +)* \\。)+ [A- ZA- Z] + $ /); (!m)の場合(警告( 「Eメールが間違って入力された、エラーを修正してください」); falseを返します。 )trueを返します。 )

さて、今では通常の分析

にとって、 送信ボタンをクリックするとテストしました フォームタグにスクリプトの起動を非表示にします。

< form method= "post" action= "mail.php" onSubmit= "return checkForm(this)" >

今、ポイントでは、検証の構成を取ります。


このようなミニチェックは、当社の各分野に対して書かれています。 私が赤い広場を持つスクリーンショットに割り当てられた1つのフィールドの検査は、同様の構造を持ち、フィールドを追加するか削除する必要がある場合は、簡単にできるようになりました。

PHPの最も重要な利点の1つは、HTMLフォームでどのように機能するかです。 ここで、主なことは、フォームの各要素が自動的にあなたのPHPプログラムに利用可能になることです。 PHPのフォームの使用方法の詳細については、セクションを読みます。 これがHTML形式の例です。

例1単純なHTML形式

あなたの名前:

あなたの年齢:

この形では特別なものは何もありません。 これは特別なタグなしの通常のHTMLフォームです。 ユーザーがフォームを入力して[送信]ボタンを押すと、Action.phpページが呼び出されます。 このファイルは次のようなものかもしれません。

例2これらのフォームを表示します

こんにちは、 .
君は 年。

このプログラムの出力の例:

こんにちは、セルゲイ。 あなたは30歳です。

あなたがとられたコードを考慮に入れない場合 hTMLSpecialChars() そして (int)このコードの操作の原則は簡単で理解できます。 hTMLSpecialChars() 悪意のあるHTMLまたはJavaScriptがページに挿入されるように、「特別な」HTML文字の正しいエンコーディングを提供します。 それが数値になるべきだと私たちが知っている年齢分野では、単に変換することができます 整数それは自動的に不要な文字から私たちを和らげます。 PHPは、フィルタ拡張機能を使用して自動的に行うこともできます。 変数$ _POST ["NAME"]と$ _post ["Age"]ツールPHPのために自動的にインストールされます。 以前、$ _SERVER SuperGlobal変数を使用しました。ここでは、すべてのPOSTデータを含む$ _POST SuperGlobal変数も使用します。 お知らせ、それ 送信方法 (方法)私たちのフォームは投稿です。 この方法を使用した場合 取得する。私たちの形式の情報は、スーパーグローバル変数$ _getにあります。 さらに、データソースが問題ない場合は、$ _REQUEST変数を使用できます。 この変数には、データGET、POST、COPKIEの組み合わせが含まれています。

15年前。

HTTP仕様によると、サーバー終了時の何かの状態を変更するためにフォームを使用するとPOSTメソッドを使用する必要があります。exlowの場合、ページに自分のコメントを追加するためのフォームがある場合は、ここでは、次のページを使用する必要があります。投稿で「リロード」または「更新」をクリックすると、ほとんど常にエラーが発生した場合は「同じコメントを2回投稿してください。このページアリーナ」 tブックマークまたはキャッシュされた。

あなたのフォームがサーバーから何かを取得し、実際には何も変更しないときにGetメソッドを使うべきです。 たとえば、検索エンジンのフォームは、クライアントが何も気にする可能性があり、検索エンジンクエリの結果をブックマークまたはキャッシュすることは、ブックマークや静的HTMLページのキャッシュと同じくらい役に立つだけです。

1年前。

明確にする価値:

投稿はGETよりも安全ではありません。

GET VS POSTを選択する理由は、要求の意図などのさまざまな要因を含みます(URLがどのようにするか、URLで送信されたパラメータAを取得するかの制限です)、およびアクションを簡単に共有可能なものにするか - example Google Search Ireは、URLを共有するだけで、検索クエリを他のユーザーと簡単にコピーして共有できます。

セキュリティは、GETがPOSTよりも共有が容易であるという事実のために、ここでは考慮すれています。 例:ユーザーが結果のURLを共有し、誤ってパスワードを公開する可能性があるため、GETによってパスワードを送信する必要がありません。

しかし、ネットワーク接続自体を保護するためにTLS / SSLを展開しない場合は、GETとPOST AERが適切な悪意のある人物に傍受するのが簡単です。

HTTP(USEAL PORT 80)を介して送信されたすべてのフォームは安全であり、今日(2017年)、公共のWebサイトがHTTPS(基本的にHTTP +トランスポートレイヤセキュリティではありません)の多くの優れた理由があります。

ボーナスとして、TLSを使用している場合は、ユーザーがそこに置かれたトラフィックにコード(広告)を入手したリスクを最小限に抑えます。

トピックを続ける:
インターネット

Windowsブートディスクを作成する最も一般的な方法の1つは、この記事で説明されている方法です。 そしてより正確に創造の中で、それは遠い世界で私たちを助けるでしょう...