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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/10/05(木) 01:38:25ID:y1WWhz/p
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0689nobodyさん2006/10/19(木) 14:06:42ID:???
>>688
> バイナリー形式で送られてきた
ってのは具体的にどっからどういう風に送られてきたものなの?
0690nobodyさん2006/10/19(木) 14:08:05ID:???
>>688
とりあえずぐぐれや
http://www.google.co.jp/search?sourceid=navclient-ff&ie=UTF-8&rls=GGGL,GGGL:2006-18,GGGL:ja&q=PHP+%E7%94%BB%E5%83%8F+%E8%A1%A8%E7%A4%BA
0691nobodyさん2006/10/19(木) 18:04:54ID:RDYn6fyD
phpスクリプトの配布を予定しているのですが、
文字コードは何で保存しておくべきでしょうか?

たいていの配布サイトを覗いてみたのですが、
明確にされておりませんでした。
それぞれの文字コードで別々に公開するのがベターでしょうか?
0692nobodyさん2006/10/19(木) 18:17:27ID:???
やっぱりUTF-8じゃないの?
(個人的にはあまりすきじゃないんだが)

Unicode対応しておけば朝鮮人とか中国人にも使ってもらえるわけだしし。
0693nobodyさん2006/10/19(木) 18:18:17ID:???
ISO-8859-1
マルチバイトが入るならUTF-8
0694nobodyさん2006/10/19(木) 18:22:03ID:???
俺は朝鮮人や中国人には使ってもらいたくないので、EUC-JPでいくぜ。
0695nobodyさん2006/10/19(木) 18:25:56ID:???
UTF-8はアクセス激しいとこだと転送量が損だよね?
0696nobodyさん2006/10/19(木) 18:38:36ID:???
その転送量の問題ってのは
中国人とか朝鮮人が大勢アクセスしてくるから損って言う意味?
それとも一文字三バイトだから、って話?
0697nobodyさん2006/10/19(木) 18:40:24ID:???
普通に考えれば後者だと思うけど、
テキストの転送量が問題になるようなサーバなんてこの世にあるのか?w
0698nobodyさん2006/10/19(木) 18:49:19ID:???
あ、後者の意味ね
2chはUTF-8じゃないけど転送量のことで閉鎖しかけたじゃん
それは確かgzipで解決したけど転送量が問題になることは無きにしも非ず
まぁ普通は気にしないか
0699nobodyさん2006/10/19(木) 18:55:09ID:???
配列を分割するいい方法ありませんか?
たとえば、
ほげほげtoはげはげ で
to以前と以後を分けたいんです。
0700nobodyさん2006/10/19(木) 19:20:14ID:???
>>699
それは配列なのか?文字列なのか?どっちだこのヤロー
0701nobodyさん2006/10/19(木) 19:23:14ID:???
>>699
配列を? どう見てもその例は配列には見えんが…。
それとも配列に、か?
0702nobodyさん2006/10/19(木) 19:32:05ID:???
ありがとうございます。
いろんな方にさわってもらいたいのでEUC-JPとShift-JSとUTF-8で
それぞれ用意して配布しようと思います。
0703nobodyさん2006/10/19(木) 19:35:11ID:???
>>699
explode関数
0704nobodyさん2006/10/19(木) 19:39:29ID:RDYn6fyD
2chに書き込むとき、クッキーがないときに表示される画面がありますよね。
このときデータを改ざんして、『名無し』『sage』『あああ』を書き換えることに対しては
対策されているかと思います。
hiddenから受け取ったデータをそのままログに書き込んでいるとは思えないのですが、
どのようにしてデータを受け渡して書き込んでいるか推測してください。

