トップページ⇒php
1001コメント403KB

==ASP== Part 3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/07/28 23:07ID:33/XGu54
ASP について語るスレ その3

【過去スレ】
==ASP== Part 2
http://pc2.2ch.net/php/kako/1028/10280/1028024916.html
==ASP==
http://pc.2ch.net/php/kako/984/984840107.html
0242nobodyさん04/02/05 10:36ID:???
>>240
SQL Serverなら、デフォルト設定は全角半角ひらがなカタカナぜんぶ同一視じゃなかったっけ?
0243nobodyさん04/02/06 01:14ID:???
>>240
Index Serviceなら、デフォルトで同一視だよ
024423404/02/06 03:05ID:k/1f7yuZ
ASPでテンプレートっぽいことをやってみるために、こんなの作ってみたけど、どうでしょう?
パフォーマンスはあんまり考えない方向で。
改良点とかあったらきぼんです。
要basp21(ここではMatchしか使ってないけど)

↓以下次号
024523404/02/06 03:06ID:???
-- func.inc --
Option Explicit
Function IncludeRecursive(ByVal strTemplateFile, ByRef dReplaceDictionary, ByRef fso)
  Dim f, strLine, strOut, key, bobj, strVar, strReplaceFile
  Set f = fso.OpenTextFile(Server.Mappath(strTemplateFile), 1)
  set bobj = Application("bobj") 'global.asaでSet Application("bobj") = Server.CreateObject("basp21")やってます
  Do While Not f.AtEndOfStream
    strLine = f.ReadLine
    Do While InStr(strLine, "$") > 0
      strVar = bobj.Match("/(\$[^$]+\$)/k", strLine)
      If strVar <> "0" Then
        If InStr(strVar, ".file$") = 0 Then '$ファイル.file$ 形式なら
          strLine = Replace(strLine, strVar, dReplaceDictionary(strVar))
        Else
          If dReplaceDictionary.Exists(strVar) Then ' $ファイル.file$が未定義ならファイル.tplを読む(おせっかい)
            strReplaceFile = dReplaceDictionary(strVar)
          Else
            strReplaceFile = bobj.Match("/^\$(.+?)\.file\$$/k", strVar) & ".tpl"
          End If
          strLine = Replace(strLine, strVar, IncludeRecursive(strReplaceFile, dReplaceDictionary, fso))
        End If
      End If
    Loop
    strOut = strOut & strLine & vbCrLf
  Loop
  f.Close
  Set f = Nothing
  Set bobj = Nothing
  IncludeRecursive = strOut
End Function
024623404/02/06 03:07ID:???
Function IncludeTemplate(ByVal strTemplateFile, ByRef dReplaceDictionary) 'Response.Writeするもの
  Dim fso, strOut
  Set fso = Server.CreateObject("Scripting.FileSystemObject") '再帰でFSOを何度もCreateObjectしないように(意味ある?)
  strOut = IncludeRecursive(strTemplateFile, dReplaceDictionary, fso)
  Set fso = Nothing

  dReplaceDictionary.RemoveAll '使用済み辞書の消去(なんとなく)
  Response.Write strOut
End Function

Function ReturnTemplate(ByVal strTemplateFile, ByRef dReplaceDictionary) '戻り値を返すもの ループ処理用とか
  Dim fso, strOut
  Set fso = Server.CreateObject("Scripting.FileSystemObject")
  strOut = IncludeRecursive(strTemplateFile, dReplaceDictionary, fso)
  Set fso = Nothing

  dReplaceDictionary.RemoveAll
  ReturnTemplate = strOut
End Function

こんなラッパーみたいなものいらないような気はするけどなんとなく。
2種類なくても<%= %>で戻り値表示すればいいんだけどなんとなく。
024723404/02/06 03:10ID:???
■使い方
Dictionaryオブジェクトに $変数$ ってキーをセット、IncludeTemplateを呼ぶ。
$変数$ はそのまま置換、$変数.file$ ならばファイル内容で置換。
置換ファイルのなかの変数も展開される。
以下サンプル

-- page.asp --
<!-- #include file="func.inc" -->
<%
Dim dReplace
Set dReplace = CreateObject("Scripting.Dictionary")
With dReplace
  .Add "$title$", "ページタイトル"
  .Add "$header.file$", "header.tpl"
  .Add "$msg$", "本文いろいろ<br>長文でも自由に"
  .Add "$footer.file$", "footer.tpl"
End With
Call IncludeTemplate("template.tpl", dReplace)
Set dReplace = Nothing
%>
024823404/02/06 03:10ID:???
-- template.tpl --
<body>
$header.file$
<h1>$title$</h1>
<p>$msg$</p>
$footer.file$

-- header.tpl --
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<title>$title$</title>
</html>

