トップページ⇒php
1001コメント340KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2006/10/25(水) 08:45:46ID:???
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カテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0002nobodyさん2006/10/25(水) 08:50:01ID:???
【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/
0003nobodyさん2006/10/25(水) 08:52:09ID:???
関連リンク
■本家マニュアル   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/
0004nobodyさん2006/10/25(水) 08:54:09ID:???
関連スレ
http://pc8.2ch.net/php/subback.html
PHPで検索汁!
0005nobodyさん2006/10/25(水) 09:02:22ID:???
【簡易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プログラムとして実行された結果になる。
0006nobodyさん2006/10/25(水) 09:12:52ID:???
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に保存?
 → 好きにしてください
000712006/10/25(水) 09:16:07ID:???
できるだけ前スレの>>996の意向にそったつもりだが、
時間かかりすぎるのもあれなんで、適当に修正した。
不満があるなら次スレで修正してください。
0008nobodyさん2006/10/25(水) 09:17:13ID:???
かなり乙
0009nobodyさん2006/10/25(水) 09:22:50ID:???
                     _.. - .._
                   _.. - ,ニ-冖 ⌒ 冖-ニ - _
               / ノ´,. .‐.: : : ̄: :、:‐. 、`ヽ \
            /   //: :./: : : : : : :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:::::::..........:::::/ニ、ヽ、
0010前9962006/10/25(水) 09:24:41ID:???
>>1
GJ!乙&�d
0011nobodyさん2006/10/25(水) 10:34:39ID:rZkuwLJp
2ゲット⊂(゚Д゚⊂⌒`つ≡
0012名無しさん@お腹いっぱい。2006/10/25(水) 11:44:27ID:J6B8Hktu
htmlの文章を"。"が3つ出てくるごとに改行したいんですが、どうもうまく
いきません。

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

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

echo $v{0};

