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

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

■ このスレッドは過去ログ倉庫に格納されています
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カテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
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
カチカチ鳴る定規使え。まだ持ってないならすぐ買いに行け。
■ このスレッドは過去ログ倉庫に格納されています