【PHP】下らねぇ質問はID出して書き込みやがれ 108
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2011/07/02(土) 18:37:53.12ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 107
http://hibari.2ch.net/test/read.cgi/php/1307228162/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0893nobodyさん
2011/07/25(月) 11:53:52.98ID:???0894nobodyさん
2011/07/25(月) 22:41:11.66ID:???0895nobodyさん
2011/07/25(月) 22:53:24.87ID:???0896nobodyさん
2011/07/25(月) 23:05:18.55ID:???0897nobodyさん
2011/07/26(火) 00:29:11.01ID:???0898nobodyさん
2011/07/26(火) 01:13:43.10ID:???0899nobodyさん
2011/07/26(火) 03:47:36.36ID:82tebuFo}
これは$bが定義されていようがいまいがParse errorが出ますが、
function hoge($a = B) {
}
と定数を指定した場合は、定数が存在しなくてもエラーになりません。
呼び出した場合はさすがにUse of undefined constant B - assumed
とNoticeレベルのエラーが出るようです。
このhoge関数が書いてる場所とは別のファイルにBを定義していて、
両方のファイルをincludeしないとhoge()という形では呼び出せません。
includeしないと存在しないBを関数の引数や関数の中身で使うのはよくないことでしょうか?
hoge関数を書いてるファイルにBをデフォルトとして定義して、
他のファイルで上書きしたりしようと試みましたが、定数はunsetのようなことも書き換えることもできません。
0901899
2011/07/26(火) 03:52:00.04ID:82tebuFo即レスありがとうございます。
なるほど、ifの中にfunctionを書くという発想はありませんでした。
早速そのように書き直したいと思います。
どうもありがとうございます。
0902nobodyさん
2011/07/26(火) 03:57:53.19ID:???>>900は定石だと思うけどBを定義してない状態でhogeを呼ぶと
関数自体が存在しないからどのみちエラー出るよ
0903nobodyさん
2011/07/26(火) 03:59:45.68ID:???0904nobodyさん
2011/07/26(火) 04:43:47.16ID:???echo "あ?";
exit();
}
これいれとけばいいじゃん
0905nobodyさん
2011/07/26(火) 06:40:07.42ID:???ファイルの存在や外部から受け取った変数はちゃんとチェックするにしても
自分で使う内部のものにはやらんな
あえて>>900のようにする意味はちょっと自分にはわからんな
0906nobodyさん
2011/07/26(火) 07:55:38.94ID:???0907nobodyさん
2011/07/26(火) 08:23:42.95ID:???0909nobodyさん
2011/07/26(火) 10:51:48.11ID:???if (class_exists('PDO'))
なんて処理しないだろ普通
0910nobodyさん
2011/07/26(火) 13:42:39.49ID:???永久に成功するものを毎回チェックするのか
0911nobodyさん
2011/07/26(火) 15:20:14.60ID:???0912nobodyさん
2011/07/26(火) 17:09:00.00ID:zVu+sgBbその逆のutf-8からeuc-jpに戻す場合はmb_convert_variablesではできないんでしょうか?
0913nobodyさん
2011/07/26(火) 17:18:21.26ID:???0914nobodyさん
2011/07/26(火) 17:23:40.52ID:zVu+sgBbutf8 > euc-jp
utf8 > eucjp-win
utf8 > sjis-win > euc-jp
utf8 > sjis-win > eucjp-win
と全て駄目でした
0915nobodyさん
2011/07/26(火) 17:23:47.89ID:???0916nobodyさん
2011/07/26(火) 17:24:59.12ID:???出力したコードを16進にして表示させるとどうなるの?
0917nobodyさん
2011/07/26(火) 17:27:01.28ID:???0918nobodyさん
2011/07/26(火) 17:38:09.28ID:???変化ありませんでした
>>916
$var = '��';
$var = mb_convert_encoding($var, 'sjis-win', 'UTF-8');
$var = mb_convert_encoding($var, 'eucjp-win', 'sjis-win');
echo($var);
echo(bin2hex($var));
上記のように変換、出力してチェックしてますが、
eucjp-winで最後に変換するとロというか□というかそんな感じの文字が出力され、
bin2hexの値は8ff4fbでした
euc-jpで最後に変換すると?が出力され、
bin2hexの値は3fでした
0919918
2011/07/26(火) 17:38:50.56ID:zVu+sgBb0920nobodyさん
2011/07/26(火) 17:49:02.60ID:???変換自体はできてるけど、こっちのコードだと表示できないんだね
0921nobodyさん
2011/07/26(火) 18:14:27.81ID:zVu+sgBb自分が表示させたいコードが何かを調べた結果、
CP51932で変換すればよさげだと言う所にたどり着けました
euc-jp > utf-8に変更する際も回りくどい変換をせずに一発でいけるようになりました
ありがとうございます、非常に助かりました
0923nobodyさん
2011/07/26(火) 19:53:35.25ID:???0924nobodyさん
2011/07/26(火) 23:15:23.90ID:aqwngZ8vhttp://d.hatena.ne.jp/aki202/20090415/1239774798
書いてある通り.htaccessを作成し、中身が「php_value upload_max_filesize 10M」
だけにして配置したのですが、アップローダーがPort 80エラーを起こしてしまいます。
.htaccessを削除したり、中身を空にするとエラーが発生しなくなるため、
.htaccessの記述に原因があると思われますが、調べてもこのような回答が出てきたりして、何が問題かわかりません。
http://questionbox.jp.msn.com/qa4580341.html
何処を修正すれば良いのでしょうか。
0925nobodyさん
2011/07/26(火) 23:24:33.75ID:???http://mypacecreator.net/blog/archives/508
0926nobodyさん
2011/07/26(火) 23:38:22.33ID:aqwngZ8v.htaccessに書く場合をそのままコピペして
UTF-8BOMなしにもしましたが、やはりエラーが出てしまいます。
0927nobodyさん
2011/07/26(火) 23:41:42.80ID:???0928nobodyさん
2011/07/26(火) 23:43:19.36ID:???0929nobodyさん
2011/07/27(水) 03:21:30.86ID:???0930nobodyさん
2011/07/27(水) 04:03:28.75ID:TDLpYBaY0931nobodyさん
2011/07/27(水) 06:03:53.51ID:???0932nobodyさん
2011/07/27(水) 06:12:38.05ID:???0933nobodyさん
2011/07/27(水) 07:18:49.61ID:???むしろ間違えるならそれ以前の問題だわw
0935nobodyさん
2011/07/27(水) 11:01:37.74ID:???0938nobodyさん
2011/07/27(水) 11:55:41.95ID:???0939nobodyさん
2011/07/27(水) 13:49:52.01ID:???0940nobodyさん
2011/07/27(水) 14:05:55.91ID:???php関連以外ね。AllowOverrideはどうなってる?
0941nobodyさん
2011/07/27(水) 15:12:23.02ID:q19iSiUxmb_send_mail関数ではSMTP認証の操作ができない。」
って2010年に発売したPHPの本に紹介が載ってた。
しかし、SMTP認証がないサーバーなんてネット黎明期しかないだろ
バカじゃにのこの本の作者?
mb_send_mail関数を使った方法でメール送信不可能ってことは
どうやってphpでメール送るのですか?
SMPT認証するプログラム教えてください。
0942nobodyさん
2011/07/27(水) 15:14:59.40ID:???0944nobodyさん
2011/07/27(水) 15:24:46.09ID:???あと基本的に認証が必要なのは、外からアクセスして外へ送る場合だけ
ほんとにPHPからSMTP AUTHが必要なのか、から考えたほうがいい
自分でメールサーバたてなくて、かつ上位(プロバイダとか)の
メールサーバ経由が必須で、そのphpのサーバからそこに送るのに
認証が必要、な状況ならば必要にはなるね。それ用のモジュール持ってくればいいだけだけど
0945nobodyさん
2011/07/27(水) 15:31:03.24ID:q19iSiUxlocalhostからヤフーのメールでgooメールに送信しようとすると
530で通信に失敗してるみたいです。
localhostからヤフーのメールでgooメールに送信って難しいのですか?
0946nobodyさん
2011/07/27(水) 15:33:47.82ID:???0947nobodyさん
2011/07/27(水) 15:37:25.73ID:???それでヤフーのサーバ使う理由がわからんけど
もしそうしたいなら、localhostのサーバの設定で
SMTPAUTHでヤフーのサーバにrelayする設定いれとけば
phpからはlocalhostに送るだけだよ。
もし直接ヤフーのサーバ使うつもりなら、PEARからメール関係
持ってくればいい。
0948nobodyさん
2011/07/27(水) 15:39:38.09ID:q19iSiUx一般的なフリーメールのYahoo!とgooとGoogleのメール
でlocalhostから送信できないって全然初心者向け
プログラムじゃないじゃねーかって言いたかった。
0949nobodyさん
2011/07/27(水) 15:43:09.19ID:???お前が馬鹿だって事は皆理解してるから下手に取り繕ってレスすんな
0950nobodyさん
2011/07/27(水) 15:48:26.73ID:q19iSiUxphpの本に載ってたxamppのApache使ってlocalhostで
phpを動かしてます。
0951nobodyさん
2011/07/27(水) 15:49:05.56ID:???0952nobodyさん
2011/07/27(水) 15:53:56.91ID:???わからなくなるなw
0953nobodyさん
2011/07/27(水) 15:55:27.23ID:???php等のwebプログラムから、そのフリーメールのSMTP鯖を
使って送信する方が特殊なケースだよ。
0955nobodyさん
2011/07/27(水) 15:57:35.14ID:q19iSiUxphpのプログラムの勉強を始めて5日です
0956nobodyさん
2011/07/27(水) 16:02:36.15ID:???0957nobodyさん
2011/07/27(水) 16:02:47.82ID:???環境は?
まあググっただけであまり読んでないけど
http://www.phpbook.jp/pear/pear_mail/
この辺試してみては?
0959nobodyさん
2011/07/27(水) 18:00:35.79ID:???0960nobodyさん
2011/07/27(水) 18:03:40.59ID:???0961nobodyさん
2011/07/27(水) 18:32:55.60ID:q19iSiUxやってみます。
0962nobodyさん
2011/07/27(水) 18:43:21.35ID:???mysqlの結果がひし形に?マークみたいに文字化けしてしまいます…
一応文字コード調べたらshift-jisになってました
phpファイルはUTF-8、mysqlはutf8_general_ciでUTF8に統一してるのになぜshift_jisになってしまうんでしょうか
0963nobodyさん
2011/07/27(水) 18:48:19.13ID:???http://php.net/manual/ja/mysqli.set-charset.php
0964nobodyさん
2011/07/27(水) 19:03:47.68ID:???0965nobodyさん
2011/07/27(水) 19:55:13.97ID:rFjGz8Xs$list=array('a','b','c','d','e');
foreach($list as $value){
echo htmlspecialchars($value);
}
今は全部こんな風にechoするところにはhtmlspecialcharsを入れています。
ループでまわすような内部の変数を全部通してたら相当パフォーマンスも下がるので、
こういう場合はどうしたらいいのでしょうか?
0966nobodyさん
2011/07/27(水) 20:01:45.51ID:???意味が分からない。
>ループでまわすような内部の変数を全部通してたら相当パフォーマンスも下がるので、
まともにプログラムを組めるようになってから心配した方がいい
っつか、ほんとうにそれだけならまとめてhtmlspecialcharsしても変わらんのじゃね?
echo htmlspecialchars(implode('', $list));
0967nobodyさん
2011/07/27(水) 20:07:19.31ID:???受け取った値はそのまま使って、DBなりブラウザに出力する際に処理するのが普通
個人的には出力直前まで処理したくないから先に変換掛けるのは好きじゃないけど
http://zapanet.info/blog/item/1193
この辺が参考になるんじゃないかね
ぶっちゃけ10万回程度使ってもそんなに重くならんから気にするな
サーバの負荷よりもブラウザの負荷のがやべえ
0968965
2011/07/27(水) 20:44:16.86ID:rFjGz8Xs質問内容は単純に、
$name="山田太郎";
echo "こんにちは{$name}さん";
この時$nameに対してhtmlspecialcharsをするべきかという話です。
元々外部から受け取ってDBにいれておいたデータでも、
$_GETや$_POSTで受け取ったものではありません。
$a = array(1,2,3,4,5,6,7,8,9);
$b = 3; //DBからとってきたような値です
<?php foreach($a as $v):?>
<option value="<?=$v>" <?php if($v==$b):?>selected<?php endif;?>><?=$v></option>
<?php endforeach;?>
この時に$vに対して使うかどうか迷っています。
0969nobodyさん
2011/07/27(水) 20:51:17.65ID:???何でもかんでも最適化するのが良い訳じゃないよ
0970nobodyさん
2011/07/27(水) 21:06:59.13ID:???何のために使う関数か考えればおのずと分かる
使うべきか使わないべきか聞いている時点で、そもそもWebアプリのセキュリティの知識が欠けてる
0971968
2011/07/27(水) 21:15:20.39ID:rFjGz8Xsありがとうございます。
そうですね、他のセキュリティに無縁な場所の、
ループや条件文などの構造み直しで最適化を図りたいと思います。
>>970
xss対策のための関数ですよね。
ただ上記のような例では挿入する隙がないので起き得ないと思います。
>使うべきか使わないべきか聞いている時点で、そもそもWebアプリのセキュリティの知識が欠けてる
欠けてるから聞いたんですよ。
0972nobodyさん
2011/07/27(水) 21:23:04.41ID:???今は大丈夫でも今後の修正でミスが絶対に発生しないとは限らない
0974924
2011/07/27(水) 22:10:33.15ID:RXEWzwMM.htaccessでphp_value や PHP_Flag は使えない。php.iniを使え。
ただし、php.iniの記述については一切答えない。
また、memory_limitの値は変えられるがこっちで上限が決めてある。上限は教えられない。
と、いった所です。
ですのでhttp://mypacecreator.net/blog/archives/508を参考にphp.iniのコードを張りつけました。
とりあえず、エラーは出なくなったのですが、アップロードすると上限が変わっていない所か
3MB程度のファイルもアップロードできなくなりました。(数kbyteなら出来る)
php.iniを削除すると3MBのファイルがアップロードできるようになるため、php.iniで3MBのファイルを弾く様な記述をしたと思ったのですが、
やはり、参考にしたサイトのままであり、memory_limitに引っ掻かているとも思えず訳が分かりません。
なにかおかしそうな所、サーバーに問い合わせるべき場所などは無いでしょうか。
0975nobodyさん
2011/07/27(水) 22:31:28.77ID:???エラーログ全開にしてエラーが出てないかも確認。
いちおうPHPでプログラムを書く人のための板なんでそのへんよろしく。
0976924
2011/07/27(水) 22:55:35.67ID:RXEWzwMMサーバー側のコントロールパネルの機能でphp.iniの記述と作成をして、
同階層に<?php phpinfo() ?>だけ書いたファイルを確認しましたが、設定自体が変わっていないようです。
改行コードが悪さしてるかと思い、memory_limit 200Mの一行だけ書いてみましたが、これも駄目
どうやらサーバーに問い合わせた方がよさそうですね。
ありがとうございました。
0977nobodyさん
2011/07/27(水) 22:58:28.60ID:???つーかエラーログを出せ
0978924
2011/07/27(水) 23:27:39.68ID:RXEWzwMM調べたところなんとか原因が分かりました。
まず、こちらのサイトのコードですがhttp://mypacecreator.net/blog/archives/508
これをそのままコピペすると改行が無視されて
;メモリ使用量の制限 memory_limit 20M
こんな感じになってしまいます。
そのため、このコードをコピペしただけではうまく行きませんでした。
次に改行コードを修正し、直接php.iniファイルを上書きしのですが、それでも設定に反映されていませんでした。
これはコントロールパネルからphp.iniの編集を行わないとapacheが再起動されないからのようです。
というわけで、改行コードに気を付けてコントロールパネルから記述すると上手く行きました。
ちなみにサーバーはさくらです。
本当にありがとうございました。
0979nobodyさん
2011/07/28(木) 00:00:22.51ID:???0980nobodyさん
2011/07/28(木) 00:04:36.10ID:???ここのところ雰囲気が改善されてたんだが残念
0981nobodyさん
2011/07/28(木) 00:05:11.17ID:???0982nobodyさん
2011/07/28(木) 00:08:29.97ID:???さもないとクライアントアプリからサーバーに何か問い合わせしてるのかと勘違いする。
0983nobodyさん
2011/07/28(木) 00:17:00.54ID:???流れ的にSQLの話してるなんて到底思えないし
0984nobodyさん
2011/07/28(木) 00:19:57.98ID:???しかも間違ってるから突っ込まれてるだけだろ
0985nobodyさん
2011/07/28(木) 02:08:15.37ID:???0986nobodyさん
2011/07/28(木) 02:44:58.96ID:???「サーバーに問い合わせる」のが「SQL」っておかしくないか?
HTTPでもPOPでもクライアントからサーバーへ情報を確認する手順のことを
一般的に「問い合わせ」っていうんだよ
0987nobodyさん
2011/07/28(木) 03:34:00.71ID:???毎回これでエラーがでるわ
まったくヽ(`Д´)ノプンプン
0988nobodyさん
2011/07/28(木) 03:36:58.49ID:???0989nobodyさん
2011/07/28(木) 03:43:05.66ID:g5Xs46CY配列の値で文字列を検索したいのですが
0992nobodyさん
2011/07/28(木) 04:35:08.20ID:???「逆」の意味がわからん
preg_grepはヒットした要素の配列を返す関数だが、
それの逆ってことは、配列にパターンが複数入っていて、
ヒットしたパターンの配列を取得したいってことか?
レス数が950を超えています。1000を超えると書き込みができなくなります。