この場合の{}ってどういう意味ですか?
0018122006/10/25(水) 12:34:59ID: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度出てきたら、そこで改行したい
ということです。
0019nobodyさん2006/10/25(水) 12:39:49ID:???
>> if(ereg("。","str.html"){
正規表現をばかにしすぎ
0020名無しさん2006/10/25(水) 12:57:12ID:gy1NzvJV
申し込みフォームを作成して、申込者に確認メールを
送信する仕組みを作りました。

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

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

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

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

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

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

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

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

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

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

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

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

>>38
ライセンスくらい読めよ(´・ω・`)
0050nobodyさん2006/10/25(水) 16:51:06ID:???
>>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++;
}
}
0051502006/10/25(水) 16:53:39ID:???
>>48
$count = count(配列が入っている変数);
echo $count;
0052nobodyさん2006/10/25(水) 16:54:05ID:???
PHP5のプログラマと、PHP4のみのプログラマの人数はどれくらい違いますか?
0053軟式PHP2006/10/25(水) 16:56:36ID:???
>>12
3つ出てくるごとなら
if($i/3==1){
ではなくて、
if(!($i%3)){
じゃないのかな。
文字をカウントするのはsubstr_count()。

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


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

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

両方できて当たり前だろが
0056nobodyさん2006/10/25(水) 17:05:00ID:???
>>52
結構意味不明なんだけど、PHP5でさらに拡張された部分を
まだ勉強したことないプログラマ、って解釈でいいの?
それだと結構いそう。
もっとも、必要になったら3日でマスターできる内容なので
現場の環境が変わってないならわざわざ勉強する必要も感じないが。
0057182006/10/25(水) 17:07:01ID:J6B8Hktu
ご教示ありがとうございます。
早速トライします。
0058nobodyさん2006/10/25(水) 17:20:42ID:???
>>42
インスタンスを1つしか作らないなら>>43の言ってる事だけ気をつければok。
たくさん作るなら
$var1 = 1;
$var2 = 1;
と
$var1 = $var2 = 1;
の違いについて調べれば答えは出てくると思う。
0059292006/10/25(水) 17:20:59ID:9Xs/4YIO
画像に添付禁止処理をするにはどうすればいいのでしょうか?
当方PHPにて画像を取得、それを添付禁止処理して表示としたいのです。
宜しくお願いします
0060nobodyさん2006/10/25(水) 17:24:01ID:???
>>59
添付禁止ってどういう状態??
0061軟式PHP2006/10/25(水) 17:26:36ID:???
>>59
ちょっと文章が分かりづらいんだが・・・。
画像が添付されたメールを受信して、PHPでそれを解析して画像を取得。
その取得した画像をサイトに載せる際に、閲覧ユーザーがその画像をダウンロードして
他の人に配れないように添付禁止にしたいってこと?
0062292006/10/25(水) 17:33:19ID:9Xs/4YIO
>>60-61さん
レスありがとうございます
携帯のメール添付を出来なくするということです。
auだとHTMLで保存できないように出来ますが、DoCoMoは添付禁止にするしかないんです
0063nobodyさん2006/10/25(水) 17:35:46ID:???
>>62
着メロのコピー禁止は見たことあるけど、画像でもそんなことできるんだっけ。
PHPでやる方法以前にDocomoの仕組みが分からん。どっかに説明ない?
0064軟式PHP2006/10/25(水) 17:42:14ID:???
>>62
俺が前やったやり方だけど、ImageMagickでオプションに「-comment copy="NO"」をつけて再変換したよ。
PNGの場合は、ImageMagickだと出来なかったんで、HDRチャンク、tExtチャンクを取得してバイナリ直接弄ってコメント埋め込んだよ。
Docomoだから関係はないと思うけど。
0065292006/10/25(水) 17:53:02ID:9Xs/4YIO
>>63さん
DoCoMoの技術者向けサイトおいておきます
ttp://www.nttdocomo.co.jp/service/imode/make/

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

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

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

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

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

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

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

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

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

@foreachでは無理でした
0079nobodyさん2006/10/26(木) 00:26:02ID: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 に代入

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

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

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

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

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

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

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

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

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

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

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

>>105
Last-modified以前にPragma: no-cacheとかExpiresをつけてたら常に更新されていると見なされるってことはないの?
検索エンジンがどうしてるのか知らないけど。
0109nobodyさん2006/10/26(木) 10:14:41ID:???
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した場合は無限ループするんですか?
0110nobodyさん2006/10/26(木) 10:24:17ID:???
>>109
無限ループする。
悪いことは言わないから、include_onceかrequire_onceにしとけ。
(つーかphpってbisonのエラーをそのまま垂れ流すんだな。初めて知った。)
0111nobodyさん2006/10/26(木) 10:35:23ID:???
>>110
やはりそうでしたか。どうもありがとうございます。
include_onceを使いたいと思います。
0112nobodyさん2006/10/26(木) 11:57:22ID:UNye5auU?2BP(0)
すみません、どなたか>>67の回答お願いできませんか。
ググっても同じ症状は見つからないのでFOMAだけなんでしょうか?
0113nobodyさん2006/10/26(木) 12:01:45ID:dpAXN0uK
>>107
日本語不自由な奴は書き込むな

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

結果:OK!


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

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

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

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

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

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

http://example.com/ は http://example.com/index.phpです。
0148nobodyさん2006/10/26(木) 17:50:46ID:???
http://example.com/?SID=649144に飛ばせ
0149nobodyさん2006/10/26(木) 17:52:51ID:5uZ/3Bq6
phpで2のn乗の数値の合計値から nの数値のリストを求めるにはどうしたらよい?
下の$arrayを出したいんですが。
$sum = 52; //(2の2乗)+(2の4乗)+(2の5乗)
↓
$array = array(2,4,5);
0150nobodyさん2006/10/26(木) 18:00:36ID:???
>>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));
01511492006/10/26(木) 18:14:47ID:5uZ/3Bq6
>>150
ありがとうございました。助かりました。
仕組みは良く分からないですけど・・

同じnameのcheckboxのvalue="n"を2のn乗の合計値で持ってて、それ合計値からvalueを引き出すのに苦労してました。
0152nobodyさん2006/10/26(木) 18:20:50ID:???
ここのスレはいい人ばかりで大好きです。
ありがとう。
0153nobodyさん2006/10/26(木) 18:22:39ID:???
>>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)
*/


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

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

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

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

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

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

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

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

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

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

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

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

>>176
はい。

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

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

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

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

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

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

よろしくお願いします。

書き込み部ソース:http://source.is.land.to/s/q.phps
全体:http://source.is.land.to/s/all.phps
0200nobodyさん2006/10/27(金) 02:26:24ID:???
>>192
その議論はスレ違い。他所でやれ。
クロール頻度やPageRankのルールなんてしょっちゅう変わってるんだから
そんなことの是非は実装を議論する板で問うべき問題ではない。
0201nobodyさん2006/10/27(金) 02:34:36ID:???
>>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()して、期待してる動作をしているのか確認する。

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

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

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

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

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

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

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

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

このchdirをもっと上にもってけ。
もしくはchdirをやめれ。
読み込んでるファイルと書き込んでるファイルが食い違ってるだろ。
(なんか釣りっぽいと感じるの俺だけ?)
0217Name Not Found2006/10/27(金) 04:37:29ID:????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

親記事は手動でファイルを作成
02182172006/10/27(金) 04:42:41ID:????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
0219nobodyさん2006/10/27(金) 05:28:05ID:???
>>217
defineで定義してたところで、場所によって
パスにディレクトリを含めてみたり、chdirしてみたりと
やり方自体をバラバラにしてたら何の意味も無いと思うよ。
それよりはファイル名の生成を関数化する方が先決。
0220nobodyさん2006/10/27(金) 14:10:28ID:AQszo3d9
ロリポやさまざまな共有サーバで使われているsafe modeについて
php.iniで設定したいのですがsafe modeをonする以外に
参考となるURLございませんでしょうか?
0221nobodyさん2006/10/27(金) 14:40:53ID:???
>>1
0222nobodyさん2006/10/27(金) 14:51:25ID:???
ユーザー定義関数中で使うと、
自身の関数名を取得できる関数はありませんか?

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

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

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

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

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

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

orz

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

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

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

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

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

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

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

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

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

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

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

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

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

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

そのページの話は「register_globalsをONにしてグローバル変数を使う場合」だろ。
そんなもん、グローバル変数を使ってようと使っていなかろうと、
register_globalsがONになってる時点で全然ダメだ。
さらにグローバル変数を使っていたらより問題が悪化するというだけのことだ。
0270nobodyさん2006/10/28(土) 01:30:31ID:???
>>269
すいません、自分の書き方が悪かったと思います。
>>269さんの解釈のとおりです。
わかりやすいです。
参考にさせていただきまして、プログラムを組んでみます。
ありがとうございました。
0271nobodyさん2006/10/28(土) 01:31:10ID:???
>>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"
}
0272nobodyさん2006/10/28(土) 01:32:53ID:???
>>268
おれもわからなかったから調べてみたらこんな関数があったよ
$a = array(1,2,3);
$b = array(4,5,6);
$a = array_merge($a, $b);
02732712006/10/28(土) 01:33:04ID:???
すまん。なんか配列の順番を壊しちゃってたな。
array_splice($a, count($a), 0, $b);
が正解。
0274nobodyさん2006/10/28(土) 01:46:52ID:???
>>268
なんでマージじゃダメなの?
0275nobodyさん2006/10/28(土) 01:51:34ID:???
>>272
array_mergeだと、順番が混合してしまうんですよね
>>273
置き換えをする関数で連結するとは思いつきませんでした
ありがとうございました
0276nobodyさん2006/10/28(土) 01:51:38ID:???
>>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;
0277nobodyさん2006/10/28(土) 02:07:36ID:???
>>275
array_mergeでも一緒やんけ
0278nobodyさん2006/10/28(土) 02:08:30ID:???
というかマージのほうがみやすいと思うけど。
ひとそれぞれなのか・・
0279nobodyさん2006/10/28(土) 02:13:09ID:???
>>275
> array_mergeだと、順番が混合してしまうんですよね
具体的にどういうケース??
02802752006/10/28(土) 02:42:38ID:???
今確かめたらarray_mergeでも順番は保たれますね
連想配列で、同じ文字列のキーがあった場合には上書きされてしまうので、
キーが数字の時も混合されてしまうと思いこんでいました。
0281nobodyさん2006/10/28(土) 02:57:34ID:???
便利なのがphpのよいところだからな。
>>275はとりあえずこれでも読んどけ
ttp://hiro.asks.jp/5297.html
0282nobodyさん2006/10/28(土) 03:36:18ID:VA57KDTi
下らなくない質問はどこですればいいですか?
0283nobodyさん2006/10/28(土) 03:43:25ID:???
下らなくなくはないだろう。
0284nobodyさん2006/10/28(土) 03:57:36ID:???
>>282
かつてここの本スレと呼ばれた「PHP質問スレ」が別にあった。
だが、そこにも結局下らない質問しか投下されなかったために
スレは消滅してしまった。

下らなくない質問があるというなら試しにここに投下してみるといいよ。
ニーズがあることが確認できればきっと本スレ復活もあるさ。
0285nobodyさん2006/10/28(土) 04:12:50ID: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 でコピーしただけなので設定に問題があるとは思えないのですが・・。

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

で、メインページに表示しているHTMLのURLとコンテンツをPHPの変数に取得したい
ということか?
URLが分かれば、file_get_contentsとかcurlでとれるよ
0338nobodyさん2006/10/28(土) 21:18:39ID:doQnvF3Z
おぉぉ、ありがとうですm(_'_ )m波平ペコッ
そういう事をしたかったのです!!
0339nobodyさん2006/10/28(土) 21:18:45ID:RGmX0RKo
すみません
PEARモジュールをインストールしてtgzをLhaplusで解凍
するとxmlになるんですが一般の解凍ソフトは無理なんでしょうか..?
0340nobodyさん2006/10/28(土) 21:34:50ID:???
xmlもまあ入ってるがそれ以外にフォルダが入ってるはずなんだが
0341nobodyさん2006/10/28(土) 21:36:39ID: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の内容を表示する方法ないですか?
0342nobodyさん2006/10/28(土) 21:39:37ID:???
>>341
はいはい、釣り乙釣り乙

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

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

マニュアルのV. 配列関数(array)嫁
03483342006/10/28(土) 23:48:12ID: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>
みたいな感じです。
うーむ、また分かりにくいかもしれないですけど><
よろしこです^^;
0349nobodyさん2006/10/28(土) 23:51:11ID:???
>>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>';
}
0350nobodyさん2006/10/28(土) 23:52:45ID:WdiFJULn
>>347
それは理解しているのですが
組み合わせる事が出来なく困っています。
どうかヒントだけでもお願いいたします
0351nobodyさん2006/10/29(日) 00:03:57ID:???
>>348
全然意味がわからん。そもそも最初の、フレーム、トップ、メインてわけわからん。
せめてフレーム(トップ)、メニュー、コンテンツ(メイン)とかにしてくれ。
0352nobodyさん2006/10/29(日) 00:04:59ID:EYdNlx59
>>349
ありがとうございます。
出来ました。

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

途中の ?
と :

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

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

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

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

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

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

このようにしたいのですがどなたかアドバイスお願いします。 
0358nobodyさん2006/10/29(日) 01:04:26ID:bVOhrU5J
マルチスレッドで利用している場合、
flock()の保障は不完全となりますか?
0359nobodyさん2006/10/29(日) 01:19:01ID:???
>>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
不完全みたいね
0360nobodyさん2006/10/29(日) 01:22:36ID:???
$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>';
}
0361nobodyさん2006/10/29(日) 01:36:21ID:EYdNlx59
>>359
>>360
ありがとうございます。

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

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

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

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

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

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

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

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

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

PHPマニュアルに

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

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


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

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


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

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

PHPってクラス化されていないから探すのがかなり面倒ではあるね。
03713152006/10/29(日) 02:56:01ID:???
>>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);

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

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

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

ここはもう少しレベルが高いと思って質問してみただけだ
質問したあと後悔したよ
0375nobodyさん2006/10/29(日) 03:25:27ID:???
>>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>";
}
0376nobodyさん2006/10/29(日) 03:29:36ID:???
>>375

連想キークリアされてるぞそれ
03773752006/10/29(日) 03:33:24ID:???
$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両方対応。
0378nobodyさん2006/10/29(日) 03:36:24ID:???
>>377

連想キー分かってないやつ乙
0379nobodyさん2006/10/29(日) 03:38:40ID:???
$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>";
}
03803752006/10/29(日) 03:39:54ID:???
2行目コメントアウトするの忘れずに。
03813752006/10/29(日) 03:42:40ID:???
再度確認したらキーが消えてた。
il||li_| ̄|○ il||li
03823752006/10/29(日) 03:51:15ID:???
参考文献みつけました
ttp://side-b.sto.co.jp/weblog/archives/14
0383nobodyさん2006/10/29(日) 04:09:17ID:???
>>368
uasortの比較関数でランダムに返してやりゃいいんじゃね?

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

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

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

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

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

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

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

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

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

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

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

簡単なsqlite以外は動作していたのですが。
非公式で配布されているのは、どこででしょうか?
0411nobodyさん2006/10/29(日) 19:18:20ID:???
公式版使ってるなら2.0か1.3にしな。
非公式ぐらい自分で探せないなら公式版つかってたほうが無難。
04123882006/10/29(日) 19:20:00ID:t7v+PkcA
すみません、410の、「簡単なsqlite以外」は、
「phpそれ自体(簡単なphpコード)」という意味です。わかりにくくてすみません。
0413nobodyさん2006/10/29(日) 19:57:41ID:???
無理に2.2.3を使う必要はない。やめとき
0414nobodyさん2006/10/29(日) 20:20:33ID:???
すいません。教えてください。
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が必要(バンドル)と書いてありますが、そのようなファイルは見当たりませんでした。
どうしたらいいでしょうか?お願いします
0415nobodyさん2006/10/29(日) 20:28:41ID:???
mysqlインストールしてるか?
0416nobodyさん2006/10/29(日) 20:34:12ID:???
>>414
・extension_dirを設定しているか
・extension_dirで設定したディレクトリにdllがあるか
04173882006/10/29(日) 21:47:30ID:uuNUd04h
apache2.0.59を入れてみたのですが・・・
同じメッセージが出てしまいます。

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

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

のどちらかをやればおk。
0423nobodyさん2006/10/29(日) 22:44:24ID:???
>>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にした方がいいと思うよ
04244142006/10/29(日) 23:10:30ID: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ですか。
ちょっと勉強してみます。
0425nobodyさん2006/10/29(日) 23:20:57ID:???
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{ }

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

>>487
Bでシェルから結果を受け取るスクリプトを置いて
AからBのそのスクリプトのURLをリクエストして
レスポンスを取得するようにすればいい
04924862006/10/30(月) 23:41:30ID: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);
こんな感じです。正規表現にマッチした語句の抜き出し方が、よく
わからないのでして。。。お教えいただければ、ありがたいです。
0493nobodyさん2006/10/30(月) 23:44:13ID:???
file関数使ったほうがいいんじゃないか。
04944872006/10/30(月) 23:45:47ID:???
>>491
レスありがとうございます<(_ _)>

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

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

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

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

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

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

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

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

$text ="あいうえおアイウァィゥェォガギグパピプヴァヶさしすせそ";
echo "$text<br>";
mb_regex_encoding("sjis");
if(mb_ereg("[ヲ-゚ァ-ヶ]+", $text,$str)) {
var_dump($str);
}
0508nobodyさん2006/10/31(火) 07:42:01ID:???
皆真面目なのに、ほのかにえっちなスレですね
0509nobodyさん2006/10/31(火) 08:04:06ID: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
0510nobodyさん2006/10/31(火) 08:11:52ID:???
>>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];
0511nobodyさん2006/10/31(火) 08:16:31ID:???
$fp = fopen("test.csv", "r");
$i = 0;
while (($line = fgetcsv($fp, 1000, ',')) !== FALSE) {
$lines[$i] = $line;
$i++;
}
fclose($fp);

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

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

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

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



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

get_declared_classesを使ったら、
すごいたくさんクラスが出てきて困っています。
05244832006/10/31(火) 13:20:33ID:tsMd/rxy
>>483
ありがとう神。出来ました。
0525nobodyさん2006/10/31(火) 13:21:46ID: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");
0526nobodyさん2006/10/31(火) 13:24:33ID:???
>>523
この関数は、カレントのスクリプトで宣言されたクラスの名前の配列を 返します。
って書いてあるけど。
0527nobodyさん2006/10/31(火) 13:31:16ID:???
すいません。PHPからLinuxのシステムへsambaユーザーの追加を
行いたいのですが、パスワード入力の部分で対話になってしまい
これをどの様に処理していいのか解らず、どなたかご存知の方
おりましたらアドバイス頂けると助かります。(>_<;
0528nobodyさん2006/10/31(火) 14:32:33ID:???
>>527
expect が使えるのならそれを使う
php 側は expect コマンドを使ったシェルスクリプトを実行するようにする

expect が使えないのなら、あきらめたほうがいいかも
0529nobodyさん2006/10/31(火) 14:56:34ID:???
>>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
05305272006/10/31(火) 14:59:00ID:???
>>528
>expect が使えないのなら、あきらめたほうがいいかも

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

>>531

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

>>532

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

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

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

>libexpect version >= 5.43.0

はぁ…よく解らない…

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

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

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

まぁ、鯖の時計はちゃんと合わせとけよ
0547nobodyさん2006/10/31(火) 22:37:34ID:???
ログファイルの容量が問題になるほど切迫しているわけでもないなら
両方やっとけばいいがな(´・ω・`)
0548nobodyさん2006/10/31(火) 22:41:36ID:???
>>541>>544
「妥当」というのは目的に合致しているかで判断される。
キミの質問にはその「目的」が書かれていないので判断のしようがない。
0549nobodyさん2006/10/31(火) 22:54:25ID: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でも上手い事出来る気がしないでもないのです…
どなたかエロイ人へるぷみ〜
0550nobodyさん2006/10/31(火) 22:59:00ID:???
テーブルってDB?
05515412006/10/31(火) 22:59:30ID:???
失礼いたしました、最初にちゃんと説明するべきですね。
あるページのアクセスログを一日単位で集計して、
そのアクセス数のよって企業からお金を頂く仕組みでございます。
ですので、23:59から0:00の間がきっちりやりたいと思っております。
アクセス数を日別に集計したファイルと、アクセスログを提出するのですが、
秒までいれるべきか迷ってしまいました。

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

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

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

この部分のコードを参照していただきたいのですが、
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);
0559nobodyさん2006/10/31(火) 23:29:58ID:???
$stringは23:59:59なんだから当然23:59:59と書き込まれる。
ただし$fileが23:59:59に正しく対応したものであるかどうかは別の問題だな。
0560nobodyさん2006/10/31(火) 23:30:11ID:???
>>541
Webでのアクセスの場合、通信経路によって2秒や3秒ずれることはあるわけで、
結局、取引先に通知すべきなのはログとしてカウントされた時刻でしかない。
どこで線引きをするかを指定しされているわけでなく、どうしても気になるなら先方に聞け。

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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 "数値以外はダメ。";
}
とするか、どちらがいいでしょうか?同じですかね?
0605nobodyさん2006/11/01(水) 15:11:09ID:???
>>604
後者の場合、"数値以外はダメ。"と言うにはifがたくさん必要じゃね?
0606nobodyさん2006/11/01(水) 15:13:28ID:???
>>604
後者で、最後を「1か2以外はダメよ」にすれば?
つか自分の見やすい方にすれ。
0607nobodyさん2006/11/01(水) 15:22:36ID:???
switch使えとは誰も言わないのね
0608nobodyさん2006/11/01(水) 15:42:43ID:???
>>607
どちらが?と聞いてるからね
0609nobodyさん2006/11/01(水) 15:56:40ID:???
多少の拡張性を意識するなら、
$data = array(1 => '1です。', 2 => '2です。');
みたいな配列用意しとけば、許容される数値かどうかの判定はif一発で済むし、後々DB導入したとしても変更が楽かも。
0610nobodyさん2006/11/01(水) 16:09:45ID:???
質問です。Shift_JISで
echo "表";
と表示させようとするとエラーが出てしまいます。
stripslashesを使用しても無理でした。
どのようにしたらちゃんと表示されるのでしょうか?
0611nobodyさん2006/11/01(水) 16:11:27ID:???
>>610
Shift_JISをやめるのが一番の近道。
06126102006/11/01(水) 16:17:50ID:???
<?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・ム・」
なんでだろう。。。。
0613nobodyさん2006/11/01(水) 16:30:37ID:???
>>610
echo "\表";
0614nobodyさん2006/11/01(水) 16:32:06ID:???
>>612
内部エンコーディングがSJISというオチかな?
0615nobodyさん2006/11/01(水) 16:32:10ID:???
>>612
ところでそれのどこがPHPと関係あるんだ?
06166122006/11/01(水) 16:32:15ID:???
ブラウザでページを移動するときにその前のページがEUC-JP以外だと文字化けしてしまうようです。
ためしにEUC-JPのページをお気に入りに入れてブラウザの起動と同時に表示させたら、大丈夫でした。

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

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

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

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

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

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

