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

【PHP】下らねぇ質問はID出して書き込みやがれ 96

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/05/28(金) 16:33:44ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 95
http://pc11.2ch.net/test/read.cgi/php/1271636105/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0779nobodyさん2010/07/03(土) 20:06:53ID:84+K0MiS
>>778
おおできた!w
ありがとう!
0780nobodyさん2010/07/04(日) 02:22:50ID:lkrZPMso
$config = DATA . $dataname . "/" . CONFIG_NAME;
すいませんこれってどういうことですが?質問自体バカで申し訳ない
0781nobodyさん2010/07/04(日) 02:37:21ID:???
>>780
http://jp.php.net/manual/ja/index.php
0782nobodyさん2010/07/04(日) 03:25:39ID:???
http://www.yourfilehost.com/media.php?cat=video&file=0620_minori_002.wmv

すみません。質問なんですがこの方が誰か分かる方いませんか?
0783nobodyさん2010/07/04(日) 03:35:25ID:lkrZPMso
>>781
非常にありがたいのですが、できればヒントをいただけると幸いです。
0784nobodyさん2010/07/04(日) 04:12:47ID:???
>>782
おまいさんはこっち
ttp://set.bbspink.com/test/read.cgi/avideo/1274977885/
ネタかも知れんが2chでの質問者は大概「age」だぞ
0785nobodyさん2010/07/04(日) 09:39:50ID:???
<<784
サンクス
0786nobodyさん2010/07/04(日) 10:38:00ID:fEOSEN4h
>>783
良い質問は良い回答から。
「これってどういうことですか?」と言う質問は漠然としすぎて、
質問になっていない。
答える方も困るんだよ。

「やかんってなんですか?」って聞かれて
「金属です。」「お湯を注ぐものです」「お湯をわかすものです」
たくさん答えができてしまうだろ。

「やかんってどういう物質でできているんですか?」
という具体的な文章で質問しなさい。

中学生2年女子より。
0787nobodyさん2010/07/04(日) 11:12:10ID:???
改造しようと思ったけど、定数が分からないってオチ?
0788nobodyさん2010/07/04(日) 12:38:39ID:???
定数というか「どうしてこういう書き方してるんですか?」だと思うけどな。

質問の仕方もそうだけど、回答する側もある程度質問者の
意図するところを汲み取るようにしないと。相手は分からないんだから。
エスパー出来ない奴は答えるべきじゃないよ。
0789nobodyさん2010/07/04(日) 13:34:13ID:???
どうしてこういう書き方をしてるかどうかなんて分かるわけないじゃん書いた当人じゃないんだから
国語のテストかよ
0790nobodyさん2010/07/04(日) 13:47:16ID:???
>>786
最後で吹いたw
0791nobodyさん2010/07/04(日) 13:57:27ID:???
>>789
俺ならこう答えるよ
「定数にする事で、共通ディレクトリや設定値を入れて
 各ファイルで呼び出すが出来るから。」
0792nobodyさん2010/07/04(日) 14:07:56ID:???
定数を知ってたらこんな質問しないだろうし>>787だろうな
0793nobodyさん2010/07/04(日) 16:02:43ID:???
文字列の足し算がわからないのかなと思った。

