ユーザが入力した日付けデータをチェックする
方法をしりたいのですが。

例えば、「2/31」 はNGにする。など

このQ&Aに関連する最新のQ&A

A 回答 (3件)

 一発でポンとやってくれるような機能はないので、日付けを年、月、日に分解し、1つ1つ比較する方法が一番でしょう。


 月が1~12の間にあるか、1月なら日が1~31の間にあるか、2月なら1~28の間にあるか(このとき、年がうるう年なら29にする)などの処理をするプログラムを組むわけです。

 配列に月の最終日を入れておけば比較的容易に判定できます。
    • good
    • 0
この回答へのお礼

やっぱり、一発ポンはないわけですね。
2月以外は決まってるから
こんな具合に作ります。

お礼日時:2002/03/27 13:28

クライアント側のJavascriptを使用するなら判定できますよ。


もちろんcgiでやるよりも実効性は低いですが。
Date.toString()の結果と元の文字列を比較します。
    • good
    • 0

入力フォームを<select>で選ばせたうえで、


if (($month==2) && ($day>29)) { &error; }
みたいにハネればよいのでは?
    • good
    • 0
この回答へのお礼

なるほど。
やはりこんな具合にやるわけですね。

お礼日時:2002/03/27 13:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCGI::Sessionでのユーザとの紐付け方法

【できていること】
Cookieの発行
Cookieへのデータの書き込みと参照

【ここから質問】
ログイン認証があるWebアプリケーションにおいて、セッション情報(ID)とユーザ情報はどのように紐付けているのでしょうか?

(ログイン成功時に生成するセッションIDとユーザ情報の紐付け情報をどこにどのように保持するのかがわかりません)

Cookie(クライアント側)はセッションIDのみを保持しておいて、サーバ側で紐付け情報を保持するのだと思うのですが、CGI::Sessionではセッション生成時に作成されるcgise_XXXXファイルに書き込むのでしょうか?(そのメソッドか、具体例があれば教えてください)

それとも紐付け専用のテーブルを用意しておくのでしょうか、もしくは、ユーザ情報のテーブルにあらかじめセッション情報を格納するカラムでも用意しておくのでしょうか。

よろしくお願いします。

Aベストアンサー

セッションの保存領域に追加の情報を格納したいという質問でしょうか?
たとえば
$s->param('user', 'XXX');
で保存できます。セッションファイルを見てください。'user' => 'XXX' という文字列があるはずです。
取得したいときは、
$s->param('user');
で取得できます。

Qパイプをopenして/usr/bin/grepを実行する方法

子プロセスで"-|"でopenして、そこに標準出力で/usr/bin/grepの実行結果を出力し、そのデータを取得したいです。
$pid = open(FIFO, "-|")をした時点で、$pidにはプロセスIDが入っています(0以外)。
0のときは子プロセスが起動しているのでgrepを実行し、0以外であれば標準出力の内容を取得するというロジックでいいと考えたのですが、一度もgrepが実行されません。
また、grepをexecしているのですが、その第二引数を何にしていいのかも模索中です。
どこをどのように修正したらいいでしょうか。
よろしくお願いします。

die "openエラー: $!" unless defined ($pid = open(FIFO, "-|"));
if(!$pid) {
exec('/usr/bin/grep', '-isl', $search, @list) or die "grepエラー: $!";
} else {
while (<FIFO>) {
print $_;
}
close FIFO;
}

【環境】
WindowsXP Professional(SP2)
Apache2.2
ActivePerl v5.8.8

子プロセスで"-|"でopenして、そこに標準出力で/usr/bin/grepの実行結果を出力し、そのデータを取得したいです。
$pid = open(FIFO, "-|")をした時点で、$pidにはプロセスIDが入っています(0以外)。
0のときは子プロセスが起動しているのでgrepを実行し、0以外であれば標準出力の内容を取得するというロジックでいいと考えたのですが、一度もgrepが実行されません。
また、grepをexecしているのですが、その第二引数を何にしていいのかも模索中です。
どこをどのように修正したらいいでしょうか。
よろしく...続きを読む

Aベストアンサー

質問の例では双方向のやり取りは必要ないので、
#1の tacosan さんの回答の通りで
open my $fd, "grep -isl '$search' @list"or die $!;

とでもすればよいのではないかと。

ついでにいうと、このパターンの場合、Unixのような
fork & exec が必要なので、ActivePerlでは
期待通りに動きません。

