【PHP】くだらねぇ質問はここに書き込みやがれpart9
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/09/03(土) 11:53:32ID:7OO4C5e5ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
0101nobodyさん
2005/09/05(月) 14:51:17ID:???$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
の$destination_fileと$destination_fileの書き方がよくわかりません。
何度やってもサイズ0のファイルが作成されるだけでうまくいかんのです。
0102nobodyさん
2005/09/05(月) 14:54:24ID:RuKSzRaHどのようなサイトを参考にすればよいでしょうか?
ちなみに、メールフォームのような形にするのではなく、申し込みの内容をデータベースで保存したいと思っています。
なにかサンプルプログラムなどが置いてあるサイトなどはありませんでしょうか?
アンケートフォームなどを参考にしたらいいんでしょうか?
0103nobodyさん
2005/09/05(月) 15:09:40ID:???0104nobodyさん
2005/09/05(月) 15:18:55ID:???プログラミングの分野に明るければ(それなら質問しないだろうけど)ネットのリファレンスとか見れば作れるだろうけど
分からないならネットで調べていちいち質問するよりも、一通り本を読んで分からなかったところを聞いた方がいい。
その習い事の申し込みで会員だけ予約出来る、みたいな事がしたいなら
アカウントの認証とかいう内容にも触れられてる本を選ぶといい。
010599
2005/09/05(月) 15:21:19ID:???0106nobodyさん
2005/09/05(月) 15:48:04ID:???なにも規則性のない数字を一文字ずつ区切るには
どのようにすればできますか?
0107nobodyさん
2005/09/05(月) 15:57:44ID:???$a = '12316579843654654987354';
for($i=0;$i<strlen($a);$i++){
$b = substr($i,1);
$c .= "".$b." ";
}
echo $c;
初心者です。こんな感じでできませんか?
テストしてません。
preg_replaceとかでもできるかも?
プロの方より良い方法あったら教えてあげてください。
0108nobodyさん
2005/09/05(月) 16:38:29ID:???>>106
数字の入った文字列であれば、数字を数字+区切り文字に置き換えればいい。
<?
$string = '0123456789'; //置換対象文字列
echo preg_replace('/(\d)(?=\d)/', '${1},', $string); // "後に数字が続く"数字の後に,(カンマ)を挿入
?>
こんなもんでどう?
0110nobodyさん
2005/09/05(月) 16:56:31ID:???まず「区切る」の意味がわからない。
とりあえずPHP5ならstr_splitで、PHP5でないなら、
$array = array_splice(preg_split('//', $numbers), 1, -1);
で1文字ずつ取り出して配列にできるから、
あとはスペースだのコンマだの何かを挿入したいならimplode($separator, $array);で。
$numbersに数字以外が含まれる可能性もある場合に、数字だけを取り出すなら
preg_match_all('/\\d/', $numbers, $matches);
$array = $matches[0];
あとはスペースだのコンマだの(ry
0112nobodyさん
2005/09/05(月) 17:33:11ID:???具体的に言っても貰わんと、どう書いていいのか迷うよな。
せめて、入力データと期待する出力例を言ってくれれば迷わずに済むのに。
0113nobodyさん
2005/09/05(月) 17:38:58ID:???パスワードを登録する際の文字列の判定をしたいのですが、
半角英数字のみを受け付けるにはどうすればよいのでしょうか?
ctype_alnumを試したところ半角の記号でも全角ひらがなでもfalseが返ってくるので
これでいいのかとも思うのですが確信がもてません。
0116113
2005/09/05(月) 18:04:23ID:???レスありがとうございます。
「以外の有無」の判定はどうすればよいのでしょうか?
1文字ずつ分割してそれぞれチェックし、a-Z・0-9と一致しなければエラー、と考えればよいのでしょうか?
正規表現で「任意の文字以外」という条件の設定が分かりませんでした。
0117nobodyさん
2005/09/05(月) 18:21:04ID:???>>106からはどう頑張っても配列に格納なんて事は汲み取れないような・・・
>>116
[abc]っていう文字クラスでabcのいずれか、ってのは分かるべ?
んで、[^abc]でabc以外の文字って意味になる。
^[許可する文字クラス]*$ // 許可する文字が最初から最後まで続く = 許可する文字以外が存在しない
[^許可する文字クラス] // 許可する文字以外が存在する
のどっちかが一番手っ取り早いかと。
長さ0の文字列を拒否したいなら[許可する文字クラス]* の * を + に。
0118nobodyさん
2005/09/05(月) 18:29:58ID:???ヌルーされてるけど一応…
× $b = substr($i,1);
◯ $b = substr($a,$i,1);
0119113
2005/09/05(月) 18:33:01ID:???どうもありがとうございます。
^で否定できるのは知りませんでした。
ereg("[^a-z|A-Z|0-9]",$_POST["password"])
とすれば半角英数字のみに対応できているようなのですがこれで正しいでしょうか?
|で区切った場合、^が[]の全体に作用するのか|で区切られた部分のみに作用するのかいずれなのでしょうか?
0120nobodyさん
2005/09/05(月) 18:33:13ID:???あんまり好きな方法じゃないけど、
mb_convert_kana で半角に変換して元の文字列と長さを比較
違ってたらマルチバイトがあるって判定法を昔やったな。
0121nobodyさん
2005/09/05(月) 18:35:11ID:???それは | 無しで [^0-9a-zA-Z] だけでいいよ。
-を含める時は [^0-9a-zA-Z-] って最後につければよかったはず。
0122nobodyさん
2005/09/05(月) 18:41:09ID:???$a = '12316579843654654987354';
for($i=0;$i<strlen($a);$i++){
echo $a[$i]."\n";
}
0123113
2005/09/05(月) 18:48:46ID:???うまくいきました。
とりあえずマルチバイト文字があるかどうかというよりは
指定した文字のみを許可する方向で行きたいので
121の方法でやってみます。
どうもありがとうございました。
0124nobodyさん
2005/09/05(月) 18:55:02ID:???『Fatal error: Call to undefined function: form() in /var/www/html/vivid/school/pre.php on line 14』
というエラーメッセージが表示されました。
下がそのエラーが発生するプログラムです。
FORM("pl_info","./insert.php");
echo "<B>入 力 情 報</B><BR>\n";
TABLE("500","1","#AAEEFF","CELLSPACING=0");
echo "<TR>\n";TD("150","#CCEEFF","LEFT","COLSPAN=2","タイトル");TD("350","#FFFFFF","LEFT","",$title);echo "</TR>\n";
echo "<TR>\n";TD("150","#CCEEFF","LEFT","COLSPAN=2","文章");TD("350","#FFFFFF","LEFT","",$text01);echo "</TR>\n";
echo "<TR>\n";TD("150","#CCEEFF","LEFT","COLSPAN=2","画像選択");TD("350","#FFFFFF","LEFT","",$upfile);echo "</TR>\n";
echo "<TR>\n";TD("150","#CCEEFF","LEFT","COLSPAN=2","経歴");TD("350","#FFFFFF","LEFT","",$text02);echo "</TR>\n";
echo "</TABLE>\n";
echo "<BR>\n";
TABLE("500");
echo "<TR>\n";
SUBMIT("INSERT_DB","登録する");
TD("250","#FFFFFF","CENTER","",$TEXTVALUE);
HIDDEN();
HIDDENDATA_ALL();
echo "</FORM>\n";
これは14行目の
『FORM("pl_info","./insert.php");』
が間違っているというのは分かるのですが、「pl_info」が間違っているのか「insert.php」のプログラムが
間違っているのかあるいはFORMの囲み方が間違っているのかがさっぱり分かりません。
どうか回答の程よろしくお願いします。
0125nobodyさん
2005/09/05(月) 18:55:26ID:???文字クラス内では、文字クラス内の全ての文字が対等にorの関係になる。
0126nobodyさん
2005/09/05(月) 19:00:28ID:???大きすぎて口に入らんぞこれは
0127107
2005/09/05(月) 19:05:56ID:???0130nobodyさん
2005/09/05(月) 19:48:22ID:???0131nobodyさん
NGNGそんのやり方はソースが読みにくくなるので
俺だったら、JavaのPreparedStatementに相当する、
PEAR::DBのpreapare系使ってプレースホルダ?を設定して
使っちゃうな。
0133nobodyさん
NGNGそのソースコード、
可読性としてちょっとねえ。
とりあえずHTMLタグは小文字で、
関数も小文字のほうがいいんでない?
それ以前に、オブジェクト指向化して
設計を見直したほうがよさそう。
あと、テンプレート使ったほうがいいと思う。
0134nobodyさん
2005/09/05(月) 21:15:45ID:???php5でお願いします。
0135nobodyさん
2005/09/05(月) 21:43:36ID:2xvv82Xw自分の管理外のホームページに、
フォームから情報を入力して、Submitボタンを押すと
その関連情報結果が表示される・・・といったPHPが設置されています。
そこで、自分のサイトにPHPを置いて、その情報を
自分のPHPから呼び出す事は出来るんでしょうか?
そのページ(自分の管理外のホームページ)へアクセスし、
情報を表示すれば良いだけなのですが、その手間を省きたいです。
セキュリティ的にも、やれてもやってはいけない事でしょうか?
0136nobodyさん
2005/09/05(月) 21:53:56ID:???自鯖の方に判別プログラムをおいて新しい鯖からそれを呼ぶ。
値が得られた場合と得られなかった場合とで呼び出すファイルを変えれば良い。
エラー回避を忘れずに。
0137nobodyさん
2005/09/05(月) 21:57:36ID:CGyYRIw9その関連情報ってのが何かしらんけど、そのサイトにおいてあるデータベースから何か取得してるとかなら、
データベースの権限無いだろうし無理だろうな
0138nobodyさん
2005/09/05(月) 22:07:17ID:???phpじゃなくて、もっと下の層で二重化するような方向の方が自然な流れな気がする。
ちゃんとした奴はそれなりの金が必要だけど。
あと、どういうシステムを動かしてるのか知らないけど、どういう方法で二重化するにしても、
物によってはデータの同期の問題やら何やらでややこしくなるかもしれないんで気をつけて。
それより、不安定な鯖なんて鯖にあらずな気がするというか、
>>134の要件だと、別鯖が常に動いて自鯖と同じ動作してくれるという前提みたいだから、
素直に別鯖に移行して、自鯖をテスト環境にするとかした方がいいと思うんだけど……。
0139nobodyさん
2005/09/05(月) 22:12:13ID:???可能。技術的には特に問題なし。
規約とか著作権の上でNGっぽいけど。
>>134
そんな馬鹿げたな設計はやめて鯖を安定させるんだ。
0140nobodyさん
2005/09/05(月) 22:17:53ID:???自分のサイトでsubmit->そのサイトに移動して結果を表示、というだけなら
がっちりセキュリティ対策してなければ出来る可能性が高い。
しかし、セキュリティ的にもマナー、モラル的にも不味い。
自分のサイトにフレームとかでなく通常の方法で結果を埋め込みたい、というのなら
DBなりデータファイルなりへのアクセス権限が必要。
管理者がアホなら出来るかもしれないけど、可能性は低い。
下手にやるとマナーどころか法的にも不味いことになりそうな予感。
どっちの方法にしろ、人様の作ったフリーでない物を使いたければ、まずは管理者・作成者に連絡するべき。
人によってはソースツリー+データのコピーを提供とか、読み込み専用のDBアカウントを発行してくれるかも知れない。
0141134
2005/09/05(月) 22:26:41ID:???>>136
そこまでは分かるのですが、具体的にどのようにして、鯖の読み込みの可否を判定できるのかが分かりません。
>>138
別鯖(レンタル鯖)ではphpのsimplexmlなどの関数が使えないため、自鯖をメインとしています。
0142nobodyさん
2005/09/05(月) 22:27:53ID:lQwp6BJc知ってる人はよろしく
0143nobodyさん
2005/09/05(月) 22:30:50ID:???0144135
2005/09/05(月) 22:40:40ID:???技術的に可能なことだけでも知れてよかったです。
つーか、よく分からないし、倫理的に問題あるとのは
間違いないと自分でも思うので諦めます。
0145nobodyさん
2005/09/05(月) 22:57:40ID:???マルチスレッドご苦労様です。
>>144
基本的なとこだと、formパクってきて、action属性でリモートにあるこっそり使いたいphpのurlを指定してやればいいだけ。
Google検索を自サイトに置くのと技術的には一緒。
0148nobodyさん
2005/09/05(月) 23:02:42ID:???ping飛ばして見るとかどうでしょうか。
simplexmlの使えるサーバに鞍替えするか
自分のサーバを安定させるかした方がいい気がしますが。
0149134
2005/09/05(月) 23:12:19ID:???鯖の安定化も頑張ってみたいと思います。
色々とありがとうございました。
0150nobodyさん
2005/09/05(月) 23:24:07ID:???0151nobodyさん
2005/09/05(月) 23:48:59ID:???inputのデータを別のページで反映させるにはどのようにすればよいのでしょうか。
CGIは難しい上にプログラムするのに時間がかかってしまうのでなるべくPHPで作成したいのです。
もし他に効率の良い方法がございましたらぜひ教えて下さい。
どうかよろしくお願いします。
0152nobodyさん
2005/09/06(火) 00:01:23ID:???っていうかCGIって
<!-- 送信側 hoge.html -->
<form action="./hage.php" method="post>
<input id="hoge" name="hoge" type="text" value="">
<input id="submit" name="submit" type="submit" value="送信">
</form>
<!-- 受信側 hage.php -->
echo $_POST['hoge']; // submitしたformの子要素のname
0153nobodyさん
2005/09/06(火) 00:12:48ID:???なんかの拍子に消えたりとかしないですか?
0154nobodyさん
2005/09/06(火) 00:29:50ID:???foreach ($arr as $key => $val)
{
echo "キー:$key 値:$val\n";
}
このようなforeach文で、値が「beta」の時、前後の値である「alpha」、「gamma」も
表示したいのですが、どのようにして実現すればいいのでしょうか?
0155151
2005/09/06(火) 01:12:43ID:???説明が足りなくて申し訳ございません。
実はメール送信フォームの確認画面ではなくインターネット回線を通して
どこからでも文章の入力や画像データの貼り付けを行うことができる
画像掲示板のようなデータベースを作成しております。
入力フォームのphpデータは完成したのですがphpデータのinputの情報を
別のページに反映させることが出来ません。
(例えばphpデータAのinputの情報を確認画面のphpデータBに反映させ、
それで登録しても良いのであればphpデータCで登録の処理を行うといった
流れのデータを作成したいのです。)
0156nobodyさん
2005/09/06(火) 01:19:01ID:???data_a.phpで、
<form action="./data_b.php" method="post>
data_b.phpで、
<form action="./data_c.php" method="post>
ってことか?
>>152 は、メール送信フォームじゃないけど?
0157nobodyさん
2005/09/06(火) 01:24:32ID:???クライアント側のCookieが消えるとか、セッションタイムアウトとか可能性はある。
>>154
前戻りだけなら、読んだ時に前のデータを変数に格納しておけばいいけど、
前後とも表示したいならforeachよりもfor使った方が簡単。
配列の端での動作によってソース変わってくるけど、
端でも前後あわせて3つずつ表示する場合は
for($i = 1; $i < (count($arr)-1); $i++);
で無条件に $i-1, $i, $+1 を表示。
端では2つずつ表示する場合は
for($i = 0; $i < count($arr); $i++);
で、基本は上と一緒だけど、$i <= 0 の時は $-1 の部分を、 $i >= count($arr) の時は $+1 の部分を表示しないようにする。
0158151
2005/09/06(火) 01:33:00ID:???例えば「data_a.php」に
<input type="text" name="title" size="30">
というプログラムがあるとしますと、titleに入力した文字を「data_b.php」
に表示させたいのですが「data_b.php」に「data_a.php」のtitleをどうやって
反映させるのかがわからないのです。
0160nobodyさん
2005/09/06(火) 01:35:11ID:???入力フォーム->確認画面->DB登録って流れだろ?
>>152でいいじゃないか。
あとは、確認画面のformの中にhiddenで値埋め込むなり
確認画面を表示するphpで$_POSTで受け取ったデータをセッションに格納して
DB登録のphpでセッションから引っ張ってくるなり好きにすればいい。
<!-- >>152の改良版 受信側 hage.php -->
お名前 : <?=$_POST['hoge']?>
<form action="./db_insert.php" method="post">
<input id="hoge" name="hoge" type="hidden" value="<?=$_POST['hoge']?>">
<input id="submit" name="submit" type="submit" value="送信">
</form>
<!-- っていうか、入力側のphpってただのHTMLな気がするんだけど…… -->
0161nobodyさん
2005/09/06(火) 01:37:27ID:???#まずは入門書を読みませう。
0162160
2005/09/06(火) 01:38:54ID:???画像あるんだったらセッションにバイナリごと入れちゃうのが一番楽かな。
OKだったらファイルに書き込むなり、DBのBLOB型カラムに入れるなり。
0163154
2005/09/06(火) 01:46:32ID:???ありがとうございます
やはりforを使うしかないのですね
$arr = array("one"=>"alpha", "two"=>"beta", "three"=>"gamma","four"=> "five", ""=>"epsilon");
例えば上記の場合、for文では限界があると思うのですが、この場合は
どのようにして実現するのでしょうか?
0164154
2005/09/06(火) 01:47:57ID:???$arr = array("one"=>"alpha", "two"=>"beta", "three"=>"gamma","four"=> "delta", "five"=>"epsilon");
に修正です
0165157
2005/09/06(火) 01:55:32ID:???foreach使っても出来るには出来るけど、
それってforeach使う意味は?みたいな感じになる。
んで、配列のキーを配列に格納するarray_keys()という関数がある。
http://php.s3.to/man/function.array-keys.html
0167nobodyさん
2005/09/06(火) 02:16:56ID:???UA取得して、IEで閲覧時にはIE用のスタイルシート。
といった感じに、スタイルシートをブラウザごとで使い分けるために
PHPを使用しようと考えているのですが、
そういうことはPHPでできそうでしょうか?
0168nobodyさん
2005/09/06(火) 02:21:35ID:???DBに登録するときにエラーチェックしてる?
漏れ、最近べつに必要ねぇんじゃねーか?
と思い始めた。
$result = $db->query($sql);
if (MDB::isError($result)) {
die ($result->getMessage());
}
0170167
2005/09/06(火) 02:35:48ID:???レスどうもありがとうございます。
回避する方法も開発されているのですかー。
それは知りませんでした。
少し回避する方法を探してみてだめそうならPHPでやってみたいと思います。
0171nobodyさん
2005/09/06(火) 02:37:32ID:???サーバサイドでやるなら、HTML内に各ブラウザ用のCSSを埋め込むか、
各ブラウザ用のCSSを予め用意しといて、外部CSSを読み込ませる部分の記述を動的に変えるとか。
あと、サーバサイドでやらんでも、クライアントサイドで各UAのバグ・実装不足などを突付いて
CSSの特定の部分を特定の部分だけ読めないように記述するCSSハックという手法もある。
>>168
sql投げたら勝手にquery送ってdieまでやってくれるメソッドを実装しちゃえば気にしなくて済む。
0172167
2005/09/06(火) 02:42:23ID:???レスどうもありがとうございます。
クライアントサイドでやるならJSかと思ってたのですが、
CSSハックというやり方もあるんですね。
聞いたことがない言葉なので早速調べてみたいと思います。
0174151
2005/09/06(火) 11:29:55ID:???皆様のおかげでinputのテキストのデータを反映させることが出来るようになりました。
しかし同じ方法で画像データを反映させると画像のある場所が文字データとなって反映されてしまうのですが・・・
ちゃんと画像データとして反映させる方法があったら教えて下さい。
0175nobodyさん
2005/09/06(火) 11:45:39ID:???0176101
2005/09/06(火) 12:10:17ID:???ふつうにfopenでftpすればできますた。便利だなぁ。
0177nobodyさん
2005/09/06(火) 12:14:15ID:???アップしておいて確認画面でtemp内の画像を表示、登録時には
tempディレクトリから正式なディレクトリへ移動っていう方法をつかってたんだけど、
>>162のレス読んで画像ファイル自体をセッションファイルへ入れちゃうって
方法があるのを知って目から鱗なんだけど、実際にセッションファイルへ
バイナリファイルを入れるのはバイナリを一度文字列に変えなくちゃ駄目だよね?
serialize()かなんかを使うのかな?
0178nobodyさん
2005/09/06(火) 12:35:36ID:3UvZ8ZqBって機能を追加するのって、現実的ですか?
プログラムは素人なんですが、どのくらいの値段なんでしょうか?
0179nobodyさん
2005/09/06(火) 12:45:37ID:???読み込んでテーブルタグ化するだけなら簡単。
これだけだと2〜3万かな。
1万でもやる奴がいそうだが。
ブログに追加という部分が厄介で、多分可能だろうが
使っているブログシステムが何か分からないことには確答しかねる。
0180178
2005/09/06(火) 13:02:06ID:???ブログはblognです。データベースが使えないので。
0181nobodyさん
2005/09/06(火) 13:16:00ID:???blogの記事投稿画面でアップロードした画像を挿入するのと同じような感じで
csvファイルをアップロードして、記事投稿のフォームにテーブル化したcsvを挿入、ということ?
0182nobodyさん
2005/09/06(火) 13:24:16ID:5K+uGMJDhttp://cefa.sakura.ne.jp/archives/2005/05/311555.php
設置した鯖は自宅鯖で、Windowsですがgo-pear.batを実行して
Pearのインストールは成功してると思います。
上記ページのとおり設置し、test.php内に
<?php include("http://www.mydomain.com/rssv.php?u=http://manabekawori.cocolog-nifty.com/blog/index.rdf"); ?>
を埋め込み、test.phpをブラウザで開くと
Warning: main(http://www.mydomain.com/rssv.php?u=http://manabekawori.cocolog-nifty.com/blog/index.rdf): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in d:\apache\users\aaa\home\test.php on line 15
Warning: main(): Failed opening 'http://www.mydomain.comrssv.php?u=http://manabekawori.cocolog-nifty.com/blog/index.rdf' for inclusion (include_path='.;D:\php\pear') in d:\apache\users\aaa\home\test.php on line 15
というエラーが出ます。
http://www.mydomain.com/rssv.php?u=http://manabekawori.cocolog-nifty.com/blog/index.rdf を直接ブラウザで叩いたり、
test.php内を
<iframe src="http://www.mydomain.com/rssv.php?u=http://manabekawori.cocolog-nifty.com/blog/index.rdf&n=3" width="360" height="500" scrolling="no" marginheight="0" marginwidth="0" vspace="0" hspace="0" frameborder="0"></iframe>
などとした場合にはちゃんとRSSを読み込んで表示するのです。
includeできない原因として何が考えられますでしょうか?
0183nobodyさん
2005/09/06(火) 13:27:28ID:???会員サイトで、「パスワードを忘れた方はこちら」というのがあります。
よくあるのは、
登録時のメールアドレスを入力して
・パスワードが直接メルアドに届く
・パスワード再設定用のURLが届く
サイト上で秘密の質問に答えるとその場でパスワード表示
などがあると思います。
セキュリティの面と、作成の手間を考え、どの方法が手っ取り早いかアドバイスお願いします。
メールアドレス宛にパスワード送るのならめっちゃ簡単だけど、それじゃセキュリティが甘いだろうし。
パスワード再設定用のURLが届く方法というのも具体的にどういう手法を使っているのか分からない。
助けてください。
0185nobodyさん
2005/09/06(火) 13:45:44ID:???どっちもまずい
・メールアドレス(場合によって+ID)を入力->パスワード送信
他人がなりすまして送信しまくりなスパムが簡単に出来る。
共用メールアドレスなんて可能性もなきにしもあらず。
・リマインダでパスワード表示
偶然にでも画面見ちゃった第三者が、ユーザがパスワード変更するためにアクセス出来るし、
同じパスワードを複数サイトで使いまわす人がいるってのもあるし、テキストとして表示しちゃうのはまずい。
メールアドレスな方法だと、ワンタイムな変更用urlを発行してメールを送るとか。
システム側では、DBなりに変更用urlに使うランダム文字列とユーザID、発行日時(もしくは有効期限)を格納。
リマインダな方法だと、パスワードをそのまま表示でなくて、パスワード変更用のフォームを表示するとか。
0186nobodyさん
2005/09/06(火) 13:45:50ID:???メールで直接パスワードが届くのはどう思いますか?
俺個人としては「別にいいんじゃね?」って感じなんだけど、
神経質な友人は「漏洩したらどうすんの!」って言ってます。
ユーザー名は記述しないし、最初に登録したアドレスに送るわけだし、
仮にメールがバレタとしても特に問題はないような気はするんだけど。
0187185
2005/09/06(火) 13:47:23ID:???×第三者が、ユーザがパスワード変更するためにアクセス出来るし、
○第三者が、ユーザがパスワード変更する前にアクセス出来るし、
0188nobodyさん
2005/09/06(火) 13:49:51ID:???>メールアドレスな方法だと、ワンタイムな変更用urlを発行してメールを送るとか。
>システム側では、DBなりに変更用urlに使うランダム文字列とユーザID、発行日時(もしくは有効期限)を格納。
>リマインダな方法だと、パスワードをそのまま表示でなくて、パスワード変更用のフォームを表示するとか。
あー、この返かなり参考になります。
ランダム文字列を発行してユーザー情報に格納、
その文字列をフォームに入力する(もしくはURLクリックする)ことによって
パスワード変更のフォームが登場。
こんな感じでよいでしょうか。
0189nobodyさん
2005/09/06(火) 13:51:56ID:???パスワードをそのままサーバ側で記憶しているのは、セキュリティ(というかプライバシー)上望ましくない。
であるから、1、3番目は、無い。
0190nobodyさん
2005/09/06(火) 13:54:28ID:???urlencodeしてください
<?php
// test.php
$rssv = 'http://www.mydomain.com/rssv.php';
$rdf = urlencode('http://manabekawori.cocolog-nifty.com/blog/index.rdf');
include "$rssv?u=$rdf&n=3;
?>
0192nobodyさん
2005/09/06(火) 13:57:15ID:???10秒くらい関数から帰ってこない
コマンドラインでsendmailを使っても遅いわけじゃないから
なにかPHP側でやってるのか
0193190
2005/09/06(火) 13:58:10ID:???0194nobodyさん
2005/09/06(火) 13:58:33ID:???まぁ、それにしたってメールが暗号化云々というのは根本的にアレだし、ログの問題もログ消して、パスワードとっとと変更しちゃえばいい話なんだけど。
サイトで扱う情報の重要性、機密性とかサイトの規模考えつつ、適当なとこで妥協すればいいと思う。
>>188
それでもいいし、メール送信する時に
http://www.hoge.gov/password_change.php?code=変更用ワンタイムコード
みたいなurlを本文に入れてあげれば、ユーザが入力する手間もなくなる。
んで、ワンタイムコードは変更用フォームにアクセスした時点か、フォームからサブミット掛かった段階で無効にする。
有効期限を発行から数時間くらいに設定して、フォームアクセス時にワンタイムコードを無効にすれば
セキュリティ的にも割とまともな物が出来るんじゃないかなぁ。
0195nobodyさん
2005/09/06(火) 14:04:45ID:???サイトで扱う個人情報はメアドくらいなものなのですが、
個人情報保護法がなんだかんだとうるさいご時世なので、
ある程度はしっかりとしないとと思った次第です。
194さんの方法を参考にあれこれと試行錯誤してみたいと思います!
0196182
2005/09/06(火) 15:57:21ID:5K+uGMJDサンクスです。
>>190にダブルクォートを入れて試ししましたが、
Warning: main(http://www.mydomain.com/rssv.php?u=http%3A%2F%2Fmanabekawori.cocolog-nifty.com%2Fblog%2Findex.rdf&n=3): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in d:\apache\users\aaa\home\test.php on line 15
Warning: main(): Failed opening 'http://www.mydomain.comrssv.php?u=http%3A%2F%2Fmanabekawori.cocolog-nifty.com%2Fblog%2Findex.rdf&n=3' for inclusion (include_path='.;D:\php\pear') in d:\apache\users\aaa\home\test.php on line 15
と、エラーメッセージのURLがエンコードされただけとなりました。
ネタ元でもあるブログサイトで動いてるphpを使って
<?php include("http://www.kotono8.com/rss/rssv.php?u=http://manabekawori.cocolog-nifty.com/blog/index.rdf"); ?>
とすると上手く表示されるので、こちらの鯖の設定などがまずいのか悩んでます。
0198nobodyさん
2005/09/06(火) 16:35:25ID:???0200nobodyさん
2005/09/06(火) 16:47:53ID:???0201nobodyさん
2005/09/06(火) 16:49:51ID:???解読というか復元?
つまり、「93c92ee0505ea7c5ee8f6d92dc21114f」このハッシュから
元の文字列が何か分かりますか?と言うことでつ。
分かるとすれば、そう言う関数があるのか、
もしくはどのような方法を使ってどのくらいの時間がかかるのか知りたいのです。
■ このスレッドは過去ログ倉庫に格納されています