PHPのエンコードとデコードの詳しい解説
PHPのエンコードとデコードの詳しい解説
。この記事では主に、PHP で大きなことができる PHP のエンコードとデコードの詳細な説明を紹介します。この記事では、ASCII のエンコードとデコード、URL のエンコードとデコード、Base64 のエンコードとデコード、HTML エンティティのエンコードとデコード、バイナリ、8 進数について説明します。 、10 進数、および 16 進数の変換やその他のコンテンツについては、必要な友達が参照できます
前に書いてください
PHP は素晴らしいこともできます。PHP の構文機能と関連する関数ライブラリの古典的な使い方をまとめました。実際に大きな違いをもたらすことはできないかもしれませんが、これらの方法をマスターすると、仕事に少し役立ちます。みんなでブレインストーミングして、「PHP Can Do Great Things」をもっと盛り上げてください。転載元を明記してください(jb51.net)
2. はじめに
PHP は一般的なスクリプト言語です。その主な理由は、Web プログラムのほぼ 50% が PHP を使用していることです (不完全な統計)。 PHP は開発用に豊富な関数と API インターフェイスを提供しており、その強力な組み込み関数や拡張機能を非常に便利に使用できます。この記事は、主に利点をまとめた「PHP で大きなことを実現できる」シリーズの最初の記事です。 PHP のエンコード、デコード、基数変換の知識。
3. PHPのエンコードとデコード
1. ASCIIエンコードとデコード
ASCII(発音:英語発音:/ˈæski/ ASS-kee、American Standard Code for Information Interchange、American Standard Code for Information Interchange)は、ラテン文字をベースとしたコンピュータコーディングシステムです。主に現代英語の表示に使用されますが、その拡張バージョン EASCII は他の西ヨーロッパ言語を部分的にサポートでき、国際標準 ISO/IEC 646 と同等です。 World Wide Web により ASCII が広く使用されるようになり、2007 年 12 月までに徐々に Unicode に置き換えられました。 https://zh.wikipedia.org/zh/ASCII