ちなみに . 足し算ってなんの言語由来?
0794nobodyさん2010/07/04(日) 17:06:01ID:/aajFMKw
if (isset($_POST["title"]) && $_POST["title"]) {

すみません、このifの条件文なんですが、どういうことなんでしょうか?;
変数がセットされていることと、もうひとつの条件がよくわからないです・・
0795nobodyさん2010/07/04(日) 17:24:09ID:???
true
0796nobodyさん2010/07/04(日) 17:28:16ID:???
!emptyだけでいい気もする
0797nobodyさん2010/07/04(日) 18:07:51ID:???
!= ""
じゃ駄目?
0798nobodyさん2010/07/04(日) 18:54:41ID:/aajFMKw
うーん・・
$_POST["title"]がtrueってどういうことを意味するのですか?
0799nobodyさん2010/07/04(日) 18:59:52ID:???
>>798
http://php.net/manual/ja/types.comparisons.php
ほい
0800nobodyさん2010/07/04(日) 19:35:11ID:/aajFMKw
>>799みました

注意: $xが定義されていない状態で単に if ($x)としてしまうと
E_NOTICE レベルのエラーが発行てしまいます。
代わりに、empty()や isset()を使うかあるいは変数を初期化するようにしてください

このことですか?
いまいちわからないです;
0801nobodyさん2010/07/04(日) 19:56:27ID:???
if($_POST["title"] == 0)
って判断したい場合、$_POST["title"]が未定義の場合もtrueと判断される。
それを防ぐため定義チェック(isset)を追加したりする。

んで>>794の場合は条件的にissetは必要ないのだけど、クセかなんかで
issetを付けちゃってるだけだと思う。
0802nobodyさん2010/07/04(日) 20:28:54ID:???
PHPの設定次第では、未定義参照でエラーっす。
で、issetでチェックしてあれば、ショートサーキットで後ろの評価しないんで・・・
0803nobodyさん2010/07/04(日) 21:59:15ID:lkrZPMso
>>780です。お返事ありがとうございます。
すいませんが、定数の定義付けってdefine("定数名","定数の値") でなくとも
できるのでしょうか?
どうしてこういう書き方をしているのかご教授お願いいたします。
0804nobodyさん2010/07/04(日) 23:07:11ID:???
どうして定数だと判断したの?
0805nobodyさん2010/07/05(月) 01:21:12ID:kve1q94K
constructの使い方について質問です。

class Main extends Sub
{
public function __construct()
{
echo $this->test;
}
}

abstract class Sub
{
public function __construct()
{
$this->test = 1;
}
}

$ob = new Main;


というコードを書いたのですが、何も出力されません。
イメージ的には継承されたSubの値がMainに反映されて
結果が表示されると思ったのですが、継承元でconstructは無理なのでしょうか?
0806nobodyさん2010/07/05(月) 02:01:53ID:???
>>805
子クラスでコンストラクタを定義した場合は
明示的に parent::__construct() で呼ぶ必要がある
0807nobodyさん2010/07/05(月) 04:49:47ID:???
>>801
issetは必要。存在し、未入力じゃないことのチェックのイディオムだよ。
0808nobodyさん2010/07/05(月) 05:10:09ID:???
!=か!emptyでも同じやん
0809nobodyさん2010/07/05(月) 05:13:11ID:???
>>807
揚げ足で悪いが未入力じゃないというのは語弊がある
正しくは存在し且つNULL以外で初期化されている変数だと思う
08108052010/07/05(月) 10:20:52ID:???
>>806
ありがとうございます。上手くできました。
0811nobodyさん2010/07/05(月) 12:23:16ID:???
テキストボックスに0が入力されたらどうなるんだろうな
0812nobodyさん2010/07/05(月) 12:54:33ID:???
内容は "0"だよな  == だと 0 でも trueだけど。
==による緩やかな比較の欄どぞ
http://php.net/manual/ja/types.comparisons.php
0813nobodyさん2010/07/05(月) 13:26:37ID:E/YNQXWp
if (isset($_POST["title"]) && $_POST["title"]) {
}
else {
echo "titleが未入力ですよ";
}

未入力チェックってこういうことだと思うんだけど、
"0"の場合に未入力と判定されちゃわない?

質問になってしまったのでID出し。
0814nobodyさん2010/07/05(月) 14:01:03ID:???
emptyは?
0815nobodyさん2010/07/05(月) 14:36:41ID:???
emptyは0を「存在しない」扱いしたはず
0816nobodyさん2010/07/05(月) 15:00:30ID:???
未定義でエラー出さんだけで ! つけたのとか、 == falseと同じでしょ。
0817nobodyさん2010/07/05(月) 15:06:22ID:???
>>813
される
それをやりたいなら
if(isset($_POST["title"]) && $_POST["title"] != "") {
}
とするべき
0818nobodyさん2010/07/05(月) 15:06:31ID:???
== null
もよく見るけど、あれと == "" とは違うの?
0819nobodyさん2010/07/05(月) 15:08:32ID:???
>>818
nullと空はまったくの別物
0820nobodyさん2010/07/05(月) 15:13:38ID:???
test
0821nobodyさん2010/07/05(月) 15:15:29ID:???
== null って有効だっけ?
is_nullをいつも使っているんだが
0822nobodyさん2010/07/05(月) 15:18:34ID:???
だからー
!== とか === 使えって。

== NULL って、 false でも 0でも 空の配列でも  "" でも 通るぞ。
0823nobodyさん2010/07/05(月) 15:25:57ID:???
書き込みできなくてイライラしてる人が沢山いるんだろうな
0824nobodyさん2010/07/05(月) 16:03:47ID:???
回答者は●を買いなさい
0825nobodyさん2010/07/05(月) 16:08:53ID:???
また大規模規制でもあったのか?
0826nobodyさん2010/07/05(月) 16:33:32ID:???
通年です
0827nobodyさん2010/07/05(月) 16:36:38ID:???
モリタポもらってp2お勧め
0828nobodyさん2010/07/05(月) 16:38:39ID:???
そろそろ夏休みの季節か・・・
0829nobodyさん2010/07/05(月) 16:42:07ID:???
大学の夏休みはたしか10月までだっけ?
08307942010/07/05(月) 17:07:39ID:XGgM750L
むずかしいなぁ・・

$_POST["title"]がtrueを返すときの条件が比較表?みてもわからない;

http://www.phppro.jp/school/phpschool/vol13/2
今このスケジュール表のプログラミングしてるんですが、このページの下のほうにある

<dl>
<dt><label for="schedule-title" id="label-title">タイトル
</label></dt>
<dd><input type="text" name="title" id="schedule-title"
value="<?php print(htmlspecialchars($_POST["title"],
ENT_QUOTES)); ?>" /></dd>
<dt><label for="schedule-body" id="labe-body">内容</label></dt>
<dd><textarea name="body" id="schedule-body">
<?php print(htmlspecialchars($_POST["body"], ENT_QUOTES)); ?>
</textarea>
</dd>
</dl>

