【PHP】下らねぇ質問はここに書き込みやがれ 31

このエントリーをはてなブックマークに追加
1nobodyさん
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

【前スレ】
 【PHP】下らねぇ質問はここに書き込みやがれ 30
 http://pc8.2ch.net/test/read.cgi/php/1159979905/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
2nobodyさん:2006/10/25(水) 08:50:01 ID:???
【PHP】下らねぇ質問はここに書き込みやがれ 24
http://pc8.2ch.net/test/read.cgi/php/1152251693/
【PHP】下らねぇ質問はここに書き込みやがれ 25
http://pc8.2ch.net/test/read.cgi/php/1153652403/
【PHP】下らねぇ質問はここに書き込みやがれ 26
http://pc8.2ch.net/test/read.cgi/php/1154923910/
【PHP】下らねぇ質問はここに書き込みやがれ 27
http://pc8.2ch.net/test/read.cgi/php/1156262092/
【PHP】下らねぇ質問はここに書き込みやがれ 28
http://pc8.2ch.net/test/read.cgi/php/1157284868/
【PHP】下らねぇ質問はここに書き込みやがれ 29
http://pc8.2ch.net/test/read.cgi/php/1158434799/
3nobodyさん:2006/10/25(水) 08:52:09 ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

(以下英語)
■Smarty       http://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
4nobodyさん:2006/10/25(水) 08:54:09 ID:???
関連スレ
http://pc8.2ch.net/php/subback.html
PHPで検索汁!
5nobodyさん:2006/10/25(水) 09:02:22 ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
6nobodyさん:2006/10/25(水) 09:12:52 ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40  
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
71:2006/10/25(水) 09:16:07 ID:???
できるだけ前スレの>>996の意向にそったつもりだが、
時間かかりすぎるのもあれなんで、適当に修正した。
不満があるなら次スレで修正してください。
8nobodyさん:2006/10/25(水) 09:17:13 ID:???
かなり乙
9nobodyさん:2006/10/25(水) 09:22:50 ID:???
                     _.. - .._
                   _.. - ,ニ-冖 ⌒ 冖-ニ - _
               / ノ´,. .‐.: : : ̄: :、:‐. 、`ヽ \
            /   //: :./: : : : : : :l: : : :.\ヽ \
             <  ヽ/: : : :/: : : : : : /: :.l: : :、: : :ヽ/   >
              丶、/: : : ::/: : : : ::::〃:/:.|:: : :.l: : : :.', /
              l:l: :-:、l.: :::::::://://:∧:::._;l:-!: l:.|!
             ,l:l: : : ::|><__/ ' / '_,. へ:.|: l: :|::!l
             l:.|:|: : : ::lz=ュ   ′ z=ュ.リ:://: l
            l: :Nヽ: : :ヽ     '       /:://: : :.l
             l: : /il ヽ、ヽヽ   /二ヽ  / '// ̄`ヽ!  くっだらねぇ質問は
             l: /   il  li、``  |   |  /' li:.   ヽ ここに書き込みやがれ〜
              l:/    il   li `丶、ヽ-- ,' ィ .il  li::.    ヽ
            ,/     il.※.li    ,.ィ`不ヽ、 il.※.li::::::..   ヽ
.        //     .:il  li   // //'{l:l ヾ、il  li\::::::...   l、
      / l/    ..::::il  li  ヽヽ//l>ィll:l__,ノイ   li:::::::丶、:::::::...l \
       |:  l:::.  ..:::::::::il.※.li   `イl:l. {.l:「´ il.※.li:\:::::::. `` ┘ \
      l::  l::::::_:::-:':´il  li    {l:l,><{ l:l   il  li\_l\::::.     .::/
    /,l:::.  ̄   ::::::il  li、,.、,、,、{.l:ト、イ.l:l、,、,il  li::::::::l:::::ヽ::.   .::::/` 丶、
  ,. '"´,.-l::::::::::::::::::::::/il.※.li、,、,、,、,、l:l::::::::{_l:l,、,、il.※.li、:::::::l:::::::..........:::::/ニ、ヽ、
10前996:2006/10/25(水) 09:24:41 ID:???
>>1
GJ!乙&d
11nobodyさん:2006/10/25(水) 10:34:39 ID:rZkuwLJp
2ゲット⊂(゚Д゚⊂⌒`つ≡
12名無しさん@お腹いっぱい。:2006/10/25(水) 11:44:27 ID:J6B8Hktu
htmlの文章を"。"が3つ出てくるごとに改行したいんですが、どうもうまく
いきません。

for($i=1; i<=30; i++){
 if(ereg("。","str.html"){
   if($i/3==1){

それで、fwriteで\nを書き込むようなことを試みたんですが・・
よろしければ、鮮やかな処理をお見せいただきたい。
13nobodyさん:2006/10/25(水) 11:54:23 ID:???
括弧もとじてないし。なんでコードがちゅうと半端なの?
14nobodyさん:2006/10/25(水) 12:04:21 ID:???
>>12
よくわからんけどこういうことじゃないの?
$html = str_replace('。。。','。。。<br/>',$html);
15nobodyさん:2006/10/25(水) 12:12:24 ID:???
文字列。文字列。文字列。<BR>
文字列。文字列。文字列。<BR>
文字列。文字列。文字列。<BR>
16nobodyさん:2006/10/25(水) 12:16:43 ID:???
$html = str_replace('。。。','。。。<br/>',file_get_contents(str.html));
echo $html;
17nobodyさん:2006/10/25(水) 12:24:00 ID:???
$v[]="abc";

echo $v{0};

この場合の{}ってどういう意味ですか?
1812:2006/10/25(水) 12:34:59 ID:J6B8Hktu
>13
関係があるところを書くと、こんなです。
$bunsyou=fopen("str.html","r+");
$kaigyou =fread($bunsyou,filesize("str.html"));
for($i=1; i<=30; i++){
 if(ereg("。","str.html"){
  if($i/3==1){
fwrite("str.html","。\n");
}
}
}
fclose($bunsyou);
>14
すいません。言葉が足りませんでした。
例えば、
○○○○○○○○○○○○○○。○○○○○○○○
○○○○○○○○○○○○。○○○○○○○○○○
○○。○○○○○○○○○○○○○○○○○○○。
といった文章があったとして、一度も改行されずに文章が記述されて
いるのは読みにくいので、"。"が3度出てきたら、そこで改行したい
ということです。
19nobodyさん:2006/10/25(水) 12:39:49 ID:???
>> if(ereg("。","str.html"){
正規表現をばかにしすぎ
20名無しさん:2006/10/25(水) 12:57:12 ID:gy1NzvJV
申し込みフォームを作成して、申込者に確認メールを
送信する仕組みを作りました。

相手が通常のメーラーなら問題ないのですが、hotmailなどの
フリーメールを使っている場合、文字化けしていることが
あるようです。

どうすれば相手がフリーメールでも文字化けしないでメール
送信ができるようになるでしょうか?

メール送信には、mb_send_mail関数を使っています。

この第4引数になんらかのヘッダ情報を付与すればいいのかな
とも思っていますが、どうすればいいのかよくわかりません。

よろしくお願いいたします。

Windows2000Server
PHP4.4.0
Webサーバ及びSMTPサーバはIISを利用。
21nobodyさん:2006/10/25(水) 13:10:05 ID:???
配列を","で区切って出力してくれる関数はありませんか?
ちょうどarrayで入力するときみたいに。
22nobodyさん:2006/10/25(水) 13:19:30 ID:???
質問者はIDをだせ。
23nobodyさん:2006/10/25(水) 13:21:28 ID:???
>>17
桁指定
24nobodyさん:2006/10/25(水) 13:22:00 ID:???
>>21
explode
25nobodyさん:2006/10/25(水) 13:26:19 ID:snVEf27m
すいません 訪問者がサイト内でクリックしたURLを表示したいのですが、
どんな関数がありますか?
2624:2006/10/25(水) 13:27:44 ID:???
違った。勘違いした。
改めて>>21
var_export
27nobodyさん:2006/10/25(水) 13:28:17 ID:???
>>25
ない
28nobodyさん:2006/10/25(水) 13:29:15 ID:???
>>18
まだいるか?
29nobodyさん:2006/10/25(水) 13:38:03 ID:???
携帯からメールで送られてきた時、添付禁止できないようにPHPで設定できないでしょうか?
30nobodyさん:2006/10/25(水) 13:39:33 ID:???
できるかバカs
31nobodyさん:2006/10/25(水) 13:42:12 ID:snVEf27m
>>27

そうですか・・・
PHPサイトでクリック履歴を表示してくれるサイトがあったのでついできるのかと
32nobodyさん:2006/10/25(水) 13:49:05 ID:???
>>31
質問の仕方が悪いからでしょ。そんな「関数」はない。
そんな仕組みは作れるがな。
3317:2006/10/25(水) 13:50:16 ID:???
>>23
具体的にお願いできますでしょうか?

連想配列でも使えるようなのですが・・
34nobodyさん:2006/10/25(水) 13:50:30 ID:snVEf27m
>>32
アイデアだけでもいただけますか? 
35nobodyさん:2006/10/25(水) 13:52:10 ID:???
>>34
GETとアクセス解析
36nobodyさん:2006/10/25(水) 13:54:07 ID:???
>>34
各リンク先にプログラムを仕込んで呼び出されるごとにセッションに記録していく。
37nobodyさん:2006/10/25(水) 13:55:07 ID:???
>>33
$str = "abcdefg";
echo $str{3};
結果 d

連想配列で{}を使うのはPHPじゃなくPerlだろ。
38nobodyさん:2006/10/25(水) 14:04:24 ID:???
GPLで配布されたソースを改造して二次配布したいのですが、
GPLの理念として、金銭を得るために使用しなければ作者に断りなくしてもいいのですよね?
39nobodyさん:2006/10/25(水) 14:04:43 ID:snVEf27m
いろんな方法があるのですね。
でも、ちょっとオイラでは・・・ むずかしそうです
40nobodyさん:2006/10/25(水) 14:07:43 ID:???
>>37
普通に配列要素を示すのに[]の代わりに{}を使っても動作するっぽい。
何かの互換のため?でも多分、推奨はされないから使わない方がいいよ >17
4117:2006/10/25(水) 14:34:08 ID:???
>>40
ありがとうございました。

そういう使い方をしていたソースがあったので特別な意味があるのかなと思っていました。
42nobodyさん:2006/10/25(水) 15:35:03 ID:???
メンバ変数とかコンストラクタとかについて質問なんですけど、
(PHP5風に書きます)

class Example {
 :private $example = "hoge";
}
とするのと、
class Example {
 private $example;
 function __constructor() {
  $this->example = "hoge";
 }
}

この2つの違いは何でしょうか?
両方とも変数を初期化してるわけではないのですか?
43nobodyさん:2006/10/25(水) 15:38:52 ID:???
>>42
2つとも変数を初期化してるだけです。
変数宣言で直接初期化する場合は式が書けないなどいくつかの制限が出ます。
逆にコンストラクタで初期化する場合、extendしたクラスでは親クラスのコンストラクタが
呼び出されなくなる場合があるため、設計に注意が必要です。
44nobodyさん:2006/10/25(水) 15:43:13 ID:???
だから質問者はIDをだしなさい。
違う質問を並べてる同一人物か?
4518:2006/10/25(水) 16:32:53 ID:J6B8Hktu
>>28
何でございましょう?
46nobodyさん:2006/10/25(水) 16:33:12 ID:???
>>26
ありがとうございます
47nobodyさん:2006/10/25(水) 16:34:01 ID:???
>>18
解決したの?
4818:2006/10/25(水) 16:37:21 ID:J6B8Hktu
時が解決してくれるわけはないけど、ちょっと放置ですね。
ついでなんですけど、さっきのことで1ついいですか?
指定した文字が文章中に何回出てくるかカウントする関数
またはそれ以外の方法ってありますか?
49nobodyさん:2006/10/25(水) 16:48:21 ID:???
>>20
とりあえずmb_languageが適切に設定されてるか確認しる

>>38
ライセンスくらい読めよ(´・ω・`)
50nobodyさん:2006/10/25(水) 16:51:06 ID:???
>>18
書いてみた。つかってくれ。
配列を使うからforではなくforeachにしてみた。
つ[ソースコード]

$text = "あああ。いいい。ううう。えええ。おおお。かかか。ききき。くくく。";

$a = explode("。",$text);

