【PHP】下らねぇ質問はID出して書き込みやがれ 99
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/10/13(水) 12:01:33ID:???過去スレ、関連スレ、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等)・フレームワークは各該当スレへ
0202nobodyさん
2010/10/15(金) 01:28:13ID:???php.iniの設定で勝手にキャストする項目あったかな
0203nobodyさん
2010/10/15(金) 02:13:48ID:???これで初期化しとけば
0204nobodyさん
2010/10/15(金) 03:19:25ID:0dyZ6dAOServices_JSONを使おうとしているのですが、json_decodeなら第二引数にTRUEを指定して連想配列にできるのですが
Services_JSONではできないようです。
パースしたものををechoで表示させたいのですが、どのようにすればできますか?
0205nobodyさん
2010/10/15(金) 05:45:46ID:???見ててイラッとするな
0208nobodyさん
2010/10/15(金) 09:36:14ID:3S26wDlW解説サイトに記載があります。
不可逆なら他人が見ても解らないから安全だという説明ですが、
復元可能な暗号でもファイルが流出したりハッキングされない限りは
特に問題ないのではないでしょうか?
逆に、そういう事態なら不可逆にしていても問題出てくると思いますし・・・
0209nobodyさん
2010/10/15(金) 10:28:58ID:???不可逆にすれば、システム管理者側でも会員のパスワードがわからなくなるので、
内部犯行が減るからとか。
0210nobodyさん
2010/10/15(金) 11:23:54ID:???【PHPのバージョン】Microsoft-IIS/6.0
レンタルサーバで、SSLは共用です。
httpの時にhttpsへリダイレクトさせたいのですが、httpsの場合でも
$_SERVER["HTTPS"] = 'off'
$_SERVER["SERVER_PORT"] = 80
となっており、httpsなのかどうかが判断できません。
なにか判断させる方法はあるでしょうか?
phpinfo()を眺めると、httpsの時だけ $_SERVER["HTTP_X_FORWARDED_SERVER"]
があるので、他に方法が無ければそれで判断するしか無いかなと思ってます。
0211nobodyさん
2010/10/15(金) 11:24:00ID:???0212210
2010/10/15(金) 11:25:04ID:N7BOKkib0213nobodyさん
2010/10/15(金) 11:31:29ID:???解答じゃないけど昔その課題にトライしたけど無理だった気がするな
だからあなたの言うとおり
httpとhttpsでアクセスしたときの$_SERVER $_ENVの違いを見て判断しようとしたけど
ブラウザごとに結果が異なってきてどうもうまくいかなかったので
結局よく見るSSLでログインするボタンみたいな感じのを設置して
ユーザに選択してもらうっていう結論に至った
俺もズバリな解決方法あるなら知りたいな
0214nobodyさん
2010/10/15(金) 11:33:12ID:60tWkVej0215nobodyさん
2010/10/15(金) 11:43:20ID:N7BOKkibなるほど、参考になります。
とりあえず$_SERVER["HTTP_X_FORWARDED_SERVER"]使う方向で考えます
>>214
SSL証明書をブラウザから見られてますのでhttpsで通信してます。
IISというより共用SSLの問題なのかもしれません。
共用だとhttp/httpsの時で以下のようなURLになってしまいます。
http://example.com
https://ssl用のなんとか.com/ssl/555/example.com/
ポートが443ならそこで判断したんですけどね。
0216nobodyさん
2010/10/15(金) 12:07:10ID:???使ってると良くある。そういう構成ならSSLかどうかの判定方法とかは
レンサバのマニュアルに書いてあるんじゃねーの? 書いてなかったら
問い合わせていいレベルだと思うが。
0218nobodyさん
2010/10/15(金) 12:58:50ID:N7BOKkib「プログラムの記述についてはお答えできません」との事です。
>>217
IISなうえにレンタルサーバなので、BASIC認証はできるんですが、それ以外は無理そうです
一応$_SERVER["HTTP_X_FORWARDED_SERVER"]でなんとかなりそうなので
テストを重ねて平気そうならこれでいきたいと思います
みなさんありがとうございました。
0219nobodyさん
2010/10/15(金) 14:23:37ID:???時代遅れですか?
0220nobodyさん
2010/10/15(金) 14:25:11ID:???lispをやりましょう
0221nobodyさん
2010/10/15(金) 14:52:35ID:???Ubuntu10.04LTSにphp5-gdをapt-getでインストールしたのですが
phpinfoには反映されてないのか出てきません。
apache2の再起動のほかに設定することあるんでしょうか?
PHPのバージョンは5.3.2-1ubuntu4.5です。
0222nobodyさん
2010/10/15(金) 15:03:04ID:???後半に流行ったPHP
2010年代PHPの次世代はなんだね?
考えたこともなかったがなんか話題にあがってるのあるっけ?
0223221
2010/10/15(金) 15:04:34ID:???スレ汚しスマソ
0224nobodyさん
2010/10/15(金) 16:37:09ID:???0225nobodyさん
2010/10/15(金) 16:41:31ID:???Python同様どうみてもライトユーザ向きではないな
しばらくはPHPで安泰ですね
0226nobodyさん
2010/10/15(金) 19:52:44ID:???0227nobodyさん
2010/10/15(金) 22:04:04ID:e2zhTAp1友達の美容院のサイト頼まれて、
「管理画面からシフト登録して、スタッフシフトがお客さんから確認できるようにしたい」
との事なんですが、どんなようなシステムを考えたら良いのでしょうか。。
やりたい事はこんな感じです。
1.
スタッフ山田さんは毎週月/水/金が出勤だからそのように登録(管理画面から)出来る = 以後ずーっと山田さんは月/水/金になると出勤スタッフ一覧に表示。
2.
10/20の水曜日は山田さんがお休みしたいとの事なので、その日のみ表示しないようにする。
3.
10/20に休んだ代わりに10/24出勤になったので、反映させたい。
(1)はDBにスタッフ用のテーブルを作って、どっかのフィールドに出勤曜日を入れとけばいいのかな?
と思ったのですが、すると(2)や(3)の時にどーすんだろ?と・・・。
通常こういったシフト管理システムとかって、どんなようなロジックで構成されるモノなのでしょうか?
ヒントだけでもいただけると死ぬほどありがたいです('A`)
0228nobodyさん
2010/10/15(金) 22:26:20ID:???スタッフテーブルに週フィールド作る
1,2,4,8といったフラグ具合でね
2
休日フィールド作る
カンマ区切りなんかで適当に
3
1と2を調べて翌日休むかどうか決める
はいおわり
0229227
2010/10/15(金) 22:46:20ID:e2zhTAp1レスありがとうございます!
休む日の日付を取得して、それを「休日フィールド」に突っ込んどく、というカンジです?
なんかイレギュラーな出勤や休日が多いととりとめもなくなっちゃう(その都度「休日フィールド」やら「この日は特別に出勤!フィールド」やらに日付を追加、だんだん増えてく)ような気がするんですが、「DBはそんなにヤワなモノではない!」って事なんでしょうか。
なにぶんpgは初心者なんでおかしなこと言ってたらホントごめんなさい(*_ _)
0230nobodyさん
2010/10/15(金) 22:51:36ID:???0231nobodyさん
2010/10/15(金) 22:58:23ID:???月次更新でスタッフテーブルのフィールドを基に
翌月のシフトデータを専用テーブルに吐き出す
当月の急な休みとか出勤はその都度書き換えれば良いだけ
はいおわり
相談料6000円になります
0232nobodyさん
2010/10/15(金) 23:13:10ID:???1 → 出勤曜日テーブル(A)を作る
2,3 → 不定出勤日/休日テーブル(B)を作る
テーブルBに対象日のデータがあればそれを優先する。
なければテーブルAのデータを使う。
0233nobodyさん
2010/10/15(金) 23:17:46ID:e2zhTAp1ありがとうございます!
いろいろ方法はあるんですね・・・。
教えていただいた3通り、調べながら色々試してみます!
ちょっと希望が見えてきたカンジです、ありがとうございました!!
0234nobodyさん
2010/10/15(金) 23:58:11ID:wodrVARbindex.phpに
<form action="2.php" method="post">
(略)
<select name="abcde" size="10">
<option value="http://123.com" selected>一番</option>
<option value="http://456.net"> 二番</option>
<option value=http://789.jp> 三番</option>
</select>
(略)
っと書いて、2.phpに
<form action="○○○" method="post">
○○○の部分ににindex.phpの三択で指定したURLを自動的に取得できるようにしたいのですが
○○○の部分にはどう記入すればいいのでしょうか?
0236nobodyさん
2010/10/16(土) 00:01:50ID:???0238nobodyさん
2010/10/16(土) 00:07:00ID:???どれもが別テーブルにしてるぞ
0239nobodyさん
2010/10/16(土) 00:18:07ID:YK7HI7ryもう少しヒントを教えてください
0240nobodyさん
2010/10/16(土) 00:23:15ID:???どうしても$_POSTがいいのか?
ならこうすれば?wwwww
echo <from action="$_POST['abcde']">
そしておまえはxssの餌食になるのであった
0241nobodyさん
2010/10/16(土) 00:37:57ID:???$url = $_POST['abcde'];
?>
<form action="<?php print ($url); ?> " method="post">
0242nobodyさん
2010/10/16(土) 00:39:04ID:???0243nobodyさん
2010/10/16(土) 00:45:46ID:YK7HI7ryやっと完成しました。
0244nobodyさん
2010/10/16(土) 01:08:54ID:gWKvdlCeチェックをかけるため、下記の正規表現をぐぐりながら書いてみた
のですが、どうも正常に動作しません。
if(!(preg_match('/[ぁ-んァ-ヴーa-zA-Z0-9]{1,10}/u', $_REQUEST['text']))){
errot();
}
恐れ入りますが、ご教示いただけますと、幸いです。
もし他に何か方法があればそちらを教えていただけますと幸いです。
0245nobodyさん
2010/10/16(土) 01:09:42ID:???0246nobodyさん
2010/10/16(土) 01:11:27ID:???何だかエロいなw
0247244
2010/10/16(土) 01:15:53ID:gWKvdlCe1つ上で
$_REQUEST['text'] = mb_convert_encoding($_REQUEST['text'], "UTF-8", "SJIS-win");
をしていて、ソースがUTF-8のため/uオプションをつけているのですが、
これがいけないのでしょうか。
すみませんがご教示ください。
>>246
すみません、、errorでしたね。。
0248nobodyさん
2010/10/16(土) 01:27:40ID:???「正常に動作しません」とは具体的に何がうまくいかないのかな。
うまくいく文字列、うまくいかない文字列があれば例示すべし。
ちなみに>>244のままだと文字列の一部に全角文字が含まれてれば通過するんじゃないかな。
0249nobodyさん
2010/10/16(土) 01:59:46ID:???!preg_match('/[a-zA-Z0-9]{1,10}/u',
じゃ、ダメなん?
0250nobodyさん
2010/10/16(土) 02:04:46ID:???>>228は同じテーブルっぽくない?
>>243
>>241の書き方はXSSという攻撃の対象になり得るので、下の用にしましょう。
<php?
$url = htmlspecialchars($_POST['abcde'], ENT_QUOTES);
?>
<form action="<?php echo $url; ?> " method="post">
0251nobodyさん
2010/10/16(土) 02:07:57ID:???0254nobodyさん
2010/10/16(土) 02:14:10ID:???0256nobodyさん
2010/10/16(土) 02:50:29ID:???htmlspecialchars使えば万事OKではない
htmlspecialcharsのデフォルトの文字コードはISO-8859-1、php.iniの文字コードとスクリプトの文字コードが食い違うとXSS可能
なのでちゃんと第三引数まで指定すること
あと、>>234の場合だと2バイト文字を含まないのでctype_printで先にチェックしておく
2バイト文字を含むならmb_check_encodingでチェック、これもちゃんと第二引数まで指定する
0257nobodyさん
2010/10/16(土) 03:10:26ID:???直接<from action="〜">に再投入することが問題。
0258nobodyさん
2010/10/16(土) 03:15:03ID:???そのときにどうセキュリティ対策するかという話
0259nobodyさん
2010/10/16(土) 03:21:54ID:???htmlspecialchars掛けたって偽装URLは排除しようがない。
>>234のようにあらかじめURLの選択肢が決まっているのであれば
そのURLを直接送信せずに選択肢番号のみを送信し、受け取った 2.php 内で
その番号に応じたURLを埋め込むような仕様にすべき。
0260nobodyさん
2010/10/16(土) 03:45:00ID:???他人にはURLとして誘導できないからな
0261nobodyさん
2010/10/16(土) 04:16:38ID:???クリックした本人にしか影響がないわけだからな。
XSSを考慮するなら、偽のindex.phpを用意して本物の 2.php にPOSTするような
攻撃方法も考慮すべき。
0262nobodyさん
2010/10/16(土) 04:18:40ID:???前半2行は無視してくれ。
0264nobodyさん
2010/10/16(土) 04:37:03ID:???0265nobodyさん
2010/10/16(土) 07:22:06ID:YK7HI7ry攻撃されるって誰からですか?
0267nobodyさん
2010/10/16(土) 13:34:00ID:???0268nobodyさん
2010/10/16(土) 13:41:34ID:I74M7hiK0269nobodyさん
2010/10/16(土) 13:42:42ID:???0270nobodyさん
2010/10/16(土) 13:47:14ID:???0271nobodyさん
2010/10/16(土) 14:12:49ID:???>>234のようにあらかじめURLの選択肢が決まっているのであれば
そのURLを直接送信せずに選択肢番号のみを送信し、受け取った 2.php 内で
その番号に応じたURLを埋め込むような仕様にすべき。
これに興味あり。なんで?
0272nobodyさん
2010/10/16(土) 14:36:37ID:???HTMLなんか書き換えられるんだから、変なURL突っ込むことも可能だろ
あらかじめ数字か何かで決めておけば、変なのが来ても弾ける
0273nobodyさん
2010/10/16(土) 15:08:04ID:???<script>
window.onload = function(){
document.frm.submit();
}
</script>
<form action="http://example.com/" name="frm">
<input type="hidden" name="abcde" value="http://example.org/" />
</form>
0274nobodyさん
2010/10/16(土) 15:11:31ID:???0275nobodyさん
2010/10/16(土) 15:49:36ID:???でも一般的なプログラミングとしては>>259のようにしたほうがいい
もちろん 2.php 内でPOSTされた数値の正当性もチェックする
0276nobodyさん
2010/10/16(土) 20:03:39ID:avUbsZ6o$text = file_get_contents('text.csv');
echo mb_detect_encoding($text);
としたのですが、文字コードが取得できません。
どうすればいいのでしょうか?
0277nobodyさん
2010/10/16(土) 20:17:42ID:???どんなエラーメッセージが表示される?
0279nobodyさん
2010/10/16(土) 20:44:46ID:avUbsZ6oecho してもなにも表示されない状態です。
0280nobodyさん
2010/10/16(土) 20:45:51ID:avUbsZ6o0281nobodyさん
2010/10/16(土) 20:49:25ID:???の結果がFALSEだとしたら検出に失敗している
ちなみにmb_detect_encodingは必ずしも検出できるとは限らない(対象文字列による)し、
文字列によっては誤検出する場合もある。
0282nobodyさん
2010/10/16(土) 21:15:41ID:avUbsZ6o検出したいのはファイルの文字コードで
ファイルの文字コードがUTF-8以外の場合は、
mb_convert_encondigでUTF-8に変更するというのが目的です。
その為に、ファイルの文字コードを知る必要があると思いました。
0283nobodyさん
2010/10/16(土) 21:25:46ID:???mb_convert_encodingの第3引数を"auto"にして自動変換する場合も同様。
"mb_convert_encoding UTF-8" あたりでググるとよい
0286nobodyさん
2010/10/17(日) 02:04:43ID:???これに対する回答だからじゃないの?
0287nobodyさん
2010/10/17(日) 02:40:23ID:N98scqjcerror_reporting = E_ALL & ~E_NOTICE
の設定にして、全てのエラーや警告が出ないように作ってますか?
そこまでする必要はあるのでしょうか?
お仕事でPHPを使っている人は、やっぱりそのへん厳密にやってるんでしょうか…。
0288nobodyさん
2010/10/17(日) 03:52:16ID:???http://www.php.net/manual/ja/security.errors.php
想定外のアクセスやアタックがあった際にエラーの内容からプログラムの構造を推察されないように
したいのならエラーを抑制すればいい。
独自のエラーハンドラ関数を作成してエラーを表示しない代わりにログに記録することもある。
0290nobodyさん
2010/10/17(日) 10:47:44ID:???正しい書き方を身につければそんなこと考えもしないよ
0291nobodyさん
2010/10/17(日) 11:00:19ID:GEOHnAz9たとえば、dataのカラムにabcを含む場合、だったら
where `data` like '%abc%'
となりますが、どのカラムでもいいのでとにかくどこかにabcが含まれている場合、だったらどうなりますか?
where `*` like '%abc%'
と書いたら、undefined method ってエラーがでました
0293nobodyさん
2010/10/17(日) 12:05:33ID:???それだとNOTICEでないよね?
うちはNOTICEは全てでないようにしないと品質保証部のの許可が下りない
0294nobodyさん
2010/10/17(日) 14:12:52ID:???0296nobodyさん
2010/10/17(日) 15:13:27ID:???0298nobodyさん
2010/10/17(日) 16:06:41ID:???まあ連結するとき間にセパレーター置かないと誤判定するか
0300nobodyさん
2010/10/17(日) 17:22:16ID:???設計に問題があるかも
0301nobodyさん
2010/10/17(日) 17:37:18ID:???そうなんですか。
undefined indexっていうwarningが出ないようにしていくのが
とても大変で・・。
■ このスレッドは過去ログ倉庫に格納されています