<form method=POST action="../test/bbs.cgi">
<input type=hidden name=subject value="">
<input TYPE=hidden NAME=FROM value="名無し">
<input TYPE=hidden NAME=mail value="sage">
<input type=hidden name=MESSAGE value="あああ">
</ul>
<input type=hidden name=bbs value=php>
<input type=hidden name=time value=1161249710>
<input type=hidden name=key value=1094842959>
<input type=hidden name="hana" value="mogera">
<input type=submit value="上記全てを承諾して書き込む" name="submit">
</form>
07057042006/10/19(木) 19:42:30ID:RDYn6fyD
>>703のコードは書込み確認画面よりFORM部分のみ抜粋いたしました。
2chなのでperlスクリプトに埋め込まれたものですが、
phpとしてお考えいただけると助かります。
0706nobodyさん2006/10/19(木) 19:45:08ID:D9BD7psJ
>>669
$a = "ほげほげtoはげはげ"; 
$b = explode("to",$a);

$b[0]は、ほげほげ
$b[1]は、はげはげ
0707nobodyさん2006/10/19(木) 19:48:52ID:???
>>704
…お前は何がしたいんだ?
0708nobodyさん2006/10/19(木) 19:53:38ID:???
>>704
推測して下さいってなんだよ
自分でソース探せ馬鹿野郎
0709nobodyさん2006/10/19(木) 19:55:27ID:???
>>704
セッション使ってるんじゃないかな?
あ、でもhiddenを使う意味がなくなるか。
0710nobodyさん2006/10/19(木) 20:26:38ID:???
小文字の片仮名を大文字にしたいのですがまとめてする方法はないでしょうか?
今はereg_replaceでァからォまで1行ずつ書いているんですけど・・
0711nobodyさん2006/10/19(木) 20:54:24ID:???
$result = str_replace(array('ぁ','ぃ','ぅ','ぇ','ぉ','ゎ'), array('あ','い','う','え','お','わ'), $str);

あっ片仮名か。
0712nobodyさん2006/10/19(木) 20:56:06ID:N/IEl6YX
>>710
それでいいんじゃない
0713nobodyさん2006/10/19(木) 21:05:17ID:???
>>704
keyとtimeがあんじゃん
0714nobodyさん2006/10/19(木) 21:26:43ID:RDYn6fyD
<form action="" method="post">
なまえ
<input type="text" name="name">
<input type="submit">
</form>

上記のコードをブラウザから実行して、名前を入力した場合、
値は$_POST['name']でとれますが、
この値はクライアントに保存されているのでしょうか?
それともサーバに保存されているのでしょうか?
0715nobodyさん2006/10/19(木) 21:28:35ID:???
電子の粒としてWebを彷徨ってる
0716nobodyさん2006/10/19(木) 21:29:31ID:???
どこにも保存されませんよ。
鏡を見ながら、おでこにマジックでメモッて保存してください。
0717nobodyさん2006/10/19(木) 21:32:38ID:???
保存されているかどうか、「戻る」を実行してみなよ。
0718nobodyさん2006/10/19(木) 23:23:00ID:34r0Z/Nk
エクステンションをコンパイルってどういうことでしょうか?
レンタルサーバなんですが。
0719nobodyさん2006/10/19(木) 23:30:54ID:???
カモーンえすぱああああぁぁぁぁあ!!
0720nobodyさん2006/10/19(木) 23:42:58ID:???
>>718
マニュアル嫁
http://www.php.net/manual/ja/install.pecl.php

「コンパイル」の意味がわからないならぐぐれ
0721nobodyさん2006/10/20(金) 00:17:25ID:???
>>718
うっぷんはここでさらせ
ttp://pc8.2ch.net/test/read.cgi/php/1158647441/l50
0722nobodyさん2006/10/20(金) 06:29:42ID:nmqka2TX
□example
├□foo
└index.php
□はフォルダです。

index.php内に以下のようにしてもfoo内のファイル名の取得ができずに、
exampleフォルダ内のファイル名が取得されてしまいます。
どこが間違っているのでしょうか?

$dir = opendir("foo");
while(($fname = readdir($dir)) !== false){
〜〜
}
0723nobodyさん2006/10/20(金) 09:26:42ID:???
>>722
ファルダの属性を変えてみろ。
0724nobodyさん2006/10/20(金) 10:18:01ID:???
すみません、ちょっと教えてください。

$x = (0.1 + 0.7) * 10;

echo $x."\n";

echo (int)$x."\n";

これを実行すると、

8
7

と表示されますが、なぜ最初に「8」が表示されるのか、理由がよくわかりません。

なぜでしょうか。

(例えばJavaScriptで同じ計算をすると「8」にはなりません)
0725nobodyさん2006/10/20(金) 10:34:38ID:???
初心者なんでわからんけど
0.8*10で8だとおかしいんでしょうか?

俺的には7が返ってくるほうが理由わかりません。
0726nobodyさん2006/10/20(金) 11:27:42ID:???
俺も「7」になるほうがおかしいと思うが。
0727nobodyさん2006/10/20(金) 11:36:13ID:???
浮動小数点の問題でしょ。
0.1とか0.7とかは正確に二進数浮動小数点では表現できないから誤差が出る。
PHPやPerlみたいに数値を文字でも表現するような言語では
そこで違った動きになるんじゃないかな。
07287222006/10/20(金) 11:58:57ID:+hAC6M3g
外出先からなのでIDが変わっています。

>>723
フォルダの属性はexample、foo共に777ですができません。
0729nobodyさん2006/10/20(金) 12:17:28ID:???
>>724
727の言うように「誤差は出るものである」って点はもっともなんだけど、ちょっと気になったので計算してみた。
IEEEのdoubleのフォーマットに従えば、最初に出現する1の次から52ケタ保持できるはず。
0.1(10進) = 0. 0 0011 0011 0011 ... 0011 001 (2進)
0.7(10進) = 0. 1 0110 0110 0110 ... 0110 (2進)
これで素直に足し算すると、
0.1(10進) + 0.7(10進) = 0. 1 1111 1111 1111 ... 1111 (2進)
で、内部表現のレベルでは0.8(10進)と偶然ながら一致する。

ただ、10(10進) = 1010(2進)を掛け算したときに、おそらく
111. 1111 1111 1111 ... 1101 (2進)
になると思うんだけど(掛け算の実際のアルゴリズムはよく知らないので、筆算でやったorz)、これは8(10進)の値よりもわずかに小さい。
ちなみに当たり前だけど、8(10進) = 1000. 0000 0000 0000 ... (2進)になる。
たぶん724の質問の仕方からすると、すでに緻密に計算した上での釣りのようにも見えるが、一応エスパー以外の人にも検証してもらえるように、俺なりに書いてみた。

問題は、111. 1111 1111 1111 ... 1101 (2進)は8とは内部表現レベルで一致しないのに、なぜPHPのechoは8と表示できたのかってことかと思う。
(int)をつけると、いわゆるfloorになるので、7になるのは納得できるけど。
たしかprintfの%gは10進での小数点以下6ケタ程度で四捨五入っぽかった気がするので、その関係ではないかと想像。
07307292006/10/20(金) 12:19:05ID:???
一部書き写し間違えたorz

× 0.1(10進) + 0.7(10進) = 0. 1 1111 1111 1111 ... 1111 (2進)
○ 0.1(10進) + 0.7(10進) = 0. 1 1001 1001 1001 ... 1001 (2進)
0731nobodyさん2006/10/20(金) 12:38:21ID:???
> たしかprintfの%gは10進での小数点以下6ケタ程度で四捨五入っぽかった気がするので、その関係ではないかと想像。

へぇぇぇ、面白!! 勉強になるなあ。

どうもありがとう。

(しかし、、おれんちのmanでprintf(3)がひけないのはなんでだろう・・・)
0732nobodyさん2006/10/20(金) 13:17:10ID:???
携帯から添付された画像ファイルを取得したいのですがどのようなやり方があるでしょうか?
0733nobodyさん2006/10/20(金) 13:59:27ID:???
>>732
いろんなやり方
0734nobodyさん2006/10/20(金) 14:06:49ID:???
>>732
.forwardやaliasesでメール受信からシェルスクリプトを自動起動して本文取り込み。
メール本文のマルチパートを分解→base64をデコードして画像ファイル取得。

