【PHP】下らねぇ質問はID出して書き込みやがれ 76
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/11/13(木) 04:15:32ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0302nobodyさん
2008/11/20(木) 17:40:31ID:???includeはできるわけでincludeできることを前提で書いたほうがいい
もしファイルが存在して読み込み可能なのにincludeできないなんてことが仮におこった場合
それは普通の状態でないわけで
書き手がそこまで責任を負うことはない
0303nobodyさん
2008/11/20(木) 17:47:16ID:AwsGLaDAhttp://www.php.net/manual/ja/language.operators.logical.php
>>295 は例1に書いてあることを言っているんじゃないかと思う。
質問者にとってはどうでもいいことだが。
>>302
あなたのところではそうかもしれないが、少なくとも私のところでは
そうではない。
どうでもいいことだが。
同じ人が同じような処理をするコード書いても、前提や目的によって
だいぶ変わるだろ。そういうことを無視して意見されても全く参考に
ならない。
0304nobodyさん
2008/11/20(木) 17:50:08ID:???「仮に」ifの条件中に書いたとしても動作は同じだよってこと言ってるんだと思うが。
ちなみに構文的にどこがだめなん?おかしくないよ。
0305nobodyさん
2008/11/20(木) 17:53:21ID:HLYnX99e<form name="abc" action="abc.php" method="post">
<input type="submit" value="push" name="def">
</form>
<php
print_r ($_POST['abc']);
print_r ($_POST['def']);
print $_POST['abc'];
print $_POST['def'];
?>
これで、何も表示されないんだが、なんで?
0306nobodyさん
2008/11/20(木) 17:53:56ID:???0307nobodyさん
2008/11/20(木) 17:55:57ID:???じゃぁifの中にinclude入れると意味ないんじゃ・・・
includeすることが前提で読み込まなきゃ先に進めないようなものならrequire使うだろうし
でも構文的には間違ってないな、目的の用途しては適してないだろうけど
0308299
2008/11/20(木) 17:56:49ID:???勘違いしてた
if文の中身書かないとなんかwarnが出たと思ったけど気のせいだった
もし中身書くなら条件文を否定にすればいいのかな?
if (!file_exists() && !include()) {
echo "includeできない";
}
0310nobodyさん
2008/11/20(木) 17:57:28ID:HLYnX99eごめん、初心者なんでそれだけだとわかんない。
0313nobodyさん
2008/11/20(木) 17:58:52ID:HLYnX99eあのさ、キミいつも
教え方があまりにも抽象的すぎるんだよ
会社でもそういわれるだろ?
「もっと具体的にわかりやすくしゃべれ」って。
0314nobodyさん
2008/11/20(木) 17:59:24ID:???if (file_exists($inc_file) {
include($inc_file);
} else {
echo 'includeできない';
}
でいいじゃん
0315nobodyさん
2008/11/20(木) 17:59:59ID:???0316nobodyさん
2008/11/20(木) 18:01:37ID:???ずばりそれ
別に短く書くことを競ってるわけじゃないしな
後はis_readableとか、is_file絡めるくらいっしょ
0317nobodyさん
2008/11/20(木) 18:02:29ID:HLYnX99eサンキュー
構文チェックしたら
No syntax errors detected
になるんだけど、なんで??
無料のエディター使ってるから?
0318nobodyさん
2008/11/20(木) 18:02:44ID:???その通り
ファイルの存在チェックとincludeできるかの評価を
一緒の式ですべきでない
もしやるとしたら
if (file_exists($inc_file)) {
if (include($inc_file)) {
}
}
どうみても冗長だけど
0319nobodyさん
2008/11/20(木) 18:04:30ID:???0320314
2008/11/20(木) 18:06:04ID:???ってまぁ>>289で既に書かれてたから蛇足もいいところだけど
>>318
それだったら波括弧いらなくね?
てかifの中に入れる場合の議論をする必要性がわからないw
「ifだったら>>291は動作しない」→「仮にifに入れても動作は同じ」っていう仮定の話だったのにw
0321nobodyさん
2008/11/20(木) 18:06:44ID:AwsGLaDA「すべきでない」理由とはなんですか?
0323nobodyさん
2008/11/20(木) 18:07:52ID:HLYnX99e<form name="abc" action="ghi.php" method="post">
<input type="submit" value="push" name="def">
</form>
<?php
$_POST['abc']="";
print_r ($_POST['abc']);
print_r ($_POST['def']);
print "<br>";
print $_POST['abc'];
print $_POST['def'];
?>
これで
push
push
と表示されるようになったけど、
<form name="abc" の「abc」と、(1)
name="def"> の「def」は、(2)
必ず、違う文字列にしないとだめなの?
もし(1)と(2)を同じ文字列にして(例えば「aaa」とか)
そんでそれをprintするってときに、
どっちのaaaなのか、phpはちゃんと判別できるの?
0325nobodyさん
2008/11/20(木) 18:14:43ID:HLYnX99e<input type="submit" value="push" name="def">
</form>
<?php
$_POST['abc']=""; //配列変数初期化
$_POST['def']="";//配列変数初期化
print_r ($_POST['abc']);//プリント
print_r ($_POST['def']);//プリント
print "<br>"; //改行
print $_POST['abc'];//プリント
print $_POST['def'];//プリント
?>
------------------------
↑これで、画面になんも表示されなくなった。
ということは、ボタンをプッシュする行為では、
変数には、なんの値もセットされない、という
理解でいいのか?
0326nobodyさん
2008/11/20(木) 18:15:17ID:???0327nobodyさん
2008/11/20(木) 18:18:31ID:HLYnX99eさっきボタン押したときに
push
って表示されてたもんねえ
だからボタンを押すと、pushって文字列が
配列変数にセットされるはずなんだけど、
phpのコードの先頭で、配列変数を初期化してしまうと、
そっちの権力のほうが優先されてしまうのか?
0328nobodyさん
2008/11/20(木) 18:18:48ID:AwsGLaDAそれ、321に対する回答でしょうか?
「一緒の式ですべきでない」のが「warning対策」という主張なら、
303に書いたリンクにかかれていることからも、実際に試してみた
結果からも、理解できませんでした。
0329nobodyさん
2008/11/20(木) 18:23:39ID:???変数使う時は初期化するのが原則だもんな。
発想は斬新で素晴らしいと思う。
>>328
322でも307でもないけど、307は
「ifは条件を満たしたときに実行したい処理を書くために使うもので、
Warning防止の目的なら291でいいし、未読み込み時の処理実行を防止したいなら
requireを使えばいい話だ」ということを言ってるんじゃないかな
0330nobodyさん
2008/11/20(木) 18:25:22ID:???includeできるかどうかをチェックするって発想が
includeできる状態かどうかをチェックするっていう発想が正解
その上でincludeするのがプログラム的にも自然
この辺は感覚だからうまく説明できないけど
まぁ慣れてくればわかるよ
0333nobodyさん
2008/11/20(木) 18:43:39ID:???0334nobodyさん
2008/11/20(木) 18:45:25ID:???0335nobodyさん
2008/11/20(木) 18:45:45ID:AwsGLaDA307に書かれていることを質問しているわけではないですし、
その要約も318の「一緒の式ですべきでない」につながりません。
>>330
includeできる状態かチェックしても、includeしたとき
「includeできる状態」かどうかわかりませんよ。
ええ、くだらないこと書いてるのは百も承知です。
だけど、自分の正解がみんなの正解とは限らないんですよね。
0336nobodyさん
2008/11/20(木) 18:46:33ID:???悪文なのが原因
0338nobodyさん
2008/11/20(木) 18:48:54ID:HLYnX99e<input type="submit" value="push" name="def">
</form>
<?php
// $_POST['abc']=""; //配列変数初期化
// $_POST['def']="";//配列変数初期化
if (isset($_POST['abc'])){//もしボタンが押されたら
print_r ($_POST['abc']);
}//プリント
print_r ($_POST['def']);//プリント
print "<br>"; //改行
if (isset($_POST['abc'])){//もしボタンが押されたら
print $_POST['abc'];//プリント
}
print $_POST['def'];//プリント
?>
--------------------------
↑これにしたら、Noticeエラーも出なくなったし、
ボタン押したら、「push」って表示されるようになった。
しかし、変数の初期化ができないではないか?
変数の初期化をすると、画面に何も表示されなくなってしまう。
どうしたらいいんだ?
0339nobodyさん
2008/11/20(木) 18:50:08ID:HLYnX99eしかし、その場合、セキュリティ上の危険性があるのではないか?
0340nobodyさん
2008/11/20(木) 18:51:04ID:???0341nobodyさん
2008/11/20(木) 18:52:39ID:???随分と疑い深い性格だね
要するにPHPの処理機構を信頼できないわけだな?
includeできる状態でincludeできないというのは起こりえない
その起こりえないケースを想定するなんて時間の無駄
0342nobodyさん
2008/11/20(木) 18:53:18ID:AwsGLaDA何を推測していただいたのか判りませんが、
私の頭の思考回路のことなら、たしかに問題あるでしょうね。
0343nobodyさん
2008/11/20(木) 18:56:18ID:???0345nobodyさん
2008/11/20(木) 19:01:31ID:HLYnX99eしかし変数を初期化すると、
ボタンを押しても何も表示されなくなるんだよ
なんでなんだろうね?
0346nobodyさん
2008/11/20(木) 19:01:45ID:AwsGLaDAPHPが信用できないとは書いていませんし、そう思っている
わけでもありません。
状態を確認してから実際にincludeするまでの間に、
何かが起こる可能性を無視できないんではないかと言っている
だけです。
無視できる人は無視すればいいです。私も無視しています。
0347nobodyさん
2008/11/20(木) 19:01:58ID:???0349nobodyさん
2008/11/20(木) 19:03:32ID:HrZmpLyBphpの本を買ったところ、php.iniの設定が必要とありました。内容は
extension = pdo_mysql.so
として、「MySQLのPDOドライバを有効にする」ということでした。
これは、この通りに書けばいいものなのでしょうか?
拡張ファイルpeclを落とさなきゃいけないのかなと思ったのですが不要ですか?
また、拡張ファイルディレクトリ(C:\php\ext)を見たところ
php_mysql.dll があり、phpinfo(); で見ても
pdo_mysql
PDO Driver for MySQL, client library version 5.0.45
とう項目があります。
これは関係ないんでしょうか?
設定関連が皆目わからないのでかなり妙な質問をしてるかもしれませんが
よろしくお願いします。
0350nobodyさん
2008/11/20(木) 19:04:03ID:???>「includeできる状態」かどうかわかりませんよ。
PHPの内部エラーかサーバのエラーとか想定外のエラーが起きた時にどうするんだみたいな?
昔そんな質問してきた新人がいて返答に困ったな。
そういうのは想定しなくていいとしか言えなかった。
というかID:AwsGLaDAは流れ的に>>291の式を支持してるんだよね?
↑の発言からするとID:AwsGLaDA的には>>291の式も信用できないんじゃないのかね?
0352nobodyさん
2008/11/20(木) 19:06:27ID:???0353nobodyさん
2008/11/20(木) 19:08:20ID:AwsGLaDA「ファイルがないケースもあるから、Warningでるとうざいし、
チェックしとこか」というケースなら、291を書くかもしれません。
330の「正解」という言葉に過敏に反応してレスしているだけです。
0356nobodyさん
2008/11/20(木) 19:11:14ID:???>>346では無視してるといいつつ>>303では私のところではそうではない(無視してない)って・・・
0357nobodyさん
2008/11/20(木) 19:12:20ID:AwsGLaDA335で書いているように、
「自分の正解がみんなの正解とは限らない」です。
前提条件を共有しているならその限りではないです。
0358nobodyさん
2008/11/20(木) 19:14:35ID:HrZmpLyBどうもありがとうございます
.soっていうのはリナックス向けなんですかね? とにかく助かりました、ありがとう。
0360nobodyさん
2008/11/20(木) 19:15:48ID:AwsGLaDAあ、ごめんね。
303で書いたのは、302の「書き手がそこまで責任を負うことはない」
の部分へのレスでした。
0361nobodyさん
2008/11/20(木) 19:18:59ID:HLYnX99ephpでは、ハッシュと言わずに連想配列と言うの?
0363nobodyさん
2008/11/20(木) 19:19:56ID:???>自分の正解がみんなの正解とは限らない
めんどくさい人だなw
学校の先生ですか?
この世界は答えは1つなんですよ
includeは制御構造であって関数じゃないんです
0364nobodyさん
2008/11/20(木) 19:23:07ID:AwsGLaDA「この場合」って >>285 とか?
自分で 285 のコード書いたとして、
特に問題があるとは思いません。
1から31まで用意しておけば動くんでしょ?
0365nobodyさん
2008/11/20(木) 19:26:09ID:???includeするタイミングとか方法の話をしてるんじゃないのか?
0367nobodyさん
2008/11/20(木) 19:34:27ID:AwsGLaDAえーと?
「includeできる状態」をチェックするのがWarningを抑制するためなら、
めんどくさいから
@include();
でいいんじゃないかと。
それ以外の理由なら、その理由による。
0368nobodyさん
2008/11/20(木) 19:40:56ID:???期待はずれでがっかりしたよ
随分自己主張するもんだから期待してたのに
そんな下らない答えだしてくるなら絡みなさんな・・・
0369nobodyさん
2008/11/20(木) 19:45:38ID:AwsGLaDA何を期待していたんですか?
たぶん私が考えている「この場合」と他の人のが
違うんでしょうね。まあ当然だけど。
0370nobodyさん
2008/11/20(木) 19:51:38ID:HLYnX99e一般的に、GETで入力値を受け取るのは、危険な行為?
0371nobodyさん
2008/11/20(木) 20:06:49ID:???0372nobodyさん
2008/11/20(木) 20:22:41ID:???include時の処理なんてクライアント次第だろ
細かくエラー情報残したいってクライアントなら
別々に書いて細かくエラー情報書いたりするし
ある前提でいいよと言うクライアントには
@で制御するだけでいいだろ
そもそもそのチェックが通らないと
画面が真っ白とかっていう状態になるのが
容易に想定できるなら話は別だが
>>370
ちゃんと値チェックすればいい
因みに配列は連想配列と言うほうがPHPでは一般的
あと$_POSTや$_GET等には値を自分で入れ無い方が良い
$defData = $_POST['def'];
等として$defDataを使えば良い
まぁ値を代入する前に値チェック等はきっちりした方が良いけどね
0373nobodyさん
2008/11/20(木) 20:30:21ID:???includeまわりをクライアントがどうこう注文つけてくると思うか?
保守だってクライアントがやるわけじゃないしアフォか
仕事でPHPやってるふりはしなくていいです
すぐやってないってわかるから
0374nobodyさん
2008/11/20(木) 20:36:17ID:???includeで指定する訳ではなく
エラーがあった場合という事は考えられんのかw
画面に出さずにエラーログだけでいいと言う人も居れば
分かり易い言葉でエラーログにと言う人も居るんだよ
仕事自体も完全請負もあれば
一部の機能単位での開発や開発補助というものもある
開発補助の場合はできたら相手に送って
何かしらの問題がでれば対応という風になったりする訳だが
そういう事も考えられんのんだろ?
0375nobodyさん
2008/11/20(木) 20:49:04ID:???俺は仕事でPHPやってるんだ!ってウソでもアピールして
自分ペースに有利に話進めようとするのが
0376nobodyさん
2008/11/20(木) 20:58:04ID:???自分で考えられない事を突っ込まれてウソを言ってる!ってアピールして
自分ペースに有利に話進めようとするのが
0377nobodyさん
2008/11/20(木) 21:04:31ID:???0378nobodyさん
2008/11/20(木) 21:14:48ID:???0379nobodyさん
2008/11/20(木) 22:03:29ID:???雑魚め
0380nobodyさん
2008/11/20(木) 22:23:23ID:L838VyLV0381nobodyさん
2008/11/20(木) 22:35:59ID:???雑魚め
0382nobodyさん
2008/11/20(木) 22:55:38ID:qsQyZgQW【PHPのバージョン】PHP Version 5.2.4(FastCGI for IIS6)
【連携ソフトウェア】mysql
【質問内容】
Fatal error: Call to undefined function mb_ereg_replace() がでる。
Windowsサーバー上でmb_ereg_replaceだけエラーがでます。
mb_convert_kana mb_convert_encoding のようなMB系関数はうごきます。
Fatal errorなので関数がないよっていわれてるんだとおもいますが、mb_ereg_replaceだけないのでおかしいなと。
僕の認識だとMB系は一セットだとおもってたんですがmb_ereg_replaceだけないとかあるんでしょうか?
よろしくお願いします。
0383nobodyさん
2008/11/20(木) 22:55:39ID:???∩___∩ ∩___∩
♪ | ノ ⌒ ⌒ヽハッ __ _,, -ー ,, ハッ / ⌒ ⌒ 丶|
/ (●) (●) ハッ (/ "つ`..,: ハッ (●) (●) 丶 今、どんな気持ち?
| ( _●_) ミ :/ :::::i:. ミ (_●_ ) | ねぇ、どんな気持ち?
___ 彡 |∪| ミ :i ─::!,, ミ、 |∪| 、彡____
ヽ___ ヽノ、`\ ヽ.....::::::::: ::::ij(_::● / ヽノ ___/
/ /ヽ < r " .r ミノ~. 〉 /\ 丶
/ /  ̄ :|::| ::::| :::i ゚。  ̄♪ \ 丶
/ / ♪ :|::|>>372::::| :::|: \ 丶
(_ ⌒丶... :` | ::::| :::|_: /⌒_)
| /ヽ }. :.,' ::( :::} } ヘ /
し )). ::i `.-‐" J´((
ソ トントン ソ トントン
0384nobodyさん
2008/11/20(木) 22:59:56ID:L838VyLV0385nobodyさん
2008/11/20(木) 23:06:37ID:???0386nobodyさん
2008/11/20(木) 23:10:42ID:???0387nobodyさん
2008/11/20(木) 23:15:35ID:HrZmpLyBhttp://localhost/index.php をブラウザのURL欄に入れてEnterおすと
このURLに移動しますよね?
やったところ、 「このアドレスへのリクエストに対するサーバのリダイレクト設定がループしています。」という
メッセージが出てきます。
これ自体はプログラムがミスしてるんだなと思うんですが、なぜかこのときURL欄をみると
http://localhost/index.php/ という風に最後に / がついてしまっています。
これはなぜでしょうか?
わからないのですが、、
環境は php5 apache2 でZendFWを使っています。
0388nobodyさん
2008/11/20(木) 23:18:57ID:AwsGLaDA全然原因が思いつかないけど。。
コマンドプロンプトで、
> php -rf mb_ereg_replace
とか
> php -re mbstring
とかしたときに、それらしいものは出てきますか?
0389nobodyさん
2008/11/20(木) 23:19:25ID:???たぶん同じのでるから
0390nobodyさん
2008/11/20(木) 23:24:17ID:???0392387
2008/11/20(木) 23:54:47ID:???仕様なのかもしれないですね、ループしてしまう部分もあわせて
どうにか解決したいと思います。
これからはZendFWのスレで聞きます。 ありがとうございました。
0393nobodyさん
2008/11/21(金) 00:22:41ID:zW/fBXPAhttp://itpro.nikkeibp.co.jp/article/COLUMN/20080317/296440/?ST=develop&P=3
ここみてたら、ポストバックという便利な仕組みがあるそうじゃないか
これってよく使うの?
0394nobodyさん
2008/11/21(金) 00:23:50ID:???0395nobodyさん
2008/11/21(金) 00:31:02ID:rCZA/W6tPHPとかPerlとか全く知らないんだけど
どっちか片方覚えておけばいいの?
それとも両方覚えないといけないの?
0396nobodyさん
2008/11/21(金) 00:34:24ID:???0398nobodyさん
2008/11/21(金) 00:51:54ID:???マジで聞くことがあったWebプログラミングを勉強する上で
UNIXで動かさないとダメなの?
Windowsにアパッチ入れてみたけど、それで勉強したとして
それで出来上がったファイルをレンタルサーバに入れて
おk?
0400382
2008/11/21(金) 01:33:25ID:F+S9pS9uMicrosoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator>php -rf mb_ereg_replace
PHP Warning: PHP Startup: zip: Unable to initialize module
Module compiled with module API=20060613, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=1
These options need to match in Unknown on line 0
PHP Warning: PHP Startup: pdo_mysql: Unable to initialize module
Module compiled with module API=20060613, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=1
These options need to match in Unknown on line 0
PHP Parse error: syntax error, unexpected $end in Command line code on line 1
とこんな感じでエラーが出ます。検索しまくってるんですが、なかなか糸口もみえずぜひアドバイスいただければと思います。
0401nobodyさん
2008/11/21(金) 01:36:19ID:???■ このスレッドは過去ログ倉庫に格納されています