【PHP】下らねぇ質問はここに書き込みやがれ 27
■ このスレッドは過去ログ倉庫に格納されています
00011様
2006/08/23(水) 00:54:52ID:uM5Jzzy0まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0233232
2006/08/26(土) 23:48:39ID:???mysql_escape_stringはシラネ
・@Nifty
[質問]
・AccessLogCgi 自作にあたっての注意事項 (見落としてはならない処理)
($ENV{''} で得たデータを log-file に書き込む所までは成功)
・log-file の permission 設定の留意点
[現状]
当方, どうにか perl を読み取れる程度.
local テストは なんとか できますだ.
要するに度胸と勘は人並み以上にあるが,
常識をまったく知らないので危なっかしいこと この上なし !
先輩方には転ばぬ先の杖に なっていただきたいのら.
申す訳ねぇですだ.
ゆ, 誘導...
0237nobodyさん
2006/08/27(日) 00:11:17ID:???いや、言語は確かにPerlだけど、やってることは別にPerlじゃないとダメ!って物ではないな。
お前はあれだろ?アクセスログ取りたいんだけど気をつけることって無い?ってのが聞きたいんだよな?
後々のためにもここで一度皆の意見を出しておこう。
じゃあ、まず俺の考えな。
お前のメル欄には殺意を覚える
0238nobodyさん
2006/08/27(日) 00:21:57ID:puW5pOF7NamazuでPDFファイルを検索し、全文を見る場合はPDFで
概要を見るときは、htmlで見るというふうに選択できるように
したい思っています。
そこで、PDFファイルのほうでインデックスが作られているという状態
で、どのようにすれば、検索したときに概要のhtmlも一緒に表示
し、選択できるようになるかヒントをいただきたいのですが。
0239nobodyさん
2006/08/27(日) 00:26:39ID:???>ファイルダウンロードや保存処理などが全く判りません。
俺はURLリストをPHPで作って、収集はwgetにリスト食わせてやってる。
ただWindowsのときはwgetからエラー取るのはちと上手くいってないので、
回線の調子や相手側が混んでてまともに落ちなかった場合の処理が
落とせて保存できたローカルのファイルと比較して云々ということをやってる
ので無駄があるかな。でもPHPでファイルダウンロードさせるのもね...
0240236
2006/08/27(日) 00:28:19ID:jDhPUedGもっ, 申す訳ねぇデスだ.
つい, うっかり...
制限はあるものの, とりあえず perl は使えるようなので...
@Nifty の forum で聞くのがベストなんだろうけど,
まだ参加できないようなので...
(実は今日 入会通知が来て hosting が利用できるようになったばかり)
以後, 気をつけますだぁ〜 !
0242nobodyさん
2006/08/27(日) 01:09:27ID:???>ごめん、mysql_real_escape_stringの方の話。
意味がわからん。
「mysql_real_escape_stringの方」がどうしたの??
0247nobodyさん
2006/08/27(日) 03:31:50ID:wHycBp2fこのメールフォーム使ってるんですけど、メール欄にメアドを正しくいれてもエラーになってしまいます。
このメールフォームを配布してるサイトは更新がとまっており、メール対応もしてくれませんでした。
自分で修正しようと思うのですが考えられる問題点は何なのでしょうか。
どなたかよろしくお願いします。
0248nobodyさん
2006/08/27(日) 03:35:12ID:???なんでもいいのですが、
たとえばinclude()やdefine()やarray()などで、
include("AAA.inc")
define("AAA","あいうえお")
array("AAA","BBB")
といった感じに、""(ダブルクオテーション)をよく使っているのですが、
ここは''(シングル)でも大丈夫ですよね?
普通はどちらを使うのでしょうか?
もちろんどっちでもいいのでしょうが、
一般的にはこっちだ!っていうのがありましたらぜひ教えてください。
0249nobodyさん
2006/08/27(日) 03:36:17ID:PJYoudumhttp://jp2.php.net/manual/ja/ref.mail.php
0250nobodyさん
2006/08/27(日) 03:37:48ID:???http://jp2.php.net/manual/ja/language.types.string.php
0251247
2006/08/27(日) 03:41:27ID:wHycBp2f本体とテンプレをうpしたのでお願いしますm(_ _)m
http://strawberry.web-sv.com/cgi/up/sde/nm0134.zip
0253nobodyさん
2006/08/27(日) 03:46:41ID:wHycBp2fすいません、>>249のページを見ても分からなかったので誰かに教えてもらおうかと思い。。
メアドを入力したのに認識されないってのは何故なのでしょうか??
0254nobodyさん
2006/08/27(日) 03:52:06ID:???nullがWebProgも触りだすようになったのか。
△▲ WebProg 初心者の質問 pert14▲△
http://pc8.2ch.net/test/read.cgi/php/1151501830/
Perlコーディング初心者質問スレ Part 51
http://pc8.2ch.net/test/read.cgi/php/1153987463/
セキュリティ関係はこの辺も見ておきな。
http://www.ipa.go.jp/security/awareness/vendor/programming/
>>248
その時その時で見やすければどっちでもいい。
0255nobodyさん
2006/08/27(日) 03:53:06ID:lTJDB2fj例えばデータベースからすべての行をとって多次元配列に入れてあるとして
その並び順を、値段順とか、名前順とかにソートしたのですが
array_multisortを使って、配列を並び替えるのと
データベースからORDER BYを使ってもう一回取得するのとどっちが一般的…というか
負荷が少ないのでしょうか?
なんとなく配列並び替える方がいいのかと思い調べてみたら
ちょっとめんどくて、列の全データを別の配列に取得しなきゃならないらしくて
意外にデータベースに再アクセスした方が楽だし、負荷も少ないのかな
なんて思いました。
お願いいたします。
0256nobodyさん
2006/08/27(日) 04:07:50ID:lTJDB2fj>>250
そういえば250は前読んだけど忘れた。
そういう違いがあったんでしたね。「どっちでも良い、同じもの」
くらいに考えてた。勉強になりました。
エスケープ文字や変数のパースとは関係ないけど
今、ふと自分の書いたコード見てて思ったのは
例えば連想配列に文字列をくっつける場合
$_SERVER["SCRIPT_NAME"],".php"
より
$_SERVER['SCRIPT_NAME'],".php"
の方が見やすくないですか?
まあ、どうでもいいけどふと思ったので…
0258nobodyさん
2006/08/27(日) 04:17:32ID:???並び替える時も結局全件取得のSQL発行すんでしょ?
もしそうならORDER BY句を動的に作るのが一般的だと思う。
セッションに入れてるとかならusort使うかな。
>>256
普通変わらない。なので君が見やすくなるというシングルで括ればいい。
ていうかカンマじゃなくてドットでしょ?そういう見間違いを無くすためにスペースを入れる方が重要だと思う。
もしリテラルの色が変わらないエディタ使ってるなら乗り換え推奨。
0259240
2006/08/27(日) 06:27:36ID:jDhPUedG誘導並びに参考リンクありがとうございまふ.
余談ながら 以前は高嶺の花と思われた nifty が激安で会員募集 (うるうる)
貧乏人の僕たんも やっとこさ CGI そのものをいじれるように成増た.
時代は変わる〜 !!!
もう perl の食わず嫌いなどやってられません.
0260nobodyさん
2006/08/27(日) 06:36:31ID:???このとき$hoge[$i][$j]には「hoge"hoge"」みたいな感じで文字列が入ってるんですが、
そのあと$str = {$_POST['aaa'][$k]}などで値を取って来たとき中身が「hoge」に変わってしまいます。
これはどういう記述をすればちゃんとダブルクォーテーションで挟まれた文字列もPOSTで取ってこれるのでしょうか?
0261nobodyさん
2006/08/27(日) 07:00:35ID:???フリーのレン鯖でもCGIは勿論のことPHPも使えるとこあるはずだけど。
すぐ覚えられると思うから機会あったらPHPも触ってみな。
>>260
HTMLレベルでおかしくなってる。<INPUT ... value="hoge"hoge"hoge">
urlencodeを使う。
0262259
2006/08/27(日) 08:10:25ID:jDhPUedGあどばいす ありがとん.
残念ながら local で (かろうじて) 動かせるのが perl と python.
(MacPerl には妙なくせがある !!!)
PHP は MacOS9.x 以前で動くものが なかったような. (良く調べてないけど)
努力以前に OS の縛りが効いて来るのが つらいところなのら.
すべての制限を取り除こうとすると PC 買い替えって話に... (え〜ん)
0264nobodyさん
2006/08/27(日) 08:33:05ID:???今Macを使うメリットってあるのか?
印刷屋だってもうwindowsがほとんどだろ。
デザイナーがMacって言うのはそろそろ時代遅れだな
0265259
2006/08/27(日) 08:57:47ID:jDhPUedG>今Macを使うメリットってあるのか?
貧乏なので簡単に乗り換えができないだけの話だぴょん.
メリットは ほとんどないよん.
(drive name を自由に設定できるので windows よりは local チェックで有利.)
んで, server で最も普及してるのが UNIX 系 OS なので
もしも乗り換えることが できるのなら OS-X は かなり魅力的に見える.
(local チェックして そのまま upload して問題が起きなそう)
しかし Apple って DQN 会社だからなぁ〜 !
0267nobodyさん
2006/08/27(日) 09:17:28ID:???一般的なのはSQL再発行だと思う。
ただし、PHPとDBの負荷の大きさ次第。
この負荷はシステムの作り方次第なので何とも言えない。
大抵の場合は「どっちも問題になるほどの負荷じゃない」から
SQL再発行でDBにソートを任せる、という選択になる。
データの分量や内容にもよるけど、経験則的には
DBを使った方が負荷はやや高い代わり速度が速い。
PHPで処理すると負荷は小さいが速度は遅い。
ただ、ほとんどの場合どっちでも負荷も速度も無視できる程度。
DBの格納データがでかすぎる場合などで、ソートするのに
内部でワークファイルを使うようになる状態だと負荷が高く速度も遅いので、
この場合はPHPで処理した方が高速になることがある。
個人的な主観では、selectの戻りが2秒以上とかかかるくらいじゃなきゃ
PHPでのソートを選択する意味は無いと思ってる。
0269nobodyさん
2006/08/27(日) 09:29:44ID:???俺はxrea.com使ってるけど、無料でPHPもPerlもDBも使えるよ。
niftyなんて使いにくいだけだからやめといた方がいいと思うんだが。
0270nobodyさん
2006/08/27(日) 09:43:36ID:???> selectの戻りが2秒以上とかかかる
index が使われててこれだけ掛かる場合は、データが大量になってるだろうから
PHP でソートなんて考えないな、普通。
ただ単に seq. scan されてて遅いなら、DB の設計を見直した方が良いかと。
どっちにしても、普通は DB でやるわな。
xrea は確かに魅力的だけど,
value domain からの手続きが良くわからずに時が過ぎた.
(OCN の利用料が激安だったので多少の出費は問題なしだったのだけど)
>niftyなんて使いにくいだけだからやめといた方がいいと思うんだが。
そういう意見は多いみたいね. (たしかに path 指定が面倒な感じ...)
でも, DIQN -> OCN と乗り継いで来た僕には
CGI 持ち込み OK ってだけで ウキウキわくわくなのだ.
ある程度の実力を付けるまではレンタルサーバー探しをするよりもお手軽 !
local で動かすだけか実際に運用できるか の違いは
やる気に大きな影響を及ぼす物なのさ.
0272nobodyさん
2006/08/27(日) 10:23:54ID:???0273nobodyさん
2006/08/27(日) 10:31:24ID:???格納されてるデータが多すぎてorder by付きselectが遅くなるのと、
fetch後のデータが極端にでかいのとはまた少し違うんで、
条件次第ではPHPの方が速かったりするよ。
でも、fetch後もそれなりにでかいデータじゃないとこうまで遅くならないから、
PHPで処理したところで2秒が0.7秒とかになる程度なんだけどね。
ホント、PHPでソートはDBが使い物にならない状態になったときの
最後の奥の手だと思う。
あるいはDBコネクション数を可能な限り減らしたいときとかくらい?
0275nobodyさん
2006/08/27(日) 10:34:07ID:???お前、web制作初心者-JSと渡り歩いてきたnullと呼ばれてた人物だろ?
まだいたのか。懐かしいな。
次はPerlか?まぁ頑張れよ。
0276nobodyさん
2006/08/27(日) 10:37:06ID:ouxlcoeKPHPでフォームから英文テキストを送信・記録するホムペを作成中なのですが、
文章に \ や ' が含まれていると勝手にバックスラッシュがついたり、なぜか変に
なってしまいます。しかも、送信しなおすとバックスラッシュの数が増えたり、もう
わけがわかりません。
例) ' ←これを送信するとなぜか \' になる
これはどうやって解決すればよいのでしょうか?
よろしくお願いします。
0278nobodyさん
2006/08/27(日) 10:51:28ID:???ありがとうございます
構ってくれてありがトン.
すれ違いっぽいので これにて失礼.
最後に...
CGI に取り組むにあったっての
皆さんの最初の取っ掛かりは何だったか お教えいただけません ?
[現在の悩み]
1. 特定の言語そのものを覚えるだけでは上達しそうにない
(定石的な処理がありそう)
2. もしかすると HTTP とか TCP/IP などの理解が必要かも知れない
3. お手本として良いサンプルを見つけるのが大変
(なぜかアレな HTML ソースを吐くものが多く,
ごていねいな comment が処理の本質を見極めるのが大変にしている)
いったい全体どこから手をつけたらいいの ?
0280255
2006/08/27(日) 11:44:42ID:lTJDB2fj今、自分でいろいろ作って勉強中なんですけど
DBのデータを大量に用意してないので、どっちをやっても一瞬で
終わっちゃうからよくわからなかったんです。
皆さんのレスから察するによほどでかいDBじゃない限り
負荷は気にすることなさそうですね。
SQL再発行の方が書くコードも短いし
DBでソートする仕様でとりあえず作ってみます。
0281nobodyさん
2006/08/27(日) 11:45:07ID:???> CGI に取り組むにあったっての
> 皆さんの最初の取っ掛かりは何だったか お教えいただけません ?
その辺で配布されてる掲示板が使いにくかったから自作した。
> 1. 特定の言語そのものを覚えるだけでは上達しそうにない
ちゃんと基礎からやってればよほど変則的な言語じゃない限り
新しい言語でも1〜2週間あればそこそこ使いこなせるようになるから
特定の言語の勉強を頑張るというのはほとんど無意味。
それができてないってことは基礎がそもそも無いだけ。
> 2. もしかすると HTTP とか TCP/IP などの理解が必要かも知れない
TCP/IPは要らないと思うがHTTPは基礎程度は理解しとかんとダメだろ。
> 3. お手本として良いサンプルを見つけるのが大変
CPANとかPearとかあの辺を参考にした方がいいぞ。
個人でフリー配布のCGI/PHPにまともなのは数えるほどしかない。
お答えありがとう.
参考にさせていただきます.
すれ違い気味に長居しすぎたのでこれにて.
0283204
2006/08/27(日) 12:34:33ID:ZAeRdNvV超返事が遅くなりましたがありがとうございました!
0284nobodyさん
2006/08/27(日) 12:44:44ID:???答える気失せる
0285nobodyさん
2006/08/27(日) 12:59:34ID:???お前の回答が悪いか相手の選択を誤ってるんじゃね?
0287nobodyさん
2006/08/27(日) 13:52:15ID:???礼が欲しくて回答者やるというのもどうかと思うけどな。
>>284はもう少し気長に構えて1ヶ月くらい続けるか、
それともいっそストレス溜まる前に止めるかした方がいいんじゃね?
0289nobodyさん
2006/08/27(日) 15:59:53ID:???0290nobodyさん
2006/08/27(日) 17:46:42ID:IIRD8PWGそいつの事情てもんがあるから必ず礼をすれってのも変だ。
0291nobodyさん
2006/08/27(日) 17:48:29ID:IIRD8PWG0292nobodyさん
2006/08/27(日) 18:55:25ID:???モラルの問題だな…。
0293nobodyさん
2006/08/27(日) 19:00:35ID:???0294nobodyさん
2006/08/27(日) 19:50:49ID:???本当はエスパーかもしれないのに、見た目ただのボケと
区別がつかない回答は、かわいそうだ・・・
0295nobodyさん
2006/08/27(日) 20:36:44ID:???どちらにせよ質問するだけしといて放置ってのはムカつく。
0296nobodyさん
2006/08/27(日) 20:43:32ID:???0297nobodyさん
2006/08/27(日) 21:02:55ID:???0298nobodyさん
2006/08/27(日) 21:08:06ID:???0300nobodyさん
2006/08/27(日) 22:08:39ID:???0301(^ω^)
2006/08/27(日) 22:10:24ID:???0302nobodyさん
2006/08/27(日) 22:36:35ID:???0303nobodyさん
2006/08/27(日) 22:42:01ID:???0304nobodyさん
2006/08/28(月) 00:50:16ID:???if(strstr($url,"http://"){
echo"これはURLです。";
}
0305nobodyさん
2006/08/28(月) 00:51:35ID:???0306nobodyさん
2006/08/28(月) 01:08:47ID:???0308nobodyさん
2006/08/28(月) 03:01:51ID:miwG/swi0309nobodyさん
2006/08/28(月) 03:02:40ID:???効率の悪そうなアルゴリズムしか思いつかないのでもっとスマートな方法がないか
アイディアかヒントを頂ければ
100の申し込みがあって、それぞれの申し込みには10が初期値で1〜20の重み付けが
あります。当選確率は1が一倍で2が二倍…20が20倍です。
DBから各申し込み(内容と重み付けが入っている)をとってくる。
配列か連想配列に入れる。
各申し込みを重み付けの分だけ配列の中に増やす。(ここが効率が悪そう)
そして
$tousen = array_rand($array, 1); で取り出そうかと…
もっと、賢い方法がありそうな気がするのですが、頭のいい方よろしくお願いします。
0310309
2006/08/28(月) 03:03:20ID:e9kKWeu60311nobodyさん
2006/08/28(月) 03:23:02ID:???100程度の入力ならその方法でいいんじゃまいか?最大2000だし。
別な方法でやるなら、重み付けの分だけ当選札を発行して、
そこからrand(1,全当選札の数)で当選番号を決めるのはどうかなぁ
0312nobodyさん
2006/08/28(月) 03:41:05ID:e9kKWeu6深夜なのにレスありがとうございます。
> 100程度の入力ならその方法でいいんじゃまいか?最大2000だし。
すみません。
例なので実際には1万の申し込みや、重みも100などいくかも知れないです。
> 別な方法でやるなら、重み付けの分だけ当選札を発行して、
> そこからrand(1,全当選札の数)で当選番号を決めるのはどうかなぁ
ちょっと理解できたかわからないのですが、こうでしょうか?
$query = 'SELECT COUNT(weight) FROM mousikomi_table';
$wight_count = query($query);
$tousen_bangou = rand(1, $weight_count);
当選番号から、どの申し込みが当たりなのかの処理も賢い方法が思いつかないです…
思いついた賢くない方法は、
配列の添え字に重みをかけて、その番号まではその申し込みの持っている当選番号として
次の添え字に行く。そして、当選番号が出てくるまで同じ処理を繰り返す…
うーん、自分ながら頭が悪いアルゴリズム…
0313309
2006/08/28(月) 03:58:22ID:e9kKWeu6軽く間違えたのでもう一度。
$query = 'SELECT SUM(weight) FROM mousikomi_table';
$wight_count = mysql_query($query);
$tousen_bangou = rand(1, $weight_count[0]);
for ($i=0; $i < count($mousikomi); $i++) {
$total_bangou = $tousen_bangou + (1 * $mousikomi['weight']);
if($tousen_bangou <= $total_bangou) { print "当選した申し込みです。"; last;}
}
forで当選番号が見つかるまで探しつづけるあたりが頭悪い感じが…
0314nobodyさん
2006/08/28(月) 05:25:53ID:???その場合、申し込みテーブル1つで抽選の時だけの工夫だったら
どうやっても速くならないんじゃないかな。
>>311の言ってる方法だと思うけど
当選札テーブルを用意して、申し込みや重みの変動があった都度
当選札を発行して入れておくといいと思う。
>>309が最初に言ってた方法を抽選の時にまとめてじゃなくて
変化があった時に分散する感じ。
もっと頭いい方法あるのかもだけど俺が思いつくのはそのくらい。
0315nobodyさん
2006/08/28(月) 07:27:23ID:???連想配列 10万って大丈夫?
0316nobodyさん
2006/08/28(月) 08:28:29ID:???0317nobodyさん
2006/08/28(月) 08:29:43ID:???<?php
$ar['0']='abc' ;
for($i=0 ; $i<100000 ; $i++){
$ar['index'.$i]="$i" ;
}
?>
俺の環境では大丈夫だった
0318nobodyさん
2006/08/28(月) 08:51:34ID:???ふつうにDBがよくね?
0319nobodyさん
2006/08/28(月) 09:14:23ID:???>>304
マニュアル見て考えてみれ。
http://www.php.net/manual/ja/function.parse-url.php
>>192
亀レスだが、PHP以外の言語をいじったことあるか?
マニュアルに書いてあるTRUEとかFALSEとか戻り値とかの意味わかるか?
多分、おまいは基礎の基礎をすっとばして、いきなり応用に入ろうとしているんだろ。
0320nobodyさん
2006/08/28(月) 09:51:05ID:???0321nobodyさん
2006/08/28(月) 10:07:23ID:8XzpZNhh矩形をたくさん表示させようと思っております
0322nobodyさん
2006/08/28(月) 10:24:25ID:???世の中こんな人もまだまだいるんだなぁとちょっとほっとした。
私は配列。
0324nobodyさん
2006/08/28(月) 11:19:40ID:???if($Cid==$line[1] or $Cid==$line[2] or $Cid==$line[3] or $Cid==$line[4] or
$Cid==$line[5] or $Cid==$line[6] or $Cid==$line[7] or $Cid==$line[8] or.................
$Cid==$line[100]) {
をなんとか一文ですっきりする方法はないのでしょうか?
例えば
if($Cid==$line[1から100]) {
のような感じです。
0326nobodyさん
2006/08/28(月) 11:38:06ID:???0327nobodyさん
2006/08/28(月) 11:44:09ID:???見た目はすっきりと良くなるよ
0328nobodyさん
2006/08/28(月) 12:13:01ID:???for($i=0 ; $i<100 ; $i++){
if($Cid == $line[$i]){
$flag = "hogehoge";
break;
}
}
つーことね。
in_arrayで考えてたから逆に思いつかなかったw
0329nobodyさん
2006/08/28(月) 12:40:13ID:???0332309
2006/08/28(月) 12:55:31ID:tNKhmn4zID変更になりますが…309です。
仮のテーブルを作って早くなるなら作ろうと思います。
申し込みはフィックスされたら変更されないのですが重みは
何回も抽選するのでそのたびに変更されます。
なので重みを先に計算させるのはむずかしそうです…
なんとか分散する方法を考えてみます。
当選番号から元の申し込みの添字を見つける計算アルゴリズムもいいのが
浮かびそうな気がしてきました
■ このスレッドは過去ログ倉庫に格納されています