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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0408nobodyさん2010/10/19(火) 22:22:40ID:???
サブミットされたらだと>>396のコードや>>405の指摘通り
なんもない場合も考えられる
それを屁理屈というかいわないか

という話ですね
0409nobodyさん2010/10/19(火) 22:24:30ID:???
>>407
言い返せないと屁理屈の一点か
誤解をうむ言い方をするなという指摘を素直に受けれないわけ?
0410nobodyさん2010/10/19(火) 23:26:30ID:???
値がどうとかは関係なしに、>>396の指摘はあながち間違ってないと思う。
値を受けた処理だけじゃなく、actionを受けた時点での処理も存在するからね。
例えば同一ページに2つフォームがあって、同じ場所にactionする場合とか。
2つのフォームのメソッドはそれぞれPOSTとGETになっていて、
どちらかで処理を分けたい時なんかは、
if ($_POST)
if ($_GET)
で分けたりもするから。
設計を変えろだのそういう話は置いといて、そういう書き方してる人がいるのも事実。
0411nobodyさん2010/10/19(火) 23:26:51ID:???
>>367
詳細ありがとう
エラーをログに吐かせて確認する時とか便利そうだね
今度デバッグの時に使ってみよう
0412nobodyさん2010/10/19(火) 23:31:00ID:???
>>405
ラジオボタンで未チェックなら値は渡ってこないから
値が空は普通にあるよ

その場合、isset等を使わず $_POST['radio'] (←ラジオボタンだとして)をそのまま使えばNOTICEがでる
0413nobodyさん2010/10/19(火) 23:38:08ID:???
普通にMDB2を使ってるが。
0414nobodyさん2010/10/19(火) 23:40:21ID:???
ラジオボタンだとするとname属性の値がradioなのかw
0415nobodyさん2010/10/19(火) 23:45:05ID:???
イミフなツッコミ
0416nobodyさん2010/10/19(火) 23:56:27ID:???
そりゃ分かってたら書かないもんな
0417nobodyさん2010/10/20(水) 00:02:21ID:???
typeの値がradioに決まっとろう
nameをradioしたのは説明上の理由にきまっとろう
0418nobodyさん2010/10/20(水) 00:10:19ID:???
PHPは入力フォームの種類まで受け取れるのか、の方が良かったか
0419nobodyさん2010/10/20(水) 00:42:00ID:goWML+Iz
悲しみのradio
0420nobodyさん2010/10/20(水) 01:03:07ID:???
みんな if ($hoge) とかやってんの?
E_NOTICEでエラー出ちゃうじゃん。
0421nobodyさん2010/10/20(水) 02:07:00ID:???
値が入ってたら出ないのでは?
0422nobodyさん2010/10/20(水) 02:21:45ID:???
isset と empty の動作が嫌なので、
isEmpty() みたいなメソッドを独自実装してるのって俺だけ?
0423nobodyさん2010/10/20(水) 02:25:44ID:???
うぇ勘弁してくれ
0424nobodyさん2010/10/20(水) 02:32:42ID:???
どんな挙動?
0425nobodyさん2010/10/20(水) 06:30:11ID:3XsRLFfk
2つ質問があります
bangohan.phpというファイルを作成して

<form action="bangohan.php" method="post">

<select name="晩御飯">
<option value="" selected="selected">▼選択して下さい</option>
<option value ="100">アポロチョコ</option>
<option value ="200">ポッキー</option>
<option value ="3000">マグロのカルパッチョ</option>
</select>

<?php
$bangohan = $_POST["晩御飯"];
echo "$bangohanキロカロリーだよ!";
?>

<input type="submit" value="カロリーチェック!">


でカロリーチェックを押したらselectで選択したところが元の▼選択して下さいに戻ってしまうんですが戻らない方法ってありますか?

そして2つ目の質問ですが
このページの下部にもう一つsubmitで
<input type="submit" value="1日3食1ヶ月間コレを食べたら?">
というのを作って