これは正しいのですか?
何回試してもエラーが出てしまいます。
Undefined index: title in <b>C:\Apache2.2\htdocs\schedule_edit.php</b>
on line <b>121</b><br />
<br />
<b>Notice</b>: Undefined index: body in <b>C:\Apache2.2\htdocs
\schedule_edit.php</b> on line <b>125</b><br />
0831nobodyさん2010/07/05(月) 17:23:48ID:???
>>830
Undefined index: となってるから
$_POST["title"]と$_POST["body"]を空で送信(submit)してるでしょ
空で送信されたら未定義になる。
未定義なのにprintさせようとしてるからNoticeがでてる。

正しくはissetなどで確認してから・・・となるんだろうけど
この場合のNoticeは無視しちゃう所多いよ
0832nobodyさん2010/07/05(月) 17:39:17ID:???
>>830
http://www.php.net/manual/ja/language.types.boolean.php#language.types.boolean.casting

あとphpproの講座は使えないから他の本で勉強する事をお勧めする
0833nobodyさん2010/07/05(月) 17:41:56ID:qHUIRNCb
大角本がいいよ
0834nobodyさん2010/07/05(月) 17:48:04ID:???
ひろゆきオススメのあれか?w
0835nobodyさん2010/07/05(月) 18:26:03ID:E/YNQXWp
>>817
formで送られるデータって文字列として取得されることが保障されてるんだっけ?
それなら !== ""でよさそうだけど。

>>830
phpの内容がわからないのでどこが121行目かちょっとわからんとです。
0836nobodyさん2010/07/05(月) 21:22:59ID:???
>>831
最初のフォーム表示時じゃないの?
空で送信しても string(0) "" にならない?
0837nobodyさん2010/07/05(月) 21:59:14ID:???
入力欄が空なんじゃなくて、$_POST["title"]を送信してないって意味では
0838nobodyさん2010/07/05(月) 22:07:58ID:???
>>837
そのためのissetでしょう?
0839nobodyさん2010/07/05(月) 22:17:23ID:???
まだやってんのか。
所詮はただの配列なんだからちょこっとコード書いてみりゃ分かるだろ。
0840nobodyさん2010/07/05(月) 22:22:52ID:???
if( isset($_POST['title'][0]) )