サーバー設定がいじれなくてスクリプト自動起動が困難なら、
手動で任意、または数分おきに定期的にPOP3でメールを受信して以下同様。
0735nobodyさん2006/10/20(金) 15:05:37ID:???
>>734
ありがと

漏れにはムズいけどがんがる(・ω・)
0736nobodyさん2006/10/20(金) 18:54:20ID:QYiDpVQJ
daisuki
0737Name Not Found2006/10/20(金) 21:29:33ID:????2BP(0)
kotowaru!
0738nobodyさん2006/10/20(金) 22:43:08ID:CXNhs/e2
ファイルの先頭に文字列を追記したいのですが、
$FILE=fopen("〜〜","a+"); rewind($FILE);
とやってもうまくいきません。

どのような手段をとればよいのでしょうか。
お願いします。
0739nobodyさん2006/10/20(金) 23:26:50ID:???
動画をHPに置く予定なのですが、
たくさんアクセスがあった場合落ちる可能性を避けたいので
PHPでアクセス数によって振り分けたいのですが、
可能なのでしょうか、可能でしたら教えてください。
0740nobodyさん2006/10/20(金) 23:36:47ID:???
>>739
負荷を心配しているのに、高負荷時の対応のために、
さらに負荷かけてどうする・・・

Max Clientとか鯖のチューニングをすべ氏
0741nobodyさん2006/10/20(金) 23:43:00ID:???
質問の仕方が下手だと↑みたいなバカな回答しかつかないから注意してね^^;
0742nobodyさん2006/10/20(金) 23:43:07ID:???
>>739
「振り分ける」じゃ意味がわからん。
具体的に何をどうしたいのか書けバカ。
0743nobodyさん2006/10/21(土) 00:01:01ID:???
>>738
追記できるのは末尾だけ。
$fp = fopen("テンポラリファイル", "w");
fwrite($fp, "文字列" . file_get_contents("元ファイル"));
fclose($fp);
unlink("元ファイル")
rename("テンポラリファイル", "元ファイル");
みたいに、1度別のファイルに追記内容+元ファイルで吐き出して
その後、元ファイルにリネームで被せてやるしかないかと。
0744nobodyさん2006/10/21(土) 00:02:37ID:???
>>739
そういうのはPHPでやらずに、ロードバランサーとかの外部の機器を使います。
そもそもWEBサーバーに到達しちゃってる時点で振り分けても遅いです。
07457432006/10/21(土) 00:04:58ID:VQhvLI4X
>>738
わかりました。
すばやい対応ありがとうございます!
0746nobodyさん2006/10/21(土) 02:46:14ID:???
>>742って経験がないから経験から推測して判断して回答できないんだな。
0747nobodyさん2006/10/21(土) 02:55:34ID:???
で?っていう
0748nobodyさん2006/10/21(土) 03:28:22ID:???
極端な話、PHPで5分に1回しか動画にたどり着けないとかすれば
動画送信するぶんの負荷は減らせるだろうな。
0749nobodyさん2006/10/21(土) 03:44:16ID:???
はやいはなしapacheとlinuxを業者に頼んでカスタマイズしてもらえ。
0750nobodyさん2006/10/21(土) 08:09:33ID:???
> たくさんアクセスがあった場合落ちる可能性を避けたいので
> PHPでアクセス数によって振り分けたいのですが、

個人向けのレンタルサーバーでたまに月間の転送量の上限が決まってると個
があったりするけど、例えば「概算80%ぐらい転送量消費したところで
動画を配信しないようにしたいんだけど」とかいうことではないのだろうか?
0751nobodyさん2006/10/21(土) 09:23:10ID:???
>>746
バカかお前は。
質問の仕方を知らない>>739に教えてやってんだよボケ。
>>741と同意見だ。

