ASPでWebページを作る
ASP(Active Server Pages)は、Microsoftのサーバーサイド Web 技術です。IIS上で動き、サーバーのコードと HTML を組み合わせます。現在の主流は ASP.NET Core ですが、VBScript の古典的な ASP を使っている既存システムは今も多くあります。この記事では、リクエストの処理、フォームの読み取り、知っておくべき実践を説明します。
テストに関する注意:この記事を書いたコンピューターには IIS と ASP がないため、コードはここでは実行していません。IIS と ASP を導入して自分でテストしてから使ってください。
必要なもの
- IIS(Internet Information Services)と ASP 機能が有効な Windows
- IIS の Web フォルダ(例:`C:\inetpub\wwwroot\demo`)
仕組み
最初の ASP ページ
`hello.asp` を作り、次を入力します。
<%@ Language="VBScript" %>
<html>
<body>
<h1>สวัสดี ASP</h1>
<p>เวลาบนเซิร์ฟเวอร์: <%= Now() %></p>
</body>
</html>
`<% ... %>` はサーバーで実行されるコードで、`<%= ... %>` はその値をブラウザへ返す HTML に書き出します。
フォームのデータを読む
<%@ Language="VBScript" %>
<%
Dim name
name = Request.Form("name")
%>
<form method="post" action="greet.asp">
ชื่อ: <input type="text" name="name">
<input type="submit" value="ส่ง">
</form>
<% If name <> "" Then %>
<p>ยินดีต้อนรับ <%= Server.HTMLEncode(name) %></p>
<% End If %>
`Request.Form` は送信された値を読みます。`Server.HTMLEncode` は、利用者が HTML やスクリプトを埋め込むことを防ぎます。
データベースへの接続
古典的な ASP は通常 ADO でデータベースに接続します。ユーザーの入力をそのまま SQL の文字列に連結せず、必ずパラメーターを使ってください。連結すると SQL インジェクションの原因になります。
よくあるミス
- **入力値をエンコードせずに表示する:** 必ず `Server.HTMLEncode` を使います。
- **ユーザー入力から SQL 文字列を組み立てる:** SQL インジェクションが起きます。パラメーター付きのコマンドを使います。
- **IIS で ASP 機能が無効:** コードが実行されず、ソースがそのまま表示されます。先に機能の導入を確認します。
次のステップ
新しいプロジェクトなら、継続的に保守されている ASP.NET Core を検討してください。既存の ASP システムは、セキュリティ対策を加えながら少しずつ移行するのが安全です。
まとめ
ASP は IIS を通じてサーバーでコードを実行し、HTML と組み合わせます。重要な点は、表示する値のエンコードと、データベースとのやり取りでパラメーターを使うことです。