<?php
echo"$bangohan*90"キロカロリーだよ!;
?>
というのも追加したいんですがこの時どのようなコードにすればいいのでしょうか?
なるべく1つのphpファイルにまとめたいのですが
0426nobodyさん2010/10/20(水) 07:27:59ID:???
>>425
1.各optionに$_POST['晩御飯']の値で条件分岐してselected="selected"をつける
2.submitの値で処理を分ける
つまりif文という奴を使ってください
0427nobodyさん2010/10/20(水) 07:46:35ID:3XsRLFfk
>>426
すみません、条件分岐はわかるのですが
>各optionに$_POST['晩御飯']の値で条件分岐してselected="selected"をつける
というのは
<option value ="if($_POST['晩御飯'] == 100){selected="selected} else{100}">アポロチョコ</option>
<option value ="if($_POST['晩御飯'] == 200){selected="selected} else{200}">ポッキー</option>
<option value ="if($_POST['晩御飯'] == 3000){selected="selected} else{30000}">マグロのカルパッチョ</option>
と、こういうことでいいんでしょうか?全然理解してなかったらすみません

そして2についてですが
submitの値で処理を分けるというのが具体的にどういうものなのか、試しに調べてnameを付けて
<input type="submit" name="1syoku" value="カロリーチェック!">
<input type="submit" name="1month" value="1日3食1ヶ月間コレを食べたら?">
というのをやってみたのですがどっちも
<form action="bangohan.php" method="post">
に送られて両方

<?php
$bangohan = $_POST["晩御飯"];
echo "$bangohanキロカロリーだよ!";
?>
<?php
echo"$bangohan*90"キロカロリーだよ!;
?>

の二つの計算結果が表示されてしまいました
HTMLもphpも勉強足りなくて本当にすみません
0428nobodyさん2010/10/20(水) 09:50:33ID:VChkUypH
htmlも、もちっと整理したほうがいいとおもうぞ

select されていない時のhtmlタグ($_POST["晩御飯"] が 100ではない)
<option value ="100">アポロチョコ</option>

select されているとき(要は$_POST["晩御飯"] が 100)の時のhtmlタグ
<option value ="100" selected="selected">アポロチョコ</option>

結果の例
<option value ="100" <?php if($_POST["晩御飯"]=100){ print 'selected="selected"';}?>>アポロチョコ</option>

書き方はいろいろあるとおもう
0429nobodyさん2010/10/20(水) 09:54:56ID:???
ニヤニヤ
0430nobodyさん2010/10/20(水) 09:57:42ID:???
>>422
おれも知りたい
言語構造の代わりをメソッドの独自実装でどうやってできるかを
0431nobodyさん2010/10/20(水) 10:21:11ID:???
結局中身でissetやempty使ってるってオチだろ
0432nobodyさん2010/10/20(水) 10:43:40ID:???
PHP拡張でという意味じゃないの?
cができれば簡単にできるよ

PHP Extentionで検索すればいっぱいでてくる
0433nobodyさん2010/10/20(水) 10:48:34ID:???
root権限のある専用サーバや自宅サーバならともかく
ここにいる人ってだいたい共用サーバでしょ?
PHPのソース拡張しても実運用じゃ使えなきゃ意味ないしな
0434nobodyさん2010/10/20(水) 11:11:00ID:???
たとえ実運用で使えても使いたくありません
0435nobodyさん2010/10/20(水) 11:58:57ID:???
selected="selected"って書くんだ・・・
今までselectedしか書いてなかったよ
0436 [―{}@{}@{}-] nobodyさん2010/10/20(水) 12:44:08ID:???
HTML4とかは属性名と属性値が同じなら省略できたからselectedだけでいいけど、
XHTMLとかは属性値が必須だからselected="selected"って書かないと駄目
04374222010/10/20(水) 12:49:38ID:???
メソッドって書いたのが悪かったか。ただの関数。
issetとemptyって、空文字("") や "0" でも true を返すから、あまり好きじゃない。
(issetは用途が違うとは思うけど)

function isEmpty($target) {
if ($target === "") return true;
if ($target === null) return true;
return false;
}
0438nobodyさん2010/10/20(水) 13:18:12ID:???
>>421
値が確実に入ってるならいいけど、それでない場合もあることを考えるとif ($hoge)は不安
0439nobodyさん2010/10/20(水) 13:19:06ID:3XsRLFfk
>>428
できました!ありがとうございます!
質問の一つが解決しました
0440nobodyさん2010/10/20(水) 13:26:54ID:???
普通に考えてif ($hoge)はユーザからの入力値だから
何も送られてこなくても空文字になるだけでnullにはならない
問題なのは最初に開いて未送信の状態だとnullであることだね
nullと空文字を同列に扱ってもいい場合はそういう書き方でも問題ない
0441nobodyさん2010/10/20(水) 13:42:45ID:???
nullとか空文字ならまだいいが、関数じゃ未定義の変数渡せないじゃん
0442nobodyさん2010/10/20(水) 13:54:02ID:???
> 普通に考えてif ($hoge)はユーザからの入力値だから