もしやお前が>>739かな? だとしたら顔洗って出直してこいよチンカス。
0752nobodyさん2006/10/21(土) 09:29:07ID:???
(;^ω^)
0753nobodyさん2006/10/21(土) 09:33:17ID:???
誰か、このスレを和やかな雰囲気にしてくれる、
例のコピペ嵐のコピペをコピってくれるかな。
0754nobodyさん2006/10/21(土) 09:49:51ID:???
>>751 まあまあ気持ちはわかるが馬鹿は放置しる
0755nobodyさん2006/10/21(土) 10:32:51ID:???
連想配列のカッコ内の記述ってどうルール付けすればいいんでしょうか?
0756nobodyさん2006/10/21(土) 10:37:01ID:???
>>755
どういう意味?
0757nobodyさん2006/10/21(土) 11:21:23ID:???
ここのスレはいい人ばかりで大好きです。
ありがとう。
0758nobodyさん2006/10/21(土) 11:39:57ID:???
シングルクオーテーションで囲う、
ダブルクオーテーションで囲う、
なにも付けない。
3つの方法があるけど、どんな時にどの方法を取ればいいかっていう
ルール付けがうまく出来ません。
0759nobodyさん2006/10/21(土) 11:52:59ID:???
>>758
引用符は文字列に使う
シングルかダブルかは趣味
何もつけないのは数字、定数、変数
0760nobodyさん2006/10/21(土) 12:02:12ID:???
変数を含んでいて展開するなら、ダブル
0761nobodyさん2006/10/21(土) 12:18:23ID:???
>>758
キーに変数使ってるならダブル。
それ以外はシングル。
何も付けないってのは数字?<それ連想配列じゃないと思う
define定数ならそりゃ括っちゃダメだよね。
Perlと違って、普通の文字をクオートしないのはPHPじゃ非推奨です。
0762nobodyさん2006/10/21(土) 12:27:31ID:???
>>758
シングルはキャラクタ 'a' 'i' 'u' 'e' 'o'
ダブルは文字 "aiueo"
0763nobodyさん2006/10/21(土) 12:32:51ID:jCNqCJC6
自分のサイトに来たPOSTデータを
他サイトへPOSTデータと共に
移動させてやる事は可能ですか?
(JavaScript等使わずにPHPのみで)
0764nobodyさん2006/10/21(土) 12:37:42ID:yrD6q3vz
>>763
METAで…と思ったらPOST限定なの?
0765nobodyさん2006/10/21(土) 12:41:22ID:jCNqCJC6
>>764
GETならLocationとか使えば可能なのですが
POST限定なのです

POSTされてきたデータを
外部POSTしてそのデータを取得する事はできるのですが
一緒に移動となるどうしたら良いのか解らず・・・

ただ、これが出来るといろいろ問題でそうだなぁーとも思いつつ・・・
0766nobodyさん2006/10/21(土) 12:55:30ID:???
>>762
そりゃC言語では。
0767nobodyさん2006/10/21(土) 13:03:35ID:???
移動ってなに?
0768nobodyさん2006/10/21(土) 13:05:27ID:???
POSTをそのままPOST設定して、formのsubmitで飛ばせばいいじゃないか。
0769nobodyさん2006/10/21(土) 13:06:43ID:???
マルチポストしたいって話じゃないの
業者ぽいw
0770nobodyさん2006/10/21(土) 13:13:39ID:???
>>768
それだとサイトでワンクッション置かれてしまう・・・

>>769
確かにこれが出来てしまうと
マルチポストも簡単に出来てしまう・・・

やっぱ無理か・・・・
0771nobodyさん2006/10/21(土) 13:19:38ID:???
>>770
>それだとサイトでワンクッション置かれてしまう・・・

