【PHP】下らねぇ質問はID出して書き込みやがれ 108
■ このスレッドは過去ログ倉庫に格納されています
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等)・フレームワークは各該当スレへ
0697nobodyさん
2011/07/17(日) 00:15:50.64ID:Vl6SLvCjおめでてーな
0698nobodyさん
2011/07/17(日) 00:44:01.64ID:???0700nobodyさん
2011/07/17(日) 02:14:39.73ID:???/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/ あーひゃっひゃっひゃひゃwwwwwwwww
| ノ | | | \ / ) / あーひゃっひゃっひゃひゃwwwwwwwww
ヽ / `ー'´ ヽ / / アッーーーーwwwwwwwww
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0701nobodyさん
2011/07/17(日) 05:24:56.71ID:???おはよぉ〜
おねぇさん、3連休の初日なのに徹夜明けだよぉ〜
さて、どんな質問が残ってるのかな?
徹夜明けの帰宅途中だから、家に帰ってから質問に答えるね。
0705nobodyさん
2011/07/17(日) 15:20:29.72ID:???0706nobodyさん
2011/07/17(日) 18:58:11.83ID:0h0D0Wjophp.iniの設定でmbstring.http.outputをSJISにすると、
いくらhoge.phpのヘッダにutf-8を記述しても、ブラウザではShift-JISになってしまいます
nkfで文字コードを見ても、UTF-8って表示されるんだけど、
php.iniのmbstring.http.outputで設定されてる値が優先されるんでしょうか?
だとしたら、phpファイル上で、文字コードを宣言するのは全く無意味な気もするんですが・・・
ちなみに、PCサイトとモバイルサイトで分けていて、モバイルサイトはShift-JISで表示したいし、
PCサイトはUTF-8で表示させたい。
ヘッダで宣言して作り分けようと思ってたのですが、上記のような問題にぶつかってしまっています
0707nobodyさん
2011/07/17(日) 19:09:35.21ID:???0708nobodyさん
2011/07/17(日) 19:33:20.59ID:???日本語で書くよりソースと設定貼ってくれ
0709nobodyさん
2011/07/17(日) 19:57:47.82ID:yNBJt+VA想定外(URLの直接入力)もあるので、そのまま出力するとXSSになると思います。
そこでURLにhtmlspecialcharsやurldecodeをかけてみましたが、
URLが壊れて正しい場所に戻せませんでした。
たぶん&が&や%26になるのが原因だと思いますが、
こういうことをするのに何か他に最適な関数はありませんでしょうか?
もし手動で戻さなければならない場合、
どの関数を使ってどの文字を戻すか教えていただけると嬉しいです。
0711nobodyさん
2011/07/17(日) 20:21:45.95ID:0h0D0Wjoソースは
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>hogehoge</title>
</head>
<body>
<?php echo "hogehoge"; ?>
</body></html>
phpinfoの設定は、
default_charset UTF-8
mbstring.detect_order UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.encoding_translation On
mbstring.http_output SJIS
mbstring.internal_encoding UTF-8
mbstring.language Japanese
metaタグに文字エンコードをUTF-8に、ファイルもnkfでUTF-8になっていてもブラウザ上ではShift_JISになってしまいます。
mbstring.http_outputをUTF-8に変更すると、metaタグの内容にかかわらずUTF-8になります。
0712nobodyさん
2011/07/17(日) 20:25:29.56ID:0h0D0Wjoそうですよね・・・。UTF-8で表示させたいなら、mbstring.http.outputをUTF-8に
すれば解決なんですが、そうすると携帯用ページで文字化けが起きてしまいます。
そこだけ、.htaccessとかでShift_JISの出力にすればよいのでしょうか
ディレクトリ単位で設定かえられましたっけ?それともファイル毎に入れ込むのでしょうか?
0713nobodyさん
2011/07/17(日) 20:52:14.89ID:???携帯とPCの文字コード分けるのは普通だし
同じ場所から同じ変数をとってきて表示させる場合でも
その変数をmb_convert_encodingすればいいだけの話
0714nobodyさん
2011/07/17(日) 21:16:34.27ID:???http://php.net/manual/ja/apc.configuration.php
この辺見ればどのタイミングまで設定できるか書いてあるよ
0715nobodyさん
2011/07/17(日) 22:12:17.92ID:???mbstring.http_outputはpassのまま使え!
プログラム内で変換すれば充分だから余計なことで悩まなくて済む
0717nobodyさん
2011/07/17(日) 22:22:00.29ID:0h0D0Wjo>>713
文字コードを分けるというのは、phpファイルごとに
mb_http_output('SJIS');
と入れるってことでしょうか?
とりあえず、mb_http_output('SJIS');とmb_http_output('UTF-8);で
思うように振り分けて表示させることはできました
>>715
passに設定すると、ファイルそのものの文字コードで表示されるのでしょうか?
それともmb_http_output('SJIS');のように各ファイル毎に記述する必要gああるということでしょうか?
既に結構のphpファイルを作ってしまっていて、変数毎に変換というのは正直つらいものがあります・・・
0718nobodyさん
2011/07/17(日) 22:30:02.10ID:???default_charset=UTF-8ならHTTPヘッダでUTF-8が指定される。meta要素いらん
今時の携帯にShift_JISとか使わなくていいよ
0720nobodyさん
2011/07/18(月) 02:09:58.56ID:B6IhzFZpfunction test($n) {
if (!$n) {
echo "引数が違う";
return false;
}
if ($n > 5) {
echo "なんか違う";
return false;
}
}
0722nobodyさん
2011/07/18(月) 02:40:54.96ID:???まさにその為の例外が用意されている
http://www.php.net/manual/ja/class.invalidargumentexception.php
0723nobodyさん
2011/07/18(月) 02:44:29.30ID:???try 書くのを強制するのか?
0724nobodyさん
2011/07/18(月) 02:46:48.74ID:???0725。 ◆oDupeixhZv52
2011/07/18(月) 08:48:29.54ID:OhzoRm/Eどういう危険があるのか教えてください。
0726nobodyさん
2011/07/18(月) 09:13:16.43ID:???去年のカンファレンスに参加してないの?
http://www.slideshare.net/ockeghem/ss-5283574
0728。 ◆oDupeixhZv52
2011/07/18(月) 09:33:25.45ID:???参加してません。参加してないと知りえない内容でもないでしょうに。
で、どう危険で何すると安全なのですか? mbstring.http_outputで。
0729nobodyさん
2011/07/18(月) 09:37:37.20ID:???0730nobodyさん
2011/07/18(月) 09:40:04.97ID:OuXEBLnC見た上で質問します
是非解説してください
0731nobodyさん
2011/07/18(月) 09:43:03.62ID:???0732nobodyさん
2011/07/18(月) 09:43:13.34ID:???htmlspecialchars(mb_convert_encoding($str, $charset, 'auto'), ENT_QUOTES);
してるから問題ない
0734nobodyさん
2011/07/18(月) 10:19:07.21ID:???妄想とか曲解が大好物なんだろうな
0736nobodyさん
2011/07/18(月) 10:27:05.04ID:???0737nobodyさん
2011/07/18(月) 13:30:45.05ID:???0738nobodyさん
2011/07/18(月) 13:36:31.41ID:xsH9/6rp警告で実行を中断したいのですが。
0740nobodyさん
2011/07/18(月) 15:01:46.85ID:???UTF-8として保存したものを改めて mb_convert する意味なんてないのに
0741nobodyさん
2011/07/18(月) 15:13:44.28ID:???>>711はソース中にある文字を echo してるだけなんだから文字コードは自明
携帯電話用に UTF-8 → Shift_JIS の変換が必要なだけだ
0743nobodyさん
2011/07/18(月) 15:22:27.50ID:???0744nobodyさん
2011/07/18(月) 16:43:08.41ID:gEfwcIht手持ちの参考書には、第3引数で文字コードを指定するとまではなかったので
>>726もすごく勉強になりました。
>>718>>741
基本UTF-8で取り扱って、携帯用のページのみShift_JISに変換して出力というかたちが
良いようですね。
>>743
サービス上、auユーザも対象にせざるを得なくて、UTF-8だけにしぼれないんですよね・・・
Shift_JISへの変換は、出力する変数毎に処理したほうがいいのでしょうか?
それともmb_http_output('SJIS');としておくのがよいのでしょうか?
0745nobodyさん
2011/07/18(月) 17:35:20.52ID:???俺は一つの変数にまとめて echo mb_convert_encoding($html 'SJIS', 'UTF-8'); にしてる
> 手持ちの参考書には、第3引数で文字コードを指定するとまではなかったので
参考書を使うなとまではいわないが、マニュアルも読もう
http://php.net/manual/ja/function.mb-convert-encoding.php
0746nobodyさん
2011/07/18(月) 17:38:58.96ID:???0747nobodyさん
2011/07/18(月) 17:42:48.67ID:???0748nobodyさん
2011/07/18(月) 17:44:30.23ID:???明示的にしたほうが早いから指定してるだけ?
0749nobodyさん
2011/07/18(月) 17:51:46.92ID:???普通は内部エンコーディング指定して省略するとおもうけど
0750nobodyさん
2011/07/18(月) 17:56:46.32ID:???autoにすると、予期しない順でエンコードしようとする時がある。
ブラウザでも、時々日本語エンコード指定してるのに、勝手に西ヨーロッパにしやがって化け化けじゃい!って事無いかな?
0751nobodyさん
2011/07/18(月) 18:05:25.01ID:mQmm7Nt1で、携帯の場合のみ、shift-jisにする
0752nobodyさん
2011/07/18(月) 20:28:27.86ID:???0753nobodyさん
2011/07/18(月) 23:32:35.29ID:dgUsdPB0行数は固定でなく増えていく感じです
0755nobodyさん
2011/07/18(月) 23:55:30.72ID:???$file = array("a","b","c");
echo end($file)."\n";
echo prev($file)."\n";
?>
<?
for($i=count($file)-1;$i>=count($file)-2;$i--)echo $file[$i]."\n";
?>
0756nobodyさん
2011/07/19(火) 00:50:01.20ID:???0757nobodyさん
2011/07/19(火) 00:56:37.08ID:???0758nobodyさん
2011/07/19(火) 00:59:25.69ID:???0759nobodyさん
2011/07/19(火) 00:59:30.72ID:???0760nobodyさん
2011/07/19(火) 01:00:01.12ID:???0761nobodyさん
2011/07/19(火) 01:05:50.13ID:???echo `tail -n 2 $file`;
すばらしい
0762nobodyさん
2011/07/19(火) 02:18:36.73ID:???0763nobodyさん
2011/07/19(火) 02:27:07.19ID:???0764nobodyさん
2011/07/19(火) 02:29:09.89ID:???0765nobodyさん
2011/07/19(火) 03:17:13.08ID:???間違いは誰にでもあるし気にしなくていいと思うよ
0766nobodyさん
2011/07/19(火) 05:32:11.56ID:???おはよぉ〜
おねぇさん、3連休は寝てばかりでした。
ちょっとムラムラしたけどPHPでプログラムしたら賢者モードです。
さて、どんな質問が残ってるのかな?
今日は、これから仕事だから夜にお返事しますね。
0769nobodyさん
2011/07/19(火) 10:23:39.49ID:???間違いは誰にでもあるし気にしなくていいと思うよ
0771nobodyさん
2011/07/19(火) 19:22:21.19ID:???0772nobodyさん
2011/07/19(火) 19:32:47.29ID:???0773nobodyさん
2011/07/19(火) 19:40:11.92ID:???2ちゃんでは○○アンチって書き方するやつ結構いる。
0774nobodyさん
2011/07/19(火) 19:47:36.27ID:???0775nobodyさん
2011/07/19(火) 21:32:33.41ID:???0776nobodyさん
2011/07/19(火) 21:57:47.99ID:???0777nobodyさん
2011/07/19(火) 22:05:36.11ID:H2wEVeOHログインIDとパスワードを入力させる画面はhttpsで表示させるっていコラムは
良く目にするんだけど、ログイン後のページも当然httpsで受けますよね。
ログイン後は、サーバーの負荷を落としたいので非SSL通信でやりとりさせたい場合、
どうやるべきでしょう? 遷移先のアドレスにhttp://とするのもなんかスマートじゃないし、
ログイン直後のページからhttpで別のページに移動させるのも利用者に手間になるかなと。
なにか良い方法はないでしょうか?
現状はログイン先のページに、Locationでhttpのアドレスを仕込んだphpからメインページに飛ばしてます
0778nobodyさん
2011/07/20(水) 01:56:45.29ID:???0779nobodyさん
2011/07/20(水) 03:13:52.76ID:VmDOJwn+if ($xml->res->status !== 'success') {
echo "failed : ". $xml->res->status;
}
↑これで success の時 "failed : success" とでるんですがなぜでしょうか?
dumpの結果は ["status"]=> string(7) "success" です
↓これだと正常になります
if ($xml->res->status != 'success') {
0780nobodyさん
2011/07/20(水) 03:53:15.05ID:???> dumpの結果は ["status"]=> string(7) "success" です
var_dumpの対象と結果を省略せずに書いてごらん。
0781nobodyさん
2011/07/20(水) 04:39:54.48ID:VmDOJwn+すみません
object(SimpleXMLElement)#2 (1) {
["res"]=>
object(SimpleXMLElement)#3 (2) {
["aaa"]=>
object(SimpleXMLElement)#4 (1) {
["bbb"]=>
object(SimpleXMLElement)#5 (0) {
}
}
["status"]=>
string(7) "success"
}
}
です。(string) $xml->res->status !== で正常になりました。
さっきは出なかったんですが (string)外して !== とすると
PHP Notice: Trying to get property of non-object と出てます。
0783nobodyさん
2011/07/20(水) 06:39:09.27ID:???http://www.php.net/manual/ja/simplexml.examples-basic.php#example-4646
マニュアル読もう、な!
=== は型を含めた厳密な比較
http://php.net/manual/ja/types.comparisons.php
0784nobodyさん
2011/07/20(水) 07:35:50.26ID:zYakDDbOでは、ログイン処理をするサイトはログイン後すべてhttps通信すべきってことなんでしょうか?
大手の動画サイトとかログインすると、http通信に戻っているようなのですが
一般的にはどうなのでしょうか?
0785nobodyさん
2011/07/20(水) 07:36:36.78ID:VmDOJwn+なるほど
>>783
ありがとうこざいます。
var_dumpでstringでも違うんですね
これからはしっかり読むようにします。
0788nobodyさん
2011/07/20(水) 16:47:53.77ID:???0789nobodyさん
2011/07/20(水) 18:00:16.12ID:???いや、var_dumpの結果が object(SimpleXMLElement)#5 (0) になってるでしょ。
つまり文字列stringじゃなくてobjectで返ってきてるの。
==で比較するとstringへ自動変換されて"success"となるけど
===の比較だとstringとobjectで型が違うから駄目なの。
0790nobodyさん
2011/07/20(水) 18:12:24.76ID:???0791nobodyさん
2011/07/20(水) 18:46:18.57ID:hYBwtF7imixiもログイン後、日記やつぶやきはともかくプロフィール変更まで
httpで処理してるのが気になる
httpsで遷移させてるのはログインIDとログインパスワードの変更だけみたいで…
それがそのサイトのポリシーなんだから自分も好きにしろって理屈はわかるんだけどね
最近のTwitter連携サービスなどのOauth認証->アカウント作成&ログインってフローを見ると
SSLって昔よりも使う箇所どんどん減ってきてるのかな?
0795nobodyさん
2011/07/20(水) 19:29:17.31ID:???0796nobodyさん
2011/07/20(水) 21:46:13.28ID:???>セッションハイジャックされてもいいけど漏洩は避けたい
やっぱりそういうことですよね? なんでこんな形の処理にしてるんだろう
セッションが盗まれてもデタラメの日記の投稿とかが出来ないような
対策がとられてるのかな? どんなことしてるんだろう
でもヤフーのログイン処理もその後はほとんど全部httpだし…
どこでhttp/httpsの線引きしたらいいのか、わからないなぁ
■ このスレッドは過去ログ倉庫に格納されています