そうとも限らないじゃないかな
0443nobodyさん2010/10/20(水) 14:00:43ID:???
>>441
どういうこと?
0444nobodyさん2010/10/20(水) 14:01:21ID:???
>>440
はじめからtextarea等とわかったうえでならいいのかもしれないが
radioやcheckboxは未checkだと空文字ではなく値が渡ってこないから
わかってないとはまりそうじゃない?

taintが無いのは慣れたけど、phpの流儀はよくわからんな
未定義の可能性があるものをそのまま渡すのがphpの普通なの?
NOTICEを無視するのも普通?
0445nobodyさん2010/10/20(水) 14:04:18ID:???
$checkbox = $_POST['checkbox'] ? true : false;
とかにするよな?
0446nobodyさん2010/10/20(水) 14:09:49ID:???
if (isset($hoge)) ; // 言語構造に未定義変数渡してチェックできる
if (empty($hoge)) ; // 同じく言語構造に渡してチェックできる

if ($hoge) ; // 未定義だから警告出る
if (isEmpty($hoge)) ; // 未定義だから警告出る

>>443 こういうことでしょ
0447nobodyさん2010/10/20(水) 14:11:37ID:???
把握
0448nobodyさん2010/10/20(水) 14:13:38ID:???
>>446
ん?
if ($hoge)の前に$hoge定義するでしょ?
やべえ俺は異端者なのか
0449nobodyさん2010/10/20(水) 14:17:42ID:???
$_POST['hoge']がtextareaの場合

$hoge = $_POST['hoge'] ? $_POST['hoge'] : "";
if ($hoge)

or

if (isset($_POST['hoge']))
0450nobodyさん2010/10/20(水) 14:17:50ID:???
結局@で警告抑止するのが一番楽という結論になったな俺はw
若干遅くなるって話も聞くけどループでぶん回すとこじゃなけりゃ
気にしない。
0451nobodyさん2010/10/20(水) 14:18:59ID:???
鯖代をけちって第三者に貸し出すシステムを
スタンダードとかやばいなかw?


さくらってすぐに鯖落ちするからなぁー
0452nobodyさん2010/10/20(水) 14:20:24ID:???
一度変数に入れてあとで使う場合なんかは

$hoge = $_POST['hoge'] ? $_POST['hoge'] : null;

or

$hoge = null;
if (isset($_POST['hoge'])) {
 $hoge = $_POST['hoge'];
}

とかか
0453nobodyさん2010/10/20(水) 14:26:02ID:???
いや・・・
三項演算子はif-else文と対応するだけであんまり関係ないよ
コードがスッキリするか否かの差じゃないかな
(三項演算子嫌いな人もいるからスッキリするかは人それぞれだけど)

もしやるなら
$hoge = isset($_POST['hoge']) ? $_POST['hoge'] : null;
だね

結局isset使えでいいんじゃないの
0454nobodyさん2010/10/20(水) 14:40:41ID:???
俺は好きにすれば良いと思うけどね

・isset/emptyでチェックする
http://www.php.net/manual/ja/function.isset.php

・error_reporting = E_ALL & ~E_NOTICE でNOTICEを無視
http://www.php.net/manual/ja/errorfunc.configuration.php#ini.error-reporting

・@つけてエラーメッセージを無視
http://www.php.net/manual/ja/language.operators.errorcontrol.php
0455nobodyさん2010/10/20(水) 14:48:19ID:???
どうしても@使わなきゃいけない局面ってあるの?
0456nobodyさん2010/10/20(水) 14:52:42ID:???
@使う場面は
ちょっとした自分で使うような適当なスクリプトだけじゃない
バッチ処理だったりそういうのを含めて
エラーとか細かい処理は必要がないそんな適当なものだけ
使わなきゃいけないって場面はないんじゃない
使わなかった場合チェック用のロジックが必要になってコード増えるだけだし
04574222010/10/20(水) 15:03:45ID:???
>>453 $hoge = c($_POST['hoge']) ? $_POST['hoge'] : null;
$hoge = $_POST['hoge'];
とは意味違うの?

ちなみに、検索条件の入力有無の判定とかで isset って使う?
入力値を trim することを考えると、isset と empty だけだと、なんかややこしい。

