【PHP】下らねぇ質問はここに書き込みやがれ Part19
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/04/09(日) 01:31:18ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
過去スレは>>2-3あたり
0053nobodyさん
2006/04/09(日) 18:44:04ID:???断層が深い配列がヒットしなくて困っています。
0054nobodyさん
2006/04/09(日) 18:50:30ID:???次元数が不定なら再帰呼び出しで潜っていくのが吉かと。
0056nobodyさん
2006/04/09(日) 19:02:24ID:???if (0 <= $num < 10) {
・・・
}
こういう書き方できないんですか?エラーでてしまいます。
if ($num >= 0 && $num < 10) {
・・・
}
これならうまくいくんですが。
0058nobodyさん
2006/04/09(日) 19:16:40ID:???実際に16進数の0xFFFFFFという値に変換するにはどうやればよいのでしょうか。
宜しくお願いします。
0060nobodyさん
2006/04/09(日) 19:32:15ID:???ありがとうございます。
型の変換パートと、文字列パートばっかり探してました。
mathにあるなんて思いもしませんでした。
0061nobodyさん
2006/04/09(日) 19:36:06ID:???0062nobodyさん
2006/04/09(日) 19:40:47ID:yKOq7PT+恥ずかしながら今知りました。
0063nobodyさん
2006/04/09(日) 19:59:17ID:???これがあると具体的にどのように役にたつのでしょうか?
phpだけでは掲示板とか作れませんか?
0064nobodyさん
2006/04/09(日) 20:02:58ID:???0065nobodyさん
2006/04/09(日) 20:07:33ID:???より大規模で高性能なものを作るときに、高速で安定したものが作れます。
個人サイトのちっこい掲示板くらいなら別に無くてもいいです。
006742
2006/04/09(日) 21:18:39ID:2atGm5L3RAND_MNAXの制限を受ける点については一文字ずつ生成すれば良いと思うのですが、
元々考えていたtiger192,4でのセッション文字列生成より明らかに遅い(五倍ほど)のが気になります。
for($i = 0; $i <=32; $i++) { $hash .= chr(mt_rand(62, 126)); }というコード(同じ192ビット)でベンチマークを取ってみたのですが。。
出来ればchrを\xにして、forを使わないようにすればもう少し早くなりそうなんですが。自分ではこれが限界です。
どなたか上のコード添削していただけると嬉しいです。
乱数生成であれば専用の関数を使った方が早いように思えるのですが、ハッシュの方が適しているのでしょうか?
それとも適切なコードを書けばそれより早い結果を得られるのでしょうか?どなたかご教示していただけると嬉しいです。
>>44 PHPの機能は使わず自作する場合です。PHPではハッシュを使ってるみたいですね。
0069nobodyさん
2006/04/09(日) 21:59:29ID:???ttp://www.google.com/search?num=50&lr=lang_ja&UTF-8&q=Parent%3A+child+process+exited+with+status+3221225477+--+Restarting.
スタックオーバーフロー起こしてるっぽい?
0070nobodyさん
2006/04/09(日) 22:02:43ID:???0071nobodyさん
2006/04/09(日) 22:09:03ID:???0072nobodyさん
2006/04/09(日) 22:10:01ID:???0073nobodyさん
2006/04/09(日) 22:18:52ID:qYTyFCRs完全な乱数を、ダブらないことを保証して作るのは少し面倒だったりしない?
0074nobodyさん
2006/04/09(日) 22:28:21ID:???007642
2006/04/09(日) 22:44:08ID:???ご返信ありがとうございます。完全に均等である(事を目指している)が故に、ハッシュを使うのも乱数を使うのもコリジョンの確率は同程度だったと記憶しております。
先程のコードを検討してみたところループで馬鹿みたいにロスをしていたので、現在二度mt_randを使って生成するように頑張ってます。
素直にハッシュ使えば良いんですが、どうしてももやもやするので。。
0077nobodyさん
2006/04/09(日) 23:01:58ID:???単純でミニマムな要素を組み合わせて大規模にした構成の方が結果的に高速だから。
ここまででかくなると普通にDBにしても性能は出ない。
凝ったDBを構築するくらいなら生datを専ブラに拾わせる今の形態の方がずっとシンプルで性能がいい。
0078nobodyさん
2006/04/09(日) 23:05:34ID:???現在使用中の他と重複しない一意の文字列を生成するのに
1番手っ取り早くてリソースも食わなくて高速だからでは。
逆にもっといい手法ってあるの?と聞きたい。
色々書いてる1桁ずつ乱数使って…とかいう話は「バカ?」としか思えない。
普段から常用するセッションIDの生成にそんなリソース食う方法使えるわけないでしょ。
007942
2006/04/09(日) 23:12:45ID:2atGm5L3素人考だとハッシュの生成(同一性も確認できる均等に分配される文字列)より、乱数の生成(均等に分配される文字列)の方が早いような気がするのですが、
もしよろしければなぜハッシュの方が早いのか教えていただけないでしょうか?気になります。。
0080nobodyさん
2006/04/09(日) 23:25:38ID:aTeqKq3o前スレ990さんいますか?
javascriptでやる方法は検討していたのですが、分かりませんでした。
小窓からjavascriptを使って、メインウインドウのselectの内容(mysqlに
新規に追加した項目)を更新したいです。
使用する関数や具体的なコードのヒントが書かれたページなど
ご存知でしたら教えてください。
よろしくお願いします。
0085nobodyさん
2006/04/10(月) 00:20:37ID:???>>31
array_mapだよね?
array_mapで、POST、GET、SESSION、COOKIEもしくは$_REQUESTにまとめて掛けちゃうのがやっぱり定番なんですかね?
その他、エラー処理なんかどうしてますか?>エラーとする文字列の検出
例えばあきらかに悪意のある文字列が含まれてる時とか・・・
漏れは、そういうときは、もう別画面に飛ばして、全部、自分に$_REQUESTの内容をメールで飛ばすって感じ。
個別に「○○欄に○○が含まれています」みたいなエラー処理(エラー告知)は、マンドクサ
顧客が記入するフォームはめんどくさいけど、項目数たかが知れてるから力技でなんとかしてる。
>>33
漏れはたいていこう書く
echo "名前: {$name}<br />年齢: {$age}";
これが一番可読性よくない?
>>前スレ993
POSTした検索条件をセッションに入れておいたうえでページングとか?
0086nobodyさん
2006/04/10(月) 00:35:01ID:???$_POST全部エスケープとかはしないなぁ。
必要なのはあくまでSQLに入れるデータとHTMLに吐き出すデータでしょ?
だからSQL用の関数・メソッドと表示用の関数・メソッドでそれぞれ
受け渡したデータのみ変換かけてる。
0087nobodyさん
2006/04/10(月) 00:42:07ID:???つ http://www.atmarkit.co.jp/fsecurity/rensai/webhole03/webhole01.html
0088nobodyさん
2006/04/10(月) 00:57:08ID:???> [notice] Child 5420: Starting 250 worker threads.
直接の原因は判らんがMPMあたりくさい。
workerで使ってるなら、そういうのが出るのも甘んじろというのが現状かも。
http://www.php.net/manual/ja/install.windows.apache2.php
0090nobodyさん
2006/04/10(月) 00:59:58ID:???単純な、ハッシュ値の算出vs1回の乱数ならそりゃ乱数の方が速いだろうけど、
今やろうとしてるのは30〜50桁を桁数分だけ毎回乱数取得だろ?
そんなのどうやってもハッシュほど速くなんて計算できないだろう。
009142
2006/04/10(月) 01:17:38ID:EZQH4hCw返信ありがとうございます。この実行時間差で悩んでるので、それはちょっと、、です。
>>90
forのところが悪いですか。。一度で算出しようにも桁数が大きくなりすぎてorzです。
いくつかに分ければ出来るかなぁ、と試行錯誤してますがスキル不足で出来ません><
もしよろしければコードを、、と甘えてみるテスト。
0092nobodyさん
2006/04/10(月) 01:24:52ID:???うぜえ
0093nobodyさん
2006/04/10(月) 01:35:24ID:???> もしよろしければコードを、、と甘えてみるテスト。
だからハッシュでやれって。無理だから。
何のためのハッシュだと思ってんのよ。
スキルも無いくせに「乱数の方が速いはずだ」とかいいかげんなことぬかしてんじゃねぇ。
009442
2006/04/10(月) 01:47:28ID:???普通にMTでの生成が早かったです。お騒がせいたしました。
0095nobodyさん
2006/04/10(月) 01:53:29ID:???0096nobodyさん
2006/04/10(月) 02:54:11ID:???Webサイトを作っているのですが
ページの一番下段に、コピーライトなどの文を入れています。
今までは一々、1ページ枚にHTMLで記述していたのですが
それだと、その文(コピーライト等)に変更があった場合全て書き直しが必要になるので
PHPを使い、その部分を読み込もうと思いました。
ですが、実際にやってみると
そのコピーライトの部分を読み込む際に
require('./under.php');
とやると、同位のディレクトリからは問題なく読み込めるのですが
その下位のディレクトリになると
require('./../under.php');
等としていかなければならず、ディレクトリ構成に変更があった場合は
結局書き直しが必要になってしまいます。
こういう場合は、皆様はどのようにして
上記のようなことを実現しているのでしょうか?
すいませんが、教えていただけると幸いです。
どうかよろしくお願いいたします
0097nobodyさん
2006/04/10(月) 03:09:59ID:???0098nobodyさん
2006/04/10(月) 03:16:22ID:???1.フルパスで書く
2.$_SERVER['DOCUMENT_ROOT']からのパスにする
3.includeパスを設定する
好み+TPOでご自由に
0099nobodyさん
2006/04/10(月) 06:27:30ID:???フレームワークのEthnaを使っていたのですが、その設定部分に
'log_facility' => 'user',
とするとこの現象が起きていたようで、結局この部分を書き換えてとりあえず
スクリプト自体は動くようになりました。
また、PEARをinclude_onceする部分をコメントアウトするとことでも
Apacheの強制終了が無くなりました(当然Fatal Errorでスクリプト自体は動きませんが)。
根本的な原因はわかりませんでしたが、PEARとEthnaのLogger周辺が原因となっていたようです。
0100nobodyさん
2006/04/10(月) 06:27:49ID:???98の続き。
4.その程度のことを自分で解決できない場合、
コンピュータのセンスが無さ過ぎのでプログラミングは諦める。
0102nobodyさん
2006/04/10(月) 06:52:57ID:???可読性が増すのでその方法を採用しようと思うのですが、
幾つか質問があります。
array_may という関数を使っているようですが、これはどのような処理のユーザ定義関数でしょうか?
0104102
2006/04/10(月) 08:44:10ID:???ありがとうございます。
幾つか質問があります、と言いましたがあまり質問しまくるのも良く無いので
続きは自分で調査、研究してみます。
0106nobodyさん
2006/04/10(月) 11:39:39ID:???0107nobodyさん
2006/04/10(月) 13:14:26ID:???ぱっと思いついた方法は file()で各行を配列に加えて、
各要素に> を加えて、再度結合です。
もっと簡単な方法あったらきぼんぬです。
010880
2006/04/10(月) 13:30:27ID:qYnFdAMkjavascript質問スレにいったのですが、あまり人がいないようで解決できていません。
onchangeとかonfocusでやるっぽいのですが、
どうやってリロードせずに新しいレコードをmysqlから引っ張るかが分からないです。
スレ違いだとは思いますが、ヒントをもらえるとうれしいです。
0109nobodyさん
2006/04/10(月) 13:30:30ID:???$text = Preg_Replace("/(.*\n|.+)/",">$1",$text);
0111nobodyさん
2006/04/10(月) 13:39:09ID:???0113109
2006/04/10(月) 13:44:37ID:???ん?どうおかしい?
0文字以上+改行か、1文字以上の行の先頭に > を付け足すようにしたつもりだけど。
.*\n だけだと $text の最後にも無条件で改行が付いちゃうし、
.* だけだと空行の先頭に改行が付かないからこんな感じに落ち着いたんだけど。
0114113=109
2006/04/10(月) 13:45:49ID:???○ .+ だけだと空行の先頭に改行が付かないからこんな感じに落ち着いたんだけど。
0115nobodyさん
2006/04/10(月) 13:53:06ID:???メインウィンドウはリロードしなくても、データ自体は小窓を開くことによって取得するんだよね?
だったら小窓の onLoad からメインウィンドウのフォームオブジェクトに値をセットするんじゃだめなの?
というか、JavaScript のリファレンスって持ってる?
無いなら http://www.tohoho-web.com/js/index.htm この辺はどうよ。
http://www.tohoho-web.com/www.htm から丸ごとダウンロードできるよ。
0116109
2006/04/10(月) 14:01:44ID:???スレ汚しとは思いつつも、気になるので書き直します。
.* だけだと $text の最後に無条件で > が付いてしまうから .*\n にしたんだけど、
これだと $text の最後の行が改行で終わってないとその行に > が付かないから
.*+ も付けてみた
が正しいです。
0118nobodyさん
2006/04/10(月) 14:09:06ID:???0120nobodyさん
2006/04/10(月) 14:21:00ID:???0121109
2006/04/10(月) 14:24:45ID:???$text は複数行で構成されているつもりだったので、
シングルラインモードならそれ付けたらうまく動かないし、
マルチラインモードでは ^ はあっても無くても同じ動作になります。
0122108
2006/04/10(月) 14:38:17ID:qYnFdAMkamazonでもオススメだった、mdnのjavascriptビジュアルリファレンスを買いました。
やりたいこととしては、
投稿フォームの真ん中あたりまで記入すると、カテゴリーのプルダウンが
出てくるん出すけど、そのプルダウンの下に「新規カテゴリーを登録」という
ボタンがあって、それを押すと小窓が開きます。
小窓には登録済みのカテゴリーのリストが出ていて、新規登録用の
inputがあって、カテゴリーの削除なんかもここでできます。
登録が完了して、小窓を閉じて、再びメインウインドウに戻ったときに
カテゴリーのプルダウンをクリックすると、さっき小窓で登録した
カテゴリーがリストに載っているという状態にしたいのです。
カテゴリーはカテゴリー名しか入っていないテーブルで管理されていて、
新規投稿フォーム(メインウインドウ)が開かれたときに
select category from categorytableみたいに呼び出されます。
小窓で新規登録した後に、リロードすれば反映させられますが、
カテゴリー選択以前に記入していた各inputの内容もクリアされてしまいます。
この場合でも、115さんの方法で解決できますでしょうか?
0123nobodyさん
2006/04/10(月) 15:15:48ID:T3nuwwG3$data = @file($file); //50行
for($i = 0; $i<10; $i++){ //最新10件表示
list($A,$B) = explode("<>", $data[$i]);
echo "<p>$A $B</p>";
}
こんな感じになってて、$dataには通し番号が入っていません。
最初に行数を数えて、
50
49
48
・・・と言う風に新しい方に大きな番号を振っていくにはどうしたらいいでしょうか?
0124nobodyさん
2006/04/10(月) 15:31:18ID:???できるよ。
小窓から登録なり削除をしたとき、submit するわけでしょ。
その応答ページに、メインウィンドウのフォームオブジェクトを書き換える JavaScript を埋めてやって、
処理完了後に小窓を閉じればいい。
メインウィンドウをリロードする必要なんて無い。
0126123
2006/04/10(月) 15:43:02ID:???そんなことは分かってるんですー。タイミングが分からないんですー。。
って思ったんですけど、言われて改めて考えたら分かりました!
$no = count($data) - $i;
ってすれば良かったんですね!$x-1とかやって悩んでました。
ありがとうございました。
0127nobodyさん
2006/04/10(月) 15:47:18ID:???0128nobodyさん
2006/04/10(月) 15:59:55ID:???0129nobodyさん
2006/04/10(月) 16:26:17ID:???0130108
2006/04/10(月) 16:41:02ID:qYnFdAMk板違いにもかかわらず、親切に答えてくださって助かります。
応答ページというのは、「登録が完了しました。」とか出るページでしょうか?
自分のコードではそこでinsert intoの処理をしています。
それとメインウィンドウのフォームオブジェクトを書き換える際に必要な
構文とかが具体的に分かれば教えて欲しいです。
それが分かればネットの情報とリファレンスを使って書いてみます。
よろしくお願いします。
0132nobodyさん
2006/04/10(月) 18:47:36ID:???必要な値を子から親にPOSTかGETで渡してリロードさせればいいんじゃないの?
というか構文とか教えたらネットの情報とリファレンスで出きるなら、
自分で調べるか諦めて業者にだしたら?その方が早い予感
0133nobodyさん
2006/04/10(月) 18:57:58ID:???元々の話が、リロードさせると入力途中のフォームの内容が失われるって話で、
JavaScriptでselectの内容だけ書き換えたいって質問。
0134nobodyさん
2006/04/10(月) 19:08:19ID:???一部の登録者のサーバーでたまにスパムだと誤認されて
届かなくなり、その人から「メルマガが届いてないぞゴルァ!」って
怒られるんだけど、これってこちらではどうしようもないよねぇ?
「おたくの会社のサーバー管理者に相談してね」って言うしかないよね?
0135134
2006/04/10(月) 19:11:14ID:???付加されていたメッセージはこれ↓
Remote host said: 450 Recognized as SPAM. Please set your server address in DNS. Till then!
0138134
2006/04/10(月) 19:16:51ID:???あ・・・・・・・今、気が付いたんだけど・・・・・・・・
こっちが使ってるサーバーが実はXREAなんだよね・・・・
そういえばXREAはここ数日、大騒動になってるんだったっけか。。。
ウチは独ドメだから関係ないと思っていたけど、この騒動と関係ありそうだな。。。
0140nobodyさん
2006/04/10(月) 19:22:28ID:???届いたり届かなかったりするならXREAがどうとかじゃないと思われる
おそらく届かないユーザーにaolだとかaolだとかaolだとかあとaolとか
のユーザーはいないか?
0142134
2006/04/10(月) 19:27:43ID:???日によって届いたり届かなかったりする登録者もいるし、
毎回必ず届かない登録者もいます。
そしてaolは見たことがありません。登録者のドメインはいろいろです。
0143134
2006/04/10(月) 19:29:21ID:???自鯖ならDNSサーバをいじればいいのかもしれませんけど、
XREAはレン鯖だからどうしようもないですよねぇ。。。
ちなみにXREAの大騒動については↓です。
http://pc8.2ch.net/test/read.cgi/hosting/1144506157/l50
0145134
2006/04/10(月) 19:32:15ID:???え? ちょっと意味がよく分からないのですが、
何を指して「無理矢理」なのでしょうか??
ちゃんと受信者からはメルマガ送信許可をもらっています。
0146nobodyさん
2006/04/10(月) 19:35:37ID:???いま、xrea.comドメインがREGISTRAR-HOLD食らってるから
DNS鯖によってはどっち向きにも引けないのよ。
だから、aolとかaolとかaolとかだと蹴られるだろうし、
先方さんが「逆引きできないMTAとは話さない」設定でも蹴られると思う。
>>139
>>134がカ)デジロックの中の人なら、ns[1-3].value-domain.comの設定をごにょごにょ。
ていうか、いくつか前のスレで「1万人の会員にメルマガを…」って言ってた人とは別?
XREAでどんくらいの数を撒いてるのか、ちょっと気になる。
0148108
2006/04/10(月) 20:56:32ID:qYnFdAMk色々ググったりして、近い処理など見つけたのですが、
とりあえず自分のjavascriptの知識が足り無さ過ぎですね。
ttp://www.game.gr.jp/about/log/board_whole_javascript.abc_seq_605.htm
↑などは近いですが(DBが絡んでない)苦戦してそうですし、
結構長いスクリプトを書かないとダメみたいですね。
やろうとしてること自体、結構難易度が高いんでしょうか?
0149nobodyさん
2006/04/10(月) 21:27:59ID:???難易度は高くないよ。スクリプトもそんなに長くならないはず。
おれだったら、メインウィンドウに JavaScript の関数を作って、そいつにフォームの select に値を設定させるようにするかな。
たとえば function setup(a) みたいな関数を作っておいて、小窓の「登録が完了しました」画面から opener.setup(a) で呼び出す。
小窓から渡す a は、Array('選択肢1', '選択肢2', '選択肢3', ...) みたいに配列にしてさ。
ようするに、PHP は小窓の完了画面の HTML にこんな風に出力する
<html>
<body onLoad="opener.setup(Array('選択肢1', '選択肢2', '選択肢3'));">
登録が完了しました
</body>
</html>
メインウィンドウに実装する setup の中身は自分で考えてみて
0150nobodyさん
2006/04/10(月) 21:29:34ID:ZFW0IoNM作成中のサイトはhttp://domain.jp/のようにアクセスすることでトップページへ飛びます。
その飛び先のデフォルトとして.htaccess内でDirectoryIndex index.phpとして
phpがコールされるようにしています。
念のためダミーでindex.htmlを作ってありますが、METAタグのrefreshで
http://domain.jp/をコールするようにしています。
ここで問題なのですが、サーバの解析ログをみたところ
http://domain.jp/を1度だけアクセスしたはずなのに
index.phpが連続して呼び出されているログが残っています。
最後にサーバ側から強制的にプロセスをシャットされているようなログも記録されています。
どのような原因が考えられますか?
0151149
2006/04/10(月) 21:45:45ID:???○ <body onLoad="opener.setup(new Array('選択肢1', '選択肢2', '選択肢3'));">
ただ、new Array は引数が 1個の場合には 2個以上の場合と機能が違って使いづらいこともあるから、
小窓からの呼び出しは
<body onLoad="opener.setup('選択肢1', '選択肢2', '選択肢3');">
にして、メインウィンドウの関数は
function setup()
{
var i;
for(i = 0; i < argments.length; i++) {
argments[i] をごにょごにょ
}
}
みたいにするとか。
■ このスレッドは過去ログ倉庫に格納されています