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

【PHP】くだらねぇ質問はここに書き込みやがれpart3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん05/02/07 21:47:15ID:???
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
0528nobodyさん05/02/21 19:29:24ID:???
>>438
なぜインスタンス生成する時に、大概
$foo = & new Hoge();
のように参照渡しするのか教えて頂けないでしょうか?

$foo = new Hoge();
との違いというか、メリット、デメリットがわからないので
どっちで書くべきなのかがわからないのです。




0529nobodyさん05/02/21 19:45:15ID:???
>>527
それってPCでアクセスしてもちゃんと動かないでしょ?
Locationの使い方が間違ってるよ。
053052705/02/21 19:55:30ID:???
変数で絶対URLを指定して
Location: $xx とやったらうまくいきました。
お騒がせ致しました。
0531nobodyさん05/02/21 20:51:23ID:???
>>526
てめー508で何ていったんだ。向いてねーよ。
>>528
参照渡ししとけばメモリも無駄にならないし、
コピーする手間もはぶけるでしょ。
0532nobodyさん05/02/21 21:38:47ID:???
>>526,531
コードを変換した時に自動で弾いたか変換されたんだろうね
0533nobodyさん05/02/21 21:57:04ID:???
とりあえず参照渡ししとけば、メモリも食わないし、早いからそうしとけ
って感じですかね。

値渡しのメリットってないのでしょうか?
なぜPHP4のデフォルトは、参照渡しじゃなかったのだろうという疑問が
残ります。
0534nobodyさん05/02/21 23:04:04ID:???
>>533
オブジェクトをコピーしたい時って、あるよね?
デフォルトが値渡しなのは、ほかの整数型とかとの整合性をとったんじゃないの?
または後方互換性とか。


また、ちょっと特殊だが、$thisを書き換えて自分自身を違うオブジェクトに
したい場合、値渡しでなきゃダメだった気がする。

これはthisの性質で、リファレンスとは直接関係はない気がするけど。
0535nobodyさん05/02/22 13:27:37ID:???
include_pathの用途がはっきりしません。
mysqlのパスワードがかかれたconnect.inc.phpなどincludeするファイルを
include_pathに置いてそこから呼び出せばスクリプト経由でしかアクセスできない
からより安全。という使い方で間違いないでしょうか?

fopenを使って呼び出す場合の書き方はどのようになるのでしょう?
a.phpをinclude_pathにおいて
fopen("a.php")でよいでしょうか?

すぐに実験できない環境の為教えてください。
0536nobodyさん05/02/22 14:52:49ID:???
>>535
include_path = ".:/php/includes"
今のディレクトリにファイルが無かったら/php/includesディレクトリから探してくれ
というふうに解釈している
0537nobodyさん05/02/22 15:59:38ID:???
include_pathから読み込んでれば>>66のようなことにはなりませんよね?
今はもう見れなくなってますが、以前はMYSQLのパスワードが記述されたファイルが見えてました。
0538nobodyさん05/02/22 16:05:00ID:???
拡張子をincじゃなくてphpにすれば中身見られないよ
0539nobodyさん05/02/22 16:48:15ID:???
include_path がウェブサーバーの公開ディレクトリ外なら大丈夫。
0540nobodyさん05/02/22 17:50:16ID:???
>>537
いやいやinclude_pathから読み込んでそうなったと思われる
0541nobodyさん05/02/22 19:51:58ID:???
すべての接続から見て、共通な変数を定義したいのですが出来ますか?
register()を使ってもセッション単位でしか変数を永続化出来ないよう
なのですが、これをmod_php全体から見てグローバルな変数が作りたいです
0542nobodyさん05/02/22 20:19:57ID:WO7XFPFB
記述上のまとまりの良さを主目的として
インスタンスを生成せずに
クラスを使ってる人いますか?
そんなプログラムの書き方は邪道でしょうか?
054353705/02/22 20:28:14ID:???
拡張子を*.inc.phpなどにしてinclude_pathにおけばより安全ってことですね。
include_pathを使うのはセキュリティ面に配慮してということでよろしいでしょうか?
0544nobodyさん05/02/22 20:59:44ID:???
include_pathはincludeのときに毎回フルパス指定すると保守性がさがるため用いる。
0545 ◆JA..mLrN7g 05/02/22 21:37:00ID:9e743wBI
#!/usr/local/bin/php
<?php
$diceA = mt_rand(1,6);
$diceB = mt_rand(1,6);
$diceC = mt_rand(1,6);
$all = $diceA + $diceB + $diceC;
echo "<HTML>\n<HEAD>\n<TITLE>ダイス振り(リロードでもう一度)</TITLE>\n</HEAD>\n<BODY>";
echo "あなたは3D6を振った!<BR>結果は、$diceA + $diceB + $diceC で、$allだ!<BR>";
echo "</BODY>\n</HTML>\n";
?>