というかopenのところで
'-' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

となると思うんですが。

ついでのついでで、三引数バージョンの open ならActivePerlでもいけます。

open my $fifo, "-|", 'grep -e use *.pl' or die;
#open(my $fifo, '-|') || exec 'grep', '-e', 'use', '*.pl';
#↑こっちはダメ
while (<$fifo>) {
print;
}

もし
Perlの標準出力からデータを送る→
プログラムで処理してその標準出力に送る→
Perlで受け取る
ということをやりたいのなら、

IPC::open2 とか IPC::open3 とかつかってください。

質問の例では双方向のやり取りは必要ないので、
#1の tacosan さんの回答の通りで
open my $fd, "grep -isl '$search' @list"or die $!;

とでもすればよいのではないかと。

ついでにいうと、このパターンの場合、Unixのような
fork & exec が必要なので、ActivePerlでは
期待通りに動きません。

というかopenのところで
'-' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

となると思うんですが。

ついでのついでで、三引数バ...続きを読む

Q入力フォームと同種のデータを送信するスクリプト

パソコン(Windows XP)にActive_Perl Ver5.8.0をインストールしてPerlスクリプトを動かしています。
入力フォームのデータを受け取って処理するスクリプトが既にあるのですが、このスクリプトに入力フォームと同種のデータをループさせて繰り返し送り込むスクリプト作りたいと思っています。
やり方もしくはコード例を教えていただければと存じます。
よろしくお願いいたします。

Aベストアンサー

入力フォームからデータを取り出すのに CGI.pm を
使っているのでしたら、CGI.pm のデバッグ機能が
使えます。

test.cgi が入力フォームからのデータを受け取る
プログラムとすると
perl test.cgi name1=value1 name2=value
のように起動するだけで、フォームからの入力が
エミュレートされます。シェルスクリプトなり、perl
スクリプトなりで、上記のコマンドを生成し実行させれば
よいです。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/cgipm.html
のデバッグ機能のところを読むとよいです。

ウェブサーバを経由して動作させたいのであれば、
JMeter を使うのがよいでしょう(利用は簡単ですが、
パラメータの動的な設定はあまり柔軟にはできません)。
http://www.stackasterisk.jp/tech/engineer/jmeter01_01.jsp

あるいは perl の WWW::Mechanize モジュールを使って
スクリプトを書いてもよいと思います。
http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%2fWWW%3a%3aMechanize

参考にあげた URL は Google で検索して見つかったものです。
多数の記事が見つかりますので、自分に取ってわかりやすい
ものを参考にされればよいと思います。

入力フォームからデータを取り出すのに CGI.pm を
使っているのでしたら、CGI.pm のデバッグ機能が
使えます。

test.cgi が入力フォームからのデータを受け取る
プログラムとすると
perl test.cgi name1=value1 name2=value
のように起動するだけで、フォームからの入力が
エミュレートされます。シェルスクリプトなり、perl
スクリプトなりで、上記のコマンドを生成し実行させれば
よいです。
http://www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/cgipm.html
のデバッグ機能のところを...続きを読む

Q#!/usr/local/bin/perl

とPerlのCGIの先頭に書きますが
FedoraCore3でPerlを使うときにはどのように書けばよいのでしょうか?

Aベストアンサー

#!/usr/bin/perl

でしょうか。FedoraCore3は私は使っていませんが、cgiの先頭に書くのは、perlへのパスになるので、もしターミナルが使える状況なら

which perl

で得られるパスを #! につづけて書けばOKです。

QFedoraCore3の/var/www/html/に

x.cgi:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>world</TITLE></HEAD>\n";
print "<BODY>\n";
print "<H2>Hello</H2>\n";
print "<HR>\n";
print "</BODY>\n";
print "</HTML>\n";

を配置して他のPCからこのファイルを読みだしたのですがこのコードがそのまま表示されてしまい
Perlが実行されません

何が原因でしょうか?

Aベストアンサー

namazuとは日本語全文検索システムです。
べんりなので標準で入っているのでは?
私のところにもあります。
ちなみに私はRHL9ですが。

なお、あとは、私に考えられるのは改行コードくらいなんですよねえ。
nkf -Lu x.cgi
で改行コード変更してもダメでしょうか?

あと、/var/log/httpd/error_log
には何とかいてあります?

あんまり力になれずめんぼくないです。

参考URL:http://www.namazu.org/


このカテゴリの人気Q&Aランキング

おすすめ情報