-- footer.tpl --
<p>けつに添える決まり文句</p>
</body>
</html>
024923404/02/06 03:15ID:???
ごめん>248の<body>の位置は間違ってるです。
サンプルその2。分岐、ループはこんなかんじでむりやり。

-- table.tpl -- おおもとのテンプレート
$header.file$
<body>
<h1>$headline$</h1>
$content.file$
$footer.file$

-- table_1.tpl -- $content.file$の中身(レコードなかったとき)
<p><img src="hoge.gif">レコードはありません。</p>

-- table_2.tpl -- $content.file$の中身(レコードあったとき)
<table>
  <tr>
    <th>項目1</th>
    <th>項目2</th>
    <th>項目3</th>
  </tr>
$table_3.loop$
</table>

-- table_3.tpl -- ループ部分
  <tr>
    <td>$field1$です</td>
    <td><a href="hoge.asp?id=$field2$">$field2$</td>
    <td>「$field3$」</td>
  </tr>
025023404/02/06 03:16ID:???
-- table.asp --
<!-- #include file="func.inc" -->
<%
strSql = "SELECT * FROM テーブル"
Set rs = Db.Execute(strSql)
If rs.EOF Then 'SQL投げてなにも返ってこなければ
  With dReplace
    .Add "$content.file$", "table_1.tpl" 'なにもないよメッセージ
  End With
Else 'レコード返ってくれば
  Do While Not rs.EOF
    With dReplace
      .Add "$field1$", Server.HTMLEncode(rs("field1"))
      .Add "$field2$", Server.HTMLEncode(rs("field1"))
      .Add "$field3$", Server.HTMLEncode(rs("field1"))
    End With
    strLoop = strLoop & ReturnTemplate("table_3.tpl", dReplace)
    rs.MoveNext
  Loop
  dReplace.Add "$content.file$", "table_2.tpl" 'テーブルあった場合
  dReplace.Add "$table_3.loop$", strLoop 'ループ結果を入れる
End If

With dReplace
  .Add "$title$", "テーブル一覧"
  .Add "$header.file$", "header.tpl"
  .Add "$headline$", "テーブル表示サンプル"
  .Add "$footer.file$", "footer.tpl"
End With
Call IncludeTemplate("mail_top.tpl", dReplace)
025123404/02/06 03:21ID:???
長々とすみません。どっかのうぷろだ使ってやるべきだったか……
SubとFunctionの使い分けしないクセとかもあって失礼。
初心者なのでなんとなく作ってみましたが、こういうのは誰かがもっとマシなの
どっかで作ってるんでしょうね。
0252nobodyさん04/02/06 03:35ID:???
う、table.aspで読んでるのがぜんぶrs("field1")だとか、
table_3.tplで閉じ</a>がないとか、
なんとなく書いたサンプルなんで変なツッコミどころが多い……
table.aspのDb開いたりするあたりはなんとなく省略。
0253nobodyさん04/02/09 11:37ID:FDyP722P
あげ
0254nobodyさん04/02/11 01:35ID:???
誰かこのソースにコメントしてあげてください。
見所があるなら(゚Å゚)ホウとか。
どうしようもないんなら(´゚c_,゚` ) プッとか。
アドバイス出来ることがあるなら細かく書いてあげるとか。
ASPを利用してる技術者の皆さんにが推敲してあげれば
便利で汎用的な部品になるかもしれないじゃないですか。
ぼくは毎日仕事の始めにこのスレをチェックし、
そのたびにレスがついてないのを見て
「あぁ、今日もレスついてないのか・・・」
「あ、空ageだ・・・」
と思って心を痛めてきたんです。
お願いだから、誰か役に立つレスをしてあげてください。

オレは読むのメンドイんでパス。
0255nobodyさん04/02/11 01:43ID:???
>234
すまん。251でお前さん自身も書いてるけど、
zipかなんかにまとめてうpろだに上げてくれん?
レガシASPでテンプレートは漏れも欲しいと思ってたんだけど
今気力無くて、コピペすらしんどいんだわ。頼む。
0256nobodyさん04/02/12 00:15ID:hTvme9QK
aspを使用したページを検索でひっかける為には
hoge.htmlにincludeさせたらできますか?
それともどうやっても無理なんでしょうか。
0257nobodyさん04/02/12 01:51ID:???
>>256
13点。
もう少し日本語を勉強するか、質問スキルを上げましょう!
025823404/02/13 06:01ID:YLmnZHSD
>>251 >>255
お待たせしました。
あれからだいぶいじったので、少し整理してうぷろだに上げてみました。
http://2ch.cafenet.jp/clip/img/653.zip

いちおう、変数置換・インクルード・ループ処理・式評価の機能があるつもりです。
仕様も実装も完全に思いつきですが、
なにぶん素人がみようみまねで作ってるんで、
見所があるなら(゚Å゚)ホウとか、
どうしようもないんなら(´゚c_,゚` ) プッとか、
アドバイス推敲とか、どしどしおながいします。

サンプルとして、たまたま見かけた
ITmediaエンタープライズ「WebプログラミングPHP言語入門」
http://www.itmedia.co.jp/enterprise/0401/23/epn01_3.html
http://www.itmedia.co.jp/enterprise/0401/23/epn01_4.html
のPHPスクリプトをむりやり移殖してみています。
025923404/02/13 06:03ID:???
さっそくレス先まちがえた… _| ̄|○
0260nobodyさん04/02/17 03:30ID:v8l0G8dl
空age
0261nobodyさん04/02/17 03:46ID:wO4OnFg8
aspって
エーエスピーていうんだよ
0262nobodyさん04/02/18 00:53ID:???
>258
ごめん。ダウソはしたけどまだ全然見てない。
っちゅーか今手持ちの仕事が全焼寸前。火付けたの漏れなんだけど_| ̄|○
026325404/02/18 02:46ID:???
>258
一応落として読みました。
readmeにも書いてあったけど、いかにも重そうな感じがしました(動かしたわけじゃないけど)。
けど、それよりいい方法があるかって言われると思いつかなかったりする。
汎用性を犠牲にして置換用のキー名は固定し、
キー名=文字列の単純置換をする程度なら実用性はある気はします。
つーか、今の仕事ではそういう仕様で実際に簡易テンプレートとして使ってます。

開発する人が便利に使うテンプレなのか、ユーザにメンテさせる(ユーザに対するインタフェースとしての)
テンプレなのかってのも論点にしなきゃいけないのかなーと思ったり思わなかったりしてます。
少なくとも、開発にとってのみ都合のいいテンプレートであるとしたら、それによって
レスポンスが明らかに落ちる(であろう)事なのに、「開発効率が上がります」じゃ客に言っても
通用しない気もするこの頃。
コードの変更なしにテンプレートをいじるだけで****出来ますよ。という訴求力がないと客は納得してくれない希ガス。

ほろ酔いなので何言ってるか自分でもよくわかんないわけですが、とりあえず言えることは、
ちょっと前に煽り気味のレスつけといて今さらマジレスすることになるとは思わなかった罠。
また気がついたことがあったら書きますよ。当分ASPの現場抜けられそうもないし。

>262
おつかれさまです。ヒマな時にでも先達の貴重な意見を期待しております。
0264nobodyさん04/02/20 01:34ID:???
>258
262っす。
いやー、もう盛大に燃えてるんで火事場はほっといて(ぉぃ)資料集めとか言いつつ
おっことして試してみますた。
速度を見るって意味では九九の表くらいしかやってないんだけど、
まぁまぁじゃないかな。少なくともうちの会社にあるテンプレートと称するものよりは
よい希ガス。(変数置換以外はASPコード残してExecuteするのだわ、これが)
ただ、263=254も言ってる通り、これが利点だ!!ってのがないと提案しにくいかも。
漏れの勤め先はデザイナーさんも抱えてるんで、協業体勢が取れる、ってのを
利点として上にプッシュする材料にはなるけどね。
しかし何かこう、見ててHTML::TemplateとかVelocityみたいのできねーかな……
とか思ってしまう辺り、漏れってコーヒー一杯の注文に鍋で沸かして持っていく
タイプなんだろうかw デモソーナッタラスクリプトジャダメダロナ
あ、クラスのうまい使い方だけど、最近なんとなくコツがつかめてきた気がする。
googleで「VBScript Class」って全言語検索かけるとなかなか巧い例がひっかかるので
一度お試しを。

あ、>263殿、一応P(onkotsu)G(enerator)名乗って5年ほどですが、Webの世界は
まるっきりどしろーとなんで、お互い精進しましょうや。
0265 04/02/20 19:13ID:???
直接アクセスできないようにする方法を教えて下さい。

<a href="dat/hagehage.zip">hage.zip</a>をクリックして参照は許して、
右クリックでURLをコピーしてブラウザのアドレスバーに
http://hogehoge.jp/dat/hagehage.zipと指定してのアクセスはゆるさない。

できればsessionに持っているログイン情報がないとき、REFERERが不正
な時に禁止したいのですが・・・
0266nobodyさん04/02/20 22:48ID:???
>>265
答えでてんじゃん。
http://hogehoge/download.asp?dir=dat&file=hagehage.zip
とかでやればいいし。

それより、AccessのMDBってADOからSelectするとき一旦ファイル全てをメモリに入れるんですかね?
それともファイルが論理構造になってて対象テーブルのみメモリに読みだすのかな?
0267nobodyさん04/02/21 02:09ID:???
何か分からなくなってきたんですが
Sessionって使わない方がいいんでしょうか。
IE以外はクッキーOFFにしたら成立しないし、下手にデータを放り込むと
サーバ資源を圧迫するからどーとか……
UUIDでも自前で生成して、毎回hiddenフィールドに仕込んで
クライアントを識別するとかした方がいいんでしょうか?

