Perlコーディング初心者質問スレ Part 53
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/26(日) 14:38:23ID:SlmGsFMB【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc8.2ch.net/test/read.cgi/php/1153987463/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0607nobodyさん
2006/12/31(日) 04:17:23ID:oF4MMStz%hash = (
a => 'あああ',
b => [
{ c => 'いいい' },
{ d => [
{ e => 'ううう' }
] }
);
このようにハッシュのvalueに幾度(無限に)も配列のリファレンスがネストしてあるとき、どのようにすれば下層部のハッシュ(上記の場合e => 'ううう')が取り出せるのでしょうか?
0609nobodyさん
2006/12/31(日) 10:33:33ID:oF4MMStz試してはみたんですが、出来ませんでした。。。
端折ると↓のようにしてみたんですが
sub aaa {
foreach () {
if (ref()) {
&aaa();
} else {
普通のしょり
}
}
}
0610nobodyさん
2006/12/31(日) 14:29:56ID:???0611nobodyさん
2006/12/31(日) 17:01:53ID:???【書き方1】
function check() {
if ($x == 2) {
print "Xは2です。";
} elsif ($x == 5) {
print "Xは5です。";
} else {
print "Xは2でも5でもありません。";
}
}
【書き方2】
function check()
{
if ($x == 2)
{
print "Xは2です。";
}
elsif ($x == 5)
{
print "Xは5です。";
}
else
{
print "Xは2でも5でもありません。";
}
}
0612611
2006/12/31(日) 17:05:01ID:???自分は 【書き方2】 で理由は、
・開始括弧と終了括弧が揃っている。
・開始括弧の行が空く (括弧だけの行ができる) ので見やすい。【書き方1】 だと空行入れるべきか入れないべきかで毎回迷ってやりにくい。
・elsif の行がスマートになる。
です。
皆さんのお好み、または標準のコーディングルールがあれば教えて下さい。
あと、自分はインデントはタブで、タブは半角スペース4つ分にしていて、文のあとにコメントを入れる場合にはタブ1つあけることにしていますが、
こちらについても教えていただけたら幸いです。
0613nobodyさん
2006/12/31(日) 17:51:26ID:???ベストプラクティスでは、「重要なのは、首尾一貫したスタイルを1つ採用することである。」としたうえで
レイアウトガイドラインの「提案」として、K&Rスタイルを採用しているね。つまり
if ($x == 2) {
print "Xは2です。";
}
elsif ($x == 5) {
print "Xは5です。";
}
else {
print "Xは2でも5でもありません。";
}
こう。んで、タブを使わず半角スペース4つを1インデントとしている。
個人的にも、特にこだわりはないので、このベストプラクティスを標準としてるなぁ。
ただ、チーム開発の時はチームのコーディングルールに合わせるけど。
でも、Perl は TMTOWTDI がモットーなんだし、好きな書き方で良いと思う。
0614611
2006/12/31(日) 17:55:49ID:???なるほど
回答していただきありがとうございました
標準的なコーディングルールを使ったほうが他の人と共有する場合や配布する場合には便利ですね。
> タブを使わず半角スペース4つを1インデントとしている。
これに関しては、自分が使っている 「phpエディタ」 も 「TeraPad」 も Tabキーで半角スペースを4つ入れる機能がないので
不便でしょうがないです(´・ω・`)
0615nobodyさん
2006/12/31(日) 17:58:21ID:???0616nobodyさん
2006/12/31(日) 18:00:26ID:???0617nobodyさん
2006/12/31(日) 18:08:53ID:???abcd = 1 + 2 + 3 +
4 + 5;
0618nobodyさん
2006/12/31(日) 18:40:04ID:???use strict;
use Data::Dumper;
my %hash = (
a => 'あああ',
b => [
{ c => 'いいい' },
{ d => [ { e => 'ううう' } ]}
]
);
parse(\%hash);
sub parse {
my $tmp = shift;
#print Dumper $tmp;
if (ref $tmp eq 'ARRAY') {
foreach (@$tmp) {
parse($_);
}
} elsif (ref $tmp eq 'HASH') {
foreach (keys %$tmp) {
parse($tmp->{$_});
}
} else {
print "$tmp\n";
}
}
0619nobodyさん
2006/12/31(日) 21:54:59ID:???@b = qw{ 1 2 3 4 5 6 };
@array = \(@a, @b);
こんな風になっている場合、@arrayから@aの要素数にアクセスするにはどう書けばよいでしょうか。
0620nobodyさん
2006/12/31(日) 22:31:17ID:???0622nobodyさん
2007/01/01(月) 20:57:03ID:QvA3S+in#####書き換え前#####
# メッセージ内で使用を禁止する言葉の処理
if (crypt($FORM{'spwd'},substr($password,$salt,2)) ne $password)
{@ngword = split(/\s+/,$ngw);
foreach $ngw (@ngword){
if ($FORM{'value'} =~ /\Q$ngw\E/i){
&error('メッセージ内に使用禁止ワードが含まれています。');}}}
#####ここまで#####
☆備考☆
$ngw = 'テスト test TEST';
これをファイルを読み込み形式にしたいと思い↓のようにしました。
#####書き換え後#####
if (crypt($FORM{'spwd'},substr($password,$salt,2)) ne $password)
{if ( !open(NGW, "$spamdata") ){
&error('0');}
@xx = <NGW>;
foreach $ngw (@xx){
@ngword = split(/,+/,$ngw);
foreach $ngw (@ngword){
if ($FORM{'value'} =~ /\Q$ngw\E/i){
&error('メッセージ内に使用禁止ワードが含まれています。');}}}close(NGW);}
#####ここまで#####
☆備考☆
$spamdata = 'spamdata.cgi';
※質問
そこで、foreach $ngw (@xx){}とforeach $ngw (@ngword){}が重複しているようで、
表記としておかしくないか疑問に思いました。
なにぶんPerlの知識も経験も乏しいもので、チェックをお願いします。
より適切な表記の仕方があったらご指摘も戴けるとうれしいです。
備考
spam対策のために禁止語句をCGIファイルから読み込みたいと思い書き換えました。
0623nobodyさん
2007/01/01(月) 21:04:13ID:???0624nobodyさん
2007/01/01(月) 23:37:36ID:???>そこで、foreach $ngw (@xx){}とforeach $ngw (@ngword){}が重複しているようで、
>表記としておかしくないか疑問に思いました。
そりゃどう考えてもおかしい。perlに限らずプログラミング一般論として。
>spam対策のために禁止語句をCGIファイルから読み込みたいと思い書き換えました。
CGIの意味知ってる?
そこは単にテキストファイルでしょ。なんで、そんなファイルの拡張子に".cgi"付けるの。
新年早々猪突突進か
0625nobodyさん
2007/01/01(月) 23:59:59ID:???0626nobodyさん
2007/01/02(火) 00:10:37ID:???0627nobodyさん
2007/01/02(火) 00:17:55ID:???目くじら立てることでもない。
0628nobodyさん
2007/01/02(火) 00:29:14ID:???こぢんまりしたサイトでは目くじら立てなくてもいいかも知れないが、
職業プログラマが製品レベルではやらないことだな。
0629nobodyさん
2007/01/02(火) 00:46:17ID:???自分だけのデータならランダムで32文字でつけたディレクトリにデータファイル入れたりしてる
0630nobodyさん
2007/01/02(火) 01:29:17ID:???とりあえず、2つのforeach文をそれぞれ同じ変数$ngwに入れてるみたいだから、それを別々にしてみよう。
一つ目を$ngw1、二つ目を$ngw2とか。
で、
if ($FORM{'value'} =~ /\Q$ngw\E/i){
を
if ($FORM{'value'} =~ /\Q$ngw2\E/i){
にしてみると大丈夫だと思うよ。
0631nobodyさん
2007/01/02(火) 02:15:39ID:???『次のファイルを開こうとしています。』となって表示されません。
ライブラリファイルの拡張子は.plなのですが、保存したファイルは普通にダブルクリックで開けてしまいます。
.pl拡張子は何か特別な設定が必要なのでしょうか?
0632nobodyさん
2007/01/02(火) 02:24:31ID:???どう読み込もうとしたのか。requireとかopenとか…ダブルクリックとか。
> 『次のファイルを開こうとしています。』となって表示されません。
これは自作メッセージ?STDOUTかSTDERRに出てるのか、UAの画面に表示されるのか。
CLIのお手軽アプリを作ったときに、こういうメッセージをprintしてファイルの中身をSTDOUTに吐く前に
無限ループにはめて先に進まなくなったことは何度もある。
# open(FH, '<', "hoge.dat"); flock(FH, 2); @buffer = <FH>; close(FH);
# while (@buffer) { print 'while でなく foreach と書いたつもりの酔っ払い', "\n"; }
質問がWebProg関係なのかどうかも含めて、ちょっとよくわかんない。
.plだからとくにどうこう、ってのはないです。
0634622@解決済み
2007/01/02(火) 09:03:38ID:5ekfui+1>>630
ありがとうござます。↓昨日また少し考えてこんな感じになりました。
if (crypt($FORM{'spwd'},substr($password,$salt,2)) ne $password)
{if ( !open(NGW, "<$spamdata") )
{
&error('0');
}
flock(NGW, 1);
@xx = <NGW>;
close(NGW);
foreach $ngw (@xx){
@ngword = split(/,+/,$ngw);
foreach $ngwbb (@ngword)
{
if ($FORM{'value'} =~ /\Q$ngwbb\E/i)
{
&error('メッセージ内に使用禁止ワードが含まれています。');
}
}
}
}
ご協力ありがとうございました。
0635nobodyさん
2007/01/02(火) 17:42:57ID:???WINDOWS鯖の場合だと
if (-w $write_file_path) { print "書き込み可能\n"; }というプログラムがが使えないんです
0636nobodyさん
2007/01/02(火) 19:27:19ID:???0637nobodyさん
2007/01/02(火) 19:31:28ID:???0638nobodyさん
2007/01/02(火) 20:42:50ID:???0639nobodyさん
2007/01/02(火) 21:13:35ID:???0640nobodyさん
2007/01/03(水) 11:08:33ID:???マルチ放置推奨
0641nobodyさん
2007/01/03(水) 22:13:23ID:???なのでしょうか?
そういえば1年前に5000兆まで計算させるシステムを作った
のを思い出したのですが、その頃は最大計算桁数のことを
考えていなかったような気がするので質問させていただいた
次第です。
ご教示いただけますと幸いです。
0642nobodyさん
2007/01/03(水) 22:24:17ID:???0643nobodyさん
2007/01/04(木) 00:30:50ID:???ご教示有難うございます。
ちょっと昔のソースを改変するのにもある程度理由を
つけなければいけないので、デフォルトで何桁まで
問題ないかもしご存知でしたら教えていただけますと
幸いです。
質問続きですみません。
0644nobodyさん
2007/01/04(木) 12:00:06ID:???0645nobodyさん
2007/01/04(木) 16:29:54ID:???IVはポインタが格納できることが保証される符号あり整数型、
UVはIVと同様の符号なし整数型。
そしてNVは倍精度浮動小数点型となっている。
えーとだからその処理系における不動小数点型の表現がIEEE 754だと仮定すれば、
倍精度浮動小数点型の仮数部は52bitで、
32bitマシンの場合は(恐らく)UVのほうが表現できる範囲が大きい(52bit - 15~16桁)。
64bitマシンの場合はIV/NVのほうが表現できる範囲が大きい(64bit - 18~20桁)。
かな。前に齧り読んだことと、ドキュメントの関連してそうな部分を
掻い摘んで読んだのを組み合わせただけなのであってるかどうかはわからん。
See also: perlguts
0646nobodyさん
2007/01/04(木) 16:40:19ID:???訂正
> 32bitマシンの場合は(恐らく)UVのほうが表現できる範囲が大きい(52bit - 15~16桁)。
> 64bitマシンの場合はIV/NVのほうが表現できる範囲が大きい(64bit - 18~20桁)。
ここ思いっきりUVとNVが逆になってる( ´д`;) 読み替え宜しく
0647nobodyさん
2007/01/04(木) 18:37:22ID:???0648nobodyさん
2007/01/05(金) 04:06:51ID:CAClPvdI最新のexpatもいれたのですが。。
0649nobodyさん
2007/01/05(金) 07:21:32ID:???0650nobodyさん
2007/01/05(金) 12:28:06ID:???ブラウザーからの入力に応じてcgiファイルを書き換えるcgiを作ってみたいのですが。
書き換える側のCGIのソースと書きこまれる側のソースが混ざってしまって
バグがおきてしまいました。
書き込まれる側のソースにシングルクオーテーション、ダブルクオーテーション
が含まれていて書き換える側のダブルクオーテーションで囲まれた間の部分に、
書き込まれる側のダブルクオーテーションが存在してしまうようです。
他にも変数を文字列として書き出せず変数の中身、つまり何も無いスカが書き出されます。
どうすれば良いでしょうか?
0652nobodyさん
2007/01/05(金) 13:19:34ID:???それだけじゃ何もわからん。OSは?Perlのバージョンは?Cコンパイラは持ってる?
0653650
2007/01/05(金) 13:24:38ID:???とりあえずCGIからいろんなファイルに書き込むプログラムを色々と書いてみているのですが。
テキストやHTMLは上手く書き込めたのですがCGIのファイルは上手くいきませんでした。
CGIファイルへの書き込みは習っても意味が無いのでしょうか?
0654nobodyさん
2007/01/05(金) 14:31:51ID:???勉強するだけならいいけど実際に共有鯖等では実行しないで欲しいね。
リスクが高いです。他のユーザーに迷惑かける可能性大。
0655nobodyさん
2007/01/05(金) 14:39:32ID:???0656nobodyさん
2007/01/05(金) 17:52:53ID:???ユーザは許可されている事はなんでもやってよい。
0657nobodyさん
2007/01/05(金) 19:09:54ID:???実行可能=やってよいとか考えているわけではありませんよね^^;
0658nobodyさん
2007/01/05(金) 19:19:39ID:???0659nobodyさん
2007/01/05(金) 20:31:05ID:5w1bms+v>> それだけじゃ何もわからん。OSは?Perlのバージョンは?Cコンパイラは持ってる?
OSはFedoraCore6
PerlVersionは v5.8.8 built for i386-linux-thread-multi
Cコンパイラはあります。gcc -v で確認しました。
どうもexpat関係でエラーになっています。最新のexpatはいれたのですが。
0660nobodyさん
2007/01/05(金) 23:49:44ID:???'$' の前に¥でescapeしたり、ということで解決するんじゃないか。
それ以前にcgiがcgi を書き換えるという発想はどうなのよ。
動的にプログラムを生成する必要性はそうないんじゃないか。
0661nobodyさん
2007/01/06(土) 01:22:14ID:???>が含まれていて書き換える側のダブルクオーテーションで囲まれた間の部分に、
>書き込まれる側のダブルクオーテーションが存在してしまうようです。
>他にも変数を文字列として書き出せず・・・
自分でわかってんじゃん
0662nobodyさん
2007/01/06(土) 14:46:16ID:???0663nobodyさん
2007/01/06(土) 14:55:31ID:???そのままで良いんですね。。。
0664nobodyさん
2007/01/06(土) 16:32:45ID:???つまり>>650は何か間違った設計をしてるんだろうと思う。
てか掲示板のログファイルの拡張子を .cgi にしたいだけとかでは
0665nobodyさん
2007/01/06(土) 19:32:53ID:???PerlによるCGIの参考書を買ってゼロから勉強中ですが、
下記のプログラム(参考書を丸写し)が動作しません。エラーコードは500です。
原因は何でしょうか?
・Perlのパスはレンタルサバのサイトで確認
・ファイル名はindex.cgi
・OSはWinで、メモ帳で編集しFFFTPでUL
・パーミッションは755
#!/usr/bin/perl
print <<_EOF;
Content-type: text/html
<html>
<head><title>test</titel></head>
<body>
test
</body>
</html>
_EOF
0666nobodyさん
2007/01/06(土) 19:54:15ID:???500エラーじゃ何も判らんし、そもそもレン鯖使って勉強するなといいたいが。
・FTPの時にASCIIモードで送って無い
・パーミッションがレン鯖指定のものと違う
・そもそもindex.cgiが使えないようになっている(別名でテストしてみ)
とかそんなあたりか。ソースそのものは問題ない。
タグでtitleの打ち間違いがあるくらいか。
0667nobodyさん
2007/01/06(土) 20:03:54ID:???0668nobodyさん
2007/01/06(土) 20:07:39ID:???・バイナリモードで転送した
・ヒアドキュメント終端文字列でファイルが終わってる(改行がない)
辺りが有力っぽい。
0669nobodyさん
2007/01/06(土) 20:23:33ID:lBOtCkKIエラーメッセージを出すようにしたいと思っています。
投稿されたメッセージ$messageに
半角カタカナが含まれているかどうかを判定する、というのは
どう書けばよいでしょうか?
全角文字があるかどうかを判定ならググって出てきましたが・・・。
0670nobodyさん
2007/01/06(土) 20:23:42ID:???回答ありがとうございます。
>・FTPの時にASCIIモードで送って無い
FFFTPの環境設定に転送設定という箇所があったので、
「常にアスキー」に設定し、ULしなおしました。
>・パーミッションがレン鯖指定のものと違う
確認したところ、実行ファイルは700が推奨されていたのでそうしました。
705も試しました。
>・そもそもindex.cgiが使えないようになっている(別名でテストしてみ)
確認したところindexで問題ないようですが、test.cgiに変更しました。
ですが、動作しませんでした。
0672669
2007/01/06(土) 21:04:52ID:???・・・が、さらに質問です。
名前とタイトルに含まれる半角カタカナは全角に変換でいい。
そこでログに書き込むサブルーチンregistに、
&jcode'h2z_sjis(*name);#$nameの半角を全角に
&jcode'h2z_sjis(*subject);#$subjectの半角を全角に
と書いたのですが、名前のほうが変換されません。
0673nobodyさん
2007/01/06(土) 22:19:16ID:???0674nobodyさん
2007/01/06(土) 22:29:08ID:???モジュールのインストールなしに出来る方法はどんな方法があるのでしょう。
今はuse libとuse Crypt::CBCとBlowfish_PPでやっているのですが、どうしても遅いので
もう少し早くできると良いのですが。
>>662でlinux上で単純にコンパイルしてそのままautoディレクトリをコピーしてやれば良いのかと思って
コピーしてみましたが
Blowfish.so: undefined symbol: Perl_Gthr_key_ptr
こんな感じのエラーが出てしまいました。
Blowfish_PPとBlowfishでは速度が違いすぎるので、出来ればBlowfishの方を使いたいのですが、
どうすれば使えるのでしょうか。
0675nobodyさん
2007/01/06(土) 22:59:26ID:???0676nobodyさん
2007/01/06(土) 23:03:37ID:???0677nobodyさん
2007/01/06(土) 23:21:18ID:???同じ文字列入れてnameの方だけ変換ないってんなら
おまいが間違ってるとしか言えん。
>>674
モジュール無しで、ということだけならopensslに投げるという手もある。
モジュールのほうが速いと思うけど。
0680nobodyさん
2007/01/07(日) 00:28:09ID:???拡張子をcgiにすればファイルの中身を見られることもないのですが、まあ気休め程度に。
>>677
すみません。解決しました。
サーバーとローカルのperlのバージョンが違ったためにモジュールのバイナリを使用できていなかったようです。
サーバーとローカルのperlのバージョンをそろえてコンパイルしなおしたらそのままコピーでuse libしたら
出来ました。
0681nobodyさん
2007/01/07(日) 00:28:21ID:???レス遅れましたが、本当に有難うございました。
検証もしてみましたので検証報告も兼ねさせていただきます。
結論から申し上げますと、16桁目の4以上、つまりは4000兆
くらいから計算が狂ってきました。
これは645さんのおっしゃる32ビットマシンの性能ということ
に当てはまったのではないかと思いました。
ご丁寧に有難うございました。
0683nobodyさん
2007/01/07(日) 19:30:50ID:???Mac OS X PantherのTerminal上にて運用する予定のPerlスクリプトをMac OS X Tigerにて作っています。
指定されたディレクトリの中にある1万個程度のテキストを片っ端からチェックして、
ある特定の文字列があったら別の文字列に置き換えて保存するという処理なのですが、
一部ファイル名の最後の文字がスペースのものがあった場合に
それらの展開に失敗する(最後のスペースが無いものとしてファイルを開こうとする)ようです。
ファイル名の最後のスペースを認識させるにはどのような方法があるのかご教示頂けますと幸いです。
よろしくお願いいたします。
0685nobodyさん
2007/01/07(日) 20:02:08ID:???panther も tiger も5.8.xなのでバージョンの違いとか、OSの違いによるもんじゃないと思うそ。
0687nobodyさん
2007/01/07(日) 20:15:21ID:???0688nobodyさん
2007/01/07(日) 20:27:45ID:???案外知られてないのかな
0689nobodyさん
2007/01/07(日) 20:47:03ID:???とりあえずやってみたのがファイルのパスを' 'でくくるとか
" "でくくって\を付けるとかくらいなもので…
>>685
デキタ━━━━━━(゚∀゚)━━━━━━!!!!
何でなのか理屈がよく分かりませんができたっぽいです。
迅速なお答え、本当にありがとうございました!
0690683
2007/01/07(日) 20:52:01ID:???ご察しの通りPerlの仕様だったようです。
これでPantherのPerlが5.6だったりしたら路頭に迷うところでした。
>>687
検証して頂きありがとうございます。
おかげさまで何とかなりそうです(*´∀`)
>>688
Perlは一応それなりに馴染んでいたつもりだったのですが
今回の件には完全にやられました。もっと精進します。
0691nobodyさん
2007/01/07(日) 21:22:42ID:???0692nobodyさん
2007/01/08(月) 05:15:48ID:???ttp://www.mcdonalds.co.jp/mcgriddles/index.html
0693nobodyさん
2007/01/09(火) 00:38:49ID:???どう書けばいいでしょうか。
jcode.plではなく普通に置換で行いたいと思うのですが。
ここの正規表現みていたら訳が分からなくなってきた・・・。
ttp://sieg.xeong.com/archives/2005/06/perl.html
0695nobodyさん
2007/01/09(火) 01:08:35ID:???0696nobodyさん
2007/01/09(火) 01:11:19ID:???0697693
2007/01/09(火) 02:24:52ID:???EUCはブラウザのミスによる文字化けがあるから嫌なんです(タブブラウザにしなくていいからこっちを先に治せM$)。
CHARSET設定していながら何かの拍子に化ける→エンコードし直しうざい
それに半角カタカナを使えるようにしたいのではないので。
・・・大体、半角カタカナを使って書く言葉って、あまりいい意味の言葉じゃないですよね。
0698697
2007/01/09(火) 02:37:18ID:???tr使ってもダメだと書いてあるページを見つけました・・・
もともとのスクリプトではフォームデコードに
&jcode'h2z(\$value);
があって、投稿した半角カタカナは全て全角に変換されるんですが
これだと「・・・」まで変換されて(個人的に)変な感じがする。
しかもこれはカタカナではない記号ですしね。
で、他に方法はないかと思ったのですが。
半角→全角は諦めるしかないみたいですね。
レスありがとうございました。
0699nobodyさん
2007/01/09(火) 02:47:31ID:???どうしてもあわせたいならHTMLをunicodeにしちゃえよ
0700nobodyさん
2007/01/09(火) 03:06:27ID:???後は濁点付きを適当に置き換えれば。
0701nobodyさん
2007/01/09(火) 03:14:56ID:???SJISだから合わせるとかなんとかってのは無視してくださいな。
そんなことどうでもいい。
とにかく半角カタカナを使ってもらいたくないというのと
半角カタカナを2ちゃん以外の場所で見たくないってだけ。
半角カタカナがあればエラーってのもやってみたし
半角カタカナを全角変換もやってみたけど
カタカナじゃないやつまで処理してしまうというのが・・・ってだけの問題。
0702nobodyさん
2007/01/09(火) 04:25:59ID:???ナンテイウカ タンナル アレルギー ニ シカ ミエナイ カンシ ゙ダナ
0703nobodyさん
2007/01/09(火) 06:21:11ID:???何処か一文字間違ってるんだろうけど何処が間違ってるか分からない、といったユーザの不満を解消すべく
ショッピングカートの改良しようと思っています
パスワードのMD5ハッシュをDBに保存するロジックを平文での保存にすることは簡単にできたので、
あとは何処がが間違っているかをユーザに教えるロジックを作ればいいんですが、どうするのがユーザビリティ的に好ましいでしょうか?
正しいパスワードとユーザ入力のパスワードが同じ文字数の場合には、
正しいパスワード "hoge2CH" の時、ユーザが "hoge2ch" と入力したら、
「パスワードの6文字目・7文字目が間違っています。」 と返す、のように簡単にいくんですが、
正しいパスワードが "hoge2CH" の時、ユーザが "hoge2C" と入力した場合に、
貴方がユーザだとしたらどういうエラーが返って来て欲しいかを教えて下さい。
0707nobodyさん
2007/01/09(火) 11:49:21ID:???> 貴方がユーザだとしたらどういうエラーが返って来て欲しいか
正しいパスワードそのものを表示して欲しいな。
■ このスレッドは過去ログ倉庫に格納されています