#---

↑のスクリプトで実行したら、500エラーが出るのですが、どうすればいいのでしょうか。

意図した結果:
あなたは3D6を振った!
結果は、1 + 2 + 1 で、4だ!

ようするに、3つの6面体サイコロを振りたいわけなのですが。
0546nobodyさん05/02/22 21:43:29ID:???
#!/usr/local/bin/phpって何?
0547 ◆JA..mLrN7g 05/02/22 21:49:08ID:???
>>546
うわ、いつものクセでCGIの宣言やっちゃってました。orz
ちなみに、それを抜いても同じ結果でした。500エラー。
0548nobodyさん05/02/22 21:49:07ID:???
<?phpって何さ
0549nobodyさん05/02/22 21:49:52ID:???
>>547
改行コードなどは大丈夫?
0550 ◆JA..mLrN7g 05/02/22 21:51:45ID:???
>>549
改行コードは全て試してみました。
残念ながら、全て同じ結果でした…。
0551nobodyさん05/02/22 21:53:26ID:???
>>545
print "あなたは3D6を振った!<BR>結果は、{$diceA} + {$diceB} + {$diceC} で、{$all}だ!<BR>";

055255105/02/22 21:57:29ID:???
>>545

print <<<_RESULT_
<HTML>
<HEAD>
<TITLE>ダイス振り(リロードでもう一度)</TITLE>
</HEAD>
<BODY>
あなたは3D6を振った!<BR>
結果は、{$diceA} + {$diceB} + {$diceC} で、{$all}だ!<BR>
</BODY>
</HTML>
_RESULT_;
0553nobodyさん05/02/22 21:57:35ID:???
うちではエラーにならなかったけど$all以降が変数扱いになっちまった
0554 ◆JA..mLrN7g 05/02/22 21:57:38ID:???
FFFTPの機能が働いてて、バイナリで送信してた…
アスキーで送信しなおしても、同じ結果でした。(改行コードももう一度試しました。)

>>545
それに変えても、同じ結果でした。
何が原因なのかな…
0555 ◆JA..mLrN7g 05/02/22 21:59:31ID:???
>>552
変えましたけど、結果変わらず。


Tabでインデントしちゃダメですか?
0556nobodyさん05/02/22 22:00:39ID:???
>>555
phpinfo何かはどうなのさ
0557 ◆JA..mLrN7g 05/02/22 22:01:48ID:???


ごめんなさい、僕は非常にバカでした。

さくらサーバのライトタイプを使用しているのですが、

PHPはスタンダード以上でないと使用できないそうです。

お騒がせしてすみませんでしたorz
0558nobodyさん05/02/22 22:05:21ID:???
>>552

print <<<_RESULT_

_RESULT_


これって何?
たまに見かけるけどよくわからない。

$body=ごにょごにょ;
print $bady;
ってするようなもん?
0559nobodyさん05/02/22 22:06:00ID:???
$body=ごにょごにょ;
print $body;

ですスマン
0560nobodyさん05/02/22 22:09:14ID:???
>>558
「ヒアドキュメント」でググルよろし。
0561nobodyさん05/02/22 22:09:48ID:???
>>560
ありがと
わかりました
0562nobodyさん05/02/22 23:08:24ID:???
sakuraか…。最初から言えばいいものを。

というか、誰か気付いてやれよ、500鯖鰓が出てるってことはCGIモジュールだろ。

パーミッションを705なり、実行権を与えるもんにしろ。
0563nobodyさん05/02/23 01:01:43ID:???
ねみぃ
0564nobodyさん05/02/23 02:10:44ID:3lWUKcoH
初心者です。どなたか教えてください。

フォームのデータをPOST変数で受け取るのですが、
入力したテキスト内容(POST変数に格納されている)の全角が文字化けしてしまいます。
なにか設定が間違っているのでしょうか?

お願いします。
0565nobodyさん05/02/23 02:30:43ID:???
>>564
文字コードだと思う
0566nobodyさん05/02/23 09:36:09ID:yBSmZfws
初心者でよくわからないので質問させてください。
Mysqlのデータベースを使っています。その中で商品説明のカラムに重量が
記入されているのを商品IDを元に他のテーブルに抜き取りたいのですが、そんな
ことはPHPでできますか?説明がうまくできていなかったらすみません。
0567nobodyさん05/02/23 11:13:24ID:???
2レスほどあぼーんされてるけど、なんか問題あった?
0568nobodyさん05/02/23 12:39:57ID:???
>>567

「しょしんしゃ」(ほんとは漢字)をあぼーんしてるっしょw
056956405/02/23 13:33:09ID:2ladzgdI
>>565
ありがとうございます。
解決しました。PHPの設定ミスでしたorz
0570nobodyさん05/02/23 13:54:12ID:eVm9jlrT
配列の取り扱いで質問させて下さい。

$i=array(1,2,3,4,5,6,7,8,9)

があったとして、これを三つづつ取り出した後に、<br>を入れたいのです
が、どうすればよいかわかりません。お手数ですがアドバイス頂ければと
思います。今は、print(join(",",$i)) とコンマで区切って表示してます。
理想としては、結果を
1 2 3
4 5 6
7 8 9
...
としたいんです。お願いします。助けて下さい・・・
0571nobodyさん05/02/23 14:09:01ID:???
>>570
何がしたいのかよーけわからんが、これでも出来るというお話。
全然最適化されているとは思えないけど。

$i=array(1,2,3,4,5,6,7,8,9);
while(list($k,$v) = each($i)){
$count++;
print "$v\n";
$join .= $v;
if($count == 3){
$count = 0;
print "{$join}\n";
$join = "";
}
}
0572571 05/02/23 14:15:59ID:???
わり、<br>だったか。
\n → <br>
としてくれ。
057357005/02/23 14:29:05ID:???
>>571
ありがとございます!
なるほど。インクリメントしてけば出来るんですね。勉強になりました。
0574nobodyさん05/02/23 16:05:31ID:???
最近の携帯ならfotmでPOST使えますでしょうか?
GETで書いておいたほうがよいですか?
0575nobodyさん05/02/23 16:09:57ID:???
>>574
POSTで問題になるのは、Vodaの昔の機種だけなので、
全てPOSTで書いて問題なし。
(糞Vodaなんかの事は気にする必要は無し。キッパリ)
057657405/02/23 16:59:00ID:???
>>575
ありがとうございます。どこかでGETで書いたほうがいいみたいなこと読んだんでGETで書いてたのですが
GETで書くとURLが長くなるので気になってました。(私の書き方が悪いのかも。。)
POSTで書き直します。
ありがとうございました。
0577nobodyさん05/02/23 18:08:00ID:???
phpでメニューやヘッダーをテンプレート化して
共有しようと思ってます。
色々方法があるみたいで、
どれにしようか迷ってるんですが、
おすすめは何ですか?
0578nobodyさん05/02/23 18:23:15ID:???
>>577
色々ってどんな方法ですか?
0579nobodyさん05/02/23 19:02:25ID:???
>>577
include
0580nobodyさん05/02/23 19:37:22ID:gCV2DQAp
レンタルサーバー等で
mod_php なのか CGI php なのかを
見分ける方法を教えてください
0581nobodyさん05/02/23 19:58:30ID:???
>>580
shebang(#/usr/bin/phpのこと)が必要か不要かを鯖のサービス説明やFAQに書いてあるだろうから、
そっから判断するのじゃ駄目?
0582nobodyさん05/02/23 20:11:01ID:???
>>580
セキュリティがらみで、サーバーモジュール→CGIに変更するところも多いし、
phpinfoの出力が見えるようにしてあっても、貴方が実際に使うサーバの設定と
イコールとは言えないのでので現状でどうなってるか、
ハッキリした事は直接訊くべき。
0583nobodyさん05/02/23 20:36:22ID:???
cgiでも結構はやいねぇ
パーミッションはめんどいけど
0584nobodyさん05/02/23 20:39:25ID:dzVQVqEG
すみません、以下のperl文の処理を
phpで同じように処理させるには
どのように書けばいいのでしょうか?

eval {
local $SIG{ALRM} = sub { die "OK" };
alarm 3;
〜処理〜
alarm 0;
}
alarm 0;
if ($@ =~ /OK/) { die "成功"; }

0585nobodyさん05/02/23 20:55:14ID:???
>>584
   〃∩ ∧_∧
   ⊂⌒( ´・ω・)くぜんぶマニュアルに書いてあったでつ
     `ヽ_っ⌒/⌒c ttp://www.php.net/manual/ja/ref.pcntl.php
058658405/02/23 21:01:05ID:???
>>585
マニュアルは読んでいたのですが、
さっぱり理解出来ないんで・・・
出来れば処理文を書いて頂けないでしょうか?
0587nobodyさん05/02/23 21:27:50ID:???
丸投げスレ池
0588nobodyさん05/02/23 22:07:55ID:???
>>586
PHPで構文を書いてあげるから、
>>584が何をしている処理なのか、順を追って細かく教えて下さい。
0589nobodyさん05/02/23 23:05:57ID:???
UTF-8にするとBOMが出てきます
全てのPHPファイルをUTF-8にしてincludeすると、各ファイルのBOMがロードしたページに漏れなく付いてきます。
これはUnicodeを使うならUTF-8N以外にないってことでしょうか。
0590nobodyさん05/02/23 23:27:09ID:???
>>589
今のところ(多分今後も)そうだよ。
0591nobodyさん05/02/24 00:01:36ID:???
>>590
サンクス
エディタのほうの設定を調整してみます。
0592nobodyさん05/02/24 02:05:13ID:???
サーバとブラウザーのやり取りのhttpを覗くプロクシみたいなツールってありましたよね?

名前が思い出せない。布だったかそんな名前で、トレイに常駐してる、白いアイコンのやつ。

探してます。
0593軟式PHP05/02/24 10:15:42ID:???
>>592
ベクターでも漁れや。いくらでもあるだろ。
0594nobodyさん05/02/24 14:56:48ID:???
例 3. URLからドメイン名を得る

// URLからホスト名を得る
preg_match("/^(http:\/\/)?([^\/]+)/i",
"http://www.php.net/index.html", $matches);
$host = $matches[2];
// ホスト名の最後の二つを得る
preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);
echo "ドメイン名: ".$matches[0]."\n";

マニュアルのpreg_matchからですが、上記のスクリプト中に出てくる
「^」や「?」や「+」や「$」はなんとか演算子ってヤツですか?
それぞれどんな意味と、役割があるのでしょうか?
またなぜ2つ目のpreg_match()はパターンを()ではなく[]で囲ってるのでしょうか?
それとマニュアルに載ってますか?
0595 05/02/24 15:08:17ID:???
>>594
>それとマニュアルに載ってますか?
とりあえずマニュアルを読め。
話はそれからだ。
0596nobodyさん05/02/24 15:23:52ID:???
>>595
もちろん演算子のページは読みましたよ。
ココでいいですよね?
http://jp.php.net/manual/ja/language.operators.php
これを読んでも理解できません。ただ、結合させるって意味なんでしょうか?
0597595 05/02/24 15:41:21ID:???
>>596
OK、では聞くときには「なんとか演算子」とかじゃなくて、
自分が思ったのでいいから具体的に書いてくれ。
じゃないと「何がわからないのか」がわからんので。
で「マニュアルに載ってますか?」と聞かれると「マニュアル見てないの?」となるので
マニュアルは見たけど見つからない、それっぽいのは見つけたけど意味がわからない、とちゃんと書いてくれ。
「情報は小出しにしない」というのが暗黙のルール。

で、上でおまいさんが聞いている記号は「メタ文字」と言って、正規表現の話。
「php 正規表現」とかでググれば色々出てくると思われ。
例えば
ttp://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm
とかな。
正規表現について詳しく知りたかったら

正規表現道場@2ch Part4
http://pc5.2ch.net/test/read.cgi/php/1105930285/

とかで過去ログ読んだり質問したりしる。
まあガンガレ。
0598nobodyさん05/02/24 15:56:09ID:???
まぁ、なんだ。マニュアルにも正規表現の解説が載ってるんだけどな。
ttp://jp.php.net/manual/ja/pcre.pattern.syntax.php
0599nobodyさん05/02/24 16:02:44ID:???
>>597-598
ありがとうございます。
非常に助かりました。
0600nobodyさん05/02/24 16:37:52ID:???
漏れはJS/AS/VB/Perlをやってる人です。
オブジェクト指向に慣れ親しんでるからver5が良さげなんですが、現在の主流や将来性を考えると今からPHPを学ぶとした場合、Ver4と5のどちらが良いんでしょうか?
0601nobodyさん05/02/24 17:33:58ID:???
>>600
「学ぶ」んだったらPHP5
「使う」んだったらPHP4(プログラマだったらPHP5か)
0602nobodyさん05/02/24 18:36:51ID:S+cLCUGy
指定した個数分($inv)、同じ文字('a')を連結したいのですが、
つまり、
$inv = 5 なら、aaaaa
ループ以外にやり方ないでしょうか?
0603nobodyさん05/02/24 18:43:29ID:???
アンケートを取りたいんですが、

・賛成
・反対

のradioボタンで選択させ、反対票だけ2倍にカウントするには
どうしたらいいんでしょうか?
0604nobodyさん05/02/24 18:50:14ID:???
>>603
自分で答え書いてるじゃん
0605nobodyさん05/02/24 19:29:46ID:???
全然PHPじゃないな
0606nobodyさん05/02/24 19:31:46ID:???
>>602
http://jp2.php.net/manual/ja/function.str-repeat.php
0607nobodyさん05/02/24 19:49:33ID:???
>>606
ありがとうございます。
助かりました。
0608nobodyさん05/02/24 21:02:37ID:???
>603
そんな某国の情報操作みたいなことはヤメレ
0609nobodyさん05/02/24 22:01:18ID:???
>>603
warata
0610nobodyさん05/02/24 23:07:50ID:???
>>600
将来性を考えればどちらがいいか明らかだと思うけど
0611nobodyさん05/02/24 23:19:05ID:???
将来性より、明日の受託業務
0612nobodyさん05/02/24 23:35:47ID:sdrJy1MC
PHPでチャットって作れるん?
0613nobodyさん05/02/25 00:07:01ID:???
>>612
<?php
$DATFILE = 'hoge.dat';

if($_GET['msg']){
 $fp = fopen($DATFILE,'a');
 fwrite($fp,$_GET['name'].' says:'.$_GET['msg']);
 fclose($fp);
}
print_r(file($DATFILE));
exit;
?>
0614nobodyさん05/02/25 00:10:09ID:???
>>612
探せ
0615nobodyさん05/02/25 00:53:28ID:VA4tKjSS
掲示板を作りたいのですがどうすれば良いでしょうか
0616nobodyさん05/02/25 00:54:33ID:???
>>615
大いにやりたまえ
0617nobodyさん05/02/25 01:54:56ID:???
>>613
header('Content-Type: text/plain');
入れとかなきゃデフォルトだとhtml扱いされて(+д+)マズー
0618nobodyさん05/02/25 02:02:40ID:???
PHPというか他のプログラムに共通するかもしれませんが、

検索して検索結果が表示されてそのページ内の個々のデータを
見てブラウザの戻るボタンで前に戻ろうとすると
「警告 : ページの有効期限切れ」が表示されます。
Javascriptのhistory;back()でも同じ状態になります。

これを回避して検索結果の状態に戻す方法は無いのでしょうか?
0619nobodyさん05/02/25 02:33:32ID:???
>>618
別にブラウザのキャッシュを表示しても構わないようなものなら
静的なhtmlにすればいいような気がするけど。

header() で Cache-Control: とか設定すればよかった気がする。
httpのRFCを読むなりしてそれらしいヘッダがあれば設定してみれば?
0620nobodyさん05/02/25 02:41:50ID:???
ああ、検索結果なのね。データベースが頻繁に更新されないようなものなら
ブラウザのキャッシュに戻れた方がいいのかな。

google は確か検索結果をキャッシュするようにしてたから、
telnet google.co.jp 80 してみて、それらしいヘッダを設定する手もあると思う。
062161805/02/25 12:32:03ID:???
>>619-620

いや、検索結果というのは自身で作成したプログラムです。

例えば会員検索のPHPプログラムがあったとして
検索フォーム(HTML)→検索結果(PHP)→詳細情報(PHP)→
検索結果に戻る→有効期限切れエラー

やはりブラウザに依存するんですかね。。
0622nobodyさん05/02/25 12:49:33ID:???
検索フォーム(HTML)→検索結果(PHP)
ここをmethod="get"にしたらどう?
062361805/02/25 14:40:24ID:???
>>622
出来ました!!!盲点でした!ありがとうございました。
0624nobodyさん05/02/26 00:15:54ID:DKGm/bS1
sessionの一つのキーに連想配列で100個近く情報を保持する
ことになったのですが、sessionに保存できる上限値みたいな
ものはあるのでしょうか。

昔Perlでcookieを使っていたとき、一つのキーに3000バイト
くらい入れたら500エラーが出たことがあるので、質問させて
いただきました。

サーバサイドで持つものなので大目に取れるのではとは
思っておりますが、ご教示いただけますと幸いです。
0625nobodyさん05/02/26 02:37:43ID:???
php-nukeについてなんですが
Lovemorgue.orgで使われてる右側のメニューのモジュールは
なんですか?
0626nobodyさん05/02/26 05:44:25ID:???
>>624
試せば良いじゃん。自分のさばーで。
0627nobodyさん05/02/26 06:16:31ID:???
>>624
実装上の制限はあるかも知れないけど、100程度だったら問題無いんじゃないの?
心配ならphpのソースコードを見てみれば良いかと。

cookieに関しては、RFC 2109(新しいものが出てるかも知れない)の
6.3 Implementation Limits に、
at least 4096 bytes per cookie の一文がある。
■ このスレッドは過去ログ倉庫に格納されています