ああ、何かもうASPでサイト構築なんてできない気がしてきた……
(ASPでガンガン動いてるサイトが少なからずあることは知ってますけど)
0268nobodyさん04/02/21 11:24ID:bYLJ5Yhw
>>267
Form(POST)で囲ってhiddenキー埋め込んで、
onclick="javascript:form1.submit();"
をすればIriaだろうが何だろうがブラウザからクリックしないとダウンロードできなくなるよ
0269nobodyさん04/02/21 12:24ID:???
266ですが、ここは人いなさそうなん他で聞いてきます。
027026704/02/21 13:50ID:???
>268
ごめん。漏れ<>265っす。
0271nobodyさん04/02/21 15:51ID:plwAZOQX
.NETとかいう代物も出てきて、近い将来ただのASPというのは使われなくなって
しまうのでしょうか?
今からASPで何か構築してみようと思うのですが、.NETから始めるべき?
0272nobodyさん04/02/21 16:32ID:???
>>271
ASPやPHPで全然問題ない
0273nobodyさん04/02/21 17:04ID:???
>>271
ASPはもう不要でしょ
0274nobodyさん04/02/21 18:46ID:???
MSがサポートしなくなるだろうから、全くの新規でASPってのは徐々に無くなっていくと思う。
ただ、
・既にClassic ASP(.NETのつかない昔ながらのASP)で、いくつかWebサイトが動いている
・そこに新たにサイトを構築したい
・マシンの管理の都合で勝手にPHPとかTomcatとか.NET Frameworkも入れられないし、
 社員のスキル、納期を考えると未経験の技術は使えない

とかゆーことになると「じゃ今回もClassic ASPでやるしかないか」となることもあるだろう。
つか、今漏れが担当してるのがそのパターン。
何かこんなん、アンチパターンになかったっけ?
0275nobodyさん04/02/21 21:15ID:???
ネイティブASPで十分だと思うけどな。結構色々できるし。
0276nobodyさん04/02/21 21:32ID:???
後でASP.NETに移行するのも簡単だし
0277nobodyさん04/02/21 23:35ID:???
簡単か?

ASP.NETでMS推奨のいろいろな機能を使うってのは、
本来は存在しないイベントをむりやりハンドリングする代物が多すぎて気持ち悪い、
って意見はけっこうあるね。
だからシンプルなレガシーASPとかのほうがいいとかなんとか。
シンプルなぶん、大規模開発するにはかなりノウハウが必要だけどな。
0278nobodyさん04/02/22 01:27ID:???
>277

>本来は存在しないイベントをむりやりハンドリングする代物が多すぎて気持ち悪い、
>って意見はけっこうあるね。