PHP の基本関数には ASCII エンコードおよびデコード関数が組み込まれており、ASCII エンコードおよびデコードを簡単に実行できます。
int ord (string $string) //文字列 string の最初の文字の ASCII コード値を返します。
String chr (int $ascii) //指定されたasciiに対応する単一の文字を返します。
コードは次のとおりです:
$str = '中国へようこそ';
関数getNum($string){
$針 = 0;
$num = '';
while (isset($string[$needle])) {
$num .= $num==0?'':' ';
$num .= ord($string[$needle]);
$needle++;
}
$num を返します;
}
関数getChar($num){
$num_arr =explode(' ', $num);
$string = '';
foreach ($num_arr as $value) {
$string .= chr($value);
}
$string を返す;
}
echo "文字をASCIIコードnに変換";
echo getNum($str);
エコー「ン」;
echo "ASCII 文字 n";
echo getChar(getNum($str));
/* @OUTPUT
文字をASCIIコードに変換する
87 101 108 99 111 109 101 32 116 111 32 67 104 105 110 97
ASCIIコード文字
中国へようこそ
*/
?>
2. URLのエンコードとデコード
URL エンコードは、ブラウザーがフォーム入力をパッケージ化するために使用する形式です。ブラウザはフォームからすべての名前と値を取得し、それらを URL の一部として、または名前/値パラメータのエンコーディングとして個別にサーバーに送信します。たとえば、Web ページにアクセスすると、URL エンコードである % を含む文字列が多数存在します。
URLエンコードは通常UTF-8エンコード形式を使用するため、データ転送にはUTF-8形式を使用することをお勧めします。通常の意味での URL エンコードは、ASCII コードの 16 進数の前に % が付いているものとして理解でき、大文字と小文字の区別はありません。
コードは次のとおりです:
String urlencode(string $str) //この関数は、文字列のエンコードと URL のリクエスト部分での使用を容易にします。また、変数を次のページに渡すことも容易になります。スペースは + としてエンコードされます。
String urldecode(string $str) //指定されたエンコードされた文字列内の任意の %XX をデコードし、プラス記号 ('+') をスペース文字にデコードします。
String rawurlencode (string $str) //指定された文字を RFC 3986 に従ってエンコードし、スペースを %20 に変換します。
String rawurldecode (string $str) //この文字列内のパーセント記号 (%) の後に続く 2 つの 16 進数がリテラル文字に置き換えられる文字列を返します。 +はスペースに変換されません。
+ とスペースの変換処理を除いて、2 つの関数の使い方は同じです。rawurlencode はスペースを %20 に変換し、+ をスペースに変換しません。
コードは以下の通りです:
$str_arr = array(
「www.jb51.net」、
「http://www.jb51.net/」、
「PHP も素晴らしいことができます」、
'!@#$%^&*()_+=-~`[]{}|\;:'",./?'
);
foreach ($str_arr as $key => $value) {
echo $value,"t->t",urlencode($value),"n";
}
/* @OUTPUT
www.jb51.net -> www.jb51.net
http://www.jb51.net/ -> http%3A%2F%2Fwww.jb51.net%2F
PHP も素晴らしいことができます -> PHP%E4%B9%9F%E8%83%BD%E5%B9%B2%E5%A4%A7%E4%BA%8B
!@#$%^&*()_+=-~`[]{}|;:'",./? -> %21%40%23%24%25%5E% 26%2A%28%29_%2B%3D-%7E%60%5B%5D%7B%7D%7C%5C%3B%3A%27%22%3C%3E%2C.%2F%3F
*/
?>
3. Base64エンコードとデコード
Base64は、64個の印刷可能な文字に基づくバイナリデータの表現方法です。 2 の 6 乗は 64 に等しいため、6 ビットごとが 1 つの単位となり、印刷可能な文字に対応します。 3 バイトは 24 ビットで、4 Base64 ユニットに対応します。つまり、3 バイトは 4 つの印刷可能文字で表す必要があります。電子メールの転送エンコードとして使用できます。使用される文字は、大文字と小文字が 26 文字、数字が 10 文字、プラス記号「+」、スラッシュ「/」の合計 64 文字で、接尾語として等号「=」が使用されます。完全な Base64 定義は、RFC 1421 および RFC 2045 にあります。エンコードされたデータは元のデータよりわずかに長く、元のデータの 4/3 になります。電子メールでは、RFC 822 に従って、76 文字ごとにキャリッジ リターンとライン フィードを追加する必要があります。エンコードされたデータ長は、元の長さの約 135.1% であると推定できます。 https://zh.wikipedia.org/zh/Base64
Stringbase64_encode(string $data) //base64を使用してデータをエンコードします。
string base64_decode (string $data [, bool $strict = false ]) //base64 でエンコードされたデータをデコードします。
ケース: HTML ページの img タグは、src 属性で Base64 エンコーディングを使用して画像を出力できるため、HTTP リクエストの数を減らすことができます。
コードをコピーします。コードは次のとおりです:
$string = file_get_content('3mc2.png');
エコー ';
/* @OUTPUT
UEhQ5Lmf6IO95Yqe5aSn5LqL
*/
?>
4. HTMLエンティティのエンコードとデコード
一部の文字は HTML で予約されており、特別な意味を持っています。たとえば、不等号「
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = “UTF-8″ [, bool $double_encode = true ]]] ) //次の HTML 特殊文字を含む HTML エンティティをエンコードします
1.「&」(アンパサンド)は「&」になります
2.ENT_NOQUOTESが設定されていない場合、'"'(ダブルクォーテーション)は'"'になります。
3. ENT_QUOTESが設定されている場合のみ、”””(シングルクォーテーション)は””(または”)になります。
4.「
5.「>」(より大きい)は「>」になります
string htmlspecialchars_decode (string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ]) //この関数の機能は htmlspecialchars() のまったく逆です。特殊な HTML エンティティを通常の文字に変換します。
同じ機能を持つ関数 htmlentities/html_entity_decode もあります。この関数のペアは中国語の文字も HTML エンティティにエンコードし、文字化けを生成するため、エンコードとデコードには htmlspecialchars を使用することをお勧めします。
ケース: XSS クロスサイト スクリプティング攻撃を防ぐには、ユーザーが送信したデータを HTML エンティティに変換する必要があります。
コードは以下の通りです:
$_POST['message'] = 'テストメッセージ文字'">
について説明します。

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

セッションIDは、機密操作の前、30分ごとにログイン時に定期的に再生する必要があります。 1.セッション固定攻撃を防ぐためにログインするときにセッションIDを再生します。 2。安全性を向上させるために、敏感な操作の前に再生します。 3.定期的な再生は長期的な利用リスクを減らしますが、ユーザーエクスペリエンスの重量を量る必要があります。

PHPのセッションCookieパラメーターの設定は、session_set_cookie_params()関数を通じて達成できます。 1)この関数を使用して、有効期限、パス、ドメイン名、セキュリティフラグなどのパラメーターを設定します。 2)session_start()を呼び出して、パラメーターを有効にします。 3)ユーザーログインステータスなど、ニーズに応じてパラメーターを動的に調整します。 4)セキュリティを改善するために、セキュアとhttponlyフラグを設定することに注意してください。

PHPでセッションを使用する主な目的は、異なるページ間でユーザーのステータスを維持することです。 1)セッションはsession_start()関数を介して開始され、一意のセッションIDを作成し、ユーザーCookieに保存します。 2)セッションデータはサーバーに保存され、ログインステータスやショッピングカートのコンテンツなど、さまざまなリクエスト間でデータを渡すことができます。

サブドメイン間でセッションを共有する方法は?一般的なドメイン名にセッションCookieを設定することにより実装されます。 1.セッションCookieのドメインをサーバー側の.example.comに設定します。 2。メモリ、データベース、分散キャッシュなど、適切なセッションストレージ方法を選択します。 3. Cookieを介してセッションIDを渡すと、サーバーはIDに基づいてセッションデータを取得および更新します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