他人のソースを見ると、isset を使ってるのが多いから、
理由がわかれば、オレもそっちを使いたいんだけど。
0458nobodyさん2010/10/20(水) 15:20:47ID:???
c()って何
0459nobodyさん2010/10/20(水) 15:49:38ID:6gJYBDD6
自作関数じゃね?
0460nobodyさん2010/10/20(水) 15:54:30ID:???
自作関数が何か分からないと答えようがないな
0461nobodyさん2010/10/20(水) 16:07:38ID:xwi4oiJN
session_idに携帯のIdをmd5+サイトで設定した文字列 とか使うとまずい?
0462nobodyさん2010/10/20(水) 16:15:18ID:???
>>461
ほっとけばランダムにつけてくれるのになんでわざわざそんな
危ない橋を渡りたいんだ?
0463nobodyさん2010/10/20(水) 16:16:01ID:???
未定義云々言ってるやつは多分extract使ってるんだろ
0464nobodyさん2010/10/20(水) 16:16:56ID:xwi4oiJN
>>462
cookie使えない携帯あるから・・・・
0465nobodyさん2010/10/20(水) 16:25:23ID:???
>>461
md5 + サイトで設定した文字列
ではなく
md5(サイトで設定した文字列 + ユニークな文字列)
にするといいぉ
0466nobodyさん2010/10/20(水) 16:26:57ID:xwi4oiJN
>>465
ユニークにするとセッション続かなくない?
04674652010/10/20(水) 16:27:04ID:???
あっ、あまり読まずに書き込んでた。
無視してね。
0468nobodyさん2010/10/20(水) 16:28:50ID:???
書くの忘れてたけど、一応IPで携帯以外はフィルタしてる。
0469nobodyさん2010/10/20(水) 16:38:01ID:???
>>466
そなの?
0470nobodyさん2010/10/20(水) 16:43:17ID:???
>>464
クッキー使えるかどうかとセッションIDをどう決めるかに何の関係があるんだ?
クッキー云々は決めたセッションIDをどうやって端末とやりとりするかの問題だろ。
0471nobodyさん2010/10/20(水) 16:44:01ID:???
クッキー関係ないんじゃ
0472nobodyさん2010/10/20(水) 17:01:20ID:???
ごめん。なんか説明まずかったみたい。
携帯でセッション使う方法として、クッキーが使えないからPHPSESSIDの代わりに携帯のID使えないかなってこと。
クッキーがないとセッションって使えないよね?後はuse_trans_sidを1にしてリンクにPHPSESSIDを使うくらいしか・・・
なんか間違ってる?
0473nobodyさん2010/10/20(水) 17:09:05ID:???
>>472
つまりセッションIDをURLに付加したり、hiddenで持たしたりはしたくないって事ね。
04744222010/10/20(水) 17:12:43ID:???
>>458
isset の部分をコピーした時に、ミスって c になってた。。。
もうこの話は忘れてくれ。
0475nobodyさん2010/10/20(水) 17:18:11ID:???
まあ普通はURLに付加してSESSION使うけどな、携帯では
0476nobodyさん2010/10/20(水) 17:19:41ID:???
isset使ってチェックしてるから$_POST['hoge']がなくてもNOTICEエラーが出ない
@$hoge = $_POST['hoge'];
にすれば動作上は同じになるんでない?意味は違うけど
04774222010/10/20(水) 17:26:32ID:???
>>476
なるほど。本当はエラーが出るのか。
ローカル環境でもレンタルサーバでも出たことないから、今まで気にしてなかった。
0478nobodyさん2010/10/20(水) 17:32:26ID:???
ここってなんでこんな親切な人が多いんだろ?
大抵専門スレで基本中の基本の質問してもググレカスって言われるのに
以前' 'と" "の違いも教えてくれたし本当に助かる
0479nobodyさん2010/10/20(水) 17:34:38ID:???
今日はたまたま
長くROMってればこのスレの低レベルさがわかる
そのうちギャーギャー喧嘩はじめるぜ
0480nobodyさん2010/10/20(水) 17:37:57ID:???
長くROMってればこのスレの低レベルさがわかるって?
今も十分酷いレベルだろ
issetがどうとか@エラー制御がどうとか・・・
04814792010/10/20(水) 17:46:51ID:???
PHPのレベルの話じゃない
基本的なことのほうが議論になりやすいだけだし
そういう話題は普通だと思うが
問題は煽ったりそれに乗ったやつが言い合いをはじめることだな
>>479-480も心当たりあるやつには煽りになってるから俺らも低レベルなのは認めざるを得ない
0482nobodyさん2010/10/20(水) 17:58:54ID:???
issetより@やオレオレ関数が良いなんてもう何と言えば良いのやらww
0483nobodyさん2010/10/20(水) 17:59:33ID:???
何この流れ・・・
0484nobodyさん2010/10/20(水) 17:59:57ID:???
馬鹿が馬鹿を馬鹿と言い合うスレ
0485nobodyさん2010/10/20(水) 18:05:05ID:???
@ってNOTICEを出さない最終手段みたいなものだよね?
0486nobodyさん2010/10/20(水) 18:15:39ID:???
いつものくだ質スレらしくなってきたじゃないですか、誰かの発言からw
0487nobodyさん2010/10/20(水) 18:16:18ID:???
>>482みたいな、煽りの書き込みだけする人が一番質が悪いよ