しかし、レガシASPで組んでて、
「このページをMe(thisでも$selfでもいいけど)扱いできたらなー……」
って思うことない?ないでつかそうでつか(´・ω・`)
0279nobodyさん04/02/22 02:11ID:???
っていうかASP.NET使うほどのWebシステムってそうそう無いぞ

ほとんどがレガシASP+ADO+BASPで十分
0280nobodyさん04/02/22 03:39ID:???
ちょっとVBSでのクラスを試してみようと思ったんだけど・・・
コンストラクタ(Class_Initialize)って、引数を持てないの?
初期化処理を別にやらなきゃならんなら、コンストラクタの意味がないような・・・
0281nobodyさん04/02/22 23:39ID:???
>280
まぁ、そうでもないよ。ほっといたらフィールドは全部Emptyだし。
Property Get(でもFunctionでもいいけど)の結果を
いちいちIsEmpty()に掛けるって何かカコワルイ希ガス。
それにコンストラクタで余りややこしいことスンナ!!ってのもあるでしょ最近。
0282nobodyさん04/02/22 23:51ID:???
>280
あ、蛇足だけど。
・COMコンポーネントの中にユーザーClassのインスタンスは入れられない
(例えばScripting.Dictionaryに入れるのもダメ。取り出したらプロパティもメソッドも呼べなくなってる。
Session、Applicationも無論同じ)
・逆に、ユーザーClassのメソッドetc.にCOMオブジェクトを渡すのもNG
(例えばRecordsetを渡して、メソッドの中で処理しようとしても、メソッドの中に
入った時点でRecordsetはプロパティもメソッドも呼べないモノになってしまう)
・Classの中に、COMオブジェクトを完全に封じ込めるのは可能
(プロパティの管理に、PerlっぽくScripting.Dictionaryを使うとか。
この場合、外にはDictionaryを直接見せない)

激しくガイシュツとは思うが、参考までに。
0283 04/02/23 09:46ID:???
>>266
すいません。まだ理解していません。

download.aspの中身は、ファイルを読み込んでresponse,writeする処理なのでしょうか?
0284 04/02/23 10:39ID:???
>download.aspの中身は、ファイルを読み込んでresponse,writeする処理なのでしょうか?

download.aspの中身は、ファイルを読み込んでresponse,binarywriteする処理なのでしょうか?
面倒なので、リダイレクトでなのとかしたいのですが?
0285nobodyさん04/02/23 21:24ID:???
リダイレクト出来ちゃったら直林も出来ちゃうと思うのですが。
オレは何か勘違いしてるだろうか。
0286nobodyさん04/02/23 21:54ID:???
>>285
確かに直林できる場所にファイルを置くことになるが、
ユーザはそのアドレスを知り得ない。

でもパケットモニタしたらわかっちゃうかも
0287nobodyさん04/02/23 21:57ID:???
ステータスバーに表示されちゃうんとちがう?
028823404/02/23 22:18ID:Af0KmrX8
需要があるのかどうかわからないけど、テンプレートライブラリをver upしました。
http://2ch.cafenet.jp/clip/img/829.zip

不具合を細かく直したほか、クラスにまとめてカプセル化してみました。
これでだいぶすっきりしたと思います。
計測したりしてませんが、重さも思ったほどたいしたことないみたいだし
これぐらいなら汎用で実用になるんじゃないかな?

テンプレート関係の関数とDB操作関係の関数がごちゃまぜに
同じクラスになってるのがかっこわるい気もしますが、
自分の今回の用途としてはこれで便利なので、とりあえずこのまま。

いまさらながらPHPのSmartyの存在を知って資料を眺めてみましたが、
PHPでプリプロセッサを作ってさらにPHPファイルを生成する、って発想は
なかなかおもしろいですね。めちゃめちゃ高機能だし。

でも高機能すぎて参考にならないやって思って他をあたってみると、
PHP4 テンプレートクラスライブラリ改 (http://www.daiwakantei.co.jp/pc/tmpl2sa.html)
ってのはけっこう手ごろなかんじです。方向性がちょっと似てるっぽい?
今回はこれを参考にしてメソッド名を変更しました。
もっと早く知ってたら、いろいろ実装をパクったのになぁ。

余裕があったらASP+VBSで移殖してみたいけど、
尻に火がついてもはやテンプレートライブラリをいじってる場合じゃないんで
ずーっと先に気が向いたら考えます。
028923404/02/23 22:54ID:???
>ただ、263=254も言ってる通り、これが利点だ!!ってのがないと提案しにくいかも。
>漏れの勤め先はデザイナーさんも抱えてるんで、協業体勢が取れる、ってのを
>利点として上にプッシュする材料にはなるけどね。

開発効率向上+保守性向上、ですかねぇ。
今回は、デザイナーさんと2人で組んでの仕事です。
で、これが終わったらわたし退社しちゃう予定なんで、なるべく引き継ぎがらくちんなように、
手順がはっきりするように、作ってみました。

前任者から数年前に引き継いで手を入れてた別のサイトがあるんですが、
もともと素人コードなうえに、素人に毛が生えた程度の自分がいじっちゃって、
山のような仕様変更にその場しのぎを繰り返しまくり、もぉつぎはぎしすぎて
自分以外は読めたもんじゃない……。引き継ぎにめちゃめちゃ苦労しそう……_| ̄|○
こんなにぐちゃぐちゃになる前に、思い切ってどっかで書き直しとけばよかった……。

あとそれは、もともと自前でデザインもやってたものを、あとからデザイン外注するように
なったので、デザイナーさんから届いたHTMLをぐちゃぐちゃ埋め込みASP化する作業に
やたら手間取ったりミス発生したりしてました。反省。

>レスポンスが明らかに落ちる(であろう)事なのに、「開発効率が上がります」じゃ客に言っても
>通用しない気もするこの頃。

今回は、サーバーマシンはけっこう早いやつを使ってるんですが、アクセス数は
たいした量にならない(ログイン制で1日数十人程度?)っていう変な案件なんで、
ちょっとぐらい重くてもあんまり問題ないです。(攻撃くらったらわかんないけど……)
でもまあ、テンプレートから動的生成するなら、これぐらいの負荷は許容範囲じゃないかな?
チューニングの余地は山ほどあると思いますが。
029023404/02/23 22:57ID:???
あ、仕事関係の話をちょっと出しましたが、
これを公開する権利関係にはべつになにも問題ないです。
気にしないでください。
0291nobodyさん04/02/24 10:32ID:lNj06MAF
IPアドレスからホスト名を取得したいんですが、皆さんのおすすめの方法は何ですか?

↓こういうコンポーネントもあるみたいなんですが、
http://www.vector.co.jp/soft/winnt/prog/se202148.html
信頼性とかどうなんでしょう。

BASP21を使用して、nslookupを実行して標準出力を受け取る、という方法もありそうですが、
スマートじゃないですよね。

なんかPHPのgethostbyaddrみたいな手軽な方法はないですかね?
0292nobodyさん04/02/24 14:28ID:???
2chでは test.cgi/12345678/l50 というURIでtest.cgiに"/12345678/l50"という
パラメータを渡して処理しているようですが、これをaspで実装させることは可能でしょうか?
test.asp/12345678/l50 → test.aspを実行、12345678/l50をパラメータとして渡す
というように

可能な場合はサンプル等があればご紹介ください。

以上よろすくおながいすます
0293nobodyさん04/02/24 15:32ID:???
IISにISAPIフィルタを設定する。

てか、目的ズバリのやつがあった。
EZ-NET URLParamFilter http://program.station.ez-net.jp/products/isapi/URLParamFilter/index.asp

>これを使用することで、たとえば GET メソッドで /sample/index.asp?param=data のような引数を使用せずに /sample/data/ というような感じにすることが出来ます。
029429204/02/24 15:44ID:???
>>293

感謝!です
さっそく検討してみます
029529204/02/24 17:30ID:???
293のテストですが、フィルタに
TEST1,/test/*,/test/test.asp,,,1
を設定
http://localhost/test/test.aspを作成後
http://localhost/test/test.asp/123-500
でアクセスすると
Request.ServerVariable("HTTP_URLPARAM_TARGET")に 123-500がセットされてますた
当然 test.asp/l50 他でもきちんと値を拾うことができております

特にこれを使ってどうこうというのは無いのですが、時間があったらaspで
2chスクリプトクロンでも作ってみようと思います
0296nobodyさん04/02/25 00:38ID:???
>>295
それって、http://localhost/test/test.asp/12345678/123-500 みたいに
.aspのうしろが階層になってても大丈夫ですか?
大丈夫なら自作のdownload.aspをちょっと改造してみよう
029729204/02/25 09:00ID:???
>http://localhost/test/test.asp/12345678/123-500

前述のフィルタできちんと取れますよ
servervariableに
HTTP_URLPARAM_OPTIONS:1234567890
HTTP_URLPARAM_TARGET:100-120
という値が格納されてます
0298nobodyさん04/02/27 17:38ID:???
おまいらに質問があります

SQLServerからレコードを抽出してCSVを作成しているASPがあるのですが、
CSVファイルのサイズが大きくなってネットワークの負荷が無視できないものに
なってきたので、サーバーで圧縮して直接LZHかZIPで出力したいと
思っております。

BASP21使って外部コマンドでテンポラリファイルからLZHファイルを作成して
出力することはできるのですが、ASPが稼動しているマシソの鯖ポリシーで
tempファイルの作成は禁止されております(一瞬でも不可・・・)。配列から
LZHorZIP圧縮された配列を作成するActiveXライブラリをどなたかご存知
ないでしょうか?

サンプルがあればご紹介ください
0299nobodyさん04/02/27 22:36ID:/hLQFYeS
ASPが使えるホスティングサービスってありますか?
MSDEとかSQLServerが入ってるとモアベター
0300nobodyさん04/02/27 23:04ID:???
>>298
やったことないけど、UnLhaCom + UNLHA32.dllでLZHが扱えるんじゃないかな?
http://www.csdinc.co.jp/archiver/lib/activex/unlhacom.html

UnlhaExtractMem, UnlhaCompressMem ってメソッドで、
メモリ上で圧縮展開できるみたいだよ。
0301nobodyさん04/02/28 02:15ID:???
>298
てゆーか、テンポラリファイル一つ作れない鯖に
ActiveXコントロールなんて入れられるのか?
0302nobodyさん04/02/28 02:26ID:???
ASP+VBSだけでZIPやLHAアルゴリズムを実装してみるとか。
0303nobodyさん04/02/28 03:54ID:???
>302
スクリプトタイムアウト起こしそうw
0304nobodyさん04/02/29 10:08ID:???
>>295
それって、デフォルトで開くページに、index.htmlなどにまじって
test.aspを追加しておけば、

http://localhost/test/test/12345678/123-500
って指定で、test.aspを呼び出して値を拾うこともできるんでしょうか?
できるんだったら、そのほうがかっこくて応用も広そうなかんじ。
0305nobodyさん04/02/29 12:18ID:???
>>304
MATCHESにtest
TARETにtest
OPTIONSに12345678,123-500がセットされます
030629804/03/01 09:18ID:???
>>300
ありがとうございます。
早速テストしてみたところunlhacomがエラーバソバソ

ドキュメントを読み直したところ
>注意)VBScriptではUnlhaCompressMem,UnlhaExtractMem,定義済み定数が使えません。
_| ̄|○だめですた
030723404/03/01 18:47ID:???
ASPテンプレートクラス、自分で使いながら地道に機能追加中。
とりあえずテンプレート中に if〜else〜endifブロックを記述できるようになりました。
まだネスト不可なんで、ネスト可にしたらまたどっかにうぷして反応みてみます。
でもこれ、自分以外に需要あるのかなあ。

いまごろまだテンプレートエンジンいじってるような進捗状況、スケジュール的に…_| ̄|○
0308nobodyさん04/03/02 10:38ID:???
テンプレートエンジンでこんなん見つかったけど…
ttp://park11.wakwak.com/~util/software/aspobjects/document/index.html
030923404/03/02 18:55ID:???
う、やっぱりあったか。探し足りなかった。
こっちのほうがシンプルだし、dllで軽そう。きっちりネストもできるし、ブロックは行単位じゃないし。
しかもおまけにVectorオブジェクトもついてるし。
ちょうどVectorクラスも自作してたところなんだよなあ……。
Vectorは必要最小限しか実装してないんで、公開はしませんが。

ただ、自作エンジンはテンプレート中にeval()でなんでも埋め込めるんで、
いいかげんだけどそのぶんの自由度はあるかも。
0310nobodyさん04/03/02 21:30ID:???
ここって、、Apache::ASPはだめぽ?
0311nobodyさん04/03/03 00:52ID:???
Apache::ASPって何?ってレベルの人間ならここに一人いますけど、
基本的に過疎スレなので有用な情報が得られるかはわかりません。
とりあえず何でもいいから書いてみてくださいな。
031230804/03/03 19:01ID:???
ほんとはaspobjectsの存在はだいぶ前から知ってたんだけど、
234さんが熱心に開発されていたようだったので言い出せなかったの…ゴメンネ
0313nobodyさん04/03/04 23:37ID:???
>>311
ChiliSoftASPだろ?
使ったことないけど、FileSystemObjectのCreateObjectも模倣して動くらしい
0314nobodyさん04/03/05 00:08ID:???
へえ。こんなのあるんだ。
レガシASPからの移行以外に使う人いるんだろうか。
0315nobodyさん04/03/05 01:59ID:???
Apache::ASPとChiliSoftASPは違ったような。
Apache::ASPはオープンソースで、フリーに使えた希ガス。
ttp://www.apache-asp.org/

っても、MSのASPでPerlScript使って開発してる例がどれほどあるか、が問題だが。
IIS PerlScriptって確かコメントに日本語使えないんじゃなかったかな……
漏れもApache::ASP使ってみたいけど、WinだとApacheとmod_perlの
バージョンがいろいろややこしくて、環境作るのマンドクセんだよね……
0316 04/03/05 10:08ID:???
フレームを使用しています。ASP内で、自らのTARGETをTOPにする方法はありますか?

IISのカスタムエラー設定でASPエラー(500-100)を自作ASPにしているのですが、
フレーム分割したさきでエラーが起こった時も、TOPにエラー表示したいのです。
0317 04/03/05 14:51ID:???
解決しました。以下のJavascriptを吐くようにしました

<script type="text/javascript">
<!--
if (top.frames.length!=0)
top.location=self.document.location;
// -->
</script>
0318316-31704/03/05 18:19ID:???
やっぱ全然ダメ
0319nobodyさん04/03/05 18:22ID:???
ASPエラーのページ自作しる
0320nobodyさん04/03/07 22:53ID:cvCav3Bn
サーバーマシンを変えてIISをあらたにインストールしたら
いままで正常に表示されていたASPが文字化けするようになりました。
具体的には

Response.Write "メールが送信されました。"

というのが

???????????????

という感じで?の羅列になります。

<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=x-sjis">
は指定してあるんですけど、原因がわかる方いませんか?
よろしくお願いします。
0321nobodyさん04/03/08 01:19ID:???
もう
charset=x-sjis
は
charset=Shift_JIS
でいいんじゃねーの

件の問題はこれとは関係なさそうだが。
0322316-31704/03/08 09:23ID:???
>>319
エラーのページは自作していて、
1.デフォルトの500-100のエラーのページのように詳細を出すようにしたい。
2.フレーム分割しておるが、エラー画面はトップに出したい。

この1.2.を満たすのが難しい、ということです。
0323nobodyさん04/03/08 10:30ID:???
2は
<script language="javascript">
function toTop ()
{
    if (window.top.location.href != window.self.location.href)
    {
        window.top.location.href = window.self.location.href;
    }
}
</script>
</head>
<body onload="toTop();">
0324316-31704/03/08 17:14ID:???
>>323
それだとエラーが発生したASPが2回走ってしまうのです。
0325nobodyさん04/03/08 17:21ID:???
それじゃあErrorの時だけTOP表示なんざ無理だわな。
0326 04/03/09 14:42ID:PapKlbMP
質問です
ASPで、クライアントがブラウザの×ボタンを
押した場合の検地の方法を教えてください

ASPでログインしていて、ログアウトされてしまった
場合、次のブラウザでブックマークで開かれてしまって、
ログインせずにその画面にいけてしまうので、対策が知りたいです

すみませんが、ご教授ください
0327nobodyさん04/03/09 17:07ID:???
よくわからんが、それはログアウト処理がおかしくないか?
Session.Abandon したら次回はログインが必要だと思うが。

あ、それともログイン後の画面の処理がおかしい?
要ログインなページはすべて、冒頭部分に
Session変数の有無をチェックするルーチンを入れておくように。
ログイン入力画面をスルーされても、そこではじく。
0328 04/03/09 17:15ID:???
>>327さま
ありがとうございます セッション処理って
のをやっていませんでした

ログイン処理は、xmlで判定しているだけで、
その後のセッション処理は・・・

ああ 全部の画面にセッション判定を
入れておくんですね わかりました ありがとうございます


0329326=32804/03/09 17:33ID:???
時間による、セッション切れはなんとかできそうです

でも、やはり×を押してブラウザを遮断してクライアントのセッションが
切れたよって検地しないと、つながったままってこと
になりますね

ううブラウザが落ちたってサーバがわかる方法ないかなあ


0330nobodyさん04/03/09 17:48ID:???
ブラウザのウィンドウ全て閉じたらセッションは切れるはずだが...
他のウィンドウが開いていたらセッション保持しているけど。
033122904/03/09 18:06ID:PapKlbMP
>>330
そうなんですか?他のIEとかが
継続してセッションを保ってるんですか
すごいな
そういうことでしたら、ブラウザ一コでやれって
条件つければ、セッション管理できそうだな

いやあ ありがとうございました ほんと助かりました
0332nobodyさん04/03/09 21:47ID:cpGa4q71
>>320
basp21 と BinaryWrite 使ってるでしょ?
一旦セッション切ればOK
0333nobodyさん04/03/09 22:28ID:???
>>229
あ、いちおう念のため言っておくと、IISでセッションを使うと
アクセスするのにCookie必須になるからね。
携帯対応とかを考える必要があるなら注意。
0334nobodyさん04/03/09 23:07ID:5BH0aBGM
バイナリーを文字列に変換したいんだけど、
http://www.kcat.zaq.ne.jp/yumenokunisha/develop/bin2str.htm
ここのソースコピペして実行してみたんだけど、たまに誤変換で「・」に変換されてしまう・・・
どなたかこのソース修正してくれませんか、
あと、ほかの方法でいいのがあったら教えてください。


Function Bin2Str(byteData)
  Bin2Str =""
  i = 1
  Do While i <= LenB(byteData)
    u = Hex(AscB(MidB(byteData, i, 1)))
    If ((CInt("&H" & u) >= &H81) And (CInt("&H" & u) <= &H9F)) _
      Or ((CInt("&H" & u) >= &HE0) And (CInt("&H" & u) <= &HEF)) Then 'Code Page 932
      l = Hex(AscB(MidB(byteData, i + 1, 1)))
      intChar = CInt("&H" & u & l)
      s = Chr(intChar)
      i = i + 2
    Else
      intChar = CInt("&H" & u)
      s = Chr(intChar)
      i = i + 1
    End If
    Bin2Str = Bin2Str & s
  Loop
End Function
033533404/03/09 23:15ID:5BH0aBGM
伝え忘れていました、basp21は使えないんです。
0336nobodyさん04/03/09 23:18ID:???
>>334
ほかの方法
basp21.Base64()
033733604/03/09 23:19ID:???
遅かった…… _| ̄|○
0338 04/03/10 10:50ID:Srya+a8F
昨日セッションの件で相談したものですが、
またわからない事態が出てきました

ASPのログイン画面から別の画面に遷移する場合は
セッションは引き継がれてましたが、
別のウィンドウを開いたら、セッションはNothinになってしまいました

これ、別のウィンドウにも同じ画面のセッションを引き継がせたい
場合、どうすればいいでしょうか?
033933804/03/10 14:28ID:Srya+a8F
うう だれか教えてください
0340nobodyさん04/03/10 15:13ID:???
>>338
普通引き継ぐぞ...
っていうかアプリケーション終了するか、サーバー側で明示的にセッション終了しない限り
セッションクッキー破棄しないはず。
もっぺんスクリプトをよく見直してみてはどうだ?
アイテム名タイプミスしてセッション変数呼んでないか?
034133804/03/10 15:18ID:Srya+a8F
>>340
どうも レスありがとうございます

現在は、ログイン画面ー>メイン画面(どちらも同じブラウザ)という風に移行する場合は、
セッションは引き継がれています
それで、メイン画面から、response.redirectで子供のブラウザを
開くというときなんです

要するに、ログインしていない場合、ログイン画面でセッションは作られていない
から、直接それらメインの子供のウィンドウにお気に入りでいけてしまう
というのが問題なんです
0342nobodyさん04/03/10 15:27ID:???
子供のウィンドウでもログインしてるかどうかチェックするだけじゃダメなのか?
■ このスレッドは過去ログ倉庫に格納されています