セッションはクッキーと違って「一部を相手が受け取らなかった」という
心配をする必要がないので、$_SESSIONを使ってシームレスに扱える。
06766462006/11/02(木) 12:28:33ID:ObNxAJOw
皆様、回答ありがとうございます。回答をいただいておいてなんですが、
質問間違えていて申し訳ないです、
正しくは、最後の1文が、
「どのようにしたらhttp://localhost/ex/henko.phpにジャンプするようになるでしょうか?」
です。すいません。
0677nobodyさん2006/11/02(木) 12:33:19ID:???
>>676
てねえうぜーんだよ
ttp://www.tohoho-web.com/wwwbeg5.htm
06786462006/11/02(木) 12:45:36ID:ObNxAJOw
ありがとうございます。
0679nobodyさん2006/11/02(木) 13:53:44ID:???
>>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. クライアントのブラウザが処理
0680nobodyさん2006/11/02(木) 14:51:27ID:???
配列で
ARRAY {
 [0] = NULL
 [1] = NULL
 [2] = NULL
 [3] = hoge
}
の時、[3]のhoge以外は取り除くもしくは[3]のみ別配列に入れる事は可能でしょうか?
この場合、hogeは[3]にあるとは限らないので([1]かもしれないし、[10]かもしれません)
やり方に困っております
0681nobodyさん2006/11/02(木) 14:56:32ID:???
>>680
$newarray = preg_grep('/./', $array);
ただしこのやり方だと '' と NULL は区別できないけど。
0682nobodyさん2006/11/02(木) 14:58:11ID:???
foreachの中にforeachってできないんですか??
やってみたのですがうまく動きません…
0683nobodyさん2006/11/02(木) 15:04:36ID:???
>>682
> foreachの中にforeachってできないんですか??
できる。