これだけでおk、
0841nobodyさん2010/07/05(月) 22:23:16ID:???
誰も明確な回答を示さずにぐだぐだやってる感じがいいよね
0842nobodyさん2010/07/05(月) 22:37:01ID:???
その内、派閥的な論争が始まる
0843nobodyさん2010/07/05(月) 22:55:30ID:???
>>840
空送信し放題じゃん
!==か、分かりづらければisset && != とかでいい
この辺は好みだよね
0844nobodyさん2010/07/05(月) 22:59:24ID:???
>>843
> 空送信し放題じゃん
どこがw
0845nobodyさん2010/07/05(月) 23:26:29ID:???
それでおkってことは、フォームデータは文字列として取得することが
保障されているってことでいいのかしら。
ラジオボタンとかでvalue=1とかしてても勝手にint変換されたりしない、でおk?
0846nobodyさん2010/07/05(月) 23:34:50ID:???
リクエストパラメータは常に文字列ってマニュアルの何処かに書いてあったはずだからググれ
0847nobodyさん2010/07/05(月) 23:49:49ID:???
ありがとう!
0848nobodyさん2010/07/05(月) 23:54:24ID:???
>>840
[0]っていったいどういうこと?
0849nobodyさん2010/07/05(月) 23:56:22ID:???
もはやバッドノウハウ系な気が
0850nobodyさん2010/07/06(火) 00:49:38ID:???
PHPはフィールド名に[]が付いてたら配列に展開するので
文字列か配列かのどちらかになる可能性がある
コードゴルフならともかく初心者に>>840を教えてるのが居たら袋叩きにしていいぞ
0851nobodyさん2010/07/06(火) 01:07:54ID:???
コードが短ければ玄人ってわけじゃないんだし、
第三者が見てわかりやすい記述を心がけようぜ。
0852nobodyさん2010/07/06(火) 01:42:19ID:???
そんなに叩く程か?
Cのコードゴルフじゃあるまいし全然原型とどめてるじゃん。
0853nobodyさん2010/07/06(火) 02:24:13ID:???
>>852
application/x-www-form-urlencoded の title[0]=0 を受け入れるが意図した挙動じゃないだろ?
入力値を信用したコードの時点で使いものにならない
0854nobodyさん2010/07/06(火) 02:57:17ID:???
そもそも空文字列の時に[0]は\0だったりしないのかな。C的な発想で申し訳ないが。
0855nobodyさん2010/07/06(火) 08:57:03ID:???
>>835
name属性がない場合 null

name属性があって入力がない場合 ""

よって

if( isset($_POST['hogehoge'] ) && $_POST['hogehoge'] !== "")
{

}

じゃねーのかい!
0856nobodyさん2010/07/06(火) 10:38:17ID:???
こんな基本的なところで何騒いでいるんだ・・・
0857nobodyさん2010/07/06(火) 11:22:03ID:1Cm5WNj+
よくフレームワークやMVCのコードを書く時、URLが
http://(ドメイン)/(コントローラー)/(アクション)
という形になっているのを見かけます。

例)掲示板に投稿
http://hoge.com/bbs/entry

それで思ったのですが、アクション(メソッド)が指定されているURLに
直アクセスされた場合、どうするのでしょうか?
POSTのデータが送られてきたか否かで判断して、直アクセスの場合は
元のページにリダイレクトする、とかそう言う事をしているのでしょうか?
アクションを直接GETとしてURLに含めるのは、セキュリティ的に疑問です。
0858nobodyさん2010/07/06(火) 11:32:45ID:???
セキュリティ的にGETでだめならPOSTでもだめだろ。
0859nobodyさん2010/07/06(火) 11:39:40ID:???
そもそも、アドレス関係ない話じゃん。
08608572010/07/06(火) 12:07:00ID:1Cm5WNj+
>>858
GETだとフォームを介さなくてもアクセスできるから
POSTより緩いと思うんですよね

>>859
857に書いたようなURLがformのactionにしていされていたら
検索エンジンのクローラーに取得される可能性があります。
そうなると、セキュリティ的にまずいと思うんですよ。
0861nobodyさん2010/07/06(火) 12:18:29ID:???
セキュリティの問題でクローラーがどうのとか、そこが変なんだよ。
0862nobodyさん2010/07/06(火) 12:25:44ID:???
cakephpかなんかで適当にサンプル作って、ソース見ればいいよ。
あっさり解決するから。
08638572010/07/06(火) 13:34:39ID:???
わかりました。そうします。
0864nobodyさん2010/07/06(火) 13:51:27ID:???
>>860
せ…、セッ

いや、なんでもない。
0865nobodyさん2010/07/06(火) 21:14:40ID:???
セキュリティがまずいっていうか、クローラーやトレンドマイクロからスパム投稿される
0866nobodyさん2010/07/07(水) 00:12:26ID:???
キャプチャでもおいとけば?
0867nobodyさん2010/07/07(水) 00:32:00ID:???
置けばどうなるの?
0868nobodyさん2010/07/08(木) 08:59:00ID:Tsw8WKYJ
【PHPのバージョン】5.2 above
【質問内容】
PHP で文字列を組み上げるのに、Ruby でいうところの #{} 的な
インラインテンプレートみたいなのってないでしょうか?
sprintf と + で処理の実現自体は可能なんですが、なんかごちゃごちゃしてしまうので
もうちょっとエレガントな記法ってないのかなと思って質問する次第です。
よろしくお願いします。
0869nobodyさん2010/07/08(木) 09:53:28ID:???
つSmarty
08708682010/07/08(木) 10:05:54ID:???
あぁ、Smarty 使ってるプロジェクトならいちおそれありなのかなぁ。
ただ、それだけのために Smarty 組み込んだところで、余計可読性下げそうでちょっと勘弁。
ありがとうございました。
0871nobodyさん2010/07/08(木) 10:51:51ID:???
可読性が下がることはないと思うけどな。
まあ、自分でテンプレート処理書いちまえばいいんだと思うけど。
実際は "This is a {$pen}";ですむんじゃねーの?
08728682010/07/08(木) 11:04:41ID:???
m9(・∀・) ソレダ
単純に "{$var}" で展開されたのね・・・万事解決です、本当にありがとうございました。
ってかくと感謝してなさそうに見えて不思議ですが、ほんとに助かりました。ありがとう。
0873nobodyさん2010/07/08(木) 11:07:30ID:???
Rubyの#{}が何なのか分からなかったのはオレだけ
08748682010/07/08(木) 11:31:52ID:???
この手の記述って便利なんだけど、ググれないのが困るんですよね。
0875nobodyさん2010/07/08(木) 18:18:32ID:???
.htaccessの話なのですが、
アクセス規制用に以下の部分を別ファイルにしたいのです。

deny from 192.168.0.11
deny from 192.168.0.12
deny from 192.168.0.13
deny from 192.168.0.14

みたいな感じで。

httpd.confを触れるなら  include ファイルパス
で、できるのですが。。。。

.htaccessではできないんどえしょうか?
0876nobodyさん2010/07/08(木) 18:22:36ID:???
なぜここで聞く
0877nobodyさん2010/07/08(木) 18:28:08ID:???
>>876
apache スレ言ってきます。
0878nobodyさん2010/07/08(木) 22:38:14ID:lGIUgqyl
勉強中の初心者です。PHP+MYsqlで質問です。
DB名を、配列に取得して、プルダウンメニューで選択するようにしたいのですが
ボックスに表示する部分なのですが
mysql_list_dbsを使ってmysql_fetch_arrayでいけますか?
■ このスレッドは過去ログ倉庫に格納されています