1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
/* --------------------------------------------------------------------------------------------------
 *   CGIフォーム処理:フォーム入力されたURLをエンコードとデコード処理の利用例
 *  2015.09.22 作成 yoshi of CXMedia Inc.
 *  -------------------------------------------------------------------------------------------------
 * htmlspecialchars ( string [,flags [,encoding [,double_encode]]] ) 関数
    '&'(アンパサンド) は'&amp;' 、'<'(小なり) は'&lt;'、'>'(大なり) は'&gt;'に変換
    [flag] フラグを組み合わせたビットマスク
      ・ENT_COMPAT   - ダブルクオートは変換しますがシングルクオートは変換しません。
      ・ENT_QUOTES   - シングルクオートとダブルクオートを共に変換します。
      ・ENT_NOQUOTES - シングルクオートとダブルクオートは共に変換されません。
      ・ENT_IGNORE   - PHP5.3以降追加:「無効な符号単位シーケンスを含む文字列の部分を切り捨てる」
      ・PHP5.4以降   - ENT_SUBSTITUTE、ENT_DISALLOWED,ENT_HTML401,ENT_XML1 ENT_XHTML,ENT_HTML5が追加
 * -------------------------------------------------------------------------------------------------- */
// HTMLヘッダー表示
html_header();

// 初期値設定
$in_url "";

/* ----------------------------------------------
 *   処理分岐:CGIデータから判断:POSTされたとき
 * ---------------------------------------------- */
// POSTのフォームから送信されたかの判断
if (isset($_POST["m"]) && $_POST["m"] == 'urlenc'){
    
// POSTメソッドで取得したフォーム内容を処理
    
$in_url htmlspecialchars($_POST["in_url"], ENT_QUOTES);
    
// URL入力チェック
    
if (strlen($in_url)==0){
        echo 
"URLが未入力です<br>";
    } else {
        
// 取得したURLデータをエンコードして内容表示
        
$dsp_url rawurlencode($in_url);
        
dspEncUrl($dsp_url);
    }
}
// プログラム起動時か「戻る」リンクのGETメソッドの処理
else {
    
// 「戻る」リンクのGETメソッドのURL入力
    
if(isset($_GET["in_url"])){
        
// URLエンコードされた内容をデコード
        
$in_url rawurldecode($_GET["in_url"]);
    }
    
//デコードしたURLデータをフォーム内に表示
    
dspFormUrl($in_url);
}

// HTMLフッター表示
html_footer();
exit;

/* --------------------------------------
 *    URL入力(リンクデータ付き)フォーム
 * -------------------------------------- */
function dspFormUrl($url_path){
    
//環境変数の自分自身のプログラムのセット
    
$wk_action $_SERVER["PHP_SELF"];
    echo <<< _EOF_
<strong>■URLの入力(例:「abc.html?id=テスト」)■</strong><br>
<form action="
{$wk_action}" method="POST">
<!-- 隠しコード:hiddenタイプで、「m=urlenc」を設定 -->
<input type="hidden" name="m" value="urlenc">

<ul type="none">
<li bgcolor="#b2ce77">URL+リンクデータ入力:<input type="text" name="in_url" value="
{$url_path}" size="60"></li>
<li><input type="submit" name="submit" value=" 実行 "></li>
</ul>
</form>
_EOF_;
}

/* ------------------------------------------------------
 *   URLエンコード内容の表示と「戻り」リンクのURLの作成
 * ------------------------------------------------------ */
function dspEncUrl($urlpath){
    
// 自分自身のプログラム変数とGETメソッドのURLの作成
    
$wk_action $_SERVER["PHP_SELF"].'?in_url='.$urlpath;
    echo <<< _EOF_
<hr>
<ul type="none">
<li bgcolor="#b2ce77">■URLエンコード内容の表示■</li>
<li>$urlpath</li>
<li><a href="$wk_action">戻る</a></li>
</ul>
_EOF_;
}

/* ------------------------
 *   HTML Header 表示 
 * ------------------------ */
function html_header(){
    echo <<< _EOF_
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<title>URLエンコード/デコードとフォーム送信_CXMedia</title>
</head>
<body>
<div style="width:800px; margin:0 auto;">
<h2>URLエンコード/デコードとフォーム送信</h2>
_EOF_;
}
/* ------------------------
 *   HTML Footer 表示 
 * ------------------------ */
function html_footer(){
    echo <<< _EOF_
</div>
</body>
</html>
_EOF_;
}
?>