$i=0;
foreach($a as $v){

if ($i>1) {
echo $v."。<br>";
$i=0;
} else {
echo $v."。";
$i++;
}
}
5150:2006/10/25(水) 16:53:39 ID:???
>>48
$count = count(配列が入っている変数);
echo $count;
52nobodyさん:2006/10/25(水) 16:54:05 ID:???
PHP5のプログラマと、PHP4のみのプログラマの人数はどれくらい違いますか?
53軟式PHP:2006/10/25(水) 16:56:36 ID:???
>>12
3つ出てくるごとなら
if($i/3==1){
ではなくて、
if(!($i%3)){
じゃないのかな。
文字をカウントするのはsubstr_count()。

>>20
どこが文字化けしてるん?サブジェクトだとは思うけど。
本文は文字化けしてないよね。
5450:2006/10/25(水) 16:59:09 ID:???
>>18


>>50のソースは一番最後の「。」が表示されるバグがあるので
$a = explode("。",$text);

のあとに正規表現で最後の「。」をとる記述をかけば問題はないでしょう。
一番最後の文字を削ればいいだけなのであとは調べてください。
55nobodyさん:2006/10/25(水) 17:00:03 ID:???
>>52

両方できて当たり前だろが
56nobodyさん:2006/10/25(水) 17:05:00 ID:???
>>52
結構意味不明なんだけど、PHP5でさらに拡張された部分を
まだ勉強したことないプログラマ、って解釈でいいの?
それだと結構いそう。
もっとも、必要になったら3日でマスターできる内容なので
現場の環境が変わってないならわざわざ勉強する必要も感じないが。
5718:2006/10/25(水) 17:07:01 ID:J6B8Hktu
ご教示ありがとうございます。
早速トライします。
58nobodyさん:2006/10/25(水) 17:20:42 ID:???
>>42
インスタンスを1つしか作らないなら>>43の言ってる事だけ気をつければok。
たくさん作るなら
$var1 = 1;
$var2 = 1;

$var1 = $var2 = 1;
の違いについて調べれば答えは出てくると思う。
5929:2006/10/25(水) 17:20:59 ID:9Xs/4YIO
画像に添付禁止処理をするにはどうすればいいのでしょうか?
当方PHPにて画像を取得、それを添付禁止処理して表示としたいのです。
宜しくお願いします
60nobodyさん:2006/10/25(水) 17:24:01 ID:???
>>59
添付禁止ってどういう状態??
61軟式PHP:2006/10/25(水) 17:26:36 ID:???
>>59
ちょっと文章が分かりづらいんだが・・・。
画像が添付されたメールを受信して、PHPでそれを解析して画像を取得。
その取得した画像をサイトに載せる際に、閲覧ユーザーがその画像をダウンロードして
他の人に配れないように添付禁止にしたいってこと?
6229:2006/10/25(水) 17:33:19 ID:9Xs/4YIO
>>60-61さん
レスありがとうございます
携帯のメール添付を出来なくするということです。
auだとHTMLで保存できないように出来ますが、DoCoMoは添付禁止にするしかないんです
63nobodyさん:2006/10/25(水) 17:35:46 ID:???
>>62
着メロのコピー禁止は見たことあるけど、画像でもそんなことできるんだっけ。
PHPでやる方法以前にDocomoの仕組みが分からん。どっかに説明ない?
64軟式PHP:2006/10/25(水) 17:42:14 ID:???
>>62
俺が前やったやり方だけど、ImageMagickでオプションに「-comment copy="NO"」をつけて再変換したよ。
PNGの場合は、ImageMagickだと出来なかったんで、HDRチャンク、tExtチャンクを取得してバイナリ直接弄ってコメント埋め込んだよ。
Docomoだから関係はないと思うけど。
6529:2006/10/25(水) 17:53:02 ID:9Xs/4YIO
>>63さん
DoCoMoの技術者向けサイトおいておきます
ttp://www.nttdocomo.co.jp/service/imode/make/

軟式PHPさん
ImageMagickはPerlの時少しいじった程度なのでできるかなぁ^^;
GDでは無理でしょうか?
66軟式PHP:2006/10/25(水) 18:14:14 ID:???
>>65
GDじゃないけど、海外のPHPモジュール使ったやり方のサイトを見つけた。
「kddi_copyright PHP GD」でググって一番初めにひっかかるやつとか参考になると思う。
「The PHP Metadata Toolkit」っていうやつを使うみたい。サンプルらしきものも載ってるんで参考になるんじゃないかな。
67nobodyさん:2006/10/25(水) 18:29:57 ID:lNHbLMUd BE:434344166-2BP(0)
mb_send_mailでメールを携帯(FOMA)に送信した場合、
題名が全角9文字以降から文字化けするのですが、
対策法はありますか?
68nobodyさん:2006/10/25(水) 20:46:22 ID:bFjR6zW3
POSTて受け取ったデータを表示するとき、
htmlspecialcharsとstripslashesを両方やるべきなんですか?
69nobodyさん:2006/10/25(水) 21:24:51 ID:???
>>68
どういう表示のさせ方をするかにもよるがhtmlspecialcharsは大抵必須。
stripslashesはmagic_quotes_gpcがONになってる場合のみ必要。
しかしそもそもmagic_quotes_gpc自体があまりONにすべきではない。
だがそのような低レベルな質問をする人はこれをONにしておいた方がいいだろう。
70nobodyさん:2006/10/25(水) 21:41:19 ID:bFjR6zW3
magic_quotes_gpcってなんでおすすめできないんですか?
71nobodyさん:2006/10/25(水) 22:05:37 ID:???

検索条件から、商品一覧を表示する処理を作っているんですが、
WEBアプリケーションの本を読んだところ、一度商品一覧を全部取得してセッションにつめこんで、
ページビューごとに、件数で絞って表示させていたんですが。

普通はセッションいれませんよね?
検索結果のURL直リンで表示できなくなってしまうし。

どうなん?
72nobodyさん:2006/10/25(水) 22:29:15 ID:???
>>71
なんだ、その腐った本は。

まあ商品数が極端に少ないならそれもアリかもしれないけど、
普通はそんな無駄なことしないわな。
っていうかセッション・ファイルにいちいち記録し直してたらDBの意味ないし。
73Name Not Found:2006/10/25(水) 22:34:21 ID:??? BE:193093834-2BP(0)
>>71
ショッピングモール等の規模が大きくて商品を絞り込んでいく場合に有効
テンポラリファイルに書き出す処理を自前で実装するのと同じで
セッションに丸投げするか自分でコードを書くかの違い

規模が小さい場合、インデックスを作成して毎回検索しなおす方手もある
適材適所
74nobodyさん:2006/10/25(水) 22:57:11 ID:???
>>70
余計なとこまで全部エスケープ入れちゃうから。
結局、エスケープ不要な箇所を判断していちいち外す必要が出るんだが、
それができる人なら最初から必要な箇所だけエスケープした方が早くて、
性能的にもそっちの方が速かったりして、何の意味があるんだか分からん機能。

まー、ものすごく単純なプログラムで何も考えずに作るんであれば有効。
75nobodyさん:2006/10/25(水) 22:58:30 ID:???
>>73
てんぷらファイルはちょっとくらいサイズでかくても困らないが、
それを丸ごとセッション配列に格納してたら性能定価しないか?
76nobodyさん:2006/10/25(水) 23:16:01 ID:???
>>74
なるほど、ありがとうございます。
ちょっと行き詰ったのでラーメン食べてきます。
77Name Not Found:2006/10/25(水) 23:45:08 ID:??? BE:128729524-2BP(0)
>>75
ちょっと落ち着いて考えてみた
実際に比べたわけじゃないけど
テンポラリの方がよさげ

78nobodyさん:2006/10/26(木) 00:20:58 ID:fW8Q3JdK
foreach関数のエラーを表示したくないのですが
どこに@をつければいいんですか?

foreach ($rss->items as $item ) {

@foreachでは無理でした
79nobodyさん:2006/10/26(木) 00:26:02 ID:5k/S84KJ
前スレにて、質問をさせていただいた者です。

現在、返信が出来る掲示板を作成しているのですが、
返信記事の投稿番号に1をプラスして表示できないのです。

つまり、
親記事:1
子記事1:1
子記事2:1
子記事3:1

といった感じです。

一応ソースです。

数を増やす部分:http://source.is.land.to/s/q.phps
全体(無駄多):http://source.is.land.to/s/all.phps

記事が記録されているファイルを読み込む
最後の要素取り出す
その要素を配列にする
番号の要素に1をプラス

$num に代入

といった感じです。
80Name Not Found:2006/10/26(木) 00:28:49 ID:??? BE:772373186-2BP(0)
ググレ
81nobodyさん:2006/10/26(木) 00:29:16 ID:???
>>78
foreachは関数じゃないと思います。
82Name Not Found:2006/10/26(木) 00:30:39 ID:??? BE:64364922-2BP(0)
>>80>>78 宛て
83Name Not Found:2006/10/26(木) 00:32:58 ID:??? BE:514915384-2BP(0)
>>79
ちゃんとソース見て無いけど
カウントアップする時、整数としてキャストしてます?
84nobodyさん:2006/10/26(木) 00:33:04 ID:???
>>78
is_array()で事前チェック。
85nobodyさん:2006/10/26(木) 00:44:26 ID:???
型変換して配列にしてしまえ
86nobodyさん:2006/10/26(木) 01:07:50 ID:???
俺もキャストして
foreach ((array)@$rss->items as $item)
だな。
$rss->itemsが確実にissetな状態なら@はつけなくていいけど。
8778:2006/10/26(木) 01:08:27 ID:???
どうすりゃいいの
8878:2006/10/26(木) 01:12:27 ID:???
>>86
ありがとう出来ました。

他のやつも適当にサンクス
89nobodyさん:2006/10/26(木) 01:16:37 ID:???
ここのスレはいい人ばかりで大好きです。
ありがとう。
90nobodyさん:2006/10/26(木) 01:20:33 ID:???
>>89
氏ね
91nobodyさん:2006/10/26(木) 01:39:40 ID:???
>>79
$num = ($for_num_lines[0] + 1);//それに1をプラスします
じゃなくて
$num = ($for_num_lines + 1);//それに1をプラスします
じゃないの?
92nobodyさん:2006/10/26(木) 02:12:15 ID:5k/S84KJ
回答ありがとうございます。

>>83
キャストですか・・・
うーん。やってないですorz
やってみます。

>>91
$for_num_linesはたたたたたたぶん配列だと思うんですよよよよ。
93nobodyさん:2006/10/26(木) 02:22:14 ID:???
>>92
$next_lines = explode("\t",$end_1);//それを分割して配列にしまいます
$for_num_lines = array_splice($next_lines,-5,1);//最後から5番目の要素(最後の$num)をとりだします。
これで配列のわけがあるかw
94nobodyさん:2006/10/26(木) 02:24:15 ID:???
>>93
どうして$for_num_linesが配列だと思ったのか、話はそこからだ
9594:2006/10/26(木) 02:24:48 ID:???
安価間違えた

>>92な。
96nobodyさん:2006/10/26(木) 02:28:41 ID:???
>>79の内容は見てないけど、>>93見た限りでは$for_num_linesは配列ジャマイカ?
97nobodyさん:2006/10/26(木) 02:40:10 ID:???
俺もそう思う。
まー、普通こんな場面でarray_splice()使うやついないけどな。
98nobodyさん:2006/10/26(木) 02:43:43 ID:???
>>79
とりあえず読んでみたけど、そもそも+1した$numってのは
どこの表示で使われてるの?そこが分からんかった。
9942:2006/10/26(木) 05:01:08 ID:???
>>43 >>58
レス遅れてすみません。
わかりやすい説明どうもありがとうございました。
設計に注意して書きたいと思います。
100nobodyさん:2006/10/26(木) 07:26:45 ID:???
>>93
array_spliceの戻り値はarrayだよ
まあでも配列の要素を取り出したいなら素直に添え字指定して
$num = $next_lines[1] + 1;
とかの方がいいと思うが
>>98
$data = $for_num."\t".$num."\t".$name."\t".$bun."\t".$pass."\t".$host."\n";
に使われているようだ。
101nobodyさん:2006/10/26(木) 07:49:51 ID:???
PHPでコマンドラインから
キー入力を待ってその値を受け取り、計算して表示
みたいなことはできるのでしょうか?
C言語のscanfみたいなやつです。
102nobodyさん:2006/10/26(木) 08:14:07 ID:???
<?php
$stdin = fopen('php://stdin', 'r');
?>

103nobodyさん:2006/10/26(木) 08:31:18 ID:ZtENe/Qs
たまにサイトで見かける、
hogehoge.php?hogehoge=hogehogehoge
みたいなやつはSwitch文で作っているのでしょうか?
104nobodyさん:2006/10/26(木) 08:35:37 ID:???
下のシフトジスコードの文字列を削除もしくは置換したいので
PHPで下の文字コードがあった場合に反応をさせたいのですが
環境はEUCで統一されています。この場合どのように書けばいいんでしょうか?

0x8740〜0x879F
0xED40〜0xEEFC
0xFA40〜0xFC4B
0xF040〜0xF9FC
105nobodyさん:2006/10/26(木) 08:52:32 ID:dpAXN0uK
PHPでテンプレートを使って動的ページを生成してる時に、ファイルの更新日を
意図的に近日に変更したいんだけど、それって、headerでLast-Modifiedを出せば
いいですかね?

なんでそういうことがしたいかというと、検索エンジン(具体的にはGoogle)に引っかかり
やすくしたいからなんですが
(ファイルの更新が頻繁に行われていると、再取得しによく来るとからしい)

106nobodyさん:2006/10/26(木) 09:14:16 ID:???
>>102
CLIだったら定数のSTDINが使えるよ。

>>101
fscanfで。
107nobodyさん:2006/10/26(木) 09:56:41 ID:???
>>105
実際に、htmlファイルを頻繁に更新してみてから言ってくれるかな。
108nobodyさん:2006/10/26(木) 09:59:58 ID:???
>>103
はい、意味わかんね

>>104
正規表現でやったら?
つーかmb_convert_encodingでよさそうな気もするけど。

>>105
Last-modified以前にPragma: no-cacheとかExpiresをつけてたら常に更新されていると見なされるってことはないの?
検索エンジンがどうしてるのか知らないけど。
109nobodyさん:2006/10/26(木) 10:14:41 ID:???
include、require文について質問なんですが、
out of dynamic memory in yy_create_buffer() というエラーがでたんですが、

#a.php
<?
include("b.php");
$a = "HELLO";
echo $b;
?>

#b.php
<?php
include("a,php");
$b = "WORLD";
echo $a;
?>

もしかして、相互のファイルにincludeした場合は無限ループするんですか?
110nobodyさん:2006/10/26(木) 10:24:17 ID:???
>>109
無限ループする。
悪いことは言わないから、include_onceかrequire_onceにしとけ。
(つーかphpってbisonのエラーをそのまま垂れ流すんだな。初めて知った。)
111nobodyさん:2006/10/26(木) 10:35:23 ID:???
>>110
やはりそうでしたか。どうもありがとうございます。
include_onceを使いたいと思います。
112nobodyさん:2006/10/26(木) 11:57:22 ID:UNye5auU BE:386083384-2BP(0)
すみません、どなたか>>67の回答お願いできませんか。
ググっても同じ症状は見つからないのでFOMAだけなんでしょうか?
113nobodyさん:2006/10/26(木) 12:01:45 ID:dpAXN0uK
>>107
日本語不自由な奴は書き込むな

>>108
>Last-modified以前にPragma: no-cacheとかExpiresをつけてたら常に更新されていると見なされるってことはないの?
no-chacheは検索エンジン無視してるみたいです。Expiresをつけても、ファイル更新日とは関係ないですよね?
(ブラウザ(クローラー)はそれに従うとは限らないらしいですし。)
少なくとも、GoogleはLast-modifiedを見てるらしいんですよね。

まぁ、もう答えは出てるのかもしれませんが、同じことをしてる人がいないかと思って質問してみました。
114nobodyさん:2006/10/26(木) 12:54:44 ID:???
なにその微妙な釣り方
115nobodyさん:2006/10/26(木) 13:02:03 ID:???
「PHPでテンプレートを使って動的ページを生成してる時に、ファイルの更新日を
意図的に近日に変更したいんだけど、」

俺はむしろこっちの日本語のほうがよくわからないな。

「テンプレートを使うかどうか」と「ファイルの更新日」とのあいだの関係もよくわからないし

「近日に」っていうのもよくわからない。

好意的に解釈すると、「数日前」とかいう意味合いかなあという感じだけど。
(でも「ファイルの更新が頻繁に行われていると」とつながらないし)

一番気になるのは「動的ページを生成」ってのの意味。

>>107は「静的HTMLを書き出す」、って意味に取ったのかな?

普通に読んだら「静的なHTMLを書き出すのではなく、動的にページを生成」って意味だろうとおもうけど、

ふつうPHPで書いたら、たいていそうなるよね。

要は「なにもしなくてもよい」っていう答えが期待されているのかな?

(まあ、それだと「検索エンジンが拾ってくれないので」っていう話をしているのかもしれないけど)

しのごのいってるまに、実際にやってみればいいのに、という点では >>107 に同意。
116nobodyさん:2006/10/26(木) 13:06:26 ID:???
>>112
ヘッダーの折り返しロジックが74文字固定なので、
"Subject:"を含む最初の行が78文字を超えてRFC違反になる。
メーラによっては文字化けする。
文字化けするポイントにあらかじめ"\r\n"を入れておくとかで回避出来たはず。

ちょっと古い記憶なので最近はどうか微妙。
117nobodyさん:2006/10/26(木) 13:10:01 ID:???
ここのスレはいい人ばかりで大好きです。
ありがとう。
118nobodyさん:2006/10/26(木) 13:12:19 ID:???
>>117
いい加減にしろ池沼
119nobodyさん:2006/10/26(木) 14:17:23 ID:dpAXN0uK
>>115
>俺はむしろこっちの日本語のほうがよくわからないな。
君は、そういう仕事をしたことがないんだよ。口を挟むなよ、邪魔だから。
ちなみに>>107は根本的に間違い。指摘するのも無駄。
120nobodyさん:2006/10/26(木) 14:22:36 ID:???
ID:dpAXN0uK

こいつのほうが邪魔だな。

みんなで嫌がらせして追い出してやろう
121nobodyさん:2006/10/26(木) 14:24:50 ID:???
「no-chacheは検索エンジン無視してるみたいです。」

みたいですもなにも、意味を考えれば無視するのはむしろ当然ですね。

いい加減な仕事してるんだろうなあ
122nobodyさん:2006/10/26(木) 14:27:14 ID:???
>>107=115

汚名返上したいのは分かるし、
言ってることは一理あるけど長文はやめてね
123nobodyさん:2006/10/26(木) 14:28:25 ID:???
>>119
つーかもう出てこなくていいから。
どうせLast-modified吐いたとこでかわんねーよ。
PageRank自体は更新頻度には一切依存しないから。
クロールされる頻度増やしても、自分とこの帯域を無駄に浪費させるだけ。
124nobodyさん:2006/10/26(木) 14:28:44 ID:???
>>>119
これくらいも自力で出来ないくせに偉そうだな
しねよ
125nobodyさん:2006/10/26(木) 14:32:35 ID:???
>>119
お前の人生exit

市んでください
126nobodyさん:2006/10/26(木) 14:52:33 ID:???
お前の人生出口
127nobodyさん:2006/10/26(木) 15:14:16 ID:???
お前の人生 プライスレス
おれの人生 プライスレス
お金じゃ買えないもの プライスレス
128nobodyさん:2006/10/26(木) 15:18:27 ID:50QBwnTP
php4でmbstringがphpinfoで確認できなくて困ってます。
XP使ってまして、システムパスはC:\phpに通してあり、php.iniはその中においてあります。
apacheがphpのモジュールを認識してるのでPHPは動くのですが、
mbstringが使えなくて困っています。

php.iniの設定で
extension_dir = "C:/php/extensions/"
もやりました
extension=php_mbstring.dllも行頭の;をはずしております。
どなたかアドバイスご指摘お願いいたします。
129nobodyさん:2006/10/26(木) 15:31:18 ID:???
>>128
・php.iniをC:\WINDOWSに入れる。
・extension_dirって「extensions」だっけ?「ext」だった気がするけど。
この辺チェックしてみては?
130nobodyさん:2006/10/26(木) 15:41:37 ID:50QBwnTP
できればバージョンアップするときの楽を考えてC:\phpで使いたいと思っております。
システムパスはc:\xxx\xxx\xxx;・・・省略;C:\phpと設定してあります。
php4.4.4を使っています。どのバージョンからかわかりませんが
extensionsに変更されてたみたいです。

なぜmbstring.dllを読んでくれないのか原因がわからなく、お手上げです。
131nobodyさん:2006/10/26(木) 15:48:59 ID:???
>>130
モジュール版の場合、php.iniの場所としては環境変数のPATHは参照されない。
Apache2ならhttpd.confにPHPIniDirを加える。

あとはここ嫁。
http://www.php.net/manual/ja/configuration.php
132nobodyさん:2006/10/26(木) 16:23:22 ID:???
PHP5.2がでてますが、使ってる方どうですか?
133nobodyさん:2006/10/26(木) 16:33:24 ID:???
>>132
すごく・・・いいです・・・。
134nobodyさん:2006/10/26(木) 16:42:58 ID:5EB3cc5h
正規表現すれとマルチになります。
急ぎなのでお答えいただければ幸いです。

preg_match("/docomo\.ne\.jp$/",$host)

これでdocomo.ne.jpがひっかからないのですが
どうしてでしょうか?
135nobodyさん:2006/10/26(木) 16:51:20 ID:???
ぼうやだからさ。
136nobodyさん:2006/10/26(木) 16:52:59 ID:???
php5.2ってまだ人柱版だけどなにがよくなったの?
137nobodyさん:2006/10/26(木) 16:56:18 ID:???
>>134
バックスラッシュが全角になってるからじゃん。
ちなみに「急ぎ」ってのは、回答側がきちんと検証せずに答えても文句ないって意味でおkだよな?
138nobodyさん:2006/10/26(木) 16:56:52 ID:???
>>134

$host = "hagehoge.docomo.ne.jp";
if (preg_match("/docomo\.ne\.jp$/",$host)) {
$msg = "OK!";
} else {
$msg = "NG!";
}
echo $msg;

結果:OK!


どう見ても問題ありません。本当に(ry

その\が何かのネタでないのなら$hostが何かおかしいんだろ。

あと急ぎならマルチしても許されると思ってる馬鹿は死んでいいよ。
139nobodyさん:2006/10/26(木) 17:00:45 ID:5EB3cc5h
>>135
本当にぼうやでした。顔真っ赤ではずかしいです。
>>137
本当に申し訳ない。
>>138
はずかしくて言葉もありません。

申し訳御座いませんでした。
140nobodyさん:2006/10/26(木) 17:04:16 ID:???
まさか本当に\になってただけの話だったのかw
141nobodyさん:2006/10/26(木) 17:15:25 ID:???
サンプルが\になってる解説ページ、いくつか見た。
そっからコピペしたのかもしれん。
142nobodyさん:2006/10/26(木) 17:18:34 ID:???
どうでもいいけど、急ぎなので・・・の使い方おかしいだろ
PHPの前に日本語からやり直せよ
143nobodyさん:2006/10/26(木) 17:24:15 ID:???
恥ずかしいだろうけど原因を教えてくれw
マルチしちゃうほど急いで質問したのに自己解決しちゃった原因を教えてくれw
気になって夜も眠れん!
14479:2006/10/26(木) 17:27:37 ID:5k/S84KJ
回答ありがとうございます。

>>100
Σそっちの方が・・・
っていうか私のやりかたがどう考えてもおかしかったみたいです。
$next_lines[1] + 1
のようにしてみようと思います。

回答してくださった方々、ありがとうございました。
145nobodyさん:2006/10/26(木) 17:32:28 ID:???
ようつべの検索結果一覧のように、動画のサムネイルを取得出来る
関数ってPHPにありませんよね?
146nobodyさん:2006/10/26(木) 17:35:05 ID:???
ない。
147nobodyさん:2006/10/26(木) 17:42:26 ID:aGrSe2DE
http://example.com/
にアクセスしたら
いきなり
http://example.com/?SID=649144
みたいにいきなりURLにセッションIDを追加できるように出来ないでしょうか。

http://example.com/ は http://example.com/index.phpです
148nobodyさん:2006/10/26(木) 17:50:46 ID:???
149nobodyさん:2006/10/26(木) 17:52:51 ID:5uZ/3Bq6
phpで2のn乗の数値の合計値から nの数値のリストを求めるにはどうしたらよい?
下の$arrayを出したいんですが。
$sum = 52; //(2の2乗)+(2の4乗)+(2の5乗)

$array = array(2,4,5);
150nobodyさん:2006/10/26(木) 18:00:36 ID:???
>>149
何か知らんが関数書いてみた。

function binlist($num) {
 $result = array();
 $num = abs((int) $num);
 for ($r = 0; $num; $num >>= 1, $r ++) if ($num & 1) $result[] = $r;
 return $result;
}

print_r(binlist(52));
151149:2006/10/26(木) 18:14:47 ID:5uZ/3Bq6
>>150
ありがとうございました。助かりました。
仕組みは良く分からないですけど・・

同じnameのcheckboxのvalue="n"を2のn乗の合計値で持ってて、それ合計値からvalueを引き出すのに苦労してました。
152nobodyさん:2006/10/26(木) 18:20:50 ID:???
ここのスレはいい人ばかりで大好きです。
ありがとう。
153nobodyさん:2006/10/26(木) 18:22:39 ID:???
>>149
ちゃんと検証してないがこんな感じかね。


$sum = 53;

$array = array();
$n = 0;
while ($sum > 1) {
while ($sum % 2 == 0) {
$sum = $sum / 2;
$n++;
}
$array[] = $n;
$sum--;
}

print_r($array);

/*
14: (1,2,3)
52: (2,4,5)
53: (0,2,4,5)
1000: (3,5,6,7,8,9)
1025: (0,10)
*/


ところでこれ何て夏休みの宿題?
154153:2006/10/26(木) 18:24:09 ID:???
おわ。

ちゃんとリロードしてから書き込めばよかーたよ(´・ω・)
155nobodyさん:2006/10/26(木) 18:28:52 ID:???
61は(3,4,6)と(5,6)のどっちになりゃいいんだ?
156149:2006/10/26(木) 18:30:09 ID:5uZ/3Bq6
>>154
ありがとうございます。
皆さんのおかげでなんとか宿題終わりそうです。
157149:2006/10/26(木) 18:41:58 ID:5uZ/3Bq6
>>155
(3,4,6)->88
(5,6)->96

という値を持ってるので61から求めることは無いので大丈夫です。
158155:2006/10/26(木) 18:52:36 ID:???
>>149
問題を勘違いしていた。
スマヌ。
159nobodyさん:2006/10/26(木) 21:22:28 ID:50QBwnTP
次のコードにでてくるvarの意味がわかりません。
マニュアルで検索しても乗っていないのですが、
どういう意味なのでしょうか?

class Shopping {
var $item = "コンピュータ";
var $price = 99800; // ここまでメンバ変数の設定

function getTotal() {
$tax = $this->price * 0.05;
return $this->price + $tax;
} // ここまでメソッドの定義
}
160nobodyさん:2006/10/26(木) 21:29:26 ID:dpAXN0uK
>>121
阿呆。流れを読め

>>123
阿呆。どこにPageRank上げるって書いてあるんだよ。
クライアントが気にしてるから満足度を満たしてやってるだけだっつうの。
帯域って(w そんな細い帯域使ってないよ(笑うのも無駄

>>124
自力でやってるっつうの。header出すのは、君にはそんなに高度なのか?
161nobodyさん:2006/10/26(木) 21:30:49 ID:dpAXN0uK
>>122
言ってることのどこに一理あるんだ?単に読解力がないだけだろ?
162nobodyさん:2006/10/26(木) 21:32:19 ID:dpAXN0uK
あ、ここは素人に初心者が答えるスレか!ごめん、ごめん。君らよりレベル高い俺が質問しちゃったのか。
163nobodyさん:2006/10/26(木) 21:46:59 ID:???
もうそんなどどうでもいいから他のスレいってやってくれ。
164nobodyさん:2006/10/26(木) 21:49:25 ID:???
>>159
PHP4において変数を宣言するためのキーワード、という説明で分かるかな?
PHP5では使わない方が良い。詳しくはこちら。

http://www.php.net/manual/ja/language.oop5.visibility.php
165nobodyさん:2006/10/26(木) 21:50:54 ID:???
最近は逆ギレが流行ってるのか。
じゃあこっちも時代に合った対応をしてやらないとな。

>>162
うん、そうなのでちゅ。
ここはあなたよりれべるのひくいおこちゃまがこたえるすれなのでちゅ。
だからあなたのようなさんじげんさいきょーにつよまってきちがいじみたずのうをおもちの
ちょーぜつてんさいぷろぐらまーなかたのくらいあんとの
まんぞくどをみたす(あげるってこと?)てつだいにはならないのでちゅ。
わかったらとっととかえってくらいあんとに「じぶんにはむりでしたごめんなちゃい」って
なきながらどげざしてあやまってくだちぃ。
166nobodyさん:2006/10/26(木) 21:51:46 ID:???
まず、If-Modified-Since見て304 Not Modifiedを返す事を考えてはどうだろう?
167nobodyさん:2006/10/26(木) 21:56:52 ID:???
ほんっっっとうに下らないスレですね。PHPって基地外の使う言語だというのは本当のようです。
168nobodyさん:2006/10/26(木) 22:22:13 ID:???
>>164さんありがとうございます。
なるほど、関数だと思ってしました。
php4ではvarは使えるけど、php5ではE_STRICT警告がでてしまうと。
php4とphp5に共通したコードを書くのはE_STRICT警告でてしまうのですね。
う〜ん、どうにか怒られないで共存できる方法があればいいんですけどね。
169nobodyさん:2006/10/26(木) 22:42:55 ID:???
残念ながら ID:dpAXN0uK のような基地外がいるのは事実・・・。
だけど、ここのスレはいい人ばかりで大好きです。
ありがとう。
170nobodyさん:2006/10/26(木) 22:47:00 ID:???
>>160
どうせ更新頻度増やしても、検索結果には影響ないことには言われるまで気づかなかったんだろ。
頭胃いね。
171nobodyさん:2006/10/26(木) 23:12:18 ID:???
>>168
オブジェクト指向を使う場合は互換性が全く無いものと思って
どっちかに絞って作った方がいいですよ。
172nobodyさん:2006/10/26(木) 23:28:19 ID:???
>>171
ありがとうございます。
両方で動作する仕組みを作りたいのですが、
とりあえず勉強ということでどっちかのバージョンで作成を試みます。
173nobodyさん:2006/10/26(木) 23:33:18 ID:???
>>170
可能な限り最新の内容を検索結果に反映させたい、ってことじゃないの?

で、とりあえず>>105への回答だけど、それでいいと思うよ。
googleがそれで頻繁に更新してくれるのかまでは知らんけど。
174nobodyさん:2006/10/26(木) 23:34:00 ID:???
>>172
だったらオブジェクト指向は使わない、とするしかないんじゃないかな。
175nobodyさん:2006/10/27(金) 00:03:01 ID:???
>>173
少なくともGoogleはLast-modifiedなんて読んでいないようだ。
If-modified-sinceに対して300台を返せば、クロール時の帯域を節約できるとは書いてあるが(160によるとそこは気にしていないようだし)、Googleのロボットがクロールする頻度を操作できるという記述はない。
FAQによれば、飽くまで「定期的」に巡回しているし、その度に更新はすぐに検出される、という記述しかない。

つーか内容の真偽以上に ID:dpAXN0uK の暴れ具合の酷さは目に余る。
176nobodyさん:2006/10/27(金) 00:12:28 ID:???
GoogleはLast-Modifiedを読む。検索結果の下に出る。
177nobodyさん:2006/10/27(金) 00:15:13 ID:???
あー読まないと言ったのはミスだったな。失礼。
正確にはLast-modifiedをクロール頻度の操作に使わないということ。
178nobodyさん:2006/10/27(金) 00:22:56 ID:???
もーいいからよそいってくれ。ここは知識の見せ付けあいのスレじゃない。
179nobodyさん:2006/10/27(金) 00:25:17 ID:???
ググれば誰でも見つかるような内容を知識の見せ合いと呼んでどうすんの?
180nobodyさん:2006/10/27(金) 00:25:48 ID:???
http://pc8.2ch.net/test/read.cgi/php/1019844261/l50

こっちのスレいってやってくんない?質問する人と回答する人のじゃまだからでてってくれ。
181nobodyさん:2006/10/27(金) 00:27:13 ID:???
そういうこと書くからまた荒れるんだよな。
あ、俺もか。
182nobodyさん:2006/10/27(金) 00:37:42 ID:???
>>175
>>105=>>113で本人が「Last-modifiedを見てる」と信じてるんだから
そこはスルーでいいんじゃないのかな。
表向き公開されてない裏仕様なんだ!とか言い出されても確認しようがないし。
ほっときゃいいじゃん。
で、>>105の質問はあくまで「PHPページで最終更新日時を詐称する方法」なんだから
それに対しては「header()でLast-modifiedを返せば良い」でFAだと思うんだけど。
183nobodyさん:2006/10/27(金) 00:40:42 ID:???
FAっていうか、もしそうだとしたら、>>105の書き込み自体がかなりバカにしてると思うんだけど。
184nobodyさん:2006/10/27(金) 00:44:19 ID:???
もう、まんこ
185nobodyさん:2006/10/27(金) 00:45:04 ID:???
SEOとかGoogle関係とかはWeb製作じゃないか?
186nobodyさん:2006/10/27(金) 00:49:52 ID:???
元の質問がSEO絡みをPHPでどう処理するかって話だから、完全に板違い・スレ違いって感じでもないんジャマイカ?
あと、発狂してる人がいるけど、内容をよく吟味すればPHPでサイト構築する上ではわりと頻繁に使われるHTTP関係の話だし、そんなにめちゃくちゃに高度で専門的な話でもないよ。
187nobodyさん:2006/10/27(金) 00:57:06 ID:???
>>183
そんなん無視すれ。気にしても始まらんでしょ。
あそこまで分かっててheader()でいいの?って聞いてくる辺り、
むしろオツムの弱い人だと俺は解釈してたよ。
>>185
その実装に関する話はここで合ってるよ。
>>186
誰も高度で専門的だとは言ってないと思うけどね〜
188nobodyさん:2006/10/27(金) 00:59:06 ID:BT8IGUCu
>>165
逆ギレ?日本語をちゃんと使えるようにした方がいいぞ?プログラミング言語も満足に使えてないんだからさ。(煽りのレベルも低すぎ・・・)
189nobodyさん:2006/10/27(金) 00:59:53 ID:BT8IGUCu
>>170
SEO対策について知らないんだな。黙ってろよ
190nobodyさん:2006/10/27(金) 01:02:58 ID:BT8IGUCu
>>173
あ、まともなレスが返ってきて助かりました。
論理の通じる人がいるんだと安心できました。
191nobodyさん:2006/10/27(金) 01:14:18 ID:BT8IGUCu
>>175
少し論理が通じる人が書き込んでて安心しました。
俺が暴れているというより、日本語の通じない人が書き込んでて、俺がレスを返してるだけです。
蛇足ですが、GoogleのクローラーがLast-modifiedを読むのはSEOの世界では常識です。

>>176
はい。

>>177
>正確にはLast-modifiedをクロール頻度の操作に使わないということ。
使います。経験則から更新頻度が高いと頻繁に訪れてるっぽいと判断できます。
もちろんそれは、PageRank、PagePriorityに影響しないでしょう。

>>182
>>105=>>113で本人が「Last-modifiedを見てる」と信じてるんだから
俺はそれをここで議論する気はないよ。

>>183
すいません。日本語が使えないのにレスを返す人がいるので、少し懲らしめました。

>>187
全然高度な話じゃないので、立ち話のつもりで書き込んだら、難しくて理解できない人がいたらしいことに吃驚しました。
192nobodyさん:2006/10/27(金) 01:19:10 ID:???
>>105
よく飽きずに中途半端な書き込みするな。
ちみのやっていることは、最初から無駄以外の何物でもないと早く気づきなされ。
Last-modifiedでそんな操作できると思うならソース晒してみ。
そんなオイシイ対策があるのにWeb上で誰も話題にしてないわけないだろ。
客からロボットにクロールされる頻度を上げてくれと言われたなら、その時点で「効果はない」と言えるエンジニアになろうね。
客に合わせて実装した振りするなら、そもそも質問するまでもなく、Last-modifiedでも何でも吐いときゃいいだろ。
要はお前はレベル低いの。
193nobodyさん:2006/10/27(金) 01:21:24 ID:???
194nobodyさん:2006/10/27(金) 01:23:34 ID:???
195nobodyさん:2006/10/27(金) 01:26:38 ID:???
>>193-194
お前が池
196nobodyさん:2006/10/27(金) 01:27:06 ID:???
197nobodyさん:2006/10/27(金) 01:29:01 ID:???
自治厨も我慢できなくなっちゃったみたいですw
そういうのが自治すると逆に迷惑な良い例。
198nobodyさん:2006/10/27(金) 01:29:55 ID:qOfMqiwc
どうせ、なんとかボンバイエだろ。
19979:2006/10/27(金) 02:23:44 ID:Q6o9pTT9
すみません、私の乏しすぎる能力では
出来ませんでしたorz

$next_lines[1] + 1のようにしても、$numの値をチェックすると1になってしまうんです。

おそらくファイルの読み込み時でこけているのかと思いますが、具体的な原因がさっぱりで・・・
どなたかどの辺りでこけているのかこっそりヒッソリ書きこんでいただけないでしょうか?

よろしくお願いします。

書き込み部ソース:http://source.is.land.to/s/q.phps
全体:http://source.is.land.to/s/all.phps
200nobodyさん:2006/10/27(金) 02:26:24 ID:???
>>192
その議論はスレ違い。他所でやれ。
クロール頻度やPageRankのルールなんてしょっちゅう変わってるんだから
そんなことの是非は実装を議論する板で問うべき問題ではない。
201nobodyさん:2006/10/27(金) 02:34:36 ID:???
>>199
> 書き込み部ソース:http://source.is.land.to/s/q.phps
これだけ見るとファイルに書き込んでる部分がないので原因は分からない。
なので、allの方だけ見てみるけど、
まず
> $read_1 = file($res_num_dat);//まず、読み込みます。
で読み込んだ直後に、$read_1の内容をvar_dump()して中身を確認。
それが確認できたら、
> $end_1 = end($read_1);//最後の要素を取り出します
の$end_1
> $next_lines = explode("\t",$end_1);//それを分割して配列にしまいます
の$next_lines
> $for_num_lines = array_splice($next_lines,-5,1);//最後から5番目の要素(最後の$num)をとりだします。
の$for_num_lines
> $num = ($for_num_lines[0] + 1);//それに1をプラスします
の$num
をそれぞれvar_dump()して、期待してる動作をしているのか確認する。

それがデバッグの基本。
202nobodyさん:2006/10/27(金) 02:35:51 ID:BT8IGUCu
>>192
ぅゎぁ・・・びっくり・・・知らないの?(マジ吃驚)
それと、SEOについて知らないんだったら、口を挟まない方がいいよ。恥の上塗り。

>>200
俺も全くその通りだと思うね。同意。
203nobodyさん:2006/10/27(金) 02:36:19 ID:???
>>200
クロール頻度がどれくらいかではなく、クロール頻度をPHPで操作できるかどうかが話題であって、しかも105からの反論がなければ、とりあえずこの場では操作できないでFAになるわけだし。
実装がコロコロ変わる、という結論もありではあるが、ソースのない話なので何とも言えませんな。
別に板違いと称する必要もなかろ。
204nobodyさん:2006/10/27(金) 02:37:28 ID:???
>>202
幼稚園児みたいな口調はもう秋田から、ソース持ってこい。
205201:2006/10/27(金) 02:38:40 ID:???
で、予想だけど、
> $read_1 = file($res_num_dat);//まず、読み込みます。
ここでファイルの中身が読み込めてないと思うよ。
だから常に 0 + 1 になっちゃって結果が 1 なんでしょう。

記事ファイルってentryとかいうディレクトリにあるんでしょ?
読み込み時点ではchdirしてないしファイルパスにもディレクトリくっついてないし、
書き込みのときだけchdirしてるんだよね。
ファイル名の指定の仕方が読み込み時と書き込み時、親記事とレス記事とで
どれもバラバラの手法を使ってるもんだから非常にバグを出しやすいと思う。
こういうのはちゃんと統一しましょう。
書き込み時にわざわざchdirするのはナンセンスだよ。ファイル名のパス指定で十分。
20679:2006/10/27(金) 02:40:02 ID:Q6o9pTT9
>>201
早くの回答ありがとうございます。

わかりました!
一応$numだけはダンプして見たのですが不十分ぽいですので他にも全て出力して見ます。
207nobodyさん:2006/10/27(金) 02:45:24 ID:???
>>202
口を挟まない方がいいよ = 自分に都合の悪い書き込みは理解したくありません
208nobodyさん:2006/10/27(金) 02:47:17 ID:???
>>203
SEO対策なんてみんな憶測混じりで色々やってんだから
そういうのは
【SEO】検索エンジン総合スレ22【雑談】
http://pc8.2ch.net/test/read.cgi/hp/1161313398/
で議論してください。
209nobodyさん:2006/10/27(金) 02:50:05 ID:???
別にもう議論することもないだろ。
質問者がキモイでFAだ。
210nobodyさん:2006/10/27(金) 02:54:26 ID:???
そんなSEO無いとか反論してるやつも同じくらいキモいよ。
211nobodyさん:2006/10/27(金) 02:57:12 ID:???
んなこと言ってねーよバカw
212nobodyさん:2006/10/27(金) 03:00:23 ID:???
はいはいわろすわろす
213nobodyさん:2006/10/27(金) 03:01:07 ID:???
また嵐が増えたな
21479:2006/10/27(金) 03:11:02 ID:Q6o9pTT9
今更ながら気づきましたが・・・。。

どうやら、親記事のすぐ後の子記事のカウントアップは成功しているようなのです。・・・たぶん。

つまり、このような感じです。
親記事:1
子記事1:2
子記事2:2
子記事3:2
子記事4:2

どうしてかは分かりませんが・・・。
215nobodyさん:2006/10/27(金) 03:30:59 ID:???
>>214
親記事直後の番号は元の番号+1じゃなくて常に「START_LINE」の値みたいだけど
これは何番になってるのさ。
216nobodyさん:2006/10/27(金) 03:57:31 ID:???
>>79
//
//□子記事書き込み部
//

if($_POST['res']){//子記事(レス)時
  :
  :
  chdir('entry');//ワークディレクトリの変更
}

このchdirをもっと上にもってけ。
もしくはchdirをやめれ。
読み込んでるファイルと書き込んでるファイルが食い違ってるだろ。
(なんか釣りっぽいと感じるの俺だけ?)
217Name Not Found:2006/10/27(金) 04:37:29 ID:??? BE:579280166-2BP(0)
>>79
データを記録するディレクトリを定義しておくとトラブルを起こしにくくなる

[config.php]
define("DATA_DIR",'entry/');
[all.php]
$res_num_dat = (DATA_DIR.$res_num.'.dat');

こんな感じにコードを弄って実験したらこんな結果になった。

test.php?res_num=1

[entry/1.dat]
?1fusianasan1本文localhost
12127.0.0.1
13127.0.0.1
14127.0.0.1

親記事は手動でファイルを作成
218217:2006/10/27(金) 04:42:41 ID:??? BE:1158559889-2BP(0)
タブ消えちゃった・・・。
\tは/に置き換えてます。

[entry/1.dat]
?/1/名前/1/本文/localhost
1/2////127.0.0.1
1/3////127.0.0.1
1/4////127.0.0.1
219nobodyさん:2006/10/27(金) 05:28:05 ID:???
>>217
defineで定義してたところで、場所によって
パスにディレクトリを含めてみたり、chdirしてみたりと
やり方自体をバラバラにしてたら何の意味も無いと思うよ。
それよりはファイル名の生成を関数化する方が先決。
220nobodyさん:2006/10/27(金) 14:10:28 ID:AQszo3d9
ロリポやさまざまな共有サーバで使われているsafe modeについて
php.iniで設定したいのですがsafe modeをonする以外に
参考となるURLございませんでしょうか?
221nobodyさん:2006/10/27(金) 14:40:53 ID:???
>>1
222nobodyさん:2006/10/27(金) 14:51:25 ID:???
ユーザー定義関数中で使うと、
自身の関数名を取得できる関数はありませんか?

ちょうどget_classのような
223nobodyさん:2006/10/27(金) 15:04:29 ID:???
IDなんで表示しないで質問してるのかね
224nobodyさん:2006/10/27(金) 15:26:28 ID:???
__FUNCTION__でいいんじゃね?
225nobodyさん:2006/10/27(金) 16:00:49 ID:???
>>224
ありがとうございます
226nobodyさん:2006/10/27(金) 16:04:47 ID:???
Crypt_Blowfishを使ってパスワード ’ jp ’ を暗号化
bin2hexで変換
pack('H*',$hogel)で元に戻す
Crypt_Blowfishを使ってパスワードを復号化

というようなことをしようとしてるんですが、なぜか復号化
したものをもう一度bin2hexにかけると最後に
000000000000という余計なもの(ヌル文字列?)が
ついてしまうんですが、packの戻し方が悪いんでしょうか?
回避するいい方法があれば教えてください<m(_)m>
227nobodyさん:2006/10/27(金) 17:15:26 ID:???
>>226
現在のコードとIDを見せれ
228nobodyさん:2006/10/27(金) 17:38:09 ID:???
3つある値をそれぞれ別の違う値にして返したいのですが
if($hoge==A){echo "tanaka";}else if($hoge==B){echo "satou";}else if{($hoge==3){echo "suzuki";}
みたいな形だと長いので連想配列ですると
$array=array(A=>"tanaka",B=>"satou",C=>"suzuki");
echo $array[$hoge];
みたいになると思うのですが
これを一行にまとめるかもっと簡略な書き方はありませんでしょうか?
229nobodyさん:2006/10/27(金) 17:51:58 ID:???
>>228
なんで簡素化する必要があるの?
長くても見やすいように書くべき。
230nobodyさん:2006/10/27(金) 18:34:33 ID:???
>>228
普通に考えたらそれで十分簡素だと思うけどなぁ。
俺だったらむしろ、前半の配列定義をプログラム先頭に置いておいて、
実行部分と分けちゃうけどね。
231nobodyさん:2006/10/27(金) 18:41:58 ID:VglO/Vdq
正規表現で = を探したい場合はどうすればいいんですか?
"=" "[=]" "(=)" "\=" とか試したけどだめでした……
232231:2006/10/27(金) 18:57:37 ID:VglO/Vdq
すみません、解決しました。 文字コードでやったらできました。
233nobodyさん:2006/10/27(金) 18:57:54 ID:???
>>231
普通に preg_match('/=/, 〜 で検索できるはずだが。
if(preg_match('/=/', 'aaa=bbb')) echo "OK\n";
でも
if(ereg('=', 'aaa=bbb')) echo "OK\n";
でも結果は「OK」

できないコードを見せてみ。
234233:2006/10/27(金) 18:58:40 ID:???
orz
23579:2006/10/27(金) 19:16:03 ID:Q6o9pTT9
みなさん回答ありがとうございます。

>>205
してませんでしたorz
本当に書き込み時しかしてませんでしたorz
早急に直します。。

>>217-218
実験ありがとうございます(ぉ
早速直すべきところは直したいです。

>>219
やはりしておいたほうがいいのでしょうか・・・
いつもコード書いている時間が午前3時とかなんでいつもおかしくなっちゃってあきらめまs(ry

orz

お邪魔になるかもしれませんが、もし直りましたら一応報告したいと思いますです。
236nobodyさん:2006/10/27(金) 19:28:33 ID:???
>>229-230
なるほど、ありがとうございました。
237nobodyさん:2006/10/27(金) 19:50:56 ID:???
あとで、他人が見てすぐ理解できるってのは大事だな。

テクに走るオナニーは、趣味までで。
238nobodyさん:2006/10/27(金) 20:23:35 ID:???
ロックファイルって何ですか?
239nobodyさん:2006/10/27(金) 20:45:15 ID:???
ファイル入出力の排他制御用ダミーファイル
240nobodyさん:2006/10/27(金) 20:50:36 ID:KqclDjNY
すっげーくだらない質問ですが自分は知らないもので。
どの言語にも共通のこととは思うのですが、
1万行のファイルから特定の内容を行ごとで検索するという処理と
同一ディレクトリにある1万個のファイルに特定の名前の物が存在するか?
というものはどちらのほうがより高速なのでしょうか?
前者はファイルを開いて1行づつ読み込みを、後者はis_file()のような1行です。
前者はメモリを消費して、後者はHDD容量を消費しそうという印象を持っているのですが、速度面では?
241nobodyさん:2006/10/27(金) 20:53:59 ID:???
php5.2ってどこからダウンロードできますか・
242nobodyさん:2006/10/27(金) 20:57:45 ID:???
>>240
質問じゃなくて実験の丸投げに見えるが
243nobodyさん:2006/10/27(金) 21:00:14 ID:???
メールフォーム作成について

ファイルは何種類にわけてますか?
自分はフォーム、チェック、送信と3つにわけてますが、
2つにしぼったほうがいいでしょうか?
それとも1つで完結するべきでしょうか?
244nobodyさん:2006/10/27(金) 21:06:45 ID:KqclDjNY
>>242
実験の丸投げに見えてしまいましたか。申し訳ありません。
自分は結果的にどうなのかを知らないのですが、知ってる人にとっては
実験をせずとも当然のことなのだろうと思ったので質問させてもらったんです。
245nobodyさん:2006/10/27(金) 21:08:32 ID:???
>>240
そもそも同一ディレクトリに1万もファイルが置けるか、という問題がある。
ls打っても返ってこなくなるよ。
246nobodyさん:2006/10/27(金) 21:23:23 ID:???
ですな。どっかで見た文献でLinuxですら膨大な量のファイルを
ひとつのディレクトリに入れた場合、パフォーマンスがかなり落ちるって書いてた。
247nobodyさん:2006/10/27(金) 21:26:00 ID:???
FC4で試してみた。
ファイル1万なら余裕。作るのもsshでls取るのも1秒もかからなかった。
248nobodyさん:2006/10/27(金) 21:46:49 ID:KqclDjNY
自分が書いた1万という数字は具体的なものでは無いのですが、
ファイルごとに分けてしまうと処理時間は長くなると考えたほうが良いのですね。
ひとつのファイルにまとめて記述をして、そこから検索という形が
容量、速度ともに良さそうということでしょうか。

ファイルごとに分けるというのが、is_fileなどで一発なので、書くのは楽ですが
オーバーヘッドが大きくなるということですか。
249nobodyさん:2006/10/27(金) 21:51:09 ID:???
5000と10万じゃ、話が違うかも知れん。
250nobodyさん:2006/10/27(金) 21:58:39 ID:FC6M/LoA
php.iniの設定で、[PHP]や「Session]とあるのは何ですか?
この記述は何か機能があるんでしょうか?必要なんでしょうか?
251nobodyさん:2006/10/27(金) 22:01:03 ID:???
削除してオケー
252nobodyさん:2006/10/27(金) 22:02:30 ID:???
>>250
それはあんまり使わない機能だから消したほうがいいよ。
処理が早くなるからPCの健康にいい。
253nobodyさん:2006/10/27(金) 22:17:06 ID:???
>>248

読み書きの仕方によるんでは。

毎回一万行すべて読む必要があるんなら、いっこのファイルにまとめてもいいだろうし。

3000行目と6000行目と6500行目だけアクセスする、とかいうパターンなら
一行いちファイルのほうがいいかもしれないし。
254nobodyさん:2006/10/27(金) 22:31:21 ID:KqclDjNY
>>253
自分の書き方が悪かったです。
1万行の場合はその中に特定の1行が存在するかどうかのチェック
1万個の場合はその中に特定のファイルが存在するかどうかのチェック
というものです。
そのあとファイルの書き換えも行うので、その場合は1万個のほうが
オーバーヘッドが少なくて良いのでは無いかと考えているのですが、
1万個もファイルが有る場合のis_file(探したいファイル名)は重くて悪い方法
なのでは無いかということも考えられたので。分けるのが良いのか、まとめるのが良いのか
ということに関して、一般的にどうするのが良いとされているのかが気になりました。
255nobodyさん:2006/10/27(金) 22:32:09 ID:kvLwzQNj
>>240
「1万行のファイルから特定の内容を行ごとで検索するという処理」
→そのアルゴリズムを線形検索という。

「同一ディレクトリにある1万個のファイルに特定の名前の物が存在するか」
→ファイルシステム(やOS)による。
バイナリツリーとか、ハッシュテーブルとか、線形検索とか、さまざまなアルゴリズムが使われている。
256nobodyさん:2006/10/27(金) 22:33:17 ID:kvLwzQNj
これも参考にしてくれ

大量の画像ファイルを配信するサーバーを作ろうと思っています。
http://q.hatena.ne.jp/1150977803
257nobodyさん:2006/10/27(金) 22:47:29 ID:???
>>254
一般的っていう話なら、
is_fileの方はOSとファイルシステムに依存し過ぎるのでまずやらない。
やったとしても独自にインデックス化してディレクトリ掘ってやるとか。
そんな面倒な事するぐらいならマトモなDBに放り込んで安心お手軽に済ますのが一般的。
もちろんシングルファイルで済むならそっちで。
258nobodyさん:2006/10/27(金) 23:00:20 ID:KqclDjNY
>>255
>>256
ありがとうございます。とても参考になりました。
ファイルが1万程度で特定のファイルを探して開くというだけの作業だったら
システム任せにして作業するのが効率良さそうという印象でした。
プログラムもシンプル、メモリ消費も少ない、システムに任せた検索で高速と
考えてファイルを沢山という状態にします。
心配な場合は手前でディレクトリを更に分けておくのが良さそうでした。
259nobodyさん:2006/10/27(金) 23:09:47 ID:KqclDjNY
>>257
そういえば、というくらいにMySQLなんかの話を忘れていました。
使ったことが無かったので見落としていましたが、調べてみます。ありがとうございます。
260nobodyさん:2006/10/27(金) 23:30:59 ID:KHfcRMGS
なんでpostgreは人気がないんですか?
mysqlみたいにライセンスも必要ないし、
postglreなら万が一組み込んでもライセンス違反にはならないのに。
261nobodyさん:2006/10/27(金) 23:57:48 ID:???
>>258
実際、数が極端に多すぎなければ検索速度はis_file()の方が平均して速いよ。
一応、ハッシュを使った割とまともな検索アルゴリズムを使ってくれるから。
よほど古くさいOSでなきゃ2〜3万くらいならまだis_file()の方が余裕で速いと思う…

でも非常にシステム依存性が高くて何がトラブルの元になるか分からないんで、
コントロールしやすい仕組みで作るのがやっぱり一般的かな。
262nobodyさん:2006/10/28(土) 00:37:48 ID:???
>>260
DB板へ行ってください
263nobodyさん:2006/10/28(土) 00:42:40 ID:Y7NdvAT2
register_globals=onはセキュリティ的に推奨されないみたいですが、
グローバル変数を使うこともセキュリティ的にやめたほうが無難でしょうか?
264nobodyさん:2006/10/28(土) 00:53:50 ID:???
>>263
あなたは、なぜ register_globals=on に問題があるのか学ぶべき

詳しくは検索すると山ほど出るからそっちに任せる
265nobodyさん:2006/10/28(土) 00:58:05 ID:???
>>263
セキュリティは全然関係なく、設計と保守性の問題であまり推奨されない。
適材適所を踏まえて、グローバル変数が必要なシーンで使うのは全く問題ない。
266nobodyさん:2006/10/28(土) 01:02:09 ID:???
あれ、register_globalsでスーパーグローバル変数の上書きかなんかのセキュリティ問題なかったっけ?
267263:2006/10/28(土) 01:11:22 ID:Y7NdvAT2
ますます混乱しました。
ここのページをみてきたんですが、>>263さんと以下のページどっちがただしいのでしょうか?
ttp://www.sound-uz.jp/php/tips/security.html
268nobodyさん:2006/10/28(土) 01:11:58 ID:qYURnN+A
配列を単純に連結する(マージではなく)関数はないのでしょうか?

$a = array('a','b','c');
$b = array('0','1','2');

array('a','b','c','0','1','2');

こういった動作をさせたいのですが…
269265:2006/10/28(土) 01:27:00 ID:???
>>267
言い方が悪かったんなら謝る。
俺が質問の意味を勘違いしたのかもしれないが、
「グローバル変数を使うこと"も"」ってのは
「register_globals設定の話とは別に」って意味じゃないのか?

register_globalsがONなら当然セキュリティは大問題だが、
register_globalsがOFFなら特に問題ないし、
その上でグローバル変数を使うことに問題など無いよ。

そのページの話は「register_globalsをONにしてグローバル変数を使う場合」だろ。
そんなもん、グローバル変数を使ってようと使っていなかろうと、
register_globalsがONになってる時点で全然ダメだ。
さらにグローバル変数を使っていたらより問題が悪化するというだけのことだ。
270nobodyさん:2006/10/28(土) 01:30:31 ID:???
>>269
すいません、自分の書き方が悪かったと思います。
>>269さんの解釈のとおりです。
わかりやすいです。
参考にさせていただきまして、プログラムを組んでみます。
ありがとうございました。
271nobodyさん:2006/10/28(土) 01:31:10 ID:???
>>268
$a = array('a','b','c');
$b = array('0','1','2');
array_splice($a, -1, 0, $b);
var_dump($a);

結果:
array(6) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "0"
[3]=>
string(1) "1"
[4]=>
string(1) "2"
[5]=>
string(1) "c"
}
272nobodyさん:2006/10/28(土) 01:32:53 ID:???
>>268
おれもわからなかったから調べてみたらこんな関数があったよ
$a = array(1,2,3);
$b = array(4,5,6);
$a = array_merge($a, $b);
273271:2006/10/28(土) 01:33:04 ID:???
すまん。なんか配列の順番を壊しちゃってたな。
array_splice($a, count($a), 0, $b);
が正解。
274nobodyさん:2006/10/28(土) 01:46:52 ID:???
>>268
なんでマージじゃダメなの?
275nobodyさん:2006/10/28(土) 01:51:34 ID:???
>>272
array_mergeだと、順番が混合してしまうんですよね
>>273
置き換えをする関数で連結するとは思いつきませんでした
ありがとうございました
276nobodyさん:2006/10/28(土) 01:51:38 ID:???
>>268
$a = array(1,2,3);
$b = array(4,5,6);

$c = $a[0].$a[1].$a[2].$b[0].$b[1].$b[2];

echo $c;
277nobodyさん:2006/10/28(土) 02:07:36 ID:???
>>275
array_mergeでも一緒やんけ
278nobodyさん:2006/10/28(土) 02:08:30 ID:???
というかマージのほうがみやすいと思うけど。
ひとそれぞれなのか・・
279nobodyさん:2006/10/28(土) 02:13:09 ID:???
>>275
> array_mergeだと、順番が混合してしまうんですよね
具体的にどういうケース??
280275:2006/10/28(土) 02:42:38 ID:???
今確かめたらarray_mergeでも順番は保たれますね
連想配列で、同じ文字列のキーがあった場合には上書きされてしまうので、
キーが数字の時も混合されてしまうと思いこんでいました。
281nobodyさん:2006/10/28(土) 02:57:34 ID:???
便利なのがphpのよいところだからな。
>>275はとりあえずこれでも読んどけ
ttp://hiro.asks.jp/5297.html
282nobodyさん:2006/10/28(土) 03:36:18 ID:VA57KDTi
下らなくない質問はどこですればいいですか?
283nobodyさん:2006/10/28(土) 03:43:25 ID:???
下らなくなくはないだろう。
284nobodyさん:2006/10/28(土) 03:57:36 ID:???
>>282
かつてここの本スレと呼ばれた「PHP質問スレ」が別にあった。
だが、そこにも結局下らない質問しか投下されなかったために
スレは消滅してしまった。

下らなくない質問があるというなら試しにここに投下してみるといいよ。
ニーズがあることが確認できればきっと本スレ復活もあるさ。
285nobodyさん:2006/10/28(土) 04:12:50 ID:7i10sVSQ
質問です。

OS:CentOS4.4
Apache2.2.3+php5.1.6(どちらもソースから)

症状:php.iniを置くとphpが実行されない

Configuration file pathに指定したディレクトリにphp.iniを置いてapacheをリスタートし、phpinfoを表示させてみると何も表示されません
(ソースを見ると
<?
phpinfo();
?>
このように表示されてしまいます)

php.iniを置かない状態だと問題なく表示されるのですが、どうしたらよいでしょうか?
php.iniは、php.ini-recommendedを cp -p でコピーしただけなので設定に問題があるとは思えないのですが・・。

よろしくお願いします。
286nobodyさん:2006/10/28(土) 04:25:32 ID:???
>>282にとっては

echo "Hello World";
がくだらなくなくても・・・

おれにはくだらないんだよ。


そんなもんじゃねえのか。ここで質問したっていいじゃん。
質問者がそんな回答者を上から見下ろすような感じじゃ嫌な感じ。
287nobodyさん:2006/10/28(土) 04:27:57 ID:???
1.LoadModuleの設定はしてあんのか?
2.LoadModuleで呼び出すdllパスは正しいのか、そのdllであっているのか。

それを確認してからまたレスしれ
288285:2006/10/28(土) 04:36:47 ID:7i10sVSQ
>>287
レスありがとうございます(私宛ですよね・・?)

LoadModuleは設定してあります。
php.iniを置かなければ正常に動作しますので・・。

httpd.confでの設定↓
LoadModule php5_module modules/libphp5.so
(lipphp5.soも存在します)

引き続きよろしくお願いします。
289nobodyさん:2006/10/28(土) 04:50:26 ID:???
>>286
見下ろすのはこっち
くだらない質問でもど偉そうに聞いていいスレ
http://pc8.2ch.net/test/read.cgi/php/1158647441/

どっちかっつーと「対等な立場で質問」だと思う >下らなくない
290nobodyさん:2006/10/28(土) 04:50:34 ID:???
>>285
>php.iniを置かなければ正常に動作しますので・・。
php.iniをいじってない?エラーになってんじゃ?
もし修正しているなら修正していないphp.ini-distかなんかで確認
正常なら修正したとこ見る
291nobodyさん:2006/10/28(土) 04:52:06 ID:???
>>288
php.iniのパーミッションってどうなってんの?
292nobodyさん:2006/10/28(土) 04:52:53 ID:???
>>290
>>285
> php.iniは、php.ini-recommendedを cp -p でコピーしただけ
293285:2006/10/28(土) 04:59:54 ID:7i10sVSQ
>>291
php.iniのパーミッションは644(rw-r--r--)になっています。

>>290
php.iniはいじってないのです・・。

>>292
補足ありがとうございます。
294nobodyさん:2006/10/28(土) 05:00:47 ID:???
>>289
スルーしれ
295nobodyさん:2006/10/28(土) 05:03:17 ID:???
設定はあってんのに動かないときは、
アンスコして再インスコすると解決することがある。
296nobodyさん:2006/10/28(土) 05:08:28 ID:???
AddType appliationの設定もあってるよな?
297nobodyさん:2006/10/28(土) 05:11:43 ID:???
>>293
試しに php.ini-dist をコピーしてみるとか。
298nobodyさん:2006/10/28(土) 05:13:41 ID:???
>>285
ソースを
<?php
phpinfo();
?>
に書き直せ。
recommended設定ならshort_open_tagはOFFになってるはずだから
<? 〜 ?>ではPHPコードとして解釈されない。
299285:2006/10/28(土) 05:23:51 ID:???
>>298
おおおおおおありがとうございます!
書き直したら実行されました!勉強になりました・・。

>>296
はい、あっていました。

>>297
試していませんが、distのほうはshort_open_tagがONなので動くと思います・・。最初に試せばよかったですね・・。

>レスをくれた皆様へ
夜遅くに(もう朝ですが)ありがとうございました。
おかげで無事解決しました!
300nobodyさん:2006/10/28(土) 05:24:05 ID:???
>>298=神
それだ!
301nobodyさん:2006/10/28(土) 05:24:44 ID:???
たのむ気になって寝られないんだよ。解決したら発表してくれ〜
302nobodyさん:2006/10/28(土) 05:30:08 ID:???
単に「phpinfo()も動きません」ではお蔵入りになるとこだったな。<よくある
ちゃんと動かないソースも晒したからこそ比較的早く解決したんだと思う。
303nobodyさん:2006/10/28(土) 05:50:54 ID:???
>>299
よかった、これであと30分ごにねられる
つД`)
304nobodyさん:2006/10/28(土) 07:21:08 ID:???
>>284
PHP質問スレ・・懐かしいな

1000まで埋まり次スレどうしようか?って時に、
スレ立てを躊躇して結局立てれなかったんだよなぁ・・。
305nobodyさん:2006/10/28(土) 08:02:17 ID:???
あっちのスレも時々見てたけど、当時は両スレとも痛々しい空気だったな。
お互いのスレを煽りあう(?)みたいな雰囲気で。
306nobodyさん:2006/10/28(土) 09:59:36 ID:???
下らねぇ質問はここに書き込みやがれスレの認定の回答者になるには
いままででてきた質問に全部答えられないと認めてくれませんか?
307nobodyさん:2006/10/28(土) 10:02:24 ID:???
なんだその認定の回答者ってw
308nobodyさん:2006/10/28(土) 10:10:32 ID:???
ちょっと前までは質問オンリーだったんですけど、
最近は調べて回答するようにしたんです。そしたら勉強になってしまって。
回答オンリーの方はさぞご経験をつまれていると思います。
自分もそんな先輩方近づき、一人の回答者になりたいです。
それが夢でございます。
309nobodyさん:2006/10/28(土) 10:11:51 ID:???
このスレにいることに誇りを感じるんです。
310nobodyさん:2006/10/28(土) 10:13:38 ID:???
強引に変な流れに持って行くなw
311nobodyさん:2006/10/28(土) 13:26:50 ID:???
ここのスレはいい人ばかりで大好きです。
ありがとう。
312nobodyさん:2006/10/28(土) 15:12:16 ID:???
これって新手の荒らしなのか?
まさかおもしろいとか思っt(ry
313nobodyさん:2006/10/28(土) 15:26:33 ID:???
>>312
そういうことはあまりかかないほうがいいって
314nobodyさん:2006/10/28(土) 16:00:44 ID:???
シンジラレナーイ!
315nobodyさん:2006/10/28(土) 16:04:57 ID:???
ショッピングサイトとかの検索移動履歴ってどうやって保持しているのかな。

yahoo だと リクエストパラメータがすべて/で区切られていて
実際はフォルダ階層ではないだろうけど、フォルダ階層のように表示されて分かりやすいし。

Ethna使っているんだけど、そういうのは無理らしいんだよね。

かといって、たとえば 関東、東京都、渋谷区と検索した場合に、リクエストパラメータが
region=01&prefecture=02&city=03 ってのは見た目が悪すぎるし。

どうすればいいの?
316315:2006/10/28(土) 16:14:39 ID:???
あと、っこれyahooオークションのページなんだけど、検索バーの下に
移動履歴があるでしょ。

http://list4.auctions.yahoo.co.jp/jp/2084008049-category.html

あれって、hiddenタグで保持していないし、
本、雑誌、 雑誌  ファッション という文字と、URLの関連付けは
どこで設定しているのかな。

誰か教えてください。
317nobodyさん:2006/10/28(土) 16:30:10 ID:???
(;^ω^)また暴れ出しそうなタイプのバカですか?
318nobodyさん:2006/10/28(土) 16:34:04 ID:???
>>317
答えられんやつのほうがバカだと思うが。
319nobodyさん:2006/10/28(土) 16:36:04 ID:???
荒れる原因をつくってるだろ。この文。

(;^ω^)また暴れ出しそうなタイプのバカですか?
320nobodyさん:2006/10/28(土) 16:37:56 ID:???
>>317が機嫌悪くなるのもわかるが>>315の聞き方も見下してる書き方で悪い。
スルーしる。
321315:2006/10/28(土) 16:40:18 ID:???
ちょww お前らこれで見下しているってどれだけネクラなんだよww
てか俺より頭悪そうだから、もういいや(笑

322nobodyさん:2006/10/28(土) 16:50:04 ID:???
えらそう
323nobodyさん:2006/10/28(土) 16:50:58 ID:???
入門向けの本に載ってることを利用すればいいだけなのに・・・
324nobodyさん:2006/10/28(土) 16:55:58 ID:???
発想が貧困なんですよ、きっと
325nobodyさん:2006/10/28(土) 17:12:58 ID:???
>>315はかなりのツンデレ。

自分が聞きたい事を素直に聞けないでどうしても妙に遠回しな表現にしてしまう。
多分今頃自己嫌悪で顔真っ赤。ベッドに飛び込んでじたばたしてるに違いない。

というかこんな事も分からない奴がショッピングサイトとか流石にネタだろ(´・ω・`)
326nobodyさん:2006/10/28(土) 17:29:39 ID:???
その前に大前提として、質問するならIDを出せ、と。
327nobodyさん:2006/10/28(土) 17:45:06 ID:???
vipperだらけかよ
328nobodyさん:2006/10/28(土) 18:25:12 ID:???
レッツPHPさんの i-bbsスクリプトを使用していて、今回新たにサンプルを利用させてもらおうと思ったのですが、ローカルで掲示板に書き込みを行うと、なぜか
http://www.answers.com/のページに飛ばされてしまいます(送信ボタンを押したときなどに。ただし書き込みは正常に行われてる様子)
他のp-bbsなどでもなるので、自分のPCのせいかともおもいましたが、他サイトさんの掲示板スクリプトで試すと何の問題もありませんでした。

これって自分のPCがわるいのでしょうか?
レッツPHPさんのスクリプトを他に使ってる方でこんな症状がでるかたいますか?

WinXPでFirefox使用
なお、IEで同様にローカルで書き込みしようとすると「ページが表示できません」とでます
329nobodyさん:2006/10/28(土) 19:16:57 ID:???
PHPの力で明日の天皇賞の勝ち馬を導き出せませんかね?
330nobodyさん:2006/10/28(土) 19:20:16 ID:???
まぁほんとにレヴェルの高い人は2chなんて見てないしな。
331250:2006/10/28(土) 19:29:57 ID:Owjys+/6
>>251 >>252
ありがとうございます。あってもなくてもいいということですね。
でもこれには一体どんな意味や機能があるんでしょう?
332nobodyさん:2006/10/28(土) 19:31:35 ID:???
>>315
POSTで渡してセッション入れとけばいい。
俺もWEB始めて1ヶ月くらいの頃はGETとかhiddenで持ち回してた。

最初の頃のソース一応持ってるけど、それ見ると「あぁ、この頃は若かった」って思うよね。
333中三:2006/10/28(土) 19:37:53 ID:???
>>329
<?php

$deep_impact = $_HORSE['WINNER'];
$fp = fopen('おまえの頭の中身.txt',w);
fputs($fp,$deep_impact);
fclose($fp);

?>
334nobodyさん:2006/10/28(土) 19:52:11 ID:doQnvF3Z
フレームページでの質問ですけど

1.フレームページ index.php
2.メインページ  main.php
3.トップページ  top.php

の構成でメインページ(main.php)で表示されている
外部HTMLページをトップページ(top.php)にあるボタンを押す事で
メインページ(main.php)のファイルやURL等をを取り込んだり
する事は出来るでしょうか?
335nobodyさん:2006/10/28(土) 20:01:25 ID:???
>>334
もう少し分かり易い"下らねぇ質問"をすることは出来るでしょうか?
336nobodyさん:2006/10/28(土) 20:15:48 ID:doQnvF3Z
すいまんせ、これ以上は・・・・
善処いたします。
337nobodyさん:2006/10/28(土) 21:14:26 ID:???
政治家かい?

で、メインページに表示しているHTMLのURLとコンテンツをPHPの変数に取得したい
ということか?
URLが分かれば、file_get_contentsとかcurlでとれるよ
338nobodyさん:2006/10/28(土) 21:18:39 ID:doQnvF3Z
おぉぉ、ありがとうですm(_'_ )m波平ペコッ
そういう事をしたかったのです!!
339nobodyさん:2006/10/28(土) 21:18:45 ID:RGmX0RKo
すみません
PEARモジュールをインストールしてtgzをLhaplusで解凍
するとxmlになるんですが一般の解凍ソフトは無理なんでしょうか..?
340nobodyさん:2006/10/28(土) 21:34:50 ID:???
xmlもまあ入ってるがそれ以外にフォルダが入ってるはずなんだが
341nobodyさん:2006/10/28(土) 21:36:39 ID:xtWbOPh4
ちょっとjavaプログラミングでわからないことがあるので教えてください。
スレ違いならごめんなさい。

Stringbuffer ques1 = new Stringbuffer(100);
Stringbuffer ques2 = new Stringbuffer(100);

ques1.append("hoge");
ques2.append("choko");

for(i=1;i<3;i++)
System.out.println(ques + "i");

とやれば、hogeとhageガ表示されると思いましたが、このままだと
ただの文字列なので、ques1 ques2と表示されるだけです。
なにか、このような方法でques1と2の内容を表示する方法ないですか?
342nobodyさん:2006/10/28(土) 21:39:37 ID:???
>>341
はいはい、釣り乙釣り乙

スレタイ嫁
343334:2006/10/28(土) 21:44:11 ID:doQnvF3Z
ふたたびすいません。ちなみに
>>337
さんの
>で、メインページに表示しているHTMLのURLとコンテンツをPHPの変数に取得したい
>ということか?
>URLが分かれば、file_get_contentsとかcurlでとれるよ
のところで
URLが分からない場合は何か良い方法はないですか^^;
344nobodyさん:2006/10/28(土) 21:46:40 ID:???
どうやって、メインページに表示してるの?
345nobodyさん:2006/10/28(土) 21:48:20 ID:RGmX0RKo
>>340
xmlだけなんですよね。。なんでだろう
他の解凍ソフトでも試してみます。。
346nobodyさん:2006/10/28(土) 23:17:36 ID:WdiFJULn
$name_a = array('りんご', 'ばなな', 'すいか', 'すいか', 'りんご');
$test_a = array('あか', 'きいろ', 'みどり', 'きいろ', 'あお');

for($loop = 0;$loop < count($name_a);$loop++) {
echo $name_a[$loop].'は'.$test_a[$loop].'<br>';
}

この場合5通り出力されますがこれを
$name_aの中で重複しているものに関しては1つだけを出力し
その場合の対となる$test_aからはランダムに選択したいのですが
どのようにすれば良いでしょうか?

出力結果の例1
りんごはあか
ばななはきいろ
すいかはきいろ

出力結果の例2
りんごはあお
ばななはきいろ
すいかはみどり

アドバイス頂けましたら幸いです。
347nobodyさん:2006/10/28(土) 23:46:56 ID:???
array_unique() 配列から重複した値を削除する
array_rand() 配列から一つ以上の要素をランダムに取得する

マニュアルのV. 配列関数(array)嫁
348334:2006/10/28(土) 23:48:12 ID:doQnvF3Z
>>344
えっと、
1.トップのハイパーリンクからリンクしてメインに表示させて
2.メイン内で外部HTMLから更にハイパーリンク
3.ハイパーリンク行えば表示された2回目の外部HTMLの情報を
とりこみたいのですけど^^;

メインページは
<html>
<title>メインページ</title>
<frameset rows="64,*,64">
<frame name="top" scrolling="no" noresize target="contents" src="とっぷ.php">
<frameset cols="150,*">
<frame name="contents" target="main" src="メイン.php">
</frameset>
<frame name="bottom" scrolling="no" noresize target="contents" src="ind4.php">
<noframes>
<body>
<p>このページにはフレームが使用されていますが、お使いのブラウザではサポートされていません。</p>
</body>
</noframes>
</frameset>
</html>
みたいな感じです。
うーむ、また分かりにくいかもしれないですけど><
よろしこです^^;
349nobodyさん:2006/10/28(土) 23:51:11 ID:???
>>346
$name_a = array('りんご', 'ばなな', 'すいか', 'すいか', 'りんご');
$test_a = array('あか', 'きいろ', 'みどり', 'きいろ', 'あお');

foreach (array_count_values($name_a) as $name => $count) {
 $color = $count == 1 ? $test_a[array_search($name, $name_a)] : $test_a[array_rand($test_a)];
 echo $name . 'は' . $color . '<br>';
}
350nobodyさん:2006/10/28(土) 23:52:45 ID:WdiFJULn
>>347
それは理解しているのですが
組み合わせる事が出来なく困っています。
どうかヒントだけでもお願いいたします
351nobodyさん:2006/10/29(日) 00:03:57 ID:???
>>348
全然意味がわからん。そもそも最初の、フレーム、トップ、メインてわけわからん。
せめてフレーム(トップ)、メニュー、コンテンツ(メイン)とかにしてくれ。
352nobodyさん:2006/10/29(日) 00:04:59 ID:EYdNlx59
>>349
ありがとうございます。
出来ました。

$color = $count == 1 ? $test_a[array_search($name, $name_a)] : test_a[array_rand($test_a)];

途中の ?
と :

の意味がわからないのですが解説お願い出来ませんでしょうか?
検索のしようがなく困っています。申し訳ありません。
353nobodyさん:2006/10/29(日) 00:17:02 ID:???
>>348
>せめてフレーム(トップ)、メニュー、コンテンツ(メイン)とかにしてくれ。
そこも意味がわからないが、
>2.メイン内で外部HTMLから更にハイパーリンク
"から"→"へ"でなくて?

"コンテンツ(メイン)"では、いろいろ他のサイトのコンテンツを表示させて、
裏でそのコンテンツを取得したいということか?

354nobodyさん:2006/10/29(日) 00:19:56 ID:???
>>352
三項演算子でぐぐれ
頼むから言語リファレンスくらいは全部一度読んでくれ
355334:2006/10/29(日) 00:28:36 ID:nyCjtOK7
>>351
すんませんm(_'_ )m波平ペコッ修行不足なかぎりです・・・
>>353
そうです!!
裏でコンテンツを取得したいのです!!
何か良い方法ありますでしょうか・・・
356nobodyさん:2006/10/29(日) 00:36:56 ID:EYdNlx59
>>352
ありがとうございます。
勉強不足でした。

>>349
今テストしているのですが
$nameと$colorが対にならないようです。

例えばりんごはきいろなどが出てきてしまいます。
357nobodyさん:2006/10/29(日) 00:55:50 ID:EYdNlx59
$name_a = array('りんご', 'ばなな', 'すいか', 'すいか', 'りんご');
$test_a = array('あか', 'きいろ', 'みどり', 'きいろ', 'あお');

説明下手ですいません。
この場合
りんごは重複しているので あか or あお のどちらかをランダムで選択
ばななは一つしかないので きいろ
すいかは重複しているので みどり or きいろ のどちらかをランダムで選択

このようにしたいのですがどなたかアドバイスお願いします。 
358nobodyさん:2006/10/29(日) 01:04:26 ID:bVOhrU5J
マルチスレッドで利用している場合、
flock()の保障は不完全となりますか?
359nobodyさん:2006/10/29(日) 01:19:01 ID:???
>>357
$name_a = array('りんご', 'ばなな', 'すいか', 'すいか', 'りんご');
$test_a = array('あか', 'きいろ', 'みどり', 'きいろ', 'あお');

foreach (array_count_values($name_a) as $name => $count) {
 if ($count == 1) {
  $color = $test_a[array_search($name, $name_a)];
 } else {
  $colors = array_keys($name_a, $name);
  $color = $test_a[$colors[array_rand($colors)]];
 }
 echo $name . 'は' . $color . '<br>';
}

で一応いけると思うけど
果物を連想配列に直すべきだな

>>358
http://jp.php.net/manual/ja/function.flock.php
不完全みたいね
360nobodyさん:2006/10/29(日) 01:22:36 ID:???
$name_a = array('りんご', 'ばなな', 'すいか', 'すいか', 'りんご');
$test_a = array('あか', 'きいろ', 'みどり', 'きいろ', 'あお');

foreach (array_count_values($name_a) as $name => $count) {
$out = array();
foreach (array_keys($name_a, $name) as $name2) {
$out[] = $test_a[$name2];
}
$color = ($count == 1) ? $out[0] : $out[rand(0, $count-1)];
echo $name . 'は' . $color . '<br>';
}
361nobodyさん:2006/10/29(日) 01:36:21 ID:EYdNlx59
>>359
>>360
ありがとうございます。

>>359さんのが自分にしっくり来たので使わせていただきます。
有難う御座います。
362nobodyさん:2006/10/29(日) 01:45:11 ID:???
>>358
flockとマルチスレッドは何の関係もないと思うよ。
363nobodyさん:2006/10/29(日) 01:46:54 ID:???
ユーザ定義のエラーハンドラ関数の中では、require_once()もできないし、
__autoload()も効かないようなんですけど、どうでしょう?
364315:2006/10/29(日) 02:10:49 ID:???
>>332 まともな回答ありがとう。
セッションで実装はずいぶん前にやってましたが、
URL直リンができないので不便すぎて廃止しました。

今は一応hiddenでやってますが、以前書いたようにフォルダ階層が分かりにくい。

実際アルバイト情報サイトなどではhiddenで持ちまわっているところが多いけれど
(検索結果をブックマークに保存できるため)
yahooがどういう仕組みになっているのかが聞きたかったんですよね。

ソースに直接書く以外たぶんできないとは思いますが、
DBデータの変更の際に修正が大変なんですよね。

あと >>325 がなんかいってたが、あんたよりできるのは確実だからw
ちなみに俺のメインはC++のWin32ゲームアプリで、WEBアプリケーションに関しては
初心者なみだけど。

気になったことが1つ。
DirectX板はかなりレベルが高いやつが多かったが、WEBアプリは基本的に低いのかな?
365nobodyさん:2006/10/29(日) 02:15:44 ID:???
連想配列をランダムに全て取り出すのはどうすればよいですか?
366315:2006/10/29(日) 02:16:42 ID:???

>>322
あとPOSTもセッションと同様の理由で使いにくいですね。
ものによるとは思うけど。
367315:2006/10/29(日) 02:17:22 ID:???
>>322 じゃなくて >>332 でした。 Σ(・ε・;)
368nobodyさん:2006/10/29(日) 02:24:52 ID:???
連想キーと要素との関係を維持しつつ配列をランダムにする
もしくは
連想配列をランダムに一つではなく全て取り出すには

どうすればよいでしょうか?

369315:2006/10/29(日) 02:26:50 ID:???
>> 368

PHPマニュアルに

shuffle
(PHP 3 >= 3.0.8, PHP 4, PHP 5)

shuffle -- 配列をシャッフルする
説明
bool shuffle ( array &array )


この関数は、(要素の順番をランダムにするために)配列をシャッフルし ます。

注意: この関数は、 array パラメータの要素に対して新しいキーを割り当てます。その際、単純にキーを並べ替える代わりに、すでに割り当てられている既存のキーを削除してしまいます。


ってあったよ。
370nobodyさん:2006/10/29(日) 02:31:37 ID:???
>>369

キーを削除するって書いてあったorz
マニュアル探したらありそうな気がするんだけどなぁ

PHPってクラス化されていないから探すのがかなり面倒ではあるね。
371315:2006/10/29(日) 02:56:01 ID:???
>>368

誰も答えてなかったので作ってみたよ。
一応マニュアル調べてみたが、無いみたい。

function array_sorta(&$data) {

$cnt = count($data);
for ( $i = 0; $i < $cnt; $i++ ) {
$key = array_rand($data);
$data2[$key] = $data[$key];
unset($data[$key]);
}

$data = $data2;
}

以下テストプログラム

$data = array( "a" => "A", "b" => "B", "c" => "C");

print_r($data);
echo "<BR>";

array_sorta($data);

print_r($data);

バグあるかも。
372315:2006/10/29(日) 02:57:43 ID:???
名前 array_sorta となってたが、やってることshuffleだったw array_shuffle とでもして。
373nobodyさん:2006/10/29(日) 02:59:20 ID:???
>>364>>315
なにコイツ?
そこまで偉そうな態度で講釈垂れるくらいなら
こんなスレ来ないで自分で考えりゃいいのに。

必死にC++がどうこうとか言ってるあたりが痛い。
374315:2006/10/29(日) 03:02:31 ID:???
>>373

正直何も答えられないお前のほうが痛いぞ
低脳はだまってろよw

ここはもう少しレベルが高いと思って質問してみただけだ
質問したあと後悔したよ
375nobodyさん:2006/10/29(日) 03:25:27 ID:???
>>368

$text = array(1,2,3,4,5);
$i = $text;

$i[] = shuffle($i);
$del = array_pop($i);
unset($del);

foreach ($i as $v)
{
echo $v."<br>";
}
376nobodyさん:2006/10/29(日) 03:29:36 ID:???
>>375

連想キークリアされてるぞそれ
377375:2006/10/29(日) 03:33:24 ID:???
$text = array(1,2,3,4,5);
$i = array_diff($text,array());

$i[] = shuffle($i);
$del = array_pop($i);
unset($del);

foreach ($i as $v)
{
echo $v."<br>";
}


>>375はphp4用。こちらはphp4と5両方対応。
378nobodyさん:2006/10/29(日) 03:36:24 ID:???
>>377

連想キー分かってないやつ乙
379nobodyさん:2006/10/29(日) 03:38:40 ID:???
$text = array("name"=>"山田","age"=>20,"tall"=>180);
すまん、訂正
$i = array_diff($text,array());

$i[][] = shuffle($i);
$del = array_pop($i);
unset($del);

foreach ($i as $v)
{
echo $v."<br>";
}
380375:2006/10/29(日) 03:39:54 ID:???
2行目コメントアウトするの忘れずに。
381375:2006/10/29(日) 03:42:40 ID:???
再度確認したらキーが消えてた。
il||li_| ̄|○ il||li
382375:2006/10/29(日) 03:51:15 ID:???
参考文献みつけました
ttp://side-b.sto.co.jp/weblog/archives/14
383nobodyさん:2006/10/29(日) 04:09:17 ID:???
>>368
uasortの比較関数でランダムに返してやりゃいいんじゃね?

uasort($arr, 'cmp_rand');
function cmp_rand() {
 return rand(0, 2) - 1;
}
384nobodyさん:2006/10/29(日) 04:09:39 ID:???
$r = mt_rand(0, count($array)-1);
$i = 0;
foreach ($array as $v)
{
if($i == $r) {echo $v."<br>"; break; }
$i++;
}
385nobodyさん:2006/10/29(日) 04:21:17 ID:???
>>363
phpのバージョンとphp.iniを確認汁
386nobodyさん:2006/10/29(日) 04:47:03 ID:???
しました。
387nobodyさん:2006/10/29(日) 04:59:09 ID:hbSphBwD
PHPのセッションってデフォルトでブラウザ閉じるまで有効になってるはずだよな?
何か時々セッションが切れてしまうんだが・・・
ちなみにバージョンはPHP 5.1.1(Linux)
388nobodyさん:2006/10/29(日) 05:00:45 ID:bPIXuHP3
php5.0.1
Apache2.2.3 を使ってphpを始めた者です。windowsXPです。

sqliteを使いたいのですが、ファイルのオープンの時にエラーが出てしまいます。
Fatal error: Call to undefined function sqlite_open()
in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\nenpyou\schedule.php on line 2

2行目のコードは、
$db=sqlite_open("schedule.sqlite",0666,$err);   
です。

php.iniは、
; Directory in which the loadable extensions (modules) reside.
extension_dir = "c:/php/ext"

;extension=php_sockets.dll
extension=php_pdo.dll
extension=php_sqlite.dll
;extension=php_sybase_ct.dll

のように変えています。
初心者なので右も左も分からない状態ですが、よろしくお願いいたします。
389nobodyさん:2006/10/29(日) 05:19:21 ID:hbSphBwD
>>388
undefinedが出てるって事は間違いなくphp.iniの設定が間違ってるな
PHPがお前にsqlite_open()って言う関数がが見つからないよ!って教
えてくれてるんだ

まずapacheはちゃんと再起動したか?
390387:2006/10/29(日) 06:08:50 ID:hbSphBwD
あ〜・・・色々凄い勘違いしてたみたい・・・

ちょっとまとめて出直してくる
391nobodyさん:2006/10/29(日) 08:03:36 ID:???
> セッションで実装はずいぶん前にやってましたが、
> URL直リンができないので不便すぎて廃止しました。
>
> 今は一応hiddenでやってますが、以前書いたようにフォルダ階層が分かりにくい。

こいつのおおもとの質問を読む限り、
こいつが探しているものは $_SERVER['PATH_INFO'] なのかな、って気がするが。

ただ持って回るのが検索履歴なら直林しなきゃいけない理由もよくわからんし
セッションに入れとけばって感じだけど。
携帯かなんかなのかな? あ、セッションIDをURLに入れとくように設定しとけば直林できるんでは
392nobodyさん:2006/10/29(日) 09:43:30 ID:???
315は「履歴」という日本語の意味を知らないんじゃないか?
履歴とかではなく、単にカテゴリ分けされた「現在地」にあたるものを、ファイルシステムのパスみたいにスラッシュ区切りで表示したいだけだと思われ。
セッションを使う必要すらない。
URLの見た目も階層的にするなら、mod_rewriteで終了。
393nobodyさん:2006/10/29(日) 10:07:10 ID:???
一意な数を取得したい場合、どうやってますか?
カウントファイル用意するか、
SQLでカウンタ用テーブル作成するか、
の方法取ってるんですが、もっとスマートな方法はないでしょうか?
394nobodyさん:2006/10/29(日) 10:12:11 ID:???
>>393
一意ってのが後にも先にも一意っていうなら
そりゃやっぱどこかに既存値を保存しないとムリあるから
ファイルかDBになるんでないの?

自分でやるならまずその数字の使用目的と生成頻度から
本当に一意である必要があるかを問うとこからはじめる。
395nobodyさん:2006/10/29(日) 10:26:57 ID:???
>>393
大概のDBには連番発行のための仕組みがあるからそれを使う
396nobodyさん:2006/10/29(日) 12:14:56 ID:XBhnfX09
一意ってのがどんなもんなのかよくわからん
394と同じく使用頻度に重点を置くのが一番かと
397nobodyさん:2006/10/29(日) 13:45:32 ID:c2r4qYBN
すいません、下らなくない質問ですが、本スレがないらしんでここで。

PHP側でHTTPリクエストのリクエスト内容を取得する方法ってありますか?
(HTTP 1.0/1.1 のリクエストヘッダーを取得する方法です。)
398nobodyさん:2006/10/29(日) 14:06:22 ID:???
>>397
下らねえよ
$_SERVER['HTTP_*']
apache_request_headers
nsapi_request_headers
399388:2006/10/29(日) 14:36:38 ID:Vho0F98z
>>389
レスありがとうございます。
ApacheはRestartしました。

php.iniで、ほかにsqlite_openに関係するところがあるのでしょうか?
400nobodyさん:2006/10/29(日) 15:10:39 ID:???
それでちゃんとextension_dirにdllがあれば動くはず
401nobodyさん:2006/10/29(日) 15:55:46 ID:???
apache2.2.3って
phpディレクトリにちゃんとphp5apache2_2.dllが入っていることが前提で質問してるんだろうな?
402388:2006/10/29(日) 17:20:07 ID:t7v+PkcA
>>400,401
Cのphpのextに両方のファイルがあります。
php5apache2_2.dllも、phpに入っているのを確認しました。

さっきももう一度パソコン再起動して試してみましたが、同じ症状です。
403nobodyさん:2006/10/29(日) 17:26:15 ID:???
PHPIniDirは?
404nobodyさん:2006/10/29(日) 17:26:56 ID:???
って2.2ってPHP対応してなくなかったっか?忘れたけど
405nobodyさん:2006/10/29(日) 17:27:27 ID:???
ぶっちゃけ、ここにいる回答者ってまともなもの作ったことないべ?
406nobodyさん:2006/10/29(日) 17:54:15 ID:???
ぼうや、良く気付いたね!
その年でそこまで分かるなんて本当に大したもんだよ、うん。
407nobodyさん:2006/10/29(日) 18:13:22 ID:???
ここのスレはいい人ばかりで大好きです。
ありがとう。
408nobodyさん:2006/10/29(日) 18:31:59 ID:???
>>404
非公式で配布されてるよ。
409nobodyさん:2006/10/29(日) 18:33:21 ID:???
>>402
まさかとは思うが公式版のapacheつかってないだろうな?
410388:2006/10/29(日) 19:02:32 ID:t7v+PkcA
>>403
phpIniDirとは、httpd.confのどこかに書くのでしょうか?

>>408,>>409
たぶん公式版を使っています・・・
ttp://httpd.apache.org/download.cgiからダウンロードしました

簡単なsqlite以外は動作していたのですが。
非公式で配布されているのは、どこででしょうか?
411nobodyさん:2006/10/29(日) 19:18:20 ID:???
公式版使ってるなら2.0か1.3にしな。
非公式ぐらい自分で探せないなら公式版つかってたほうが無難。
412388:2006/10/29(日) 19:20:00 ID:t7v+PkcA
すみません、410の、「簡単なsqlite以外」は、
「phpそれ自体(簡単なphpコード)」という意味です。わかりにくくてすみません。
413nobodyさん:2006/10/29(日) 19:57:41 ID:???
無理に2.2.3を使う必要はない。やめとき
414nobodyさん:2006/10/29(日) 20:20:33 ID:???
すいません。教えてください。
windows環境でPHP5.1.6を動かしてます。
mysqliを試してみようと思ったのですが、上手く動きません。
とりあえずphp.iniの
;extension=php_mysqli.dll
のセミコロンを外して再起動したんですが全く無反応です。
Apacheのエラーログに以下のようなメッセージが書かれてました。
PHP Warning: PHP Startup: Unable to load dynamic library 'c:\\php\\ext\\php_mysqli.dll'

このサイト見てみたら
ttp://php.s3.to/man/install.windows.extensions.html
libmysqli.dllが必要(バンドル)と書いてありますが、そのようなファイルは見当たりませんでした。
どうしたらいいでしょうか?お願いします
415nobodyさん:2006/10/29(日) 20:28:41 ID:???
mysqlインストールしてるか?
416nobodyさん:2006/10/29(日) 20:34:12 ID:???
>>414
・extension_dirを設定しているか
・extension_dirで設定したディレクトリにdllがあるか
417388:2006/10/29(日) 21:47:30 ID:uuNUd04h
apache2.0.59を入れてみたのですが・・・
同じメッセージが出てしまいます。

httpd.confは、
LoadModule phhp5_module c:/php/php5apache2.dll
AddDefaultCharset none
AddType application/x-httpd-php .php
の設定にしています。
418nobodyさん:2006/10/29(日) 21:53:00 ID:???
phhp
419のぐち:2006/10/29(日) 22:02:14 ID:???
なおってなかったら
とりあえずもう一度apacheとphpをいれなおせ。
いれなおしたらレスしれ
420414:2006/10/29(日) 22:08:57 ID:C/SNmSN3
>>415
今まで通常のmysql_connectで繋いでたんでMySQL側の原因ではないと思います。
>>416
extension_dir = "c:\php\ext\"
としてあって同ディレクトリにphp_mysqli.dllが置いてあります。
libmysqli.dllはみんな存在してないんですか?
libmysql.dllはあるんですが・・・。
421nobodyさん:2006/10/29(日) 22:33:18 ID:0I0yeegj
ダウンロードカウンタの仕組みについて質問です。
リンクをクリックしてファイルをダウンロードさせたいのですが、
ファイルのリンクを踏んだらカウントするって考えでよろしいのでしょうか?
クライアントが保存をキャンセルした場合もカウントされるものですよね?
422nobodyさん:2006/10/29(日) 22:43:20 ID:???
>>388
403で出てるけど、php.iniの場所は確認した?
PHPのインストールディレクトリに入ってるだけじゃだめだよ(PATHが通っているかどうかは無関係)。

・C:\WINDOWSに入れる
・httpd.confでPhpIniDirを設定する

のどちらかをやればおk。
423nobodyさん:2006/10/29(日) 22:44:24 ID:???
>>420
apache再起動はしたか?エラーメッセージはどうなった?
Unable to load dynamic library ならまだ読み込めない原因があるはず

http://php.net/manual/en/install.windows.extensions.php
libmysqli.dll はphp 5.0.3以降 libmysql.dll に
統合されたみたいなので問題ない

ていうかmysqliなんて使わずpdo_mysqlにした方がいいと思うよ
424414:2006/10/29(日) 23:10:30 ID:C/SNmSN3
>>423
はい。何度も再起動しました。
Apacheのエラーログに
PHP Warning: PHP Startup: Unable to load dynamic library
'c:\\php\\ext\\php_mysqli.dll' - \x8ew\x92\xe8\x82\xb3\・・・
(中略)
in Unknown on line 0
と出てます。あきらめようかなorz

pdo_mysqlですか。
ちょっと勉強してみます。
425nobodyさん:2006/10/29(日) 23:20:57 ID:???
PHPを最近使い始めた初心者です。(C/C++経験はあり)
PHPの関数・クラス定義・変数のスコープについて悩んでいます。
関数やクラスをファイルに分けて定義し、include/requireした場合に名前衝突を起こす問題を極力避けたいと思っています。
現状では関数/変数をクラス内static定義にする事によって極力名前衝突を起こさないようにしています。
(C++でのnamespase的に使用しています。PHP5で実装予定であったものがされなかったとかなんとか・・・)

こうしてある程度クラスに名前を閉じ込めたものの、クラス定義名の衝突だけは回避出来ずに困っています。
今作成している物に後からモジュール的にコードを追加して行く予定の為どうしても名前衝突問題を回避しなければ・・・

構成的に以下のような物を予定しているます。
[メインphp]
 |---[モジュールAphp]
 |---[モジュールBphp]
 |---[モジュールCphp]
 |---[追加予定モジュールXphp]
 |---[追加予定モジュールXphp]
・・・・
メインphpが上から順番にモジュールPHPを読み込んで行くような構成です。

このような構成で、[モジュールXphp]各々がクラス定義phpファイルをinclude/requireすると
自身のモジュールでだけ使用する比較的どうでも良い様な物までグローバルスコープに名前が追加されていってしまうようで、
後に読み込まれるモジュール程名前の幅が狭まっていってしまいます・・・
関数内でクラス定義をinclude/requireしたりと色々試したのですが、どうしても定義はグローバルになってしまうようです。

現状ではモジュールそれぞれがクラス名にプレフィクスを付ける規約みたいな物を作る方法しか思いついていません。
class ModuleA_class1{ }
class ModuleA_class2{ }
class ModuleB_class1{ }
class ModuleB_class2{ }

なにか良い方法はありませんでしょうか(´・ω・`)
426nobodyさん:2006/10/29(日) 23:26:00 ID:???
>>424
なんか回答とその対応が混乱してるように見えるんだけど、
>>423にあるようにlibmysqli.dllが必要なのは5.0.2まで。
だからそもそも>>414
>とりあえずphp.iniの
>;extension=php_mysqli.dll
>のセミコロンを外して再起動したんですが全く無反応です。
これ自体が間違ってると思うんだがどうよ?
extensionに必要なのはlibmysql.dllだけじゃないの?
427nobodyさん:2006/10/29(日) 23:35:11 ID:???
>>425
はっきり言おう、ない
クラス名に一意のprefixをつけるくらいしかない
メジャーなPHPフレームワークも大概そうしている
例えばZend Frameworkなら全クラスに
prefixで「Zend_」がついてその後にモジュール名がくる
428425:2006/10/30(月) 01:15:22 ID:???
>>427
情報ありがとうございます。
クラス(関数/変数)にprefixを付ける制限的規約を設けることにします。

おかげさまで気持ちがスッキリ割り切る事が出来ました。
これで思う存分コードを書きまくる事が出来ます(`・ω・´)

429はじめまして:2006/10/30(月) 02:33:13 ID:zWlXBO6n
すみません。
ある文字列をmb_convert_encodingを使いEUC-JPに変換したいのですが、
何を指定しても常にASCIIになります。
なにか他に設定あるでしょうか?よろしくお願いいたします。

ソース:SJIS
入力値(test):"あああ"
mb_detect_encoding($_POST['test'])で取れる値:SJIS

 $strEuc = mb_convert_encoding($_POST['test'], "EUC-JP", "SJIS");を実行
 ※ちなみに変換前のコードのとこをautoやほかのにしてもだめでした・・・

mb_detect_encoding($strEuc)で取れる値:ASCII
4300x3f(笑):2006/10/30(月) 02:41:05 ID:???
php.iniにmbstringの項目あるじゃん、書け
431nobodyさん:2006/10/30(月) 02:45:29 ID:???
>>429
実際は変換結果はどうなってんのよ。出力して確認したのか?
「変換できてない」のと「detectでEUCが判別できない」のとでは
全然意味が違うし、どっちの可能性が高いかったらdetectの方が怪しい。
432nobodyさん:2006/10/30(月) 03:06:28 ID:???
>>429
mb_detect_encodingは短い文字列に対しては、期待通りの結果にならないこともあるので(内部のバイナリレベルでは人間にもコンピュータにも区別つかなかいこともあるし)、基本的に信頼をしたらだめ。
飽くまで補助的な目的に使う。
mb_convert_encodingは第2引数と第3引数が正しければ、信頼はできる(内部にバグがない限りは)。
433nobodyさん:2006/10/30(月) 04:14:32 ID:???
>>429
自分でコンバート処理かけば解決。
世の中にはメールアドレスの正規表現を書いたものすごい人もいるんだから
やってみればいいじゃん
434nobodyさん:2006/10/30(月) 05:11:29 ID:???
PerlならともかくPHPでそんな処理書いたら遅すぎて大変な気もするけどな。
435nobodyさん:2006/10/30(月) 05:39:04 ID:???
んなこたあねえよ
436nobodyさん:2006/10/30(月) 05:47:50 ID:???
文字コードの変換って、基本的にテーブルを参照しながら端から端まで1方向にスキャンするだけだから、PHPで書いてもそれほど遅くはならないと思うよ。
まあ実装しても車輪の再開発にしかならないけど。
437388:2006/10/30(月) 05:49:57 ID:QeG77sZU
>>419,422
Apache2.0.53とphp5.0.4を入れ直したら、
解決しました。
このバージョンでは、php.iniでsqliteの設定をしなくても
大丈夫でした。
ご協力下さった皆様、本当にありがとうございました。
438nobodyさん:2006/10/30(月) 06:17:39 ID:???
変数を使ってincludeするファイル名を指定する場合、どうすればいいですか?

例えば、
$mode = "text"
の時に"file_text.inc"をincludeしたいのですが、どうすればいいのでしょうか?
439nobodyさん:2006/10/30(月) 06:17:53 ID:???
いえいえ、朝飯前ですよ。こまったことがればまた質問してください。
440438:2006/10/30(月) 06:18:32 ID:CYbz73Go
すみません、IDは表示しなければいけなかったのですね
441nobodyさん:2006/10/30(月) 06:22:26 ID:???
>>438
何がわからないんだ・・・?
if ($mode == "text") {
 include "file_text.inc";
}
442438:2006/10/30(月) 06:27:12 ID:CYbz73Go
>>441
回答ありがとうございます。
説明不足でスミマセン、例ではtextだけを上げましたがtexta,textb,textc・・・という風に生成されていく場合です。
443438:2006/10/30(月) 06:28:56 ID:???
解決しますた。ご協力ありがとうございますた。
444441のソースを元に:2006/10/30(月) 06:34:46 ID:???
#switchつかったほうがいいけどif文でやるなら。


if ($mode == $texta) {
 include "file_text.inc";
} elseif {
 #処理2
} elseif {
省略

ていうか最低限の勉強しないで聞くのは学校ぐらいにしておけクズ。
445nobodyさん:2006/10/30(月) 06:39:21 ID:???
>>texta,textb,textc・・・という風に生成されていく場合です。

>>444のコードは自分でいじって動かしてみろ。
連想配列の勉強すればわかることだから入門書嫁ボンクラ。
446438:2006/10/30(月) 06:40:13 ID:CYbz73Go
いえ、そういう意味ではなく変数をファイル名に含んだファイルを呼び出したいんです。
444のコ−ドだとtextxが増えた場合にelseifを自分で増やさなければならないのですが
447nobodyさん:2006/10/30(月) 06:48:16 ID:???
最初から最後まで意味のわからない質問だったなwww
448nobodyさん:2006/10/30(月) 06:53:02 ID:???
>>438の質問が悪すぎ
449nobodyさん:2006/10/30(月) 06:55:51 ID:???
>>446
連想配列をと変数と『.=』を使いこなせば解決します。
何でも聞くんじゃなくて自分なりにためしてみて、
それでも動かなかったらここにコードを書け。
だから質問もロクにできないグズなんだよおまえは
450nobodyさん:2006/10/30(月) 06:57:10 ID:???
include "file_".$text.".inc";
include "file_{$text}.inc";
とかってことじゃないの。
↑であってるならば、俺は最初から質問の意味理解できたけど。
451450:2006/10/30(月) 06:59:50 ID:???
あぁ、$textじゃなくて$modeか。
一気にレスついたから、全部自演に見える。
452nobodyさん:2006/10/30(月) 07:02:42 ID:???
まあ解決したらしいので、心機一転、次へ行きましょうか。
453nobodyさん:2006/10/30(月) 08:55:23 ID:???
この板のデータおかしくね?
このスレさっきまで下の方にあったのに、すこし上にあがってる。
バグ?
454nobodyさん:2006/10/30(月) 09:08:11 ID:???
>>453
その「さっき」っていう時点でスレ一覧をリロードしてなかっただけじゃね?
今のところ、ageられた時間的には

10/30(月) 06:40:13 【PHP】下らねぇ質問はここに書き込みやがれ 31
10/30(月) 03:38:12 IDにPerlが出たら神!PHPが出たらシメジ Part24
10/30(月) 03:37:15 金出すから改造してよvol.3
10/30(月) 02:44:37 SNS作ってみよう
10/30(月) 02:42:36 OpenPNE その4
10/30(月) 01:09:43 【質問】ASP.NETスレ Part3【議論】

って感じで、特におかしなとこはなさげ。
455nobodyさん:2006/10/30(月) 09:31:47 ID:???
やっぱり勘違いですね、失礼いたしました。
456nobodyさん:2006/10/30(月) 11:25:37 ID:Ji6bSWEi
1行で書いたほうがスッキリしていいのかな?なんて思い、
三項演算子で条件文を書いて、
現役PGの知り合いに見せたら使わないほうがいいと言われました。
理由は聞かなかったのですが、やはり見づらいからという理由なんでしょうか?
一応個人で使う分なので、別の理由かもしれませんが。
もしかしたらパフォーマンス面かな?と思ったので計測したいのですが、
計測の仕方がわかりません・・・
スクリプトの最初と最後でmicrotimeをとって、その差を求めればいいのでしょうか?
457nobodyさん:2006/10/30(月) 11:30:15 ID:???
うん、意味わからんから帰れ。
458nobodyさん:2006/10/30(月) 11:43:25 ID:???
>>457
煽るだけなら半年ROMってろ。
こんなんがいるから低レベル云々言われるんだよな('A`)
459nobodyさん:2006/10/30(月) 11:48:44 ID:???
と、レス忘れた。

>>456
相手がプロなら、コーディング規約に沿った複数人プロジェクトもやってるはず。
となると、仕事柄見やすいソースを意識するんじゃないかと思う。
わざわざ見にくいソースを書く必要がないっていう考えでしょ。
個人で作ってると言っても、聞いてる相手に見せてるんだから、
見やすいソースを渡すべきだと思う。

ベンチマークはPEARのBenchmark
460nobodyさん:2006/10/30(月) 11:52:31 ID:???
質問をでっちあげてくるやつが増え出したのはいつの日からであっただろうか@chirashi.no.ura
461nobodyさん:2006/10/30(月) 12:04:41 ID:bBR787Fl
認証が必要なページで、CSVをダウンロードしたいです。
認証部分はPEAR::HTTP_Clientを使ってできました。
ですが、取得したHeaderから、ダウンロードしたいファイル名を取り出し、
ローカルに保存するやり方がわかりません。
よろしくお願いします。以下ソースとヘッダーです。
$target_url = "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/aiuro.php";
$client =& new HTTP_Client( $reqParams);
$client->post( $login_url, $login_params);
$client->get( $target_url);
$response = $client->currentResponse();

print_r( $response);

Array
(
  [code] => 200
  [headers] => Array
    (
      [date] => Mon, 30 Oct 2006 02:31:03 GMT
      [server] => Apache
      [cache-control] => private, max-age=10800, pre-check=10800
      [last-modified] => Wed, 20 Sep 2006 01:47:25 GMT
      [content-disposition] => attachment; filename=item_20061030-113103.csv
      [connection] => close
      [transfer-encoding] => chunked
      [content-type] => application/octet-stream; name=item_20061030-113103.csv //このファイルを保存したい。
    )

  [body] =>
)
462nobodyさん:2006/10/30(月) 12:37:57 ID:???
>>461
保存したいも何も、bodyが空じゃん。
463nobodyさん:2006/10/30(月) 12:54:50 ID:???
いるよね三項演算子嫌いな人。
ていうか、「そんなもの知らない」って人も結構いるし。
とりあえずPHPは、どんなレベルの奴がかかわってくるかわからんので、
素人向けの一番簡単な入門書で紹介してるレベルの内容で書き換え可能なものは
原則的に素人向けの書き方しといたほうがいいんじゃないかって気がする。
経営的な言い方すると、PGのコストを最小にしてもトラブルが少ないように。
もちろん経営的に全然逆の考え方する人もいるだろうけど。
464461:2006/10/30(月) 13:05:21 ID:bBR787Fl
>>462
このページは、通常のブラウザで見ると、
CSVファイルのダウンロードページなので、Bodyは無いのだと想います。
465nobodyさん:2006/10/30(月) 13:07:43 ID:???
>>456
そもそもどういうのを三項演算子で書き直したんだ。
三項演算子は「条件で変わる代入式」をすっきり書くための演算子で
条件文を1行化するために用いるようなものじゃないよ?
意図の見えないコードは当然読みづらくなるし保守が難しくなるので
そういう意味で誤った使い方をしてるなら避けた方がいい。

ただ、それとは別にCに慣れない人や不勉強な人で
三項演算子を見慣れなくて敬遠してるだけの人も多い。
そういう人が触ることも考慮してコーディング規約なんかで
禁止してる会社も多々あるが、個人的にはどうかと思う。

なお、パフォーマンス的には何の問題もない。
466nobodyさん:2006/10/30(月) 13:11:46 ID:???
>>464
は?BODYってファイル本体になるはずでしょ。
467461:2006/10/30(月) 13:31:25 ID:bBR787Fl
>>466
失礼しました。「ダウンロードページ」ではなくて、
「ファイルのダウンロード」です。
こういうの↓
http://players.music-eclub.com/download.php?sid=116561
468nobodyさん:2006/10/30(月) 13:39:36 ID:???
>>467
うん。だからこの場合、BODYはファイルそのものになるはずでしょ。
Content-Lengthが返ってないせいで取得できてないのか?
469nobodyさん:2006/10/30(月) 13:59:27 ID:rTiz0489
俺、三項演算子よく使うなぁ・・・
単に
if($_POST['checkbox']){
$checked = 'checked';
}else{
$checked = false;
}
ってだけなら、三項演算子で書いた方がすっきりするから
470nobodyさん:2006/10/30(月) 14:11:46 ID:mf7qX0dx
mb_send_mail()を使ってメールを送信するプログラムを作成しているのですが、
本文に指定した文字列の最後に改行が2つ付いてしまうのですが、
これを回避する方法ってありますか?
471nobodyさん:2006/10/30(月) 14:13:39 ID:???
俺は三項演算子が大嫌い。

見通しも悪いし、別にパフォーマンスに影響ないし。
「すっきりコンパクト=見通しが良い」ではないよ。
ソースってのはいわば設計図だからな。
シンプルすぎる設計図は、建物の詳細が見えにくい。
472nobodyさん:2006/10/30(月) 14:19:36 ID:???
三項演算子のほうが見やすいものには三項演算子を、ifのほうが見やすいものにはifを使えばいい。
頑なにどちらかに固執する必要性を感じない。

>>467
そのリンクだったら普通に取得できるみたいだけど。
$client = new HTTP_Client;
$client->get('http://players.music-eclub.com/download.php?sid=116561');
$response = $client->currentResponse();
473461:2006/10/30(月) 14:42:44 ID:bBR787Fl
>>468
なるほど、そうなるんですか。どうもです!
>>472
環境の違いでしょうか…。
$client = new HTTP_Client;
$client->get('http://players.music-eclub.com/download.php?sid=116561');
$response = $client->currentResponse();
でも、bodyは空なんですよね〜。
474nobodyさん:2006/10/30(月) 15:34:50 ID:???
>>473
俺のとこでは$response['body']に4MくらいのMP3のバイナリデータがばっちし入ってたけどな。
普通のHTMLとかは取得できるの?
475nobodyさん:2006/10/30(月) 15:58:00 ID:???
>>471
姉歯物件は三項演算子で出来ているんだよ
476nobodyさん:2006/10/30(月) 16:02:27 ID:???
おまえらの三項演算子雑感は聞いてねーんだよ
477461:2006/10/30(月) 16:23:10 ID:bBR787Fl
>>474
ありがとうございます!
自己解決しました。
HTTP_Clientをインストールしなおしたらいけました。
478nobodyさん:2006/10/30(月) 17:50:21 ID:???
PEARってコピーするだけじゃなくてインストール作業が要るの?
479nobodyさん:2006/10/30(月) 17:53:16 ID:???
include_pathが通ってるところにコピーするだけでOK
480nobodyさん:2006/10/30(月) 18:19:15 ID:???
PHPは、CR+LFで保存すべきですか?
481nobodyさん:2006/10/30(月) 18:26:40 ID:???
いいえ。
482nobodyさん:2006/10/30(月) 20:49:08 ID:???
>>479
依存関係のことまで考えたらpearコマンドが断然楽じゃね?
483nobodyさん:2006/10/30(月) 20:51:02 ID:bBR787Fl
HTTP_Clientを使ってファイルをアップロードする方法を教えてくれ。

$target_url = "ターゲットURL";
$client =& new HTTP_Client( $reqParams);
$updata=array( "filename.csv", "filename.csv");
$client->post( $login_url, '', '', $updata);

Warning: Missing argument 2 for addfile() in /インクルードパス/HTTP/Request.php on line 525


何卒お願い申し上げます・・・・・
484nobodyさん:2006/10/30(月) 21:01:53 ID:???
>>483
$updata = array(array("filename.csv", "filename.csv"));
じゃないだろうか
後1つ目の値はフォームのエレメント名
ソースチラ見で書いてるんで外してたらすまん
485nobodyさん:2006/10/30(月) 21:45:19 ID:???
アクセスログの分け方について質問です。
日別ログや週別ログ、月別ログとして管理画面から閲覧できるものがありますが、
そういうのはログファイルを日、週、月で別々に記録しているのでしょうか?
486nobody:2006/10/30(月) 21:51:21 ID:LQ50Lk3U
PHPファイルと同じディレクトリにある、テキストファイルを読み出して、
文章中に含まれるカタカナの語句を全て抜き出し、コンマ区切りで別の
テキストファイルに書き出すということをしたいのですが、ちょっと
手詰まりな状態です。どうか、ご教授願えませんか?

487nobodyさん:2006/10/30(月) 21:57:41 ID:???
Aサーバ(Linux)・Bサーバ(UNIX)という環境があります。
AサーバのPHPスクリプトでBサーバに接続し、
Bサーバ上でシェルコマンドを打って、その結果をAサーバに
返す事は可能でしょうか。

例えば、AサーバのPHPで、ls -laというコマンドを、
Bサーバで打って、その結果をAサーバのPHPスクリプトで
表示させたいと思っています。
どなたかご助言お願い致します<(_ _)>
488nobodyさん:2006/10/30(月) 22:02:12 ID:???
>>486
fopen
正規表現でカナの抜き出し→配列に保管
配列をファイルに書き込む

これでコードかいて動かなかったら質問しろ。
489nobodyさん:2006/10/30(月) 22:03:12 ID:???
>>485
そりゃ作成者に聞かないとわからんが
たぶんログを表示するときに生データから欲しいログだけ抽出してんじゃないの?

>>486
今どこまでできてんの?
490nobodyさん:2006/10/30(月) 22:03:26 ID:???
>>487
やればいいじゃん。試してできなかったら質問しろや基地外。
491nobodyさん:2006/10/30(月) 22:10:28 ID:???
>>485
日毎のログがあれば集計して週のデータも月のデータも出せるでしょ

>>486
何で手詰まりなのか

>>487
Bでシェルから結果を受け取るスクリプトを置いて
AからBのそのスクリプトのURLをリクエストして
レスポンスを取得するようにすればいい
492486:2006/10/30(月) 23:41:30 ID:LQ50Lk3U
>>488,489
いまのところ、

$text=fopen("bunsyou.txt","r");
$text2=fread($text,filesize("bunsyou.txt"));
//echo "$text2<br>\n";

for($i=1; i<=10; i++){
if(eregi("[ア-ン]",$text2));

}
fclose($text);
こんな感じです。正規表現にマッチした語句の抜き出し方が、よく
わからないのでして。。。お教えいただければ、ありがたいです。
493nobodyさん:2006/10/30(月) 23:44:13 ID:???
file関数使ったほうがいいんじゃないか。
494487:2006/10/30(月) 23:45:47 ID:???
>>491
レスありがとうございます<(_ _)>

> Bでシェルから結果を受け取るスクリプトを置いて

重ね重ね申し訳ありませんが、↑ってどういう風に
書けばいいのでしょうか。
関数名だけでもヒントを頂けないでしょうか。
495nobodyさん:2006/10/30(月) 23:46:18 ID:???
それにforなんて使うな。foreach使えと何度i(ry
496nobodyさん:2006/10/30(月) 23:47:57 ID:???

> Bでシェルから結果を受け取るスクリプトを置いて

B.phpの$text="hello"をA.phpにて受け取るスクリプトを書ければわかりやすいだろう。
497nobodyさん:2006/10/31(火) 00:06:18 ID:???
$text ="あいうえおアイウエオアさしすせそ";
echo "$text<br>";

if(mb_ereg("[ア-ン]+[アーン]+", $text,$str)) {
  echo $str;
}

あとは自分で調べろ、
498483:2006/10/31(火) 00:07:20 ID:lBCw+Epv
>>484
おおお!ありがとうございます!
明日試してみます。
PEARのドキュメントってどうもサンプルスクリプトがなくて
使い方がいまいち分からんと思っているのはオレだけか?
499nobodyさん:2006/10/31(火) 00:22:07 ID:???
>>494
http://jp.php.net/manual/ja/ref.exec.php
ここらへん

>>498
PEARはtestやexampleが入ってるからそれを見る、
あとはソース嫁が基本
500498:2006/10/31(火) 00:48:55 ID:lBCw+Epv
>>499
出直してきます。
501487:2006/10/31(火) 01:03:18 ID:???
>>496
ありがとうございます!試行錯誤頑張ります!
502nobodyさん:2006/10/31(火) 01:05:43 ID:6V2Mcmc8
カウンターなどによる二重カウントを防止する関数を作りたいのですが

if文でチェックする場合、
クライアントのIPを取得して、それを何と比較したらいいのでしょうか?
コードは自力で書きますので、どなたかヒントだけご教授お願いいたします。
503nobodyさん:2006/10/31(火) 01:12:04 ID:???
以前にアクセスのあったクライアントのIPと比較するに決まってるべさ
504nobodyさん:2006/10/31(火) 03:42:11 ID:???
505nobodyさん:2006/10/31(火) 06:34:12 ID:???
>>492
mb_eregの方がいいんじゃないかな?
506nobodyさん:2006/10/31(火) 06:39:45 ID:???
>>497に書いてあることも読まないバカはスルー
507nobodyさん:2006/10/31(火) 07:32:48 ID:???
>>497
それだと半角カナが先に来ないといけないし全角はア、ー、ンの3文字だけ
[ア-ンア-ン]にしても半角のァィゥェォとか全角のァヴヵヶとかがマッチしない

$text ="あいうえおアイウァィゥェォガギグパピプヴァヶさしすせそ";
echo "$text<br>";
mb_regex_encoding("sjis");
if(mb_ereg("[ヲ-゚ァ-ヶ]+", $text,$str)) {
var_dump($str);
}
508nobodyさん:2006/10/31(火) 07:42:01 ID:???
皆真面目なのに、ほのかにえっちなスレですね
509nobodyさん:2006/10/31(火) 08:04:06 ID:5uTR2Wor
$file = file("list.txt");
で配列に読み込んでprint_r($file)で確認すると、
インデックス0($file[0])には一行目が、インデックス1には2行目が・・(省略)格納されてしまいます。

自分がやりたいのは
$file[0][0]で一行目の一つ目のデータを見たいのですがうまくいきません。
どなたかご教授お願いいたします。

list.txtの中身
green,yellow,blue,red
black,red,white,orange
510nobodyさん:2006/10/31(火) 08:11:52 ID:???
>>509
カンマ区切りでデータを区切りたいならそう書かないと。
PHPは表計算ソフトじゃないんだからそんなの標準でやるわけないじゃん。

すでに読み込んだデータをカンマ区切りで分解する方法と、
読み込みをカンマ区切りで行う方法とがある。
・後から区切る方法
$file = file("list.txt");
$data = explode(",", rtrim($file[0]));
echo $data[0];
・読み込み時に区切る方法
$fp = fopen("lit.tst", "r");
$file = array();
while($line = fgetcsv($fp, 1024)) {
$file[] = $line;
}
fclose($fp);
echo $file[0][0];
511nobodyさん:2006/10/31(火) 08:16:31 ID:???
$fp = fopen("test.csv", "r");
$i = 0;
while (($line = fgetcsv($fp, 1000, ',')) !== FALSE) {
$lines[$i] = $line;
$i++;
}
fclose($fp);

$lines[0][0]みたいにね
時間ないから動作確認してないけど
んじゃ
512nobodyさん:2006/10/31(火) 08:35:31 ID:???
>>510-511
ありがとうございます。参考にさせて頂きます。
513486:2006/10/31(火) 09:34:28 ID:F9LjnucE
みなさまからのアドバイスを手がかりにとりあえず
やってみます。ありがとうございました。
514nobodyさん:2006/10/31(火) 09:56:56 ID:???
preg_match_all かな
515nobodyさん:2006/10/31(火) 10:08:09 ID:???
マルチ氏ね
516nobodyさん:2006/10/31(火) 10:22:39 ID:???
>>514
こっちの方が簡単そう。
$file = file_get_contents("ファイル名");
$file = mb_ereg_replace('[^ヲ-゚ァ-ヶ]+', ',', $file);
echo preg_replace('/^,|,$/', '', $file);
517nobodyさん:2006/10/31(火) 10:25:28 ID:kTefGQaT
表示されるHtmlの文字コードをEUC-JPで表示する場合、
文字化けさせないようにするためには
phpの中身(echoとかで表示される日本語)もEUC-JPで書かなければならないんですよね?
518nobodyさん:2006/10/31(火) 10:33:46 ID:???
ファイルを保存するときに文字コードをEUC-JPで保存したらいいよ。
519nobodyさん:2006/10/31(火) 10:44:13 ID:???
>>517
echoの前にmb_convert_encodingで文字コード変換をかけるとか、
出力データの定義だけEUCにしとくとかでも文字化けはしないけど
そんな手間をかけるくらいならEUCでソース書いた方が早いかもね。
個人的には出力データがソース中にあること自体どうかと思うけど。
520nobodyさん:2006/10/31(火) 11:07:31 ID:bXmcDE+8
教えてください。

1)フレーム内にあるページでSSLにするとセッション変数が引き継げないのはどうしてなのでしょう?

2)actionでSSLのURIを指定し、methodにPOSTを指定しても、
GETを指定した時のように、アドレスに引数が表示されるのはどうでしてなのでしょうか?

ご存知の方尾根逢いいたします。



521nobodyさん :2006/10/31(火) 11:32:07 ID:F9LjnucE
関数の"mb_internal_encoding" 内部文字エンコーディングの
設定/取得とありますが、内部文字エンコーディングって
なんでしょうか?
あと、
mb_internal_encoding("UTF-8");
mb_regex_encoding("UTF-8");
このように用いられている例があるのですが、どんな意味があるん
でしょうか?
522nobodyさん:2006/10/31(火) 11:43:17 ID:???
なんか「さすがくだ質!」ってくらいくだらない質問が投下されてるな
523nobodyさん:2006/10/31(火) 13:15:10 ID:???
ファイル中で定義されたクラスのみ
配列で出力してくれる関数はありませんか?

get_declared_classesを使ったら、
すごいたくさんクラスが出てきて困っています。
524483:2006/10/31(火) 13:20:33 ID:tsMd/rxy
>>483
ありがとう神。出来ました。
525nobodyさん:2006/10/31(火) 13:21:46 ID:KRBx0YqF
こういう事って出来ないんですかね…

class hoge{
  function foo($match){
    return "123";
  }
  function bar($match){
    return "abc";
  }
}

$before = array(
  "[a-z]+",
  "[0-9]+"
);

echo preg_replace_callback($before, array(array("hoge", "foo"), array("hoge, bar")), "abc123");
526nobodyさん:2006/10/31(火) 13:24:33 ID:???
>>523
この関数は、カレントのスクリプトで宣言されたクラスの名前の配列を 返します。
って書いてあるけど。
527nobodyさん:2006/10/31(火) 13:31:16 ID:???
すいません。PHPからLinuxのシステムへsambaユーザーの追加を
行いたいのですが、パスワード入力の部分で対話になってしまい
これをどの様に処理していいのか解らず、どなたかご存知の方
おりましたらアドバイス頂けると助かります。(>_<;
528nobodyさん:2006/10/31(火) 14:32:33 ID:???
>>527
expect が使えるのならそれを使う
php 側は expect コマンドを使ったシェルスクリプトを実行するようにする

expect が使えないのなら、あきらめたほうがいいかも
529nobodyさん:2006/10/31(火) 14:56:34 ID:???
>>528

有り難う御座います。調べててそこまでは辿り着きコンパイルし直して
有効にはなったんですが、peclでモジュールダウンロードしようとする
とlibexpectが無いと言われてしまい、libexpect探してるんですがどこ
に落ちてるか解らないス…orz

#PHPのインストール

version : php-4.4.4

./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-versioning \
--enable-mbstring \
--with-pgsql=/usr/local/pgsql \
--enable-zend-multibyte \
--with-expect=./ext

#pecl install expect-0.2.2

checking for expect support... yes, shared
configure: error: expect extension requires libexpect version >= 5.43.0
ERROR: `/tmp/tmpUKzwZQ/expect-0.2.2/configure' failed
530527:2006/10/31(火) 14:59:00 ID:???
>>528
>expect が使えないのなら、あきらめたほうがいいかも

ふぉッこれ入らなかったら厳しいんですね…(・ω・;…
531nobodyさん:2006/10/31(火) 15:17:53 ID:???
やったことないんでダメかもしらんけど、
proc_open()ってのはそういうケースじゃ使えないの?
532nobodyさん:2006/10/31(火) 15:35:48 ID:???
>>529
メッセージから察するにlibexpectがないんじゃなくて
libexpectのバージョンが古いんじゃないかな
aptとかrpmでexpectをアップグレードするとか
533nobodyさん:2006/10/31(火) 15:47:57 ID:???
^M(Ctrl+V, Ctrl+M)
を str_replace で置換(削除)したいんですが、
^Mをどうやって指定すればいいでしょうか?
534527:2006/10/31(火) 15:52:36 ID:???
皆さん有り難う御座います。

>>531

ザッとマニュアル見てみたんですが、ちょっと後ほど試してみます。

>>532

ソースからインストールする癖がついててすっかりそうゆう便利な
物の存在を忘れていました。早速実行してみましたが、やっぱ駄目
ポでした。。。

yum install-expect
expect-5.42.1-1.i386.rpm 100% |=========================| 13 kb

アップデートのものが古いようです。orz...

>libexpect version >= 5.43.0

はぁ…よく解らない…

とりあえず引き続き調べて何かわかったら報告しまつ。(・ω・;

ちなみにOSはCentOS4.4です。
535nobodyさん:2006/10/31(火) 15:55:10 ID:???
>>533
"\x0D"
536nobodyさん:2006/10/31(火) 16:40:10 ID:???
>>527
>>528
の方法は bash とかのシェルスクリプトを使って
それを shell_exec() で実行するという意味だと思うぞ

proc_open()でいけそうな気もする
537nobodyさん:2006/10/31(火) 17:13:10 ID:???
>>534
expectの5.43.0が結構新しいから5.43.0用のrpmがまだstableじゃないんだろう
unstableな最新のrpm探して取ってくるかソースから自前でexpect入れるか
そういう作業に慣れてないなら
proc_open()でできるかどうかから調べた方がいいかも
538nobodyさん:2006/10/31(火) 18:52:52 ID:o5P7BR6p
>>518-519
どうもありがとうございます
539nobodyさん:2006/10/31(火) 21:20:22 ID:???
アップロードしたmp3ファイルのIDタグの内容を取得する方法ってありますか?
540nobodyさん:2006/10/31(火) 21:44:23 ID:???
541nobodyさん:2006/10/31(火) 21:57:29 ID:aqfpYPvu
アクセスログを記録したいのですが、ログに記録する時刻は秒単位まで記録するのが妥当でしょうか?
秒まで記録することは精度に信頼できるものか疑問でございます。
どなたかアドバイスお願いいたします。
542nobodyさん:2006/10/31(火) 22:06:28 ID:???
>>541
何が言いたいのかよく分からん。
普通ずれないと思うけど、仮に2〜3秒ずれたとしてもそれで何か問題が?
543nobodyさん:2006/10/31(火) 22:08:01 ID:???
精度に信頼っていうのが良くわからんけど
別に記録するだけ記録してもいいんじゃない?
データベースで時間管理するなら秒まで記録するはず
544541:2006/10/31(火) 22:19:53 ID:???
一日のログ数によってお金がかわってしまうので精度をきちんとしたいと思いました。
UNIXタイムで記録するのとY/m/d H:i;s形式どちらが妥当でしょうか?
二つとも記録するのは無駄ですよね?
545nobodyさん:2006/10/31(火) 22:27:26 ID:???
ようわからんが、Unix Time Stampでもっとけば、Y/m/d H:i;s形式に変換できるでしょ
546nobodyさん:2006/10/31(火) 22:29:06 ID:???
>>544
どっちでやっても相互に変換できるし・・やっぱり何がしたいのか(ry

まぁ、鯖の時計はちゃんと合わせとけよ
547nobodyさん:2006/10/31(火) 22:37:34 ID:???
ログファイルの容量が問題になるほど切迫しているわけでもないなら
両方やっとけばいいがな(´・ω・`)
548nobodyさん:2006/10/31(火) 22:41:36 ID:???
>>541>>544
「妥当」というのは目的に合致しているかで判断される。
キミの質問にはその「目的」が書かれていないので判断のしようがない。
549nobodyさん:2006/10/31(火) 22:54:25 ID:Ch7IBLha
テーブル1
ボタンID
1,2,3,4,5,6,7,8,9,10

テーブル2
使用許可されたボタンID
1,2,3,4,5,6,7

テーブル3
user  ボタンID
1    1
1    2
1    3
1    9
2    1
2    2
3    1

この三つのテーブルから、テーブル1と2を比較し、1〜7までグループ的に使用許可
その後、ユーザーのレコードから使用を認めるようなものが作りたいのです。(ユーザー1なら、ボタン1、2、3。ユーザー3ならボタン1のみなど)

$search = strstr ($table1, $buttonID);

一生懸命考えてこんなんでましたが、もっとスマートに出来ないでしょうか?
MySQLでも上手い事出来る気がしないでもないのです…
どなたかエロイ人へるぷみ〜
550nobodyさん:2006/10/31(火) 22:59:00 ID:???
テーブルってDB?
551541:2006/10/31(火) 22:59:30 ID:???
失礼いたしました、最初にちゃんと説明するべきですね。
あるページのアクセスログを一日単位で集計して、
そのアクセス数のよって企業からお金を頂く仕組みでございます。
ですので、23:59から0:00の間がきっちりやりたいと思っております。
アクセス数を日別に集計したファイルと、アクセスログを提出するのですが、
秒までいれるべきか迷ってしまいました。

主な目的は、一日のアクセス数を集計することと、
1時間単位のアクセス数を調べるのが目的です。

552nobodyさん:2006/10/31(火) 23:01:03 ID:???
>>549
宿題ですか
553549:2006/10/31(火) 23:02:08 ID:???
一応、課題です。いけませんか?
554nobodyさん:2006/10/31(火) 23:02:55 ID:???
秒までもってればいいじゃん。何を迷う?何か制限でもあるのか?
それよりも、サーバの時間を正確に保持するほうが大切じゃないの
555nobodyさん:2006/10/31(火) 23:16:42 ID:???
>>553
普通、宿題というものは自力でやるもんだ(´・ω・)

>>551
何がそんなに問題なのかが分からない。
時刻を保存した場合、ログの保存にもたついたら31日のログファイルに
30日23時59分のデータが混じる事はあるかも知れんが、
曜日的なバイアスを考慮しないなら期待値は
30日のログファイルに29日のデータが混じるのとそう変わらん。
つまり厳密ではないかも知れないがそこまで深刻な違いも出ない。
1〜2件アクセス数が違ったくらいで動く金額にそんなに大きな違いが?
556nobodyさん:2006/10/31(火) 23:18:11 ID:???
>>553
宿題は悩みながら自分でやるから意味がある。
他人に投げた時点でお前の道は絶たれることになる。
557nobodyさん:2006/10/31(火) 23:21:30 ID:???
>>551
お前そんなレベルで金をとったら詐欺に近いよ。
っていうかそもそもアクセスログの件数で金額が決まる仕事って、なんだよそれ。ありえない。
558541:2006/10/31(火) 23:23:03 ID:???
シビアなんです、上司が。

この部分のコードを参照していただきたいのですが、
1行目の処理が23:59:59で
3行目の処理が0:00の場合、
日付、データは23:59:59として書き込まれるのでしょうか?
それとも0:00として書き込まれるのでしょうか?

$string =.date("Y/m/d,G:i:s")
flock($file,LOCK_EX);
fputs($file,$string);
559nobodyさん:2006/10/31(火) 23:29:58 ID:???
$stringは23:59:59なんだから当然23:59:59と書き込まれる。
ただし$fileが23:59:59に正しく対応したものであるかどうかは別の問題だな。
560nobodyさん:2006/10/31(火) 23:30:11 ID:???
>>541
Webでのアクセスの場合、通信経路によって2秒や3秒ずれることはあるわけで、
結局、取引先に通知すべきなのはログとしてカウントされた時刻でしかない。
どこで線引きをするかを指定しされているわけでなく、どうしても気になるなら先方に聞け。

>>558
前者。
561nobodyさん:2006/10/31(火) 23:30:27 ID:???
$stringに格納した値が、ある時は23:59:59またある時は0:00
またある時は片目の運転手またある時は品好きのキザな紳士になってたら困るっちゅーねん
562nobodyさん:2006/10/31(火) 23:31:54 ID:???
シビアてログに書き込んだ瞬間の時間の正確さなんて後からどうやって判断するんだ
サーバの時計あわせだけ出来てれば問題なしとするしかないだろ

そもそも最初に秒単位まで記録するかどうかを質問してるけど、分単位で記録しても仕様として通るような上司がシビアとかアフォか
適当に大丈夫ですって言いくるめとけばいいだろ
563560:2006/10/31(火) 23:34:50 ID:???
ちなみに、apacheがアクセスがあったとして扱う時刻は
$_SERVER["REQUEST_TIME"]
に格納されている。
564541:2006/10/31(火) 23:40:17 ID:???
一応、テストコード書いて試してみました。
当方の環境では時間差でdate()の中身は変わりませんでした。

$time =date("Y/m/d G:i:s");
echo $time;

for($i=0;$i<10000000000;$i++){
echo "a";
}

echo "<hr>";
echo $time;
565nobodyさん:2006/10/31(火) 23:42:51 ID:Ch7IBLha
>553
うはw なりすましかよw
まぁ、array_diff( )を発見したので、これで出来るかなぁ。
ちなみに宿題ちゃいますw
知り合いの会社用ですお
566541:2006/10/31(火) 23:44:43 ID:???
>>563
php5.1から使えるのですね、勉強になりました。
現在php4.4.3をしておりますので、
近いうち5.1にバージョンアップする予定なので利用させていただきます。
567nobodyさん:2006/10/31(火) 23:47:24 ID:???
>>564
×当方の環境では時間差でdate()の中身は変わりませんでした。
○当方の環境では時間差で$timeの中身は変わりませんでした。

あと、そのコードだとたとえ最適化が働くようなコンパイラであったとしても、
2行目で$timeを参照しているので、少なくとも2行目で$timeの中身は(通常なら)確定する。
もし、そうでなければ$timeの値が操作なしで変わってしまうことになる。
不確定性理論みたいなもんだ。
568nobodyさん:2006/10/31(火) 23:53:18 ID:???
>>541
一日ズレたって、次の日のカウントに入るだけじゃないの?そんな深刻な問題かね?
一時間ごとにも集計するなら、その一時間ごとにもズレが出るってことだよねw
569nobodyさん:2006/10/31(火) 23:56:51 ID:???
ていうかさ、わざわざログファイルを分けないで単一のファイルなりに保存しておいて
日付が変わった後で該当するデータをまとめて抜き出せばずれないよね(´・ω・)

手間がかかる割に無意味だけど。
570nobodyさん:2006/10/31(火) 23:57:56 ID:???
秒単位の記録というよりは時計の精度の話じゃん
571nobodyさん:2006/10/31(火) 23:58:55 ID:???
本屋のPHP参考書みてもfsockopenに関する説明が
ほとんど無いのはなんで?
572nobodyさん:2006/11/01(水) 00:02:25 ID:???
>>541
時計の精度とか、どの時点でアクセスされたと見なすかってのはクライアントと話し合って決める内容だろ
まぁ、マイクロ秒単位の誤差まで問題にされたら困る

>>571
ぷろぐらむ組むのは初めてです。って人に教えるには少々メンドイしページ数が増えちゃうからじゃね?
使うにしてもPHPマニュアルよりRFCの方が役立つしねぇ
573nobodyさん:2006/11/01(水) 00:08:59 ID:???
>>571
PHPがWeb用途に重きを置いていて使う人もそれを求めてるから
直接ソケットいじくらず用途に応じたラップしてあるライブラリ使えってこった
574nobodyさん:2006/11/01(水) 00:47:13 ID:???
>>566
どっちにしろ、通常はプログラム先頭でdate()の値を変数に取得しとけば問題にならない。
それすら分からないド素人レベルで金取るなよ詐欺師。
575nobodyさん:2006/11/01(水) 04:58:04 ID:???
>>571
ソケット通信プログラミングの専門書はC用の既存の本が
いっぱいあって関数は互換があるからそれ読めばいいし、
逆にそれ読まずに使いこなすのはかなり無謀だし、
PHPのマニュアルに混ぜると半分がソケットの話になるか
下手するとそっちの方が分量がでかくなるんで無理がある。
576571:2006/11/01(水) 08:04:15 ID:???
>>575
おいおい、おれは素人じゃねえよ。
そういう本がないから聞いただけ。
577nobodyさん:2006/11/01(水) 08:09:51 ID:???
サバが国内にあるとして、近いところでも20msぐらいはかかるしな。
578nobodyさん:2006/11/01(水) 08:44:37 ID:???
> ちなみに、apacheがアクセスがあったとして扱う時刻は
> $_SERVER["REQUEST_TIME"]

「アクセス」ってのが微妙だが、
リクエストがあった時間と客がレスポンスを見る時間は違うかもしれないと。

確かここら辺って、いろいろ複雑だったようなきがする。
Apacheがリクエストを受け取る時間とレスポンスを吐き出しはじめた時間、
レスポンスを送り終わった時間とか。どっかで読んだなあこの話。

> シビアなんです、上司が。

あなたが定義すればいいんですよね。
HTTPリクエストがあった時間を基準に課金することにするって。
579nobodyさん:2006/11/01(水) 09:02:23 ID:???
> おいおい、おれは素人じゃねえよ。
プ
580nobodyさん:2006/11/01(水) 09:25:57 ID:???
    ,.、,、,..,、、.,、,、、..,_       /i
   ;'`;、、:、. >>579: :,.: ::`゙:.:゙:`''':,'.´ -‐i
   '、;: ...: ,:. :.、.∩.. .:: _;.;;.∩‐'゙  ̄  ̄
    `"゙' ''`゙ //゙`´´   | |
        //Λ_Λ  | |
        | |( ´Д`)// <うるせぇ、エビフライぶつけんぞ
        \      |
          |   /
         /   /
     __  |   |  __
     \   ̄ ̄ ̄ ̄ ̄   \
     ||\            \
     ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
581nobodyさん :2006/11/01(水) 10:05:10 ID:???
このようにして、  mb_ereg("[ァ-ヴー]+", $str, $match);
正規表現で文字を抜き出して、配列に格納して表示させたら、

Array ( [0] => タイトル [1] => ツール [2] => カメラ [3] => カメラ
[4] => カメラ [5] => カメラ [6] => データベース [7] => ユーザー)

といった感じで、ダブっているものも検出してしまいます。
これをダブりがないように表示するには、どうすればよいでしょうか?


582nobodyさん:2006/11/01(水) 10:42:42 ID:???
>>581
つarray_unique()
583nobodyさん:2006/11/01(水) 10:54:53 ID:???
携帯対応CMSっていいのは?
584nobodyさん :2006/11/01(水) 11:01:34 ID:???
>>582
ありがとうございました。ダブっているのをもう1回正規表現で抜き
出して、mb_ereg_replaceで置き換えるのかなぁと思って、ちょっと
困っていたところですが、実は配列の初歩的なことで解決できたん
ですね。マヌケでした。
585nobodyさん:2006/11/01(水) 11:35:24 ID:egQfb3lu
まぬある嫁よ
586nobodyさん:2006/11/01(水) 11:40:51 ID:???
>>581
メアド欄に空白入れてるのは「sageはしないがIDも出したくない」という意思表示?
587581:2006/11/01(水) 11:49:18 ID:???
えっ?なんのことでしょう?
メアド欄に空白入るとIDが表示されなくなるんですか
588nobodyさん:2006/11/01(水) 12:08:33 ID:???
こういうやつってほんと器が小さくみえる
589581:2006/11/01(水) 12:17:17 ID:???
>>588
さっきまではマジで知らなかったんですよ。別にシラをきっていた
わけでなくて。
590nobodyさん:2006/11/01(水) 12:23:36 ID:???
おまえが言い訳するほど世間では器は小さくなっていくものだよ。
おまえ出世しないタイプだなw
591nobodyさん:2006/11/01(水) 12:38:00 ID:???
PHP5.0.4でmmap?mm拡張モジュール?の2MBがダウンロードできないバグで困っています。
Windowsサーバなのですが、パッチはありませんか?
592nobodyさん:2006/11/01(水) 12:43:18 ID:???
回答者はIDをだしてください。
回答者はIDをだしてください。
回答者はIDをだしてください。
回答者はIDをだしてください。
回答者はIDをだしてください。
回答者はIDをだしてください。
回答者はIDをだしてください。
回答者はIDをだしてください。
593nobodyさん:2006/11/01(水) 12:43:58 ID:???
回答者?
594581:2006/11/01(水) 12:49:13 ID:???
>>590
日本語があまり通じないようなので、海外に移住されてはいかがですか?
595nobodyさん:2006/11/01(水) 12:54:37 ID:???
>>581
おまえプライド高いだろ。
596nobodyさん:2006/11/01(水) 12:58:28 ID:???
偽者だろ。違うならただの池沼なんだから放っとけよ。
597581:2006/11/01(水) 13:00:26 ID:???
>>59a
氏ね
598nobodyさん:2006/11/01(水) 13:08:27 ID:???
いきなり氏ね言われた>>59カワイソス(´・ω・`)
599nobodyさん:2006/11/01(水) 13:12:07 ID:???
>>591さんIDだしてください。
600nobodyさん:2006/11/01(水) 13:12:24 ID:???
>>594
海外に住んでますが何か?
601581:2006/11/01(水) 13:22:39 ID:???
>>597
なりすましはやめましょう。
>>600
なるほど。母国語を忘れつつあるんですな。
602nobodyさん:2006/11/01(水) 14:13:23 ID:???
不毛なやりとりは他でどうぞ
603nobodyさん:2006/11/01(水) 14:35:27 ID:???
>>601
いや、堪能だけど。
604nobodyさん:2006/11/01(水) 14:41:25 ID:???
投票スクリプトを製作中なんですが、本当に下らない質問ですいませんが教えてください。

value値を1や2と言った数値にしてます。
で、
if (is_numeric($_POST['aa'])) {
  if ($_POST['aa'] == 1) {
    echo "1です。";
  } else if ($_POST['aa'] == 2) {
    echo "2です。";
  }
} else {
  echo "数値以外はダメ。";
}
とするか、
if ($_POST['aa'] == 1) {
  echo "1です。";
} else if ($_POST['aa'] == 2) {
  echo "2です。";
} else {
  echo "数値以外はダメ。";
}
とするか、どちらがいいでしょうか?同じですかね?
605nobodyさん:2006/11/01(水) 15:11:09 ID:???
>>604
後者の場合、"数値以外はダメ。"と言うにはifがたくさん必要じゃね?
606nobodyさん:2006/11/01(水) 15:13:28 ID:???
>>604
後者で、最後を「1か2以外はダメよ」にすれば?
つか自分の見やすい方にすれ。
607nobodyさん:2006/11/01(水) 15:22:36 ID:???
switch使えとは誰も言わないのね
608nobodyさん:2006/11/01(水) 15:42:43 ID:???
>>607
どちらが?と聞いてるからね
609nobodyさん:2006/11/01(水) 15:56:40 ID:???
多少の拡張性を意識するなら、
$data = array(1 => '1です。', 2 => '2です。');
みたいな配列用意しとけば、許容される数値かどうかの判定はif一発で済むし、後々DB導入したとしても変更が楽かも。
610nobodyさん:2006/11/01(水) 16:09:45 ID:???
質問です。Shift_JISで
echo "表";
と表示させようとするとエラーが出てしまいます。
stripslashesを使用しても無理でした。
どのようにしたらちゃんと表示されるのでしょうか?
611nobodyさん:2006/11/01(水) 16:11:27 ID:???
>>610
Shift_JISをやめるのが一番の近道。
612610:2006/11/01(水) 16:17:50 ID:???
<?xml version="1.0" encoding="EUC-JP"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
<meta http-equiv="Content-Style-Type" content="text/css">
<title>あいうえお</title>
</head>
<body>
あいうえお
</body>
</html>

EUC-JPを使おうと思い、このように記述したのですがなぜかIE6で文字化けしてしまいます。
Shift_JISなら大丈夫でした。カタカナで記述しても大丈夫みたいです。
文字化け→「あa・ム・」
なんでだろう。。。。
613nobodyさん:2006/11/01(水) 16:30:37 ID:???
>>610
echo "\表";
614nobodyさん:2006/11/01(水) 16:32:06 ID:???
>>612
内部エンコーディングがSJISというオチかな?
615nobodyさん:2006/11/01(水) 16:32:10 ID:???
>>612
ところでそれのどこがPHPと関係あるんだ?
616612:2006/11/01(水) 16:32:15 ID:???
ブラウザでページを移動するときにその前のページがEUC-JP以外だと文字化けしてしまうようです。
ためしにEUC-JPのページをお気に入りに入れてブラウザの起動と同時に表示させたら、大丈夫でした。

やはりShift_JISを使うしかないのか。。。
617nobodyさん:2006/11/01(水) 16:43:54 ID:???
>>610
ソースをSJISで書くにはマルチバイト対応でコンパイルしたPHPで
mbstring.script_encodingをSJISに設定しないといかんのでは。
>>616
ブラウザの文字エンコード設定は自動判別になってる状態?
PHPのmbstring.output_encoding辺りはどういう設定になってるの?
618612:2006/11/01(水) 16:52:51 ID:???
>>617
お騒がせしました。ブラウザの文字コードは大丈夫でした。
html(php)ファイルを保存するときに保存形式がEUC-JPでなければいけない所がSJISになっていました。
ちゃんとEUC-JPで表示することができました。
619nobodyさん:2006/11/01(水) 17:01:19 ID:nyPZj6d6
サーバAとサーバBがあり、両方ともPHPを動かせる環境にあります。
ファイルをアップロードするフォームを含むHTMLファイルがサーバAにあり、
それを使ってアップロードしたファイルをサーバBに保存することは可能ですか?
620nobodyさん:2006/11/01(水) 17:04:22 ID:???
>>619
サーバAのHTMLのPOST先をサーバBにしとくだけじゃん
621nobodyさん:2006/11/01(水) 17:05:28 ID:???
>>619
サーバーAからサーバーBにPOSTして処理すりゃいんでないの。やってから質問すれよ。
622621:2006/11/01(水) 17:06:47 ID:???
被ったOTZ
623619:2006/11/01(水) 17:16:59 ID:???
>>620-621
実はサーバAに対しての処理もあって、ファイルのアップロード先だけがサーバBなんです。
624nobodyさん:2006/11/01(水) 17:19:47 ID:???
>>623
もうちっと具体的に必要なもの並べてくれんと
うまい分離の方法も思いつかん
625nobodyさん:2006/11/01(水) 17:25:11 ID:???
<input type="image">の場合、
name属性で指定した文字はPOST送信されないんでしょうか?
(_xと_yの座標は渡されますが)
626nobodyさん:2006/11/01(水) 17:33:16 ID:???
>>625
そうです。
627nobodyさん:2006/11/01(水) 17:37:17 ID:uM8NHcM0
別サーバーのファイルのサイズを調べたいんですが、
filesize("http://〜〜");だとエラーが返されます。
どうすればよいのでしょうか。
628nobodyさん:2006/11/01(水) 18:09:03 ID:???
>>626
なんでですか?
629619:2006/11/01(水) 18:20:37 ID:nyPZj6d6
文字列とファイル数個をPOSTで送って
サーバAで文字列をMysqlのテーブルに書き込み、
サーバBにファイルを保存、
したいんです。
630nobodyさん:2006/11/01(水) 18:38:33 ID:???
>>627
別サーバ側にfilesize返すスクリプトを書いてHTTP_Requestで叩け

>>628
そういう仕様だよWWWの

>>629
サーバAのスクリプト内からサーバBへHTTP_Requestで叩いてアップロードしろ
631nobodyさん:2006/11/01(水) 18:40:08 ID:uM8NHcM0
>>630
こちら側から別サーバーは管理できないんです。

とりあえずfile_get_contentとstrlenの組み合わせで現在対処しましたが、
いちいち内容をダウンロードせずに、
サイズだけ図れる方法はないんでしょうか?
632604:2006/11/01(水) 18:44:19 ID:???
>>605-609
ありがとうございます。
1か2だけなんでifでもswitchでもいいんですが、DBを導入するほどのものでもないです。
ただ、>>609のような配列を使ってやるってのは「ああ、成る程」って感じです。
自分にはない考え方って面白いand勉強になりますね。
633nobodyさん:2006/11/01(水) 18:55:17 ID:???
>>631
レスポンスヘッダでファイルサイズを教えてくれる場合もある。
634nobodyさん:2006/11/01(水) 19:01:08 ID:???
>>631
last-modified付でリクエストしてキャッシュしとけ
635nobodyさん:2006/11/01(水) 22:49:29 ID:Z3WwdpXH
たぶんlinuxでもwindowsでもそうだと思うんですが、
ディレクトリの更新時刻は、子ファイルの更新時刻に同期するけど、
それより下の階層のファイルの影響は受けないようですね。
対象ディレクトリの配下のすべてのファイルから最終更新時刻を一発で
取得するコマンドとかないでしょうか。
636nobodyさん:2006/11/01(水) 23:12:32 ID:???
PHPで、接続中のクライアントのWindowsログオンユーザ名を
取得する方法はありますか?
社内LAN内にWebサーバがある環境です。
637nobodyさん:2006/11/01(水) 23:46:01 ID:???
>>636
ID出してください
638nobodyさん:2006/11/01(水) 23:52:59 ID:osJKunqT
>>637
636です。
639nobodyさん:2006/11/02(木) 00:03:25 ID:???
>>636
Windowsのログインユーザ名は、httpでつないだサーバでは無理。
640636:2006/11/02(木) 00:14:41 ID:PZcPsbvT
だめですか。。。
ありがとうございました。
641627:2006/11/02(木) 00:50:52 ID:+NTnctYa
>>633
>>634
わかりました、さっそくためしてみます。ありがとうございました。
642nobodyさん:2006/11/02(木) 01:39:23 ID:RYi0SuH1
すっげぇ下らない質問なんですが、XMLをスパッと多次元配列に格納してくれるような便利なライブラリってありますか?
643nobodyさん:2006/11/02(木) 01:44:52 ID:???
そんくらいなら探すより自分で作ったほうがいいよ。
644nobodyさん:2006/11/02(木) 01:51:18 ID:RYi0SuH1
>>643
早速の回答ありがとうございます。そうっすか。ありがちなんでどっかに落ちてるかと思ったので。
ちなみに、Aタグ〜/Aタグを取得しようとしたら、正規表現の後方参照で取得するのが一般的な手法ですかね?
XMLパーサーでちまちまやりますか?
645nobodyさん:2006/11/02(木) 02:33:52 ID:???
>>642
PEAR::XML_Unserializer
これでいいんじゃね?
646nobodyさん:2006/11/02(木) 04:39:55 ID:ObNxAJOw
phpで、以下のフォームを実行しようとすると、アドレスバーのアドレスには
末尾にhenko.phpが追加される(元のアドレスがhttp://localhost/ex/だとすると
http://localhost/ex/henko.php)のですが、画面に表示される内容は
http://localhost/ex/という状態が起きています
<form method="POST" action="./henko.php">
<input type="hidden" name="ki" value="<?php $row['ki']; ?>" >
<input type="submit" value="変更" >
</form>
どのようにしたらhttp://localhost/henko.phpにジャンプするようになるでしょうか
647nobodyさん:2006/11/02(木) 05:04:38 ID:???
>>646
PHP以前にHTMLのリンクレベルの質問だと思うけど
action="./henko.php"をaction="/henko.php"にすればいいかと。
648nobodyさん:2006/11/02(木) 05:32:27 ID:???
>>647
両者ともおなじとこ見てるよ
649nobodyさん:2006/11/02(木) 05:37:37 ID:???
>>648
どういうこと??
650nobodyさん:2006/11/02(木) 05:45:38 ID:???
>>649
ヒント

./ ←ドットが1個
651nobodyさん:2006/11/02(木) 06:03:50 ID:???
>>647
>PHP以前にHTMLのリンクレベルの質問だと思うけど
>PHP以前にHTMLのリンクレベルの質問だと思うけど
>PHP以前にHTMLのリンクレベルの質問だと思うけど
>PHP以前にHTMLのリンクレベルの質問だと思うけど
>PHP以前にHTMLのリンクレベルの質問だと思うけど
652nobodyさん:2006/11/02(木) 06:31:44 ID:???
荒れるだけだから、答えてやりましょうよ。
../henko.php
わかったらHTMLの勉強からやり直すんだな。
653nobodyさん:2006/11/02(木) 06:32:33 ID:???
リンクレベルってなんですか?どういう定義なのか教えてください。
654nobodyさん:2006/11/02(木) 07:18:26 ID:???
>>648-653
おまいら・・・
> action="./henko.php"をaction="/henko.php"にすればいいかと。
は前者が ./ (ドット1個) で後者は / (スラッシュのみ。つまりルート参照)ですよ。
655nobodyさん:2006/11/02(木) 07:18:32 ID:???
>>653
action="/henko.php" document rootからの絶対パス http://example.com/henko.phpになる
action="./henko.php" カレントディレクトリ
action="./henko.php" カレントディレクトリの1個↑のディレクトリ
656nobodyさん:2006/11/02(木) 07:19:49 ID:???
action="../henko.php" カレントディレクトリの1個↑のディレクトリ
ドットを付け忘れた
657647:2006/11/02(木) 07:23:42 ID:???
>>655
すまん。「リンクレベル」ってそんな真面目な階層とかの意味じゃなくて
「HTMLのリンクを書くことと同レベルの質問」の意味だったんだ。
658nobodyさん:2006/11/02(木) 07:39:23 ID:???
>>657
略しすぎw
659nobodyさん:2006/11/02(木) 08:13:16 ID:???
クソスレの立てられるPHPコードの書き方をおしえてください。
660nobodyさん:2006/11/02(木) 08:16:13 ID:???
>>659
$ita = new thread;
echo $ita->makeThread("クソスレ");
661nobodyさん:2006/11/02(木) 09:00:21 ID:???
new ita じゃないか?
662nobodyさん:2006/11/02(木) 09:14:29 ID:???
(笑い)
663<>てすと>:2006/11/02(木) 09:50:21 ID:v/7GXWbN
test
664619:2006/11/02(木) 09:57:30 ID:D0jPHdjx
>630
そうか、HTTP_Requestを使うという方法があるんですね。
試してみます。
665nobodyさん:2006/11/02(木) 10:06:59 ID:???
>>664
内容的にはHTTP_Requestを使うものでもないとおもうけどね、俺は。
666nobodyさん:2006/11/02(木) 10:30:51 ID:???
ヘッダ取得だけで十分だよな。
667nobodyさん:2006/11/02(木) 10:35:29 ID:???
cookieって即時呼び出し、
つまり、setcookieしたその直後に echo $_COOKIE['var']
で呼び出せないですよね?
これはなぜなんでしょうか。

これが非常に不便なんですが、良い方法ないでしょうか?
今まであれもこれもSESSIONに入れてたんですが、
COOKIE値とSESSION値を明確に線引きしようと
cokkieに使い変えたらこの問題が出てしまい、困っています。
668nobodyさん:2006/11/02(木) 10:51:30 ID:???
>>667
sleep、クッキーセットする場所の工夫
669667:2006/11/02(木) 10:59:10 ID:???
>>668
詳しくきぼんぬ
670nobodyさん:2006/11/02(木) 11:09:36 ID:???
phpマニュアルすぐ落ちるなあ
671667:2006/11/02(木) 11:23:14 ID:???
似たような話になるかもしれんのですが、
クラス内でsetcookieして、
別のクラスで$_COOKIEしても
上手く取得できません。
ほわぃ?
672nobodyさん:2006/11/02(木) 11:36:51 ID:???
>>667
$_COOKIEはクライアントからのリクエストヘッダ。
setcookieはサーバからのレスポンスヘッダ(に書けという命令)。
全く別ものだから。
673nobodyさん:2006/11/02(木) 11:45:36 ID:???
>>672
667はそうかいてあるよ
674nobodyさん:2006/11/02(木) 11:56:02 ID:???
PHPマニュアルのミラーなんて無数にあるし、ぐぐればおk
http://jp.php.net/manual/ja/
http://php.benscom.com/manual/ja/
675nobodyさん:2006/11/02(木) 12:17:53 ID:???
>>667
$_COOKIEに入るクッキーの取得はプログラムの実行前で、
setcookie()で行うクッキーのセットはプログラムの実行後という
順番の逆転があるから。($_COOKIEとsetcookieは連動しない)
setcookie()直後に$_COOKIEで扱いたいのであれば
自分で $_COOKIE['var'] = 'foo'; ってセットしちゃうしかないと思う。
ただしそれをやると、実際にはブラウザが保存してくれてないのに
プログラムで値を使ってしまってトラブルになってしまう場合がある。
(ブラウザはクッキー有効の設定でも、部分的に却下することができる)

セッションはクッキーと違って「一部を相手が受け取らなかった」という
心配をする必要がないので、$_SESSIONを使ってシームレスに扱える。
676646:2006/11/02(木) 12:28:33 ID:ObNxAJOw
皆様、回答ありがとうございます。回答をいただいておいてなんですが、
質問間違えていて申し訳ないです、
正しくは、最後の1文が、
「どのようにしたらhttp://localhost/ex/henko.phpにジャンプするようになるでしょうか?」
です。すいません。
677nobodyさん:2006/11/02(木) 12:33:19 ID:???
>>676
てねえうぜーんだよ
ttp://www.tohoho-web.com/wwwbeg5.htm
678646:2006/11/02(木) 12:45:36 ID:ObNxAJOw
ありがとうございます。
679nobodyさん:2006/11/02(木) 13:53:44 ID:???
>>667
おいしいクッキーの作り方と食べ方
1. クライアントからのリクエスト
http header の cookie: でクッキー送信
2. Apache が環境変数 HTTP_COOKIE に代入
3. PHPが$_COOKIEへ代入
cookieがセットされてなければ当然空
4. PHPでsetcookie();
http header の Set-cookie:として送られるのでスクリプト終了するまで送られない

今ここ 当然$_COOKIEは空

5. PHPの実行が終了
6. ApacheがSet-cookieヘッダで送信
7. クライアントのブラウザが処理
680nobodyさん:2006/11/02(木) 14:51:27 ID:???
配列で
ARRAY {
 [0] = NULL
 [1] = NULL
 [2] = NULL
 [3] = hoge
}
の時、[3]のhoge以外は取り除くもしくは[3]のみ別配列に入れる事は可能でしょうか?
この場合、hogeは[3]にあるとは限らないので([1]かもしれないし、[10]かもしれません)
やり方に困っております
681nobodyさん:2006/11/02(木) 14:56:32 ID:???
>>680
$newarray = preg_grep('/./', $array);
ただしこのやり方だと '' と NULL は区別できないけど。
682nobodyさん:2006/11/02(木) 14:58:11 ID:???
foreachの中にforeachってできないんですか??
やってみたのですがうまく動きません…
683nobodyさん:2006/11/02(木) 15:04:36 ID:???
>>682
> foreachの中にforeachってできないんですか??
できる。

> やってみたのですがうまく動きません…
どう書いたのかちょっと見せてみ。
684nobodyさん:2006/11/02(木) 15:07:14 ID:???
foreach($data as $data_arr) {
 foreach($boo as $boo_arr) {
  if($data_arr == $boo_arr) {
   $log[] = $data_arr;
  }
 }
}
685nobodyさん:2006/11/02(木) 15:10:32 ID:???
>>684
特に変なところは無いと思うが…これで動かなかったのか?
どういう結果になることを期待したんだろ。
686nobodyさん:2006/11/02(木) 15:27:55 ID:???
俺のエスパー的解読によると、
二回目のforeachのifの中の最後にbreak;しないと同じ値のデータが大量にできちゃうんじゃまいか?
どういう結果を求めてるか知らんけどな。
687nobodyさん:2006/11/02(木) 15:28:32 ID:???
>>685さん
期待どおりの動きをしてくれません。。。
$dataに(1,2,3,4,5...12)
$booに(1,2,5,12)
が入っていた時
$logに(1,2,5,12)の配列を入れたいのですがなぜか12が入っていなかったりします。
あと684で間違いがありました。
正しくは
if($data_arr[num] == $boo_arr) {
   $log[] = $data_arr;
  }
です
688670:2006/11/02(木) 15:33:26 ID:???
>>674
そうだよね。
ありがとう。
689nobodyさん:2006/11/02(木) 15:34:05 ID:???
>>687
そのnumってどっから出てきたの。
$data = array(1,2,3,4,5,6,7,8,9,10,11,12);
$boo = array(1,2,5,12);
foreach($data as $data_arr) {
foreach($boo as $boo_arr) {
if($data_arr == $boo_arr) {
$log[] = $data_arr;
}
}
}
var_dump($log);

結果:
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(5)
[3]=>
int(12)
}
690687:2006/11/02(木) 15:39:12 ID:???
度々の言葉足らず申し訳ないです。。
$dataは
ARRAY{
[0] ARRAY{
[num] = 1
[name]= satou
}
[1] ARRAY{.....}
と多重連想配列(?)になっています
691nobodyさん:2006/11/02(木) 15:46:16 ID:???
>>690
実際にうまくいかないデータを出さないと多分分からん。
プログラム側じゃなくデータ側に問題あるんじゃないの?
692nobodyさん:2006/11/02(木) 15:49:46 ID:???
>>687
> 正しくは
> if($data_arr[num] == $boo_arr) {
だったら多分
>    $log[] = $data_arr;

   $log[] = $data_arr['num'];
だろう
693nobodyさん:2006/11/02(木) 16:00:42 ID:???
<p> file uploader </p>
<?php
$updir = "./upload/";
$filename = $_FILES['upfile']['name'];
if (move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename) == FALSE){
print("Upload failed...");
print($_FILES['upfile']['error']);
}else {
print("<b>" . $filename . "</b> uploaded!");
}
?>
</body>
</html>
-------------------------------------------------
基礎PHPという本でアップローダー作ってるんですが、
上記のプログラムだと画像しかアップロードできず、
動画はアップロード出来ません。どこが問題でしょうか?
694nobodyさん:2006/11/02(木) 16:04:08 ID:???
>>693
プログラム的には問題は見受けられない。
1.ファイルサイズがアップロード可能な上限を超えている
2.確認方法が間違っている
のどっちかじゃない?
695nobodyさん:2006/11/02(木) 16:15:12 ID:???
ファイルサイズなどは特に明記もなく、
本のサンプルファイルをそのまま弄らずに使って確認してみたんですが、
画像だけアップロード指定先のフォルダにコピーされ、
動画だとアップロードのボタンを押したあと、永遠に何か処理しているような
感じでメーターだけ動くんですが、アップロード完了の画面が出たあと、
アップロード指定先のフォルダには何にも表示されないんです。
(指定先は画像と同じです。)
696nobodyさん:2006/11/02(木) 16:18:21 ID:???
>>695
phpの設定のアップロードファイルサイズの限界を超えてるんじゃないの
697nobodyさん:2006/11/02(木) 16:21:37 ID:???
>>695
PHPはデフォルトだと2MBまでしかアップロードできないよう
制限がかかってるよ。
698nobodyさん:2006/11/02(木) 16:44:42 ID:???
なるほど。そうでしたか。ありがとうございます。
その設定、弄ってみます。
699nobodyさん:2006/11/02(木) 17:51:17 ID:???
php.iniのupload_max_filesizeを2Mから100Mに変更してみました。
ついでに、post_max_size =も2Mから100Mにして、Apacheを再起動させてみたのですが、
-----------------
file uploader

Upload failed...1
------------------
のまま変化しません。4MBほどの軽い動画をいくつかやってみたんですが。
(先ほどメーターだけ動くと書きましたが勘違いで、何も表示されませんでした。)

画像などでは
-----------------
file uploader

abc.jpg uploaded!
-----------------
だと表示されて成功するんです。orz
700nobodyさん:2006/11/02(木) 17:59:59 ID:???
$_FILES['upfile']['error']が1ってのはupload_max_filesizeを超えてるってエラー
php.iniちゃんと読み込まれてるか?phpinfoとかで確認した?
701nobodyさん:2006/11/02(木) 18:01:14 ID:???
>>699
memory_limit > post_max_size > upload_max_filesize

それぞれの設定の意味はマニュアルを読んでもらうとして、memory_limitはどうなってる?
702nobodyさん:2006/11/02(木) 18:12:25 ID:???
あれ?phpinfoで確認すると

post_max_size 8M 8M
upload_max_filesize 2M 2M

のままでした。

>>701
memory_limitは8MBでしたので、
今100Mにして再起動したんですが、症状変わりませんでした。

phpinfoで表示されている通り
「Configuration File (php.ini) Path C:\WINDOWS」にあるphp.iniなんですが、
なぜ、反映されてないんでしょうか?
703nobodyさん:2006/11/02(木) 18:25:37 ID:???
$_SESSION = NULL
ってやばいですか?
できればデストロイせず、初期化したいのですが…
704nobodyさん:2006/11/02(木) 19:26:28 ID:y5JIMR69
自サイトのデータをArchive_Zipで圧縮してバックアップしているのですが、
FTPソフトでWindowsにDLして解凍するとアイコンがおかしくなってます。

htmファイルなんてアイコンが無いです・・・。
普通に開く事は出来るのですが何か気持ち悪くて・・( ´Д`)

どなたか原因・対処方法をご存知の方、よろしくお願い致します。
705nobodyさん:2006/11/02(木) 20:47:40 ID:???
fuck you
706nobodyさん:2006/11/02(木) 20:50:18 ID:???
本当にPHPの問題と思ってる?
707nobodyさん:2006/11/02(木) 20:56:42 ID:py7iJRLu
ネットで色々調べてみましたが、
Configuration File (php.ini) Path のディレクトリが合ってるか確認、
そしてapacheの再起動、
それでも反映されないバグっぽいです。orz
708nobodyさん:2006/11/02(木) 21:18:00 ID:???
絶対に自分は正しいってか?
おかしいとすぐバグとかいう人は、向いてないよ。
709nobodyさん:2006/11/02(木) 21:22:13 ID:py7iJRLu
そんな事言われても、この2箇所の確認でphp.iniが反映されなければ,
もうどうしようも・・・^^;

「php.ini 反映」でググっても、同じ症状の人、いっぱいいますし。
710nobodyさん:2006/11/02(木) 21:45:58 ID:???
phpとapacheのバージョンは?
711nobodyさん:2006/11/02(木) 21:49:49 ID:???
>>709
それだけ書かれても分からん

一度全部消去して、書式が間違ってないか慎重に検証しながら再設定してみろ
712nobodyさん:2006/11/02(木) 21:50:56 ID:???
>>707
マニュアル嫁。
C:\WINDOWSに置いていいのは縄文時代のPHP
713nobodyさん:2006/11/02(木) 21:55:00 ID:???
>>709
お前じゃ話が通じん!apacheのログを出せ!
714nobodyさん:2006/11/02(木) 22:06:29 ID:???
>>709
format c:\
715nobodyさん:2006/11/02(木) 22:21:51 ID:???
>>712
>縄文時代のPHP

想像しちまっただろうがwwwwwwww
716nobodyさん:2006/11/02(木) 22:59:07 ID:???
はいはいおもしろくない。
はい、次の質問どうぞ
717nobodyさん:2006/11/02(木) 23:17:55 ID:???
数行のログを横4縦∞のテーブルに
1行1セルの形で入れたいと思ってます
4行ずつ処理していけばいいと思うのですがどう書けばいいか分かりません
エスパーたんお願いします
718nobodyさん:2006/11/02(木) 23:18:25 ID:???
>>707
仕様です。
719nobodyさん:2006/11/02(木) 23:33:10 ID:???
>>717
カチカチ鳴る定規使え。まだ持ってないならすぐ買いに行け。
720nobodyさん:2006/11/02(木) 23:51:12 ID:???
きみがわからなくてもおれはこまらない
721nobodyさん:2006/11/02(木) 23:58:11 ID:???
>>717
1.横に延々と並べるのを書く
2.適当な所で折り返す方法を考える
3.実装
722nobodyさん:2006/11/03(金) 00:06:53 ID:???
>>717
http://pc8.2ch.net/test/read.cgi/php/1159979905/809-811
> 811 名前:nobodyさん[sage] 投稿日:2006/10/22(日) 05:16:39 ID:???
> 何列目で折り返すのかが決まっているのなら
> 余りの数で折り返すのが良いと思います。
>
> 例の場合なら3列なのでレコード数を3で割って余りが0のときに</tr><tr>を入れる。
> あとは例外処理だけ
723nobodyさん:2006/11/03(金) 00:27:32 ID:???
>>719-722
ありがとうございます
それらを元に作ってみたいと思います
724nobodyさん:2006/11/03(金) 01:34:47 ID:ttso8WIJ
ディレクトリからファイル名を取得して一覧表示させたいのですが、
同一上のディレクトリですとうまくいくのですが、
階層の違うディレクトリのファイル名が取得できません。
あるディレクトリ上にfileディレクトリとindex.phpがあります。
index.phpにfileディレクトリに保存されたファイル名を取得して一覧表示させたいと思います。
どなたがアドバイスお願いいたします。
PHPは5.1.6と4.4.4の両者で確認しております。



#index.phpの中身

$dir = opendir("./file/");//
#$dir = opendir("./");//←これは正常に動きました。
//readdirでファイル名を取得する正しい書き方
while(false !== ($file = readdir($dir))) {
if(is_file("./$file")) {
echo "$file<br>\n";
}
}
/* の間違った書き方
while(false !== ($file = readdir($dir))) {
if(is_file("./$file")) {
echo "$file<br>\n";
}
}
*/

//ディレクトリを閉じる
closedir($dir);
725724:2006/11/03(金) 01:37:46 ID:???
すいません無駄なコードとコメントはぶきました。


#index.phpの中身

$dir = opendir("./file/");//
#$dir = opendir("./");//←これは正常に動きました。

while(false !== ($file = readdir($dir))) {

if(is_file("./$file")) {
 echo "$file<br>\n";
}
726nobodyさん:2006/11/03(金) 01:39:33 ID:???
たびたびすみません>>725の最後の業に}付け忘れました。
たいへん恐縮ですがご教授お願いいたします。

#index.phpの中身

$dir = opendir("./file/");//
#$dir = opendir("./");//←これは正常に動きました。

while(false !== ($file = readdir($dir))) {

if(is_file("./$file")) {
 echo "$file<br>\n";
}
}
727nobodyさん:2006/11/03(金) 02:11:17 ID:???
>>724
> 階層の違うディレクトリのファイル名が取得できません。
取得はできてると思うんだがis_file()でこけてるんだろう。
(readdir()で得られるファイル名はディレクトリを含んでいないため
違うディレクトリならディレクトリ名を連結しないと該当ファイルが見つからない)
こういった原因を切り分けるため、
1.途中でデバッグ出力を入れる
2.余計な機能を省きシンプルなもので確認する
というデバッグ手法を覚えた方がいい。
728726:2006/11/03(金) 02:39:50 ID:???
>>726
よくわかりませんが、opendirに変数を格納したら動きません。
直接opendir("./file")と書いてやったら動きました。

なんででしょう?
とりあえず事故解決しました。
729nobodyさん:2006/11/03(金) 03:10:22 ID:???
なんでって言われても、具体的にどう書いたのかわからんことには…
730nobodyさん:2006/11/03(金) 03:45:28 ID:???
>>728
> 直接opendir("./file")と書いてやったら動きました。
意味が分からんのだが、それは>>726
> $dir = opendir("./file/");//
と何か違うのか?
731nobodyさん:2006/11/03(金) 08:38:09 ID:DVjQnElN
PHPスクリプト公開してるサイトでアフィリエイト広告を頻繁に
見かけますが儲かってますか?
732nobodyさん:2006/11/03(金) 08:55:09 ID:???
知らんがな
733nobodyさん:2006/11/03(金) 08:58:55 ID:???
ここの方々ならアフィリエイトで成功されてる方がたくさんいそうですね。
朝のコミュニティーションな会話は置いといて・・・


ソースに
function 関数(){}
で定義する前に
関数();
を記述してもいいのでしょうか?

はやり定義した後に記述するものなんでしょうか?

一応、どちらも動くことは動くのですが正しい記述としてはどちらが
いいのか困惑しております。
アドバイスお願いいたします。
734nobodyさん:2006/11/03(金) 09:02:01 ID:8kaP0u+9
すいません、733は731です。
735nobodyさん:2006/11/03(金) 09:06:29 ID:???
>>733
PHPはトップレベルの関数定義を、そのファイルの実行前に先読みするから問題なし。
どちらも正しい。
736nobodyさん:2006/11/03(金) 09:09:48 ID:???
ありがとうございます。
定義を後ろに書くことにしました。
自分はまだまだ勉強不足ですね。
>>735さんみたいな回答者になりたいです。
737nobodyさん:2006/11/03(金) 09:11:33 ID:???
回答者になりたい、ってアフォか
738nobodyさん:2006/11/03(金) 09:24:44 ID:???
ゴールデンハンマー!
739nobodyさん:2006/11/03(金) 09:48:25 ID:???
ユーザー定義関数dir()を呼び出したところ
Fatal error: Cannot redeclare dir()
とういエラーがでたのですが、これは何を意味しているのでしょうか?

また、こういうエラーの一覧表はマニュアルに載ってないのですが
どこかに参考となるサイトはございませんか?
740nobodyさん:2006/11/03(金) 10:02:23 ID:???
dirは定義済み
741nobodyさん:2006/11/03(金) 10:07:49 ID:???
>>739
多分こんなエラーだろう
Fatal error: Cannot redeclare dir() (previously declared in hoge.php:10) in hage.php on line 10

致命的なエラー:hage.phpの10行目でdir()が二重に定義されました。
        dir()はhoge.phpの10行目で既に定義されています。

何がいけなかったのかはエラーにちゃんと書いてあるし、行数まで表示されてる。

>どこかに参考となるサイトは
エラー文でググれば解決方法が見付かると思われ
742739:2006/11/03(金) 10:20:40 ID:8kaP0u+9
こういうエラーです。
Fatal error: Cannot redeclare dir() in 絶対パスon line 105

dir()

function dir(){


}←この行でエラーがでてしまいます。

ためしに}を改行して下にずらしても
}のところでエラーになります

dir()は二重に定義しておりません。
dirをdiraと名前を変えて定義してやると問題なく動きます。
dir()とやるとダメなので何か予約語とかなんやらのPHPの決まりなのでしょうか?
743739:2006/11/03(金) 10:31:40 ID:???
いちおう、コード削ってためしてみましたが、症状は変わらずです。
環境によるものなのでしょうか。
<?php
dir();
function dir(){
echo "test";
}
?>
744nobodyさん:2006/11/03(金) 10:36:00 ID:???
745nobodyさん:2006/11/03(金) 10:36:07 ID:???
>>743
dir()って関数名は予約されてるのでユーザが定義できない。
ttp://www.php.net/manual/ja/index.functions.php <関数一覧にdir()が存在してる
746743:2006/11/03(金) 10:44:49 ID:???
なるほど、そういうことだったんですね。
ありがとうございます。

私事でありますが・・
「素人だけどバグみつけちまったぜ」
「おれって天才?」

って喜んでました。修行不足ですね・・・失礼いたしました。
il||li_| ̄|○ il||li
747nobodyさん:2006/11/03(金) 10:45:15 ID:uip4CKwg
header関数でrefererのセットってできないのかね?
748nobodyさん:2006/11/03(金) 10:49:45 ID:???
できるでしょ。どんな意味があるか知らないけど。
749nobodyさん:2006/11/03(金) 10:52:38 ID:???
header : 鯖 -> 倉
referer : 倉 -> 鯖
750nobodyさん:2006/11/03(金) 11:00:13 ID:uip4CKwg
>>748
header("Referer: http://example.com");
header("Location: 環境変数一覧が出るようなサイト");
これで駄目なんだよね。試しに出力の順序変えても駄目だった。

>>749
ごめん、くわしくplz
751nobodyさん:2006/11/03(金) 11:02:18 ID:???
PHP 5.2.0が正式リリースされました。
752747:2006/11/03(金) 11:04:31 ID:uip4CKwg
>>749
あ、わかった。

てことはやっぱやろうとしてることは出来ないのか。ちぇ。
753nobodyさん:2006/11/03(金) 11:09:27 ID:???
>>746
私が見つけれるような単純なバグ(の様な物は)既に誰かが発見し修正している筈である。
よって、これは私のミスでありバグではない。

とまぁ、こんな事思いながらやってるなぁ・・

>>751
スレの上で出てたけど、これでPHP5.xがApache2.3.xで使えるように?

(その話題が気になったからググってみたけど、Apache2.0.x→Apache2.2.xはAPIが変更されてるとか何とか)
754nobodyさん:2006/11/03(金) 11:14:40 ID:???
http://ml.php.gr.jp/pipermail/php-users/2006-January/028719.html

5.1.7でphp.iniが見付けられないのはバグだそうです。
修正されているか解りませんが、5.2.0を入れる事をお勧めします。
755nobodyさん:2006/11/03(金) 11:43:03 ID:???
先月5.2いれたけど、たいして気にすることでもないかな。
756nobodyさん:2006/11/03(金) 11:43:05 ID:???
5.1.7?
757nobodyさん:2006/11/03(金) 11:46:43 ID:???
5.1.2でした。
758nobodyさん:2006/11/03(金) 12:01:13 ID:???
>>754
自己解決しているみたいなんだが・・・
759nobodyさん:2006/11/03(金) 12:05:48 ID:???
php6は試した人いないの?
760nobodyさん:2006/11/03(金) 12:29:29 ID:8kaP0u+9
こういうディレクトリ構造があります。
[c:\]-[public_html]--index.php
   |
   |-[local]--bbs.log
Cドライブ直下にドキュメントルートpublic_htmlを置きindex.phpを作成しました。
index.phpからドキュメントルート外のbbs.logをfopenで開きたいのですが

$file = file("c:/local/bbs.log","r");
と記述してもエラーがでて取得できません。
パスの書き方はc:/local/bbs.logではなくほかの書き方がございましたら
ご教授お願いいたします。
761761:2006/11/03(金) 12:40:11 ID:???
自己解決しました。
↑のパスの書き方で問題なく動きます。
762nobodyさん:2006/11/03(金) 12:57:15 ID:???
コードは適当なんですが
function dir_list($dir) {
 $dir_list = (ディレクトリ取得);
 foreach ($dir_list as $list) {
  dir_list($list);
 }
}
こういった再帰処理を無名関数で
$dir_list = create_function ('$dir', '$dir_list = (ディレクトリ取得);
 foreach ($dir_list as $list) {
  $dir_list($list);
 }
}');
のように書きたいのですが$dir_listがundefinedというエラーが出てしまいます。
functionを作らずに無名関数のような感じで実現することは出来ませんでしょうか。
763nobodyさん:2006/11/03(金) 13:02:41 ID:???
>>762
>  foreach ($dir_list as $list) {
で使ってる配列と
>   $dir_list($list);
生成関数とで同じ変数名がバッティングしてるよ。
764nobodyさん:2006/11/03(金) 13:06:01 ID:???
>>762
あとさらに付け加えるなら、
$dir_list = create_function()
で作られる$dir_listはグローバル変数な。
create_function ('$dir', '$dir_list = (ディレクトリ取得);
 foreach ($dir_list as $list) {
  $dir_list($list);
 }
}');
とcreate_function内で使われてる$dir_listは関数内のローカル変数な。

そんだけわかりゃ何とかなるんでない?
基本的にはfunction定義で何とかできることはcreate_functionでも何とかできる。
765nobodyさん:2006/11/03(金) 13:10:17 ID:???
実行エラーでバイナリ落ちそうなコードだな
766nobodyさん:2006/11/03(金) 13:31:45 ID:8kaP0u+9
perlでできてphpでできないことって何ですか?
最近perlもやっとかないと時代についていけない気がして・・・
767nobodyさん:2006/11/03(金) 13:56:23 ID:???
セッションIDでログインするにはどうしたらいいんですか?
768nobodyさん:2006/11/03(金) 14:09:24 ID:???
そんなことしてどうする?
セッションID毎にパスワードを設定するのか?
769nobodyさん:2006/11/03(金) 14:11:06 ID:???
>>766
そんな状態で始めたとしても、PHPもPerl使いこなせず意味がないと思われ
どっちか1つを真面目に勉強するんだ。

>>767
セッションの使い方を聞いているのか?
マニュアル読んで分からない事だけもっかい聞きに来い
770nobodyさん:2006/11/03(金) 14:18:42 ID:???
>>763さん、>>764さんレスありがとうございます。
$dir_func = create_function ('$dir', '$dir_list = (ディレクトリ取得);
 global $dir_func;
 foreach ($dir_list as $list) {
  $dir_func($list);
 }
}');
こんな感じで期待通りの動作をすることが出来ました。

>>766
WEB用途でPerlに出来てPHPに出来ないこと、またはその逆ってあまり無いと思うけど
tie、thread、OOP関連(多重継承、カプセル化等)で差異を感じることはあったかな。
Perlは古臭いっすよw
771nobodyさん:2006/11/03(金) 14:29:30 ID:9FoSTEPm
AとBの2つのページがあって、
Aのページで認証を通さないとBに進めないということをやりたいのですが、
特に細工しないと、BのURLを直接打ち込むとBが見えてしまいますよね?
今まではSwitchで分けてたのですが、
ソースがごちゃごちゃになるので分離したいと考えています。
どのような処理をしたら、Aからの認証のみでBに行けるようになるのでしょうか?
ヒントだけでもいただけたらありがたいです。
宜しくお願いします。
772nobodyさん:2006/11/03(金) 14:30:53 ID:???
http://pc8.2ch.net/test/read.cgi/php/1064399467/643
643 名前:nobodyさん [] 投稿日:2006/11/03(金) 13:21:11 ID:QUVcMJYR
そもそも、セッションIDがばれたら何が怖いんですか?
どこをどうされてログインされるんですか?

こないだセッションIDというヤツを他人に知られたんですけど、
何をされるんですか?
773nobodyさん:2006/11/03(金) 15:04:55 ID:ObEKEkGi
php.iniが認識しないのは、PHP5.1系のバグじゃなくApache2.2系のバグでした。
最新のApache2.0系を入れたら、1発で認識してくれました。どうも。
774nobodyさん:2006/11/03(金) 15:18:24 ID:???
>>773
んなこたーない
775nobodyさん:2006/11/03(金) 15:35:47 ID:???
>>771
セッションに認証済みフラグを立てて
Bで認証済みかどうかチェックしたらどうかしら
776nobodyさん:2006/11/03(金) 16:19:03 ID:???
Bをbasic認証にして
Aでパス発行すれば?
777nobodyさん:2006/11/03(金) 16:32:21 ID:???
777get, zuzaa
778nobodyさん:2006/11/03(金) 16:42:53 ID:8kaP0u+9
メンテナンスのことも考えてユーザー定義関数で細かく処理をわけてますが、
あまりわけすぎると実行速度の低下や転送量が太ったりしますか?
779nobodyさん:2006/11/03(金) 16:50:24 ID:???
>>778
誤差の範囲内で実行速度が僅かに低下する。

でも、メンテナンス性の方が遥かに大事。
読み易くメンテナンスしやすいように適度に分けるのは良い心がけだ。
780nobodyさん:2006/11/03(金) 17:03:01 ID:???
>>773
Windows?
それならPHP5.1がApache2..2に対応してないだけでバグでもなんでもない
どうせなら最新のPHP5.2でも入れて試してみたら
781nobodyさん:2006/11/03(金) 17:24:05 ID:???
>>766
最近Perl!?
JavaやRubyなら分かるが、今更Perlやってどうすんの。

と、元Perl使いが反応してみるw

PerlはPHPと違って元々はWEB無関係の汎用スクリプト言語だから
できることは確かに色々あるし性能もいいよ。
でも時代についていくために今Perlの勉強ってありえないぞ??
逆に何がしたくてPerl勉強すんのさ、と俺が問いたいw
782nobodyさん:2006/11/03(金) 17:36:49 ID:???
Perlは、言語機能や速度自体は別に悪くない・・。
が、文法が継ぎ足しで汚い。
783nobodyさん:2006/11/03(金) 17:37:43 ID:???
書いた本人にとっては美しいんだよ
他人が読めないだけだ
784nobodyさん:2006/11/03(金) 17:52:09 ID:???
いやいや書いた本人にとってはというレベルではなくて、
オブジェクト指向部分とか、基本的に変な文法。
785nobodyさん:2006/11/03(金) 18:22:50 ID:???
既存の文法と実装の延長線上でOOPを実現しようとしてるせいだよね。
実装手法の面で言えばうまい!って感じでよく考えられてるんだけど、
それはあくまでPerl側から見た話であって、OOPの側から見ると
何だかものすごく妙ちくりんな文法とお約束で成り立ってるんだよなw
786nobodyさん:2006/11/03(金) 18:26:40 ID:???
Perlはそもそも文法の美しさは二の次三の次だろ。
787nobodyさん:2006/11/03(金) 18:36:27 ID:???
いや、Perl使いから見るとあれはすごく美しい文法なんだよ。
ただその方向性が他の言語と違いすぎてるだけ。
788nobodyさん:2006/11/03(金) 18:50:45 ID:???
PHPしか知らない俺にその変てこさを分かりやすく説明してくれ
789nobodyさん:2006/11/03(金) 18:56:46 ID:???
一般的でない美しさは美しくないということにならないか?
790nobodyさん:2006/11/03(金) 19:09:16 ID:???
while (<>) { chomp; print; }

美しくないか?ってあまり大した例じゃないが。
791nobodyさん:2006/11/03(金) 19:10:26 ID:i9hbdjz4
美しいって何だよw
792nobodyさん:2006/11/03(金) 19:15:51 ID:???
美しさは人それぞれです
793nobodyさん:2006/11/03(金) 19:24:21 ID:???
美しいというより、
if (foo()) {
    foobar() if bar();
}
ってやられるときんもーってことでしょ?
794nobodyさん:2006/11/03(金) 19:31:40 ID:???
>>789
行き過ぎた芸術は一般人には理解しがたいものになりがち。そういうことだよ。
大衆芸術の方が多くの人に好まれやすいが美しさには欠ける。

>>790
やっぱ
@data = map {$_->[0]} sort {$x = ($a->[$_] <=> $b->[$_] or $a->[$_] cmp $b->[$_]) and return $x foreach (1 .. $#$a); -1} map {[$_, split /,/]} @data;
この辺りじゃない?
795nobodyさん:2006/11/03(金) 19:37:41 ID:???
>>794
変態的だな(褒め言葉)
796nobodyさん:2006/11/03(金) 19:42:43 ID:???
>>794
慣れなのかもしれないがよく解読出来るよね・・・
797nobodyさん:2006/11/03(金) 19:59:00 ID:???
>>794
確かにそこまでいくと芸術性を感じる


読みやすさは微塵も感じないが。
まさに変態的という言葉が完璧にマッチするな。
798nobodyさん:2006/11/03(金) 20:12:57 ID:???
1行にする必死さを感じる
まさに無駄な努力
799nobodyさん:2006/11/03(金) 20:18:00 ID:???
タモリいわく芸術と変態は紙一重らしいぞ
800nobodyさん:2006/11/03(金) 20:26:52 ID:???
俺もPerlを使い続けている一番の理由は、中毒性の高い構文だからだろうなw
使い捨てのプログラムをさっさと書いてしまいたい時にはかなり重宝する
CPANの豊富なモジュール群も捨てがたい
801nobodyさん:2006/11/03(金) 20:29:23 ID:ewaQ0n7K
初めてレベルの高い回答を読んだ
802nobodyさん:2006/11/03(金) 20:58:22 ID:???
ルビーとかいうのやってみたんですが
それあればコピペで出来るってことですか?
803nobodyさん:2006/11/03(金) 21:20:55 ID:ewaQ0n7K
>>645
色々調べたら、それだ!って感じがしました。
ところが、PEARには標準で入ってないっぽい?もしくはバージョンによる?
4.4なんですが、XMLの下にはParser.phpとRPC.phpしかないんです。
改めてgo-pear.batしたんですが、やっぱり入ってないです。
これはどうやってゲットすればいいんでしょうか?
804nobodyさん:2006/11/03(金) 21:30:55 ID:???
>>803
pear install XML_Serializer
てかPEARのマニュアル嫁
http://pear.php.net/manual/ja/
805nobodyさん:2006/11/03(金) 22:58:33 ID:ewaQ0n7K
>>804
うっ・・・ありがとうございます。ところが、
No release with state equal to: 'stable' found for 'XML_Serializer'
と表示されてます・・・
ううぅ・・・どうすればいいんでしょうか?
stableって安定版のことですよね?不安定版でも構わんのですが・・・
806nobodyさん:2006/11/03(金) 23:06:10 ID:???
       _, ,_
     <[;゚Д゚]> ア゙ー!? PEARのマニュアルにstableじゃないものをどうインストールするか書いてあんだろ
      [_]
      < > 
807nobodyさん:2006/11/03(金) 23:14:32 ID:aY7QHi86
PHPでWORD形式のファイルって出力できるんでしょうか?
808nobodyさん:2006/11/03(金) 23:43:49 ID:???
>>805
pear install XML_Serializer-beta
809nobodyさん:2006/11/04(土) 00:39:40 ID:RV2l/KER
>>806
うぅっ・・・すいません。書いてありました。面目ないです。

>>808
くぅーっ!ありがとうございます。お蔭様でインストールできました。Windowsの方は・・・

インストールすると、XML_Utilも必要と言われたのでインストールしました。
Windowsの方は動作も確認できたので、ヤター!!って思って、Linuxにもインストールしようと
したのですが、XML_UtilとXML_Parserが必要といわれたので、両方インストールしました。
ところが、、、XML_Parserはalready installなのでSkippingと表示されてるのに、XML_Serializer
をインストールしようとすると、XML_Parserがrequiresだと言われます。。。

最後の、最後に教えて下さい。マニュアル調べました(・・・多分見落としてないと思います)
810803,805:2006/11/04(土) 00:44:01 ID:RV2l/KER
-f スイッチで強制的にインストールできるようですが、これが正解ですか?
811nobodyさん:2006/11/04(土) 01:30:49 ID:AU0Zf4A1
URLからホストドメイン部分までを取得したいのですが関数とかあるのでしょうか
http://pc8.2ch.net/test/read.cgi/php/1161733546/
だと
http://pc8.2ch.net
となってほしいです

今は自分が知っている関数の範囲内で
$s = split("/", $url);
$host = $s[0].'//'.$s[2];
という風にしています。。

よろしくお願いいたします
812nobodyさん:2006/11/04(土) 01:39:11 ID:???
preg_match('@http://([^/]+)@', $uri, $matches);
813nobodyさん:2006/11/04(土) 01:42:04 ID:???
parse_url
814nobodyさん:2006/11/04(土) 01:58:29 ID:???
HTMLから語句を検索して、その語句に対してハイライトの為の
タグを自動で挿入してくれるようなライブラリなどありますでしょうか?

もしあったら教えてください。
お願いします。
815nobodyさん:2006/11/04(土) 02:50:44 ID:???
正規表現で置換
816nobodyさん:2006/11/04(土) 03:17:45 ID:???
一瞬で的確なレスが返ってくるこのスレはすごいな
817nobodyさん:2006/11/04(土) 03:28:36 ID:???
別にすごいことでもなんでもないし
818803,805:2006/11/04(土) 04:02:04 ID:RV2l/KER
>>809
自己レスです。
XML_Parserをforceインストールしたらでけました。色々教えてくれてどうもありがとうでした!
819nobodyさん:2006/11/04(土) 04:39:51 ID:???
>>817
場末のくだらないスレにしては、ということだ
820nobodyさん:2006/11/04(土) 04:58:30 ID:???
別にすごいことでもなんでもないし

821nobodyさん:2006/11/04(土) 06:56:58 ID:+mcy38xB
●ディレクトリ構成
[home]の下に[public_html](ドキュメントルート)の下に[www]ディレクトリ
[home]の下に[local](ドキュメントルート外)の下に[log]

wwwディレクトリにindex.phpがあり、
このファイルからlogディレクトリを指定したいのですが
間違っている指定の仕方があればご指摘ください。

1. ../../local/log
2. ../../local/log/
3. home/local/log
4. home/local/log/
5. /home/local/log
6. /home/local/log/
822nobodyさん:2006/11/04(土) 07:07:06 ID:???
3〜6
823nobodyさん:2006/11/04(土) 07:15:44 ID:???
多分homeは例のhomeなので5, 6も動くんじゃない
なんで/homeの下にlocalやpublic_htmlを置いてるのか知らんが
824nobodyさん:2006/11/04(土) 07:16:13 ID:???
自己解決しました。
正解は1,2,5,6でした。
825nobodyさん:2006/11/04(土) 07:19:50 ID:???
>>823
LinuxやBSD以外のOS
826nobodyさん:2006/11/04(土) 07:24:38 ID:+mcy38xB
mkdirでディレクトリ作成するときに
「変数で指定したディレクトリ名」で処理するとWarningエラーがでるのですが
@で回避するのとディレクトリ名をチェックするのはどちらが妥当でしょうか?
827nobodyさん:2006/11/04(土) 07:44:22 ID:???
>>826
別にどっちでも。
@で回避したあとの処理、ディレクトリの存在チェックしたあとの処理の方が重要。
828nobodyさん:2006/11/04(土) 08:00:06 ID:???
http://www.php.net/manual/ja/function.apc-define-constants.php
>ご存知のとおり、define() は非常に遅いです。

遅いんですか?
829nobodyさん:2006/11/04(土) 09:27:45 ID:???
fsockopneでファイルを送ることは可能でしょうか。
クライアントの依頼で受け皿を変更することなくファイルを送る必要がありまして、
通常の投稿フォームから投稿するのと同様にサーバ内のファイルを送らなければならなくなりました。

他のPOSTデータは普通に送れるのですがファイルはググってみたのですが的確なものがヒットしませんでした。

ご存知の方いらっしゃいましたらよろしくお願いします。
環境:共にFedoraCore4 PHP-5.1.4
830nobodyさん:2006/11/04(土) 09:35:55 ID:???
クソスレ三段論法について説いてください。
それではよろしくお願いいたします。
831nobodyさん:2006/11/04(土) 09:54:23 ID:???
>>829
pear使えばいいだけの話だろ?
楽チンじゃん。
832nobodyさん:2006/11/04(土) 10:03:37 ID:???
E_RECOVERABLE_ERROR

こいつのクールな使い方を教えてくれ
833nobodyさん:2006/11/04(土) 10:04:36 ID:+mcy38xB
die()で処理を停止してエラーはくときにソースが全部読み込まれなくて
</body></html>までソースが読まないんですけど、
die()の中に</body></html>書いておくものでしょうか?
それとも処理が停止したらhtmlの文法なんて気にすることでもないのでしょうか?
834nobodyさん:2006/11/04(土) 10:18:38 ID:???
>>832

$cool = "E_RECOVERABLE_ERROR ";
if (isset($cool) == "cool") {
 echo "E_RECOVERABLE_ERROR はクールを使ってます";
}else{
 echo "クールと勘違いしてます";
}
exit;
835nobodyさん:2006/11/04(土) 10:30:11 ID:???
>>831
そうできたら楽なのですが、自分でちゃんと作って提出するのが条件とのことです。
こんな感じでヘッダー叩いて見たのですがうまく上がりませんorz

POST /test/upload.php HTTP/1.0
Host: hoge.hoge
Content-Type: multipart/form-data; boundary=test
Connection: close
Content-Length: 8

--test
Content-Disposition: form-data; name="test"; filename="test.txt"
Content-Type: text/plain

testtest
--test
836nobodyさん:2006/11/04(土) 11:02:35 ID:???
>>835
宿題ならここで人に聞いちゃダメだろ
837nobodyさん:2006/11/04(土) 11:04:34 ID:???
>>835
おいおい同じような宿題やってるが同じクラスメイトか?
838nobodyさん:2006/11/04(土) 11:08:41 ID:???
お前ら付き合っちゃえよ
839nobodyさん:2006/11/04(土) 11:10:18 ID:+mcy38xB
すいません、サーバ環境と開発環境は分けてますか?

linux上のサーバでないと確認できないこともあるわけで、
開発はwinでやるのは効率がわるいでしょうか?
ぁたしはdreamweaverでデザインとphpの開発しております。
先人のご意見お聞かせください。
840nobodyさん:2006/11/04(土) 11:10:24 ID:???
自分でちゃんと作るのが条件でしょ
841nobodyさん:2006/11/04(土) 11:11:43 ID:???
そんな時のための仮想化じゃないか
842835:2006/11/04(土) 11:12:31 ID:???
宿題とか言われても俺工房だしww orz
まぁ再来年辺りこういう宿題やってるかもしれんけど(´・ω・)

とりあえず
「Content-Length: 8」が間違ってたようでファイルは送信できました。 と報告迄。

今度は逆にPOSTデータが受信されなくなってしまった罠。
RFC1867にこの辺について言及されてるけどPOSTデータの扱いがよく分からんかった。
843nobodyさん:2006/11/04(土) 11:23:25 ID:???
何が「クライアントからの依頼」だよ馬鹿

きちんと宿題なんですぅ〜と書け
844835:2006/11/04(土) 11:23:28 ID:???
自己解決しました。
POSTも「--test」で区切る必要があったようです。
結局余りphpと関係ない部位の質問となってしまいました; スレ汚しスミマセン。
845835:2006/11/04(土) 11:24:48 ID:???
>>843
だから宿題じゃねーーーーーよwwww 普通科の工房なぬんなwwww
ていうかこんな宿題が出たらどれほど楽しいことか。 普通科とかツマラン過ぎるんだけど('A`)
まじ高専とかウラヤマシス。
846nobodyさん:2006/11/04(土) 11:31:43 ID:???
>>828
まず第一の前提として、PHPのハッシュ(連想配列)というのは処理が遅いです。参照も遅いけど特に格納が。
そしてdefineというのは実態は$GLOBALSとは別のグローバル変数を保持してるに過ぎないということ。
そのため、よくある使い方としてC言語のように数十ものdefineを大量定義してるコードはかなり遅い。
しかもdefineの定義はプログラム先頭で全部まとめて行う人が多いため、このオーバーヘッドはバカにならない。
(グローバル変数を減らすよう努力する人は多いがdefineはむしろ増やしたがる傾向にある)

遅いと言ってもグローバル変数と同レベルで、それ以上には遅くも速くも無いです。
しかしC言語の感覚(Cでのdefineはプリプロセッサなので実行速度に影響せず極めて高速)では激遅と言えるでしょう。

APCのdefine_constantsとload_constansは、これを事前にメモリ展開が容易な構造で保存しておき、
必要時にキャッシュデータを丸ごと読み込んで高速にハッシュへ格納する、という仕組みのもの。
847839:2006/11/04(土) 11:35:55 ID:???
ばーちゃるPC使ってますが仮想化ってむずかしいですね
192.168.x.xでwinからlinuxのサーバへつながらないです・・
848nobodyさん:2006/11/04(土) 11:39:46 ID:???
>>839
分けてない。Linux用なら開発もLinux上で行う。
ただ、エディタはWin用のを使いたいので、sambaで
LinuxサーバーにWinクライアントで直接アクセスして
ソースの編集をやってます。
これは別にFTPでやってもいいと思うけど。
849nobodyさん:2006/11/04(土) 11:57:42 ID:???
BSDで自宅鯖立ってるからwinからsshしてscreenババババ開いてvimで書いてる。
850nobodyさん:2006/11/04(土) 11:59:09 ID:???
>>846
じゃPHPでは何を使うべきなの?
851nobodyさん:2006/11/04(土) 12:00:50 ID:???
>>839
linux のコマンドを使うような処理とか、一部OSの機能を使うようなものは
あきらめるが、簡単なサイト程度なら、両方で動くようなものをつくる
ただし、環境情報などは各環境で別々に設定ファイルを書いて
それを利用するようにしている

絶対パスが必要なものとか
URLが必要なものとか
852nobodyさん:2006/11/04(土) 12:01:28 ID:???
>>850
使わないものまで無闇になんでもかんでも定義しない。
ってだけ。コンパイル型の言語じゃない以上、それが結論かと。
853839:2006/11/04(土) 12:27:42 ID:???
貴重なレスありがとうございました。
せっかくだからlinuxに移ろうかと思います。
ご協力ぁりがとうございます
854nobodyさん:2006/11/04(土) 12:51:15 ID:???
>>852
たまに100以上ものエラーメッセージを全部define定義してる人いるよね
855nobodyさん:2006/11/04(土) 13:07:49 ID:???
国際化のためにdefineや巨大配列でテキストを外出ししてるケースは結構あるよ。
やっぱgettextのほうが速いのかな。
856nobodyさん:2006/11/04(土) 13:12:20 ID:???
大規模なサイトを運営しているケースで
クライアントが入力した値をデータベースに書き込む場合、
データを壊さないためにもロックをかけて処理を行うことが無難でしょうか?
857nobodyさん:2006/11/04(土) 13:15:09 ID:???
858nobodyさん:2006/11/04(土) 13:16:34 ID:???
>>854
でもdefiner使わずに連想配列に突っ込んでも同じなんでしょ?
859nobodyさん:2006/11/04(土) 13:18:09 ID:???
>>856
RDBMSにおけるロックの機能を勘違いしてるように思える。
データ間に不整合が出るケースはロックしないとそりゃダメだし(規模関係ない)、
そうでないならロックなどする必要はない。(これも規模関係ない)
というか、そういう話はデータベース板で聞いた方がいいと思うよ。
860nobodyさん:2006/11/04(土) 13:19:24 ID:???
>>858
だから事前定義がダメなんだってば。
効率を意識するなら必要時に取得する方法が賢明。
861nobodyさん:2006/11/04(土) 13:26:06 ID:???
>>859
ありがとうございました。データベース板で聞いてきます。
862nobodyさん:2006/11/04(土) 13:46:27 ID:UuLfn9RK
トラックバックをブログフォームからではなく、自分で作成した管理ツールから
送信したいと思っています。
下記のスクリプトを作成しましたが、エラーは出ないのですが、XMLの返答メッセージ
が返ってこず、トラックバックしてくれません。
どうすればよいでしょうか?
<?php
$sock = fsockopen("app.f.cocolog-nifty.com", 80, $errno, $errstr, 60);
if (!$sock) die("$errstr ($errno)\n");

$data = "title=".urlencode("test送信");
$data .= "&url=".urlencode("http://www.yahoo.co.jp");
$data .= "&blog_name=".urlencode("PHPからトラバをする");
$data .= "&excerpt=".urlencode("PHPモジュールから送ってます");

$tburl="t/trackback/3950899";

fputs($sock, "POST ".$tburl." HTTP/1.1\r\n");
fputs($sock, "Host: blog.seesaa.jp\r\n");
fputs($sock, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($sock, "Content-length: " . strlen($data) . "\r\n");
fputs($sock, "\r\n");
fputs($sock, "$data\r\n");


$body =" ";
while (!feof($sock))
$body .= fgets($sock, 4096);
fclose($sock);
print "test";
?>
863nobodyさん:2006/11/04(土) 14:36:07 ID:???
>>858
同じじゃない段違い
864nobodyさん:2006/11/04(土) 14:39:34 ID:???
>>862
$bodyをエコーすればHTTPエラーが返ってきてるはずだが
865nobodyさん:2006/11/04(土) 14:42:37 ID:???
その程度の用途ならHTMLにフォームを書いてしまえってのは禁句ですか?
866nobodyさん:2006/11/04(土) 14:42:53 ID:e0EPAzx7
ユーザ関数のことで質問させてください。
環境:
Redhat ES3
PHP4.3.9

参照渡しのところを省略可能な関数を作りたいのですが、可能なんでしょうか?
一応公式マニュアルの関数の項目には目を通し、ググっても見たのですが・・・。
もしやり方をご存知の方はご教授お願いします。

具体的に、
preg_match(string pattern, string subject [, array &matches [, int flags [, int offset]]] ) のarray &matches,
ftp_alloc(resource ftp_stream, int filesize [, string &result]) のstring &result
ようなことがしたいんです。

よろしくお願いします。
867nobodyさん:2006/11/04(土) 14:53:14 ID:???
こちらこそよろしくお願いします。
868nobodyさん:2006/11/04(土) 14:53:37 ID:???
>>866
function hoge(& $var = null) {
}

PHP5を使おう
869nobodyさん:2006/11/04(土) 14:55:52 ID:UuLfn9RK
>>864
今、トラックバックスパムではないんですが、トラックバックを一度で複数送る
研究をしていて、それで作成したいんです。
フォームだと複数送れません。
>>863
echo してみたら、Bad requestと表示されました。
プログラムが間違っているということですかね?
でしたら、どこが間違っているか教えていただけますでしょうか?
870nobodyさん:2006/11/04(土) 14:58:15 ID:???
>>869
> fputs($sock, "$data\r\n");

Content-lengthが実際のデータ長より2バイト短い
871nobodyさん:2006/11/04(土) 14:58:58 ID:UuLfn9RK
>>869
上記のエラーメッセージです。
HTTP/1.1 400 Bad Request Date: Sat, 04 Nov 2006 05:53:46 GMT Server: Apache Content-Length: 226 Connection: close Content-Type: text/html; charset=iso-8859-1
Bad Request
Your browser sent a request that this server could not understand
872nobodyさん:2006/11/04(土) 15:02:15 ID:e0EPAzx7
>>867
>>868
ありがとうございます。やはりphp5でないと無理ですか…。
873nobodyさん:2006/11/04(土) 15:02:43 ID:???
>>869
あと、相対パスでPOST
874nobodyさん:2006/11/04(土) 15:14:53 ID:UuLfn9RK
>>873
思ったんですけど、このスクリプトでレンタルブログ(ココログ)などにトラックバック
って送れないですよね?
875nobodyさん:2006/11/04(土) 16:14:05 ID:Z4GrE+jA
PHP で処理系に使われている文字コードを取得するにはどうしたらいいでしょうか?
環境の都合で i18n_loc_get_default は使えそうに無いです.

PHP を bamcompile で exe を作っているのですが,
ファイルを出力するときに OS(Windows)が使っている文字コードが分からないと
都合が良くないからです.
どうせ日本でしか使われないから Shift-JIS 決め打ちでいいやっていうわけにもいかないし
876nobodyさん:2006/11/04(土) 16:47:39 ID:???
まず、$_SERVERで取得できることをすべてためしてみろ。話はそれからだ。
877nobodyさん:2006/11/04(土) 17:19:53 ID:Z4GrE+jA
>>876
Windows と Linux の両方で見てみましたけど
使えそうなのはありませんでした...
つか CPU 名とか分かるくせに何で文字コードとかわらないんだ...
878875:2006/11/04(土) 17:23:39 ID:Z4GrE+jA
おっと名前を忘れてた
879nobodyさん:2006/11/04(土) 17:42:39 ID:???
>>875
クライアントから入力→文字コード判定→振り分け
880828:2006/11/04(土) 17:44:26 ID:???
>>846
詳しくわかりやすい解説ありがとうございます!

define()はそんなに使わないので、高速でなくともまあいいのですが、
それよりも連想配列が遅いというのは、あんまりいい気分ではないですね。
連想配列、便利なだけに。
881nobodyさん:2006/11/04(土) 17:51:01 ID:???
>>880
というか、連想配列に限らずPHPの変数は全部遅いんだよ。
882nobodyさん:2006/11/04(土) 17:55:22 ID:+mcy38xB
http://www.exsample.com/?test

というURLがあります。このURLの?test部分を
$_GETで受け取りたいのですが、記述がわかりません

普通に$_GETとしても取得できませんし、$_GET[]とやるとエラーがでます。
どなたかアドバイスお願いいたします。
883nobodyさん:2006/11/04(土) 17:55:33 ID:???
重箱の隅突付く程度のパフォーマンス知識自慢はもうウンザリ
884nobodyさん:2006/11/04(土) 17:58:02 ID:???
>>882
$_SERVER['QUERY_STRING']
>>883
まぁ、元々の質問がAPC関連=PHPのパフォーマンスに不満のある人、の場合だし
885875:2006/11/04(土) 18:05:17 ID:Z4GrE+jA
>>879
スクリプトを変換した EXE にファイルを D&D する程度なんで
ユーザに入力を求めるのは少し不自然かもしれないです.
けどほかに考え付かないので使ってみようかな.
886nobodyさん:2006/11/04(土) 18:12:54 ID:???
>>885
どっちかっつーとWindowsAPIな話の気がするんだが…
887nobodyさん:2006/11/04(土) 18:23:47 ID:???
>>885
ファイル受け取ってどうこうするんだったらその中身調べて
キャラクタセットをdetectするのが妥当じゃないのか?
888nobodyさん:2006/11/04(土) 18:25:40 ID:???
おれは、Dungeons&Dragonsかとオモタ
889nobodyさん:2006/11/04(土) 18:28:00 ID:Z9X2uAOu
セッション管理の外部ファイルを作成したところ、自身のファイルをうまく
呼び出せず困っています。なにかヒントがあればお願いします。

WIN XP + Apache 2.0.50 + PHP 4.3.7

[表示用ファイル test.php]
require("session.php");
<!-- セッション部 -->
<?= $session ?>
[session.php]
//セッションが開始されていなければ、フォームを表示
$session = "<form action=" . $thisfile . " method='post'>....."

$thisfile = $_SERVER["SERVER_NAME"] . $_SERVER["PHP_SELF"];

を指定すると <print>文では、localhost//test/test.php と正しく表示されるのですが
アドレスバーの表示は http://localhost//test/localhost//test/test.php となって
しまします。ちなみに

$thisfile = $_SERVER["PHP_SELF"];

だけだと、<print>文表示は //test/test.php アドレスバーは
ttp://test/test1.php となってともに not found です。
890nobodyさん:2006/11/04(土) 18:36:05 ID:???
>>887
中身がテキストだなんて誰も書いてないと思う
891nobodyさん:2006/11/04(土) 18:39:21 ID:???
>>889
> を指定すると <print>文では、localhost//test/test.php と正しく表示されるのですが
ホスト名とパスの間が「//」なのは全然正しくないと思う。

> $thisfile = $_SERVER["PHP_SELF"];
> だけだと、<print>文表示は //test/test.php
なんかApacheの動作が変だと思う。再インストールしてダメならバージョン変えてみては?
892nobodyさん:2006/11/04(土) 18:42:34 ID:???
>>889
> アドレスバーの表示は http://localhost//test/localhost//test/test.php となって
元々の呼び出し方自体がおかしいんじゃないの?
ttp://localhost/test/test.phpで実行したらちゃんと動かないか
ちなみに通常は$_SERVER["PHP_SELF"]だけでOK。
$_SERVER["SERVER_NAME"]もつけてフルURLにするなら頭にhttp://も足さなきゃダメ
893nobodyさん:2006/11/04(土) 18:42:49 ID:Z9X2uAOu
>>891
ありがとうございます。Apache 側の設定の問題でしたかっ!
Apache の設定の方を調べてみます
894nobodyさん:2006/11/04(土) 18:47:42 ID:Z9X2uAOu
>>892
ttp://localhost/test/test.php で動作します。
ttp://localhost//test/test.php アドレスバーに打ち込んでも
表示されるので、これでもよいのか?と...(汗)すみません...
895nobodyさん:2006/11/04(土) 20:42:43 ID:???
>>881
そんなおまえにこれをやろう。使い道は聞くな。
function php_internal_hash_func($key)
{
$hash = 5381;
for ($i = 0; $i < strlen($key); $i++) {
$hash = 0xFFFF & (($hash << 5) + $hash + ord($key{$i}));
}
return $hash;
}

function check_symbols_hash($arr)
{
for ($mask = 8; $mask < count($arr); $mask <<= 1);
$mask--;

$ret = array();
foreach ($arr as $val) {
$ret[php_internal_hash_func($val) & $mask][] = $val;
}
ksort($ret);
return $ret;
}
896nobodyさん :2006/11/04(土) 20:42:46 ID:DqH0rqVh
指定したURLのWebページのhtmlソースの取得についてお聞きしたいのですが。
PHP-Manualの例を引用すると・・
<?php
// この例ではHTTPを通してURL上のHTMLソースを取得します。
$lines = file('http://www.yahoo.co.jp');
// 配列をループしてHTMLをHTMLソースとして表示し、行番号もつけます。
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
?>
これで、htmlのソースが表示できるのですが、file_get_contents()を
使った場合どのように記述すれば良いのかわかりません。
よろしければ、お教え願えませんか?
897nobodyさん:2006/11/04(土) 21:03:06 ID:???
$lines = explode("\n",file_get_contents('http://www.yahoo.co.jp'));
foreach ($lines as $line_num => $line) { 
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n"; 
898nobodyさん :2006/11/04(土) 21:35:36 ID:DqH0rqVh
>>897
なるほど。ありがとうございました。
あと、file_get_contents()を使う場合は配列に読み込むわけでは
ないですよね?それで、foreachを使わずにするために、fileでは
なく、file_get_contents()はどうかと思ったんですが、他の記述
方法はないでしょうか?
899nobodyさん:2006/11/04(土) 21:41:16 ID:???
foreachを何で使いたくないの? forならいいの?
900nobodyさん:2006/11/04(土) 21:55:48 ID:???
>>898
ようするにループでやらずに行番号付けたいってこと?
そうなると改行コードを置換とかしないといけないと思うけど、
連番付けながら置換ってちょっと面倒くさいよ?
なんでわざわざループが必要な処理をループ使わないでやりたいなんて思うのさ。
901nobodyさん:2006/11/04(土) 21:59:54 ID:???
下らない質問で申し訳ありません。

PHPでWebを作る際に出力を全てprintやecho等でやっています。
こうして動的に出力される「ページのソース」を見ると無駄な改行がたくさん入っています。
何故改行が入ってしまうのでしょうか?原因不明の問題が出ないか心配です。



と書きながら原因思いつき&判明したフォー

----------------チラシの裏----------------
\n←この部分とか
\n
<?php
\n
function example()
{
\n
}
\n
\n
?>←これ以下の
\n←この部分
\n
----------------チラシの裏----------------

が出力されてたとです。
PHPが埋め込みスクリプトだと再認識したとです。
良い子のみんなはこんな質問しちゃだめですよ(´・ω・`)
902875:2006/11/04(土) 22:07:42 ID:Z4GrE+jA
>>886
そうですね自分もそんな気がしてたんですがWin32apiのことは全然知らなくて...
windowsに直接ロケールとか調べるコマンドあったらsystem()とか使おうと思ったんですけど
それもちょっと分からなかったんです

>>887
>>890さんが言うとうり扱うファイルはバイナリファイルなんで文字コードを特定できないです.
903nobodyさん:2006/11/04(土) 22:16:19 ID:???
>>902
もう出力ファイルは全部英語で吐き出してしまえ。
904898:2006/11/04(土) 22:47:49 ID:DqH0rqVh
>>899,900
いやぁ、forならいいかなぁって。すいません。foreachの使い方
がいまいち馴染めなかったので、言ってみただけです。
905898:2006/11/04(土) 22:52:44 ID:DqH0rqVh
連続ですいません。
>>900
行番号は別にいりません。ただhtmlのソースコードを取得したい
だけです。それで、file_get_contents()を使って、もっと
あっさりできないものかと思いまして。
906nobodyさん:2006/11/04(土) 23:01:24 ID:???
普通に表示するだけなら
echo htmlspecialchars(file_get_contents('http://www.yahoo.co.jp'));

取得するなら変数に格納
$data = file_get_contents('http://www.yahoo.co.jp');

いまいち何がしたいのかわからんけど
907nobodyさん:2006/11/04(土) 23:01:58 ID:???
>>905
echo file_get_contents("URL");
というか、おまえサンプルのソースの内容を全く把握できてないだろう。
908898:2006/11/04(土) 23:06:09 ID:DqH0rqVh
みなさまありがとうございました。
もう少し建設的なやりとりを交わせるようにがんばります。
909nobodyさん:2006/11/05(日) 00:07:28 ID:bwOCiosn
PDOでDBにファイルを保存したり取り出したりする場合の質問です。
create table files (
  id int not null auto_increment,
  file longblob,
  primary key (id)
);
で作ったテーブルにファイルを格納するところまでできたのですが、以下のコードで$fpにファイルハンドルが入らず、データがそのまま文字列として入ってしまいます。
$db = new PDO('mysql:host=localhost;dbname=hogehoge', 'user', 'pass');
$stmt = $db->prepare('select id, file from files where id = 1');
if (! $stmt->execute()) {
  $info = $stmt->errorInfo(); echo $info[2];
}
$stmt->bindColumn('id', $id);
$stmt->bindColumn('file', $fp, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
var_dump($fp);
//fpassthru($fp);
//fclose($fp);
http://www.php.net/manual/ja/ref.pdo.phpの例12の通りだと思うのですが、どのように直したら$fpにファイルハンドルが入るかわかる方いますか?
910nobodyさん:2006/11/05(日) 00:14:46 ID:???
>>905
<?php
readfile('http://www.yahoo.co.jp');
?>
911nobodyさん:2006/11/05(日) 00:15:22 ID:???
なあ、eAcceleratorって5.2で動かしてるひといる?



912nobodyさん:2006/11/05(日) 00:39:08 ID:???
>>909
ファイルハンドラを保存できてんの?
保存したコード解らんからなんとも言えんけど
913909:2006/11/05(日) 00:47:00 ID:bwOCiosn
>>912
ファイルハンドラを保存というか、保存されているものは文字列(というかバイナリ)です。
以下、スクリプト自身をDBに保存する摩訶不思議なスクリプトです。
よろしければ、試してもらえるたら幸いです。
(インデントは全て全角スペースで書いてあるので、置換してください)
$fp = fopen(__FILE__, 'rb');
$db = new PDO('mysql:host=localhost;dbname=hogehoge', 'user', 'pass');
$stmt = $db->prepare('insert into files set file=:file');
$stmt->bindParam('file', $fp, PDO::PARAM_LOB);
  // 挿入時はちゃんとファイルハンドラが使える。
if (! $stmt->execute()) {
  $info = $stmt->errorInfo(); echo $info[2];
}
914nobodyさん:2006/11/05(日) 01:02:22 ID:ByyhjYSA
すいません、10円ハゲを隠すコードのサンプルか何か書いてもらえますか?
10円 ハゲ PHP エロス
辺りでググッたのですが見つかりません。
915nobodyさん:2006/11/05(日) 01:29:17 ID:???
hiddenで隠すやつは素人
セッションで隠すやつは玄人
916909:2006/11/05(日) 01:47:57 ID:bwOCiosn
試しにスクリプト自身ではなく、5MBくらいのファイルを913のコードで保存しようとすると、エラーメッセージで、
MySQL server has gone away
(MySQLサーバーが消えました???)
と言われます。
もう何かPDOでLOB扱うのは諦めるかもしれません。
他にMySQLでファイルを保存する方法にはどんなものがありますか?
917nobodyさん:2006/11/05(日) 02:24:39 ID:???
mysql_query("insert into file_table values( $id, $file ) );
918nobodyさん:2006/11/05(日) 03:37:58 ID:???
>>869
> 今、トラックバックスパムではないんですが、トラックバックを一度で複数送る研究を・・・
それがトラックバックスパムなんです。研究だろうと何だろうと。

>>874みたいに興味持っちゃうお子さんがいるでしょ。
だから公共の場で教えてあげることはできないんです。
919nobodyさん:2006/11/05(日) 04:10:54 ID:???
>>869はseo対策の業者
920nobodyさん:2006/11/05(日) 04:16:13 ID:???
>>911
動かしてますが何か御用でも・・・?
921nobodyさん:2006/11/05(日) 08:32:35 ID:???
天下の高木浩光タンが、
ttp://takagi-hiromitsu.jp/diary/20061104.html#p01
で、
> こんなのは PHPのバグでしょ。エンコーディングがShift_JISの文字列を addslashes() するときに、
> Shift_JISとして処理していない addslashes() のバグ。
といってるが、バグなのか?
マニュアルにも、SHift_JISは"PHP で動作しないと思われる文字エンコーディング"になってるのに。
922nobodyさん:2006/11/05(日) 09:03:11 ID:???
こんな晴れた日曜の朝に動かないものに対して
バグだろうがバグじゃなかろうか議論なんて問答無用な話だ
923nobodyさん:2006/11/05(日) 10:25:46 ID:???
>>921
そんなやつ知らんw
924nobodyさん:2006/11/05(日) 11:38:10 ID:???
>>921
そもそもmb以外の関数にマルチバイトの動作を求められても困る。
925nobodyさん:2006/11/05(日) 11:48:25 ID:???
>>921
PHP始めたばかりの初心者だけどC/C++経験者のおいらから言わせてもらえば

×バグ
△仕様
○未実装

他の文字列関数にmb系関数がある以上日本語にはmb系関数を使うのが正しい。
しかしmb_addslashesは無いので未実装扱いが正統。
Shift_JISなんぞ国個別(今回は日本語)の個別コードに過ぎないので解釈不能で仕方が無いと思う。

ついでに言うとmb_addslashesが無いのであればmb_addslashesと同等の動作の物を自分で作成するか
PHPマニュアルにもあるようにSQLサーバ固有のエスケープ関数を使用するのが正しいと思う。
それでも問題が起こるのであれば、それはまた別の話

つづく

926nobodyさん:2006/11/05(日) 12:02:32 ID:???
>>921
それはバグでもなければひろみちゅの勘違いでもなくて、
指摘された元々の文章を書いた人が
「PHPではSJIS日本語のエスケープにaddslashes()を使う」
と大嘘を書いたせい。
927nobodyさん:2006/11/05(日) 12:22:05 ID:???
日記やブログを書く時は、十分に吟味しないと大恥書くよ。
928nobodyさん:2006/11/05(日) 12:35:09 ID:???
件の記事のリンクが繋がらないので記事の全文が見れずはっきりとは言えないが。
「今夜分かるSQLインジェクション対策,」であるのならば記事の方が正しい。
>>921のリンク先で批判している人が間違い。

>対策に「準備された文」(prepared statement) のことを書かないのは、どういうつもりなわけ?
確かに書くべきだと思うが
1:prepared statementはDBや上位インターフェイスによっては未実装かもしれない。(そういう)意味ではエスケープもアレだが
2:prepared statementはインジェクション対策というよりプログラムからSQL文作成をする場合の簡略化に本質があるとはず。
 つまりprepared statementに対応していたとしても問題文字を埋め込んだ場合に必ずしもインジェクション対策にはならないのではないかという疑問がある?

>そんな方法が「一般的になっている」なんて書くなって。そんなのは、はじめっから間違ってるって書くべきこと。
「今夜分かるSQLインジェクション対策,」、つまり分かっていない人用だし、実際にそのような対策例が多いので=一般的で良いと思われる。
というかprepared statementが正しいという前提の元で批判しているこの人が間違い。

>「方向性は正しい」と言いながら「理解していないため」というのはどういう了見なわけ? 「方向性」って何? 方向性からして間違ってるんだって。
prepared statementが正しいという前提の元で(ry
記事はエスケープをするという方向性は正しいが本質を理解していないと完全な対策が取れないという事が言いたいのであろう。
すなわち文字列やaddslashesを理解していない人には完全な対策が取れな(ry 自爆(ry

>「HTMLを生成する段階でエスケープすればよいと考えている人」って何それ?
これは記事の説明が悪い。
記事は初心者にクロスサイトスクリプティングと一緒くたにしないように注意を喚起したかったのであろう。あれもエスケープするしね。
929925 928:2006/11/05(日) 12:37:59 ID:???
「SQLインジェクション対策,」を説明するのが目的である以上、
SQLインジェクションとは何故起こるのかを説明しなければならない。

説明する上では文字列やエスケープについての記述が必須になる。
何故起こるのかの本質を理解せずに「prepared statementを使用すれば良い」等という書き方になると.
(全てのDB,SQL,インターフェイスで対策になっているか疑問だが)
addslashesがバグとかいう誤解をする人が増えてしまうのではないかと思う。

また、別の件で本質が同じである同様の間違いをおかす人も増えてしまうのではないかと思う。
SQLインジェクションの本質を理解していれば単純なクロスサイトスクリプティング脆弱性は生まれないが、
prepared statementだけでは同じ間違いをおかしかねない。

------------ここまでチラシの裏-----------
930nobodyさん:2006/11/05(日) 12:45:24 ID:???
一応貼っておきますね
【PHPアクセラレータで一番高速なのはどれか?】
ttp://gigazine.net/index.php?/news/comments/20061103_php_accelerator/
931nobodyさん:2006/11/05(日) 12:51:06 ID:???
安定性重視のXCacheか…ちょっといいな。
うちでもAPCを使ってるが、月1くらいで再起動かけないと
どうも動作が不安定になることが多くてちょっと困ってる…
932nobodyさん:2006/11/05(日) 13:12:38 ID:???
>>928-929
別に高木は「prepared statementを使用すれば良い」っていう
書き方をしろなんて書いてないでしょ

Webアプリケーション対策のところにprepared statementを始めとする
セキュリティが考慮された上位DB抽象インターフェイスを使う事が
説明されてないっていう事がダメって言ってるわけで

何故起こるのかを書く事は必要だけどその対策方法が
低レベルAPIの対策方法しか書かれてなくて
しかもそれらがさも「一般的な対策」であるかのように
書かれてるっていうのが問題だってのが高木の言い分だろ

@ITの記事が説明不足だっていうのは正しい指摘だと思うよ
高木の「addslashesはバグだ」ってのもちょwおまwって感じだけど
933925 928 929:2006/11/05(日) 13:43:48 ID:???
>>932
まあ、そうですね。
そんなおいらも >>901 みたいなアフォな事やってるフォー
901=925,928,929なんです(`・ω・´)シャキーン

高木氏の文に説明書いてあるけど顔見知りみたいだし(?)書いているのは個人日記みたいだし、
高木氏本人も自分専用チラシの裏程度の感覚で書いてるのかもしれないですしね。
934nobodyさん:2006/11/05(日) 13:59:56 ID:???
>>933
901はかなりバカすぎると思いまっす!w
935nobodyさん:2006/11/05(日) 14:27:01 ID:???
うにこーどなら問題は発生しないからこんな感じの関数作れば解決

function mb_stripslashes($str)
{
  $enc = mb_detect_encoding($str, 'UTF-8,EUC-JP,SJIS');
  $str = mb_convert_encoding($str, 'UTF-8', $enc);
  $str = stripslashes($str);
  $str = mb_convert_encoding($str, $enc, 'UTF-8');
  return $str;
}
936nobodyさん:2006/11/05(日) 14:38:59 ID:???
>>935
そこでstripslashesするってことはaddslashes済みのデータってことだよね?
SJISデータにaddslashesするとデータが破壊されるから正常なUTF-8には変換できないよ。
それ、addslashesの間違いなんじゃ…
937nobodyさん:2006/11/05(日) 18:29:10 ID:???
結局phpをSJISなんかで動かすヤツがバカってことでおk? >件の記事の件
まぁ俺は元々UFT-8使ってるから関係ないけど。
938nobodyさん:2006/11/05(日) 18:41:22 ID:???
UFT-8ね、、、
釣られたよ俺の負けだ
939937:2006/11/05(日) 19:02:15 ID:???
うはwww orz
940nobodyさん:2006/11/05(日) 22:10:07 ID:???
てか、mb てのもウザい。ちゃんと国際化設計やってほしいよな。
941nobodyさん:2006/11/05(日) 22:14:31 ID:???
日本語であるために浪費した時間、プライスレス。
942nobodyさん:2006/11/05(日) 22:43:56 ID:???
マルチバイト実装やってるのって誰なの?
943nobodyさん:2006/11/05(日) 22:54:54 ID:???
パートのおばちゃん
944nobodyさん:2006/11/05(日) 23:11:20 ID:???
>>940
php6はネイティブでunicodeサポートされる予定
945nobodyさん:2006/11/06(月) 00:13:36 ID:???
PHP6っていつ出るんだ?
946nobodyさん:2006/11/06(月) 00:54:45 ID:???
まだ仕様をどうするかについて議論してる最中だよ。
947nobodyさん:2006/11/06(月) 02:10:13 ID:NtdVX8J9
PHPでPOSTのデータを動的に作る方法を教えてください。
受け側で $_POST['a'] == 'b'; なるようなソースを教えてください。
948nobodyさん:2006/11/06(月) 02:30:15 ID:???
<?php
$_POST['a'] == 'b';
?>
949nobodyさん:2006/11/06(月) 02:31:12 ID:???
(´ロ`)
950nobodyさん:2006/11/06(月) 02:31:34 ID:???
ああごめん、=は1個
これで以下のスクリプトでどこでも$_POST['a']がbとして使えるよ
951nobodyさん:2006/11/06(月) 02:36:04 ID:NtdVX8J9
(´ロ`) ありがとう。
952nobodyさん:2006/11/06(月) 03:27:09 ID:mhsSMHja
ちょっと笑った
953nobodyさん:2006/11/06(月) 04:35:02 ID:???
>>945
もうでてるよ。評価版だけど。
954nobodyさん:2006/11/06(月) 04:38:56 ID:???
PHP6もがらっとかわってるの?
4→5はオブジェクト周りがかなりJavaっぽくなったが、
また6で覚えなおすこと多くなるのかな。
955nobodyさん:2006/11/06(月) 04:48:47 ID:???
4から5はそんなに変わってないでしょ?
6への移行はなかなか進まないんじゃないかな。
あまりしらないんだが、そんな予感。
956nobodyさん:2006/11/06(月) 05:31:37 ID:???
いや、4から5はだいぶ変わったよ。
6で気になるとこはgotoとネームスペースかな。
gotoは無くていいけど、ネームスペースは欲しい。
デリミタは「:::」になるみたいね。
957nobodyさん:2006/11/06(月) 05:35:56 ID:???
6では古臭い旧バージョンとの互換オプションを全部消そうぜ、
って話になってるよね。register_globalsをはじめ、関数エイリアスとか。
958nobodyさん:2006/11/06(月) 05:38:05 ID:???
join()とかsizeof()使ってるよ・・・( ´Д`)
959nobodyさん:2006/11/06(月) 06:26:33 ID:???
結局、PHP6でのParrot採用は提案だけで終わっちゃったのかな?
処理速度が最低5倍、最大30倍も向上するらしいって話だったけど。
960nobodyさん:2006/11/06(月) 06:56:53 ID:???
デリミタ:って何で使われないのかしら
961nobodyさん:2006/11/06(月) 10:21:56 ID:???
高級言語だから
962nobodyさん:2006/11/06(月) 12:08:48 ID:rJsIKc5I
index.phpからhoge.phpをincludeしたとします
さらにhoge.phpの中にconfig.phpをincludeする文があるのですが、
これってincludeしてくれるんでしょうか?
963962:2006/11/06(月) 12:10:06 ID:rJsIKc5I
書き忘れました、PHPです
964nobodyさん:2006/11/06(月) 12:11:11 ID:???
>>962
するよ。
>>963
いや、PHP以外の質問されても困るけどさ。
どうせ書くならPHPのバージョンとかその辺りを…
965nobodyさん:2006/11/06(月) 12:12:56 ID:???
>>963
ウケタ
966nobodyさん:2006/11/06(月) 12:25:06 ID:???
perlのMethPost、ReadParseに相当するものはありますでしょうか?
参考書読んでもわからないもので。
967nobodyさん:2006/11/06(月) 12:32:27 ID:???
perl知らんけど
$_SERVER['REQUEST_METHOD'] / getenv('REQUEST_METHOD'')
func_get_args()
でどうかしら
968nobodyさん:2006/11/06(月) 12:39:53 ID:???
>>966
Perlの機能で質問するならMethPost、ReadParseがどういう機能なのか説明しなよ。
なんでPHP知ってる人がPerlのしかも標準でないライブラリについて知ってると思うのさ。
MethPost → ($_SERVER['REQUEST_METHOD'] == 'POST')
ReadParse → 標準で自動的に$_GETと$_POSTに格納される。
969nobodyさん:2006/11/06(月) 12:47:43 ID:???
>>967
>>968
ありがとうございます。
以後、気をつけます。
970nobodyさん:2006/11/06(月) 12:48:06 ID:???
ReadParseってGET/POSTの変数を受け取るやつだったのね
971nobodyさん:2006/11/06(月) 13:58:45 ID:???
>>968 みたいな人にこそ勲章をあたえたいね。 
972nobodyさん:2006/11/06(月) 14:28:39 ID:???
プログラムの設計について質問です。
登録フォームなどで
フォーム(form.php)→入力内容失敗(フォーム上に表示)→成功・送信完了(entry.php)

と言うように入力判定を登録フォーム上に表示する仕様がよく見かけますが、
これは以下のような考え方でいいのでしょうか?(form.phpに記述するとして)

if($name=""){
echo"名前が入力されていません"
}else{
$_SESSION[name]=$name;
header(location: entry.php);
}
973nobodyさん:2006/11/06(月) 14:35:20 ID:???
>>972
$name = ""じゃなくて$name == ""な

俺だったらわざわざロケーションするくらいなら
同じファイルで値チェック+成功後の処理もやっちゃうけどね
974972:2006/11/06(月) 15:11:30 ID:???
>>973
すみません、結構記述ミスがありましたね。。

それで同じファイル上で値チェック+成功後の処理をすると
デザイン面などの編集がしづらいんです。
また、間に確認するページを入れた場合など。

それで、sessionで保持してロケーションするのが良いのかな?
っと思い、設計の質問をした次第です。
975nobodyさん:2006/11/06(月) 15:39:50 ID:???
>>974
いいんじゃないの?
976972:2006/11/06(月) 15:54:43 ID:???
>>975
わかりました。胸のつかえが取れました。ありがとうございます。
977nobodyさん:2006/11/06(月) 16:08:11 ID:???
>>976

entry.phpで、session_destroy(); 忘れるなよ
978nobodyさん:2006/11/06(月) 16:27:53 ID:???
>>964
sesison fixation の脆弱性になるんじゃまいか?
979nobodyさん:2006/11/06(月) 16:43:52 ID:???
PEARのコードで書くけど

(1)
$num = $db->getOne("SELECT COUNT(*) FROM hoge");

(2)
if(!DB::isError($rs = $db->query("SELECT * FROM hoge"))){
$num = $rs->numRows();
}

1と2ってどっちが早い?
行数にもよると思うけど。
980nobodyさん:2006/11/06(月) 16:52:47 ID:???
>>974
if($name==""){
echo"名前が入力されていません"
}else{
include "entry.php";
exit;
}

でもいいんじゃないの
981nobodyさん:2006/11/06(月) 16:56:34 ID:???
次スレマダー
982nobodyさん:2006/11/06(月) 17:15:44 ID:???
>>979
DB板で聞けやーって感じだが
count(*)の方がずっと速い。
行数が極端に少なければ差が出ないかも。
983nobodyさん:2006/11/06(月) 17:21:15 ID:???
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title><?php echo "$title" ?></title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>

さーせん、コレで書いてるのになぜかブラウザはshift_jisで表示してしまいます。
考えられる原因は何でしょうか?
984nobodyさん:2006/11/06(月) 17:27:45 ID:???
ぎゃああああああああああああ
php.iniのdefault_charset変えたら行けました。
死んできます。
985nobodyさん:2006/11/06(月) 17:32:19 ID:???
そこまでびびらなくても。
986nobodyさん:2006/11/06(月) 17:55:24 ID:L/507IWY
携帯無料サイトなどによくある空メール機能を作りたいのですが、
メールフォームを使えば楽なのですが、携帯利用者にとって
自分のメールアドレスを打つのはご法度だと考えております。
どなたかアドバイスお願いいたします。
987nobodyさん:2006/11/06(月) 18:27:27 ID:???
mailtoのリンクを用意すればいいだけだろ?
988nobodyさん:2006/11/06(月) 19:03:02 ID:???
ワロタ
989nobodyさん:2006/11/06(月) 19:14:25 ID:???
>>987のバカさ加減にあきれたのでおれが>>986に答えてやる。

ヒント:cron
990nobodyさん:2006/11/06(月) 19:15:56 ID:???
>>986
なんで御法度だと?
991nobodyさん:2006/11/06(月) 19:20:51 ID:???
>>986
cronでやるのは素人
ヒント:alias .forward .qmail
992nobodyさん:2006/11/06(月) 19:23:14 ID:???
男なら黙って伝書鳩
993nobodyさん:2006/11/06(月) 19:26:38 ID:???

まだ伝書鳩使ってるんですか?

php-5.2.0からは糸電話が実装されたので非常にセキュアです。
dos攻撃にも強いですよ。
994nobodyさん:2006/11/06(月) 19:34:26 ID:???
糸電話のRFCは?。

伝書鳩
RFC 1149 鳥類キャリアによるIPデータグラム送信標準
995nobodyさん:2006/11/06(月) 20:37:35 ID:???

鳥インフルエンザが心配だな。
パケットが落ちる可能性がある。
しかも、インコとか暗号しゃべれないでしょ?平文は不安だよ。

やっぱり糸電話は物理層でつながっている安心感が違うよ。
インフラでコストがかかるけど、うちは全部 ”糸”だよ。
996nobodyさん:2006/11/06(月) 20:59:33 ID:???
>>986
それ、PHPの質問じゃないぞ。

.forwardとかでメールの内容をスクリプトに渡してやって
正規表現で相手のメールアドレス抽出。
PHP STDINあたりで検索かけてみ?
997nobodyさん:2006/11/06(月) 21:03:54 ID:???
>>996
PHPの質問じゃないのにPHPで検索すんの?
998986:2006/11/06(月) 21:06:11 ID:???
PHPに関連した質問ですがなにか?
999nobodyさん:2006/11/06(月) 21:06:42 ID:???
>>997
受け取った後は言語はなんでもいい。もちろんPHPでもできる。
問題はスクリプトにどうデータを渡すか。これはPHP全然関係ない。
1000986:2006/11/06(月) 21:07:06 ID:???
ありがとう諸君!

For ever you!!!1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。