いいかげんにスレ違いだと気づけw
0772nobodyさん2006/10/21(土) 13:26:54ID:???
PHPでやる方法があるのかって質問なのにスレ違いて
0773nobodyさん2006/10/21(土) 13:27:15ID:jCNqCJC6
>>771
自サイトのPHPにPOSTされてきたデータを
PHPで処理させて他サイトへ
POSTデータと一緒にそのサイトへ
飛ばしたいと言ってるのだが

スレ違いなのか?
PHPで処理させてるのに?
0774nobodyさん2006/10/21(土) 13:32:09ID:???
POSTしたあとにheaser("Location: " . dokokaNoSite );じゃだめなのか
0775nobodyさん2006/10/21(土) 13:33:03ID:???
× heaser
○ header
0776nobodyさん2006/10/21(土) 13:40:10ID:???
>>763
HTTP_Requestとか使ってPOSTで受け取ったデータをそのまま渡して
POSTでリクエストするだけ
0777nobodyさん2006/10/21(土) 13:50:58ID:jCNqCJC6
>>774
やってみましたがダメっぽいです

>>776
HTTP_Requestってリクエストして
そのレスポンスを取得し表示する為に使ったり
PHPで簡易ブラウザを作るための物だと思ってたのですが
もうちょっと調べてみます
0778nobodyさん2006/10/21(土) 13:52:21ID:???

マニュアルにはこう書いてある。

http://us2.php.net/manual/ja/function.header.php

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Redirect the POST like this:

header("HTTP/1.0 307 Temporary redirect");
header("Location: https://myserver.redcetus.com/otherlocation";);

~~~~~~~~~~~~

ただこれだと

> 自サイトのPHPにPOSTされてきたデータを
> PHPで処理させて他サイトへ
> POSTデータと一緒にそのサイトへ

これはできないと思う。

俺なら、formのhiddenに色々入れたHTMLをこしらえて
クライアントに投げ返して、そのHTMLに仕込んだJSで
自動的に即POSTさせようとするかな。
07797392006/10/21(土) 13:57:00ID:???
すいません、質問の仕方が悪すぎでしたね。
Flash動画をHPにおきたいのですが負荷が心配です。
test.phpへアクセスあったら
test1.phpとtest2.phpに分けたいです。
test1.phpとtest2.phpは見た目まったく同じPで
動画のリンクが埋め込んでいるのですが、
リンク先のサーバーが違うということです。

ってかアクセス数で分けるなんて無理か
単純に2分することになりますかね
0780nobodyさん2006/10/21(土) 13:58:19ID:???
君はあれか、昨日の「アクセス数によって振り分けたい」の君か?!
07817392006/10/21(土) 14:00:19ID:???
そうです・・・なんか昨日爆睡している間に盛り上がったみたで・・・
初心者ですまそ。
0782nobodyさん2006/10/21(土) 14:04:09ID:???
FLASH自体のの処理に分岐つければ?
0783nobodyさん2006/10/21(土) 14:04:13ID:???
「アクセス数によって」ってのが具体的に同死体のかわからないけど
test.phpが吐き出すHTMLに書いてある動画リンク先を二箇所にする、って
いうのは普通にできると思うけどね。
07847392006/10/21(土) 14:12:17ID:???
すいません・・・
なんか漠然としたイメージだと、
ばぁ〜っとアクセスがあって(test1.php)ある程度アクセス数が
例えば100件あったら、別ページ'(test2.php)に切り替わるみたいな
イメージだったんですが・・・普通に無理そうですね。
アクセス数っていうか接続数ってか。PHPのレベルとは関係ないか
07857392006/10/21(土) 14:15:07ID:???
>>782
すいません、すれ違いですが
もう少し具体的に教えてもらえますか
0786nobodyさん2006/10/21(土) 14:23:35ID:???
>>782
それ、意味なくね?
0787nobodyさん2006/10/21(土) 14:25:59ID:???
そんな分散をPHPでやろうと考えている事に無理がある
大人しくそれ専用のシステムを鯖から作れ
07887392006/10/21(土) 14:35:30ID:???
んですね。
出直してきますわ。
■ このスレッドは過去ログ倉庫に格納されています