> やってみたのですがうまく動きません…
どう書いたのかちょっと見せてみ。
0684nobodyさん2006/11/02(木) 15:07:14ID:???
foreach($data as $data_arr) {
 foreach($boo as $boo_arr) {
  if($data_arr == $boo_arr) {
   $log[] = $data_arr;
  }
 }
}
0685nobodyさん2006/11/02(木) 15:10:32ID:???
>>684
特に変なところは無いと思うが…これで動かなかったのか?
どういう結果になることを期待したんだろ。
0686nobodyさん2006/11/02(木) 15:27:55ID:???
俺のエスパー的解読によると、
二回目のforeachのifの中の最後にbreak;しないと同じ値のデータが大量にできちゃうんじゃまいか?
どういう結果を求めてるか知らんけどな。
0687nobodyさん2006/11/02(木) 15:28:32ID:???
>>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;
  }
です
06886702006/11/02(木) 15:33:26ID:???
>>674
そうだよね。
ありがとう。
0689nobodyさん2006/11/02(木) 15:34:05ID:???
>>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)
}
06906872006/11/02(木) 15:39:12ID:???
度々の言葉足らず申し訳ないです。。
$dataは
ARRAY{
[0] ARRAY{
[num] = 1
[name]= satou
}
[1] ARRAY{.....}
と多重連想配列(?)になっています
0691nobodyさん2006/11/02(木) 15:46:16ID:???
>>690
実際にうまくいかないデータを出さないと多分分からん。
プログラム側じゃなくデータ側に問題あるんじゃないの?
0692nobodyさん2006/11/02(木) 15:49:46ID:???
>>687
> 正しくは
> if($data_arr[num] == $boo_arr) {
だったら多分
>    $log[] = $data_arr;
は
   $log[] = $data_arr['num'];
だろう
0693nobodyさん2006/11/02(木) 16:00:42ID:???
<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という本でアップローダー作ってるんですが、
上記のプログラムだと画像しかアップロードできず、
動画はアップロード出来ません。どこが問題でしょうか?
0694nobodyさん2006/11/02(木) 16:04:08ID:???
>>693
プログラム的には問題は見受けられない。
1.ファイルサイズがアップロード可能な上限を超えている
2.確認方法が間違っている
のどっちかじゃない?
0695nobodyさん2006/11/02(木) 16:15:12ID:???
ファイルサイズなどは特に明記もなく、
本のサンプルファイルをそのまま弄らずに使って確認してみたんですが、
画像だけアップロード指定先のフォルダにコピーされ、
動画だとアップロードのボタンを押したあと、永遠に何か処理しているような
感じでメーターだけ動くんですが、アップロード完了の画面が出たあと、
アップロード指定先のフォルダには何にも表示されないんです。
(指定先は画像と同じです。)
0696nobodyさん2006/11/02(木) 16:18:21ID:???
>>695
phpの設定のアップロードファイルサイズの限界を超えてるんじゃないの
0697nobodyさん2006/11/02(木) 16:21:37ID:???
>>695
PHPはデフォルトだと2MBまでしかアップロードできないよう
制限がかかってるよ。
0698nobodyさん2006/11/02(木) 16:44:42ID:???
なるほど。そうでしたか。ありがとうございます。
その設定、弄ってみます。
0699nobodyさん2006/11/02(木) 17:51:17ID:???
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
0700nobodyさん2006/11/02(木) 17:59:59ID:???
$_FILES['upfile']['error']が1ってのはupload_max_filesizeを超えてるってエラー
php.iniちゃんと読み込まれてるか?phpinfoとかで確認した?
0701nobodyさん2006/11/02(木) 18:01:14ID:???
>>699
memory_limit > post_max_size > upload_max_filesize

それぞれの設定の意味はマニュアルを読んでもらうとして、memory_limitはどうなってる?
0702nobodyさん2006/11/02(木) 18:12:25ID:???
あれ?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なんですが、
なぜ、反映されてないんでしょうか?
0703nobodyさん2006/11/02(木) 18:25:37ID:???
$_SESSION = NULL
ってやばいですか?
できればデストロイせず、初期化したいのですが…
0704nobodyさん2006/11/02(木) 19:26:28ID:y5JIMR69
自サイトのデータをArchive_Zipで圧縮してバックアップしているのですが、
FTPソフトでWindowsにDLして解凍するとアイコンがおかしくなってます。

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

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

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

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

想像しちまっただろうがwwwwwwww
0716nobodyさん2006/11/02(木) 22:59:07ID:???
はいはいおもしろくない。
はい、次の質問どうぞ
0717nobodyさん2006/11/02(木) 23:17:55ID:???
数行のログを横4縦∞のテーブルに
1行1セルの形で入れたいと思ってます
4行ずつ処理していけばいいと思うのですがどう書けばいいか分かりません
エスパーたんお願いします
0718nobodyさん2006/11/02(木) 23:18:25ID:???
>>707
仕様です。
0719nobodyさん2006/11/02(木) 23:33:10ID:???
>>717
カチカチ鳴る定規使え。まだ持ってないならすぐ買いに行け。
0720nobodyさん2006/11/02(木) 23:51:12ID:???
きみがわからなくてもおれはこまらない
0721nobodyさん2006/11/02(木) 23:58:11ID:???
>>717
1.横に延々と並べるのを書く
2.適当な所で折り返す方法を考える
3.実装
0722nobodyさん2006/11/03(金) 00:06:53ID:???
>>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>を入れる。
> あとは例外処理だけ
0723nobodyさん2006/11/03(金) 00:27:32ID:???
>>719-722
ありがとうございます
それらを元に作ってみたいと思います
0724nobodyさん2006/11/03(金) 01:34:47ID: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);
07257242006/11/03(金) 01:37:46ID:???
すいません無駄なコードとコメントはぶきました。


#index.phpの中身

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

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

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

#index.phpの中身

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

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

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

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


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

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

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

また、こういうエラーの一覧表はマニュアルに載ってないのですが
どこかに参考となるサイトはございませんか?
0740nobodyさん2006/11/03(金) 10:02:23ID:???
dirは定義済み
0741nobodyさん2006/11/03(金) 10:07:49ID:???
>>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行目で既に定義されています。

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

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

dir()

function dir(){


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

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

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

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

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

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

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

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

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

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

5.1.7でphp.iniが見付けられないのはバグだそうです。
修正されているか解りませんが、5.2.0を入れる事をお勧めします。
0755nobodyさん2006/11/03(金) 11:43:03ID:???
先月5.2いれたけど、たいして気にすることでもないかな。
0756nobodyさん2006/11/03(金) 11:43:05ID:???
5.1.7?
0757nobodyさん2006/11/03(金) 11:46:43ID:???
5.1.2でした。
0758nobodyさん2006/11/03(金) 12:01:13ID:???
>>754
自己解決しているみたいなんだが・・・
0759nobodyさん2006/11/03(金) 12:05:48ID:???
php6は試した人いないの?
0760nobodyさん2006/11/03(金) 12:29:29ID: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ではなくほかの書き方がございましたら
ご教授お願いいたします。
07617612006/11/03(金) 12:40:11ID:???
自己解決しました。
↑のパスの書き方で問題なく動きます。
0762nobodyさん2006/11/03(金) 12:57:15ID:???
コードは適当なんですが
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を作らずに無名関数のような感じで実現することは出来ませんでしょうか。
0763nobodyさん2006/11/03(金) 13:02:41ID:???
>>762
>  foreach ($dir_list as $list) {
で使ってる配列と
>   $dir_list($list);
生成関数とで同じ変数名がバッティングしてるよ。
0764nobodyさん2006/11/03(金) 13:06:01ID:???
>>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でも何とかできる。
0765nobodyさん2006/11/03(金) 13:10:17ID:???
実行エラーでバイナリ落ちそうなコードだな
0766nobodyさん2006/11/03(金) 13:31:45ID:8kaP0u+9
perlでできてphpでできないことって何ですか?
最近perlもやっとかないと時代についていけない気がして・・・
0767nobodyさん2006/11/03(金) 13:56:23ID:???
セッションIDでログインするにはどうしたらいいんですか?
0768nobodyさん2006/11/03(金) 14:09:24ID:???
そんなことしてどうする?
セッションID毎にパスワードを設定するのか?
0769nobodyさん2006/11/03(金) 14:11:06ID:???
>>766
そんな状態で始めたとしても、PHPもPerl使いこなせず意味がないと思われ
どっちか1つを真面目に勉強するんだ。

>>767
セッションの使い方を聞いているのか?
マニュアル読んで分からない事だけもっかい聞きに来い
0770nobodyさん2006/11/03(金) 14:18:42ID:???
>>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
0771nobodyさん2006/11/03(金) 14:29:30ID:9FoSTEPm
AとBの2つのページがあって、
Aのページで認証を通さないとBに進めないということをやりたいのですが、
特に細工しないと、BのURLを直接打ち込むとBが見えてしまいますよね?
今まではSwitchで分けてたのですが、
ソースがごちゃごちゃになるので分離したいと考えています。
どのような処理をしたら、Aからの認証のみでBに行けるようになるのでしょうか?
ヒントだけでもいただけたらありがたいです。
宜しくお願いします。
0772nobodyさん2006/11/03(金) 14:30:53ID:???
http://pc8.2ch.net/test/read.cgi/php/1064399467/643
643 名前:nobodyさん [] 投稿日:2006/11/03(金) 13:21:11 ID:QUVcMJYR
そもそも、セッションIDがばれたら何が怖いんですか?
どこをどうされてログインされるんですか?

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

$cool = "E_RECOVERABLE_ERROR ";
if (isset($cool) == "cool") {
 echo "E_RECOVERABLE_ERROR はクールを使ってます";
}else{
 echo "クールと勘違いしてます";
}
exit;
0835nobodyさん2006/11/04(土) 10:30:11ID:???
>>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
0836nobodyさん2006/11/04(土) 11:02:35ID:???
>>835
宿題ならここで人に聞いちゃダメだろ
0837nobodyさん2006/11/04(土) 11:04:34ID:???
>>835
おいおい同じような宿題やってるが同じクラスメイトか?
0838nobodyさん2006/11/04(土) 11:08:41ID:???
お前ら付き合っちゃえよ
0839nobodyさん2006/11/04(土) 11:10:18ID:+mcy38xB
すいません、サーバ環境と開発環境は分けてますか?

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

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

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

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

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

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

絶対パスが必要なものとか
URLが必要なものとか
0852nobodyさん2006/11/04(土) 12:01:28ID:???
>>850
使わないものまで無闇になんでもかんでも定義しない。
ってだけ。コンパイル型の言語じゃない以上、それが結論かと。
08538392006/11/04(土) 12:27:42ID:???
貴重なレスありがとうございました。
せっかくだからlinuxに移ろうかと思います。
ご協力ぁりがとうございます
0854nobodyさん2006/11/04(土) 12:51:15ID:???
>>852
たまに100以上ものエラーメッセージを全部define定義してる人いるよね
0855nobodyさん2006/11/04(土) 13:07:49ID:???
国際化のためにdefineや巨大配列でテキストを外出ししてるケースは結構あるよ。
やっぱgettextのほうが速いのかな。
0856nobodyさん2006/11/04(土) 13:12:20ID:???
大規模なサイトを運営しているケースで
クライアントが入力した値をデータベースに書き込む場合、
データを壊さないためにもロックをかけて処理を行うことが無難でしょうか?
0857nobodyさん2006/11/04(土) 13:15:09ID:???
ttp://blog.poyo.jp/archives.php/categ-1/year-2006/month-4/id-1145244732
0858nobodyさん2006/11/04(土) 13:16:34ID:???
>>854
でもdefiner使わずに連想配列に突っ込んでも同じなんでしょ?
0859nobodyさん2006/11/04(土) 13:18:09ID:???
>>856
RDBMSにおけるロックの機能を勘違いしてるように思える。
データ間に不整合が出るケースはロックしないとそりゃダメだし(規模関係ない)、
そうでないならロックなどする必要はない。(これも規模関係ない)
というか、そういう話はデータベース板で聞いた方がいいと思うよ。
0860nobodyさん2006/11/04(土) 13:19:24ID:???
>>858
だから事前定義がダメなんだってば。
効率を意識するなら必要時に取得する方法が賢明。
0861nobodyさん2006/11/04(土) 13:26:06ID:???
>>859
ありがとうございました。データベース板で聞いてきます。
0862nobodyさん2006/11/04(土) 13:46:27ID: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";
?>
0863nobodyさん2006/11/04(土) 14:36:07ID:???
>>858
同じじゃない段違い
0864nobodyさん2006/11/04(土) 14:39:34ID:???
>>862
$bodyをエコーすればHTTPエラーが返ってきてるはずだが
0865nobodyさん2006/11/04(土) 14:42:37ID:???
その程度の用途ならHTMLにフォームを書いてしまえってのは禁句ですか?
0866nobodyさん2006/11/04(土) 14:42:53ID: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
ようなことがしたいんです。

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

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

Content-lengthが実際のデータ長より2バイト短い
0871nobodyさん2006/11/04(土) 14:58:58ID: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
0872nobodyさん2006/11/04(土) 15:02:15ID:e0EPAzx7
>>867
>>868
ありがとうございます。やはりphp5でないと無理ですか…。
0873nobodyさん2006/11/04(土) 15:02:43ID:???
>>869
あと、相対パスでPOST
0874nobodyさん2006/11/04(土) 15:14:53ID:UuLfn9RK
>>873
思ったんですけど、このスクリプトでレンタルブログ(ココログ)などにトラックバック
って送れないですよね?
0875nobodyさん2006/11/04(土) 16:14:05ID:Z4GrE+jA
PHP で処理系に使われている文字コードを取得するにはどうしたらいいでしょうか?
環境の都合で i18n_loc_get_default は使えそうに無いです.

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

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

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

普通に$_GETとしても取得できませんし、$_GET[]とやるとエラーがでます。
どなたかアドバイスお願いいたします。
0883nobodyさん2006/11/04(土) 17:55:33ID:???
重箱の隅突付く程度のパフォーマンス知識自慢はもうウンザリ
0884nobodyさん2006/11/04(土) 17:58:02ID:???
>>882
$_SERVER['QUERY_STRING']
>>883
まぁ、元々の質問がAPC関連=PHPのパフォーマンスに不満のある人、の場合だし
08858752006/11/04(土) 18:05:17ID:Z4GrE+jA
>>879
スクリプトを変換した EXE にファイルを D&D する程度なんで
ユーザに入力を求めるのは少し不自然かもしれないです.
けどほかに考え付かないので使ってみようかな.
0886nobodyさん2006/11/04(土) 18:12:54ID:???
>>885
どっちかっつーとWindowsAPIな話の気がするんだが…
0887nobodyさん2006/11/04(土) 18:23:47ID:???
>>885
ファイル受け取ってどうこうするんだったらその中身調べて
キャラクタセットをdetectするのが妥当じゃないのか?
0888nobodyさん2006/11/04(土) 18:25:40ID:???
おれは、Dungeons&Dragonsかとオモタ
0889nobodyさん2006/11/04(土) 18:28:00ID: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 アドレスバーは
http://test/test1.php となってともに not found です。
0890nobodyさん2006/11/04(土) 18:36:05ID:???
>>887
中身がテキストだなんて誰も書いてないと思う
0891nobodyさん2006/11/04(土) 18:39:21ID:???
>>889
> を指定すると <print>文では、localhost//test/test.php と正しく表示されるのですが
ホスト名とパスの間が「//」なのは全然正しくないと思う。

> $thisfile = $_SERVER["PHP_SELF"];
> だけだと、<print>文表示は //test/test.php
なんかApacheの動作が変だと思う。再インストールしてダメならバージョン変えてみては?
0892nobodyさん2006/11/04(土) 18:42:34ID:???
>>889
> アドレスバーの表示は http://localhost//test/localhost//test/test.php となって
元々の呼び出し方自体がおかしいんじゃないの?
http://localhost/test/test.phpで実行したらちゃんと動かないか?
ちなみに通常は$_SERVER["PHP_SELF"]だけでOK。
$_SERVER["SERVER_NAME"]もつけてフルURLにするなら頭にhttp://も足さなきゃダメ。
0893nobodyさん2006/11/04(土) 18:42:49ID:Z9X2uAOu
>>891
ありがとうございます。Apache 側の設定の問題でしたかっ!
Apache の設定の方を調べてみます
0894nobodyさん2006/11/04(土) 18:47:42ID:Z9X2uAOu
>>892
http://localhost/test/test.php で動作します。
http://localhost//test/test.php アドレスバーに打ち込んでも
表示されるので、これでもよいのか?と...(汗)すみません...
0895nobodyさん2006/11/04(土) 20:42:43ID:???
>>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;
}
0896nobodyさん 2006/11/04(土) 20:42:46ID: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()を
使った場合どのように記述すれば良いのかわかりません。
よろしければ、お教え願えませんか?
0897nobodyさん2006/11/04(土) 21:03:06ID:???
$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"; 
} 
0898nobodyさん 2006/11/04(土) 21:35:36ID:DqH0rqVh
>>897
なるほど。ありがとうございました。
あと、file_get_contents()を使う場合は配列に読み込むわけでは
ないですよね?それで、foreachを使わずにするために、fileでは
なく、file_get_contents()はどうかと思ったんですが、他の記述
方法はないでしょうか?
0899nobodyさん2006/11/04(土) 21:41:16ID:???
foreachを何で使いたくないの? forならいいの?
0900nobodyさん2006/11/04(土) 21:55:48ID:???
>>898
ようするにループでやらずに行番号付けたいってこと?
そうなると改行コードを置換とかしないといけないと思うけど、
連番付けながら置換ってちょっと面倒くさいよ?
なんでわざわざループが必要な処理をループ使わないでやりたいなんて思うのさ。
0901nobodyさん2006/11/04(土) 21:59:54ID:???
下らない質問で申し訳ありません。

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



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

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

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

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

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

いまいち何がしたいのかわからんけど
0907nobodyさん2006/11/04(土) 23:01:58ID:???
>>905
echo file_get_contents("URL");
というか、おまえサンプルのソースの内容を全く把握できてないだろう。
09088982006/11/04(土) 23:06:09ID:DqH0rqVh
みなさまありがとうございました。
もう少し建設的なやりとりを交わせるようにがんばります。
0909nobodyさん2006/11/05(日) 00:07:28ID: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にファイルハンドルが入るかわかる方いますか?
0910nobodyさん2006/11/05(日) 00:14:46ID:???
>>905
<?php
readfile('http://www.yahoo.co.jp');
?>
0911nobodyさん2006/11/05(日) 00:15:22ID:???
なあ、eAcceleratorって5.2で動かしてるひといる?



0912nobodyさん2006/11/05(日) 00:39:08ID:???
>>909
ファイルハンドラを保存できてんの?
保存したコード解らんからなんとも言えんけど
09139092006/11/05(日) 00:47:00ID: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];
}
0914nobodyさん2006/11/05(日) 01:02:22ID:ByyhjYSA
すいません、10円ハゲを隠すコードのサンプルか何か書いてもらえますか?
10円 ハゲ PHP エロス
辺りでググッたのですが見つかりません。
0915nobodyさん2006/11/05(日) 01:29:17ID:???
hiddenで隠すやつは素人
セッションで隠すやつは玄人
09169092006/11/05(日) 01:47:57ID:bwOCiosn
試しにスクリプト自身ではなく、5MBくらいのファイルを913のコードで保存しようとすると、エラーメッセージで、
MySQL server has gone away
(MySQLサーバーが消えました???)
と言われます。
もう何かPDOでLOB扱うのは諦めるかもしれません。
他にMySQLでファイルを保存する方法にはどんなものがありますか?
0917nobodyさん2006/11/05(日) 02:24:39ID:???
mysql_query("insert into file_table values( $id, $file ) );
0918nobodyさん2006/11/05(日) 03:37:58ID:???
>>869
> 今、トラックバックスパムではないんですが、トラックバックを一度で複数送る研究を・・・
それがトラックバックスパムなんです。研究だろうと何だろうと。

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

×バグ
△仕様
○未実装

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

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

つづく

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

でもいいんじゃないの
0981nobodyさん2006/11/06(月) 16:56:34ID:???
次スレマダー
0982nobodyさん2006/11/06(月) 17:15:44ID:???
>>979
DB板で聞けやーって感じだが
count(*)の方がずっと速い。
行数が極端に少なければ差が出ないかも。
0983nobodyさん2006/11/06(月) 17:21:15ID:???
<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で表示してしまいます。
考えられる原因は何でしょうか?
0984nobodyさん2006/11/06(月) 17:27:45ID:???
ぎゃああああああああああああ
php.iniのdefault_charset変えたら行けました。
死んできます。
0985nobodyさん2006/11/06(月) 17:32:19ID:???
そこまでびびらなくても。
0986nobodyさん2006/11/06(月) 17:55:24ID:L/507IWY
携帯無料サイトなどによくある空メール機能を作りたいのですが、
メールフォームを使えば楽なのですが、携帯利用者にとって
自分のメールアドレスを打つのはご法度だと考えております。
どなたかアドバイスお願いいたします。
0987nobodyさん2006/11/06(月) 18:27:27ID:???
mailtoのリンクを用意すればいいだけだろ?
0988nobodyさん2006/11/06(月) 19:03:02ID:???
ワロタ
0989nobodyさん2006/11/06(月) 19:14:25ID:???
>>987のバカさ加減にあきれたのでおれが>>986に答えてやる。

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

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

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

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

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

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

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

For ever you!!!1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。