トップページ⇒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カテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
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.確認方法が間違っている
のどっちかじゃない?
■ このスレッドは過去ログ倉庫に格納されています