低レベルと煽る人は、否定はしても訂正はしてくれない
低レベルと言う位だから、何が問題なのかわかっているのに
それをあえて教えず、ただ煽ってニヤニヤしているだけ。

ちゃんと説明してあげるか、それが嫌なら書き込まずに黙ってればいいのに
0488nobodyさん2010/10/20(水) 18:26:21ID:???
__isset()
0489nobodyさん2010/10/20(水) 18:26:29ID:???
逆にPHPの高レベルってどんな話題だろ。
0490nobodyさん2010/10/20(水) 18:30:48ID:???
くだ質で高レベル期待するとかないわ
0491nobodyさん2010/10/20(水) 18:31:49ID:???
phpを型に厳密な言語に変更したいんですけどどなたかやってる人いませんか?

こんなの
0492nobodyさん2010/10/20(水) 18:33:17ID:???
それ質問じゃないじゃん
0493nobodyさん2010/10/20(水) 18:36:35ID:???
>>491
ふむ、たしかに高レベルだなw
まぁググって出ない物は高レベルって事かもね。
0494nobodyさん2010/10/20(水) 18:37:41ID:???
>>491
いますよとかいませんよとか答えてそれで高度だなぁって悦に入るのかwきめえしばかくせえw
0495nobodyさん2010/10/20(水) 18:38:28ID:???
くだ質で低レベルを理由に煽るとかKY過ぎるだろ
テンプレ守ってないとかならまだわかるが
0496nobodyさん2010/10/20(水) 18:40:39ID:???
phpでドライバを作る為にコンパイラ作成をしているのですが以下のパース部分が上手くいきません><
0497nobodyさん2010/10/20(水) 18:41:26ID:???
くだ質の日常業務(全板共通)
1. 人力検索エンジン
2. エスパー
3. 煽り合い
0498nobodyさん2010/10/20(水) 18:41:33ID:???
そういうネタはいいからw
0499nobodyさん2010/10/20(水) 18:50:10ID:???
>>478 の親切な人が多いんだろ?発言から、一気にここまで来るのか。
とりあえず >>478 にはあやまってもらおうか。
0500nobodyさん2010/10/20(水) 18:56:03ID:???
親切な人って言われると恥ずかしいから逆に振ってるだけなんですよね
0501nobodyさん2010/10/20(水) 19:01:22ID:???
>>496
自分で読み返してもそれが質問になってると思えるの?
0502nobodyさん2010/10/20(水) 19:03:04ID:???
あいつさっきからなんで質問云々が気になって仕方がないんだ?
空気読めないボッチかなんかか?
0503nobodyさん2010/10/20(水) 19:05:13ID:???
>>502の日本語が難解すぎます>_<
あいつとか言い出したしなんか脳内に敵でもいるんだろうなw
0504nobodyさん2010/10/20(水) 19:06:14ID:???
食いついてきたぞあいつw
0505nobodyさん2010/10/20(水) 19:07:06ID:???
レスみて一瞬毒雑かと思ったwwww
0506nobodyさん2010/10/20(水) 19:07:48ID:???
質問スレで質問を待つのは自然だろ
人は自分が他人に指摘されて嫌だと思うことを他人も嫌がると思う性質があるらしいからおそらく>>501はボッチと言われることに異常に恐れを抱いている
0507nobodyさん2010/10/20(水) 19:08:48ID:???
ボッチとか言い出したのは>>501じゃなくね?
■ このスレッドは過去ログ倉庫に格納されています