トップページ⇒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/
0503nobodyさん05/02/21 02:21:36ID:???
関数いっぱい作って再利用するとき関数名がかぶった経験があるから
今はクラス使ってる派
0504nobodyさん05/02/21 02:32:44ID:???
こうするとパースエラー シンタックスエラー アンエクスペクテッドT_STRINGになってしまいます。どこがおかしいですか?エラーになる行は
$fp = @fopen("hoge.dat","r+");
です
Apache モジュールPHP5.0.3 WinXP SJIS
CGIのPHP4でも同じです
0505nobodyさん05/02/21 02:55:50ID:???
>>504
>>473の説明を流用すると、
その行で出てくるはずの無い文字列がでてきたってことだから、
それより前の行で " で文字列を開始したまま閉じてない、とかじゃないの?
hoge.dat の直前の " で文字列終端になって、
次にきた hoge.datが来る筈の無い文字列なのでエラーつーことで。
0506nobodyさん05/02/21 03:01:27ID:???
>>504
てかエラーメッセージは見えるとまずい情報以外はそのまま載せれ
0507nobodyさん05/02/21 03:04:50ID:???
>>504
内部エンコーディングでSJISが使えるPHP5って何処から入手したの?
050850405/02/21 11:37:35ID:???
505
1行目は<HTML><BODY>
2行目は<?php

Parse error : Syntax error, unexpected T_STRING in .php on line 3
となってしまいます

SJISはEUCの間違いでした
0509nobodyさん05/02/21 11:42:17ID:???
エラー行の前のほうで、ダブルクオートを閉じ忘れているとか
0510nobodyさん05/02/21 11:47:06ID:???
>>508
とりあえず、3行目までソース貼ってくれ
0511nobodyさん05/02/21 11:47:32ID:???
携帯電話のリファラーを取る方法ってありませんか?
_SERVER['HTTP_REFERER']だとリファラー取れないんで
なんとかならないですかね?
0512全角スペースor文字でとほほ05/02/21 11:48:07ID:???
>>508
<html><body>
</body></html>
次に
<html><body>
<?php
?>
</body></html>
と一行づつ増やしてどこでエラーがでるかやってみそ。
それぐらいのこと、やってから質問しる。
051350405/02/21 13:05:33ID:???
ソースは
<HEAD><BODY>
<?php
$fp = @fopen("hoge.dat","r+");
処理
?>
</BODY></HTML>

全角文字はPHP内にはありませんでした。
また、ソースを改造してもエラーは必ず$fp = @fopen("hoge.dat","r+");のある行で出てきました
0514nobodyさん05/02/21 13:18:00ID:???
>>513
他のファイルからインクルードされてるってことはないよね?
0515nobodyさん05/02/21 13:28:14ID:hTSJdz6/
phpinfo で
Server API Apache 2.0 Handler
となっているのはモジュール版ですか?
0516nobodyさん05/02/21 14:32:04ID:???
>>515
そういうこった
0517nobodyさん05/02/21 14:33:58ID:???
>>513
ダブルクォーテーションと思ったらシングルクォーテーション2つだったとか。
"
''
0518nobodyさん05/02/21 14:42:48ID:???
@ついてるしエラーはその行以外でしょうね。
0519nobodyさん05/02/21 15:09:30ID:???
普通の無料レンタルサーバーで個人サイトを作ったんだが。
全てのページをPHP化するというのは無謀か?
負荷とか大丈夫か?
0520nobodyさん05/02/21 15:35:23ID:???
文字列の中の ##XXX## という箇所を全て空白に置き換えたいんですけど、
正規表現の記述がわからず
正常に置き換えられません。

$reg = '##.*##';
ereg_replace($reg, $key, $str)

これだと最初の##から最後の## まで全てが空白になってしまいます。
どなたかアドバイスください。
0521nobodyさん05/02/21 15:39:59ID:???
さいたんまっち
052250405/02/21 15:57:01ID:???
>>514
いえ、直接です
>>517
いえ、そのまま張りつけたのでないと思います
ちなみに処理の部分はfcloseです
0523nobodyさん05/02/21 15:57:59ID:???
>>504
なんか誰も答えてあげる気がないらしいので・・・
全角スペース使ってるだろ(笑
しらべてみそ
0524nobodyさん05/02/21 16:17:37ID:???
>>519
負荷が問題になるくらいのサイト作成が先決
>>520
文字の最初、一文字を現すワイルドカード(3)、文字の終り、PHPの質問じゃない。
>>522
思いますってどういうこと?自分でやってる?
1.$fp=fopen...の部分を別ファイルにして
 include("other.php");
 とかしてどっちのファイルでエラーメッセージが出る?
 ちなみにエラーがでて解決できないのになぜ@をつける。
 (関係ないとは思うけど)
2.<?phpと?>行頭にスペースとかない?関係なかったかな。
 <? phpとかさ。
>>523
すれよめ。
0525nobodyさん05/02/21 18:08:28ID:???
相手のスキルを考えてエスパーしろよ
052650405/02/21 19:21:42ID:???
すみません
漢字コードをEUCにしたところちゃんと動作しました
マルチバイト文字は使ってないんですが…
ありがとうございました
0527nobodyさん05/02/21 19:26:06ID:???
$x = $_SERVER['HTTP_USER_AGENT'];
if ( ereg ("DoCoMo", $x)){
header("Location:m.php");
exit;
}elseif(ereg("J-PHONE",$x)){
header("Location:m.php");
exit;
}elseif(ereg("UP.Browser",$x)){
header("Location:m.php");
exit;
}elseif(ereg("Vodafone",$x)){
header("Location:m.php");
exit;
} else {
header("Location:pc.php");
exit;
}
これにauのA3012CAでアクセスすると「URLが正しくありません」と怒られます。
何が原因でしょうか?
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倍にカウントするには
どうしたらいいんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています