【PHP】下らねぇ質問はここに書き込みやがれ 33
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2006/11/23(木) 00:27:02ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 32
http://pc8.2ch.net/test/read.cgi/php/1162818436/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0809770,774
2006/12/04(月) 18:39:52ID:???If-Modified-Sinceヘッダに使う文字列で "D, d M Y H:i:s \G\M\T" こういうの使うのやめろよ。
DATE_RFC1123 があるだろ。
0810nobodyさん
2006/12/04(月) 18:46:40ID:???あとIF_MODIFIED_SINCEは実装上はエコーなんだから文字列として==でいいんじゃ
strtotimeじゃパースできない形式返す端末の問題もあるよね
0811770,774
2006/12/04(月) 19:03:18ID:???>mtimeのみのEtagは弱いバリデータなんじゃ
ETagの中身は別にmtimeじゃなくてもいいんだけど。
中身は変化したが意味は変化していない→ 弱バリディタは変化しない 強バリディタは変化する
中身が変化した → 弱バリディタ・強バリディタともに変化
>実装上はエコー
サーバーがRFC850の日時文字列を返してもIE7はRFC1123 を If-Modified-Since に入れるぞ
0812nobodyさん
2006/12/04(月) 19:10:51ID:OBhf6ZT7今まで使っていたサーバーではMySQLの文字コードがEUC-JPで
XREAのMySQLの文字コードがUTF-8 Unicode (utf8) ということでして
フォームからPOSTすると文字化けが起こりまして非常に困っております。
phpMyAdminの文字コードもUTF-8ということでphpMyAdminから修正しても日本語部分が??となって表示されてしまいます。
ページは全てEUC-JPで作成しており、
formタグでaccept-charset="EUC-JP"と指定し、
メタタグでもcharset=EUC-JPと指定しているのですが
どこを直せば文字化けが解消されるんでしょうか?
エスパーさんよろしくお願いします。
0813nobodyさん
2006/12/04(月) 19:14:38ID:???mysqlもユーザディレクトリに設定ファイル置けるんじゃなかったっけか
0814nobodyさん
2006/12/04(月) 19:18:53ID:???0816nobodyさん
2006/12/04(月) 19:41:50ID:???$y1 = (-$b ± sqrt($b * $b - ? * $a * $c)) / ? * $a;
Pythonなら虚数も出せるとオモ
0817nobodyさん
2006/12/04(月) 19:42:10ID:???どうでもいいけど、二次方程式を解く時には平方完成の方が解の公式より早いから、
解の公式使うメリットなんて素人以外には無いぞ。
0819nobodyさん
2006/12/04(月) 19:44:53ID:???念のため漏れもmod_rewriteで同様の実験をしてみたところ
たしかにブラウザにキャッシュされてないようだ・・・なぜだろう。
0821nobodyさん
2006/12/04(月) 19:53:49ID:???昨日NHKで平方完成の使いどころやってた
0823nobodyさん
2006/12/04(月) 20:01:19ID:Tc134QUM$pastTimeString = gmdate(DATE_RFC1123, mktime(10, 10, 10, 10, 11, 2006));
$creationTimeString = date(DATE_RFC1123, mktime());
header("Last-Modified: $pastTimeString");
?>
<html><header></header>
<hr>
<table border="1">
<?php
echo "<tr><td>HTML Creation</td><td>$creationTimeString</td></tr>";
echo "<tr><td>Random</td><td>".mt_rand()."</td></tr>";
?>
</table>
<hr>
</body></html>
mod_rewriteなんて使わなくてもこれでキャッシュされるんだが、
キャッシュされないってわめいてるのはいったいどんなスクリプト書いてるんだ?
Windows XP の IE7と Firefox2.0 で確認。
0825812
2006/12/04(月) 20:05:28ID:OBhf6ZT7お騒がせしました
0826nobodyさん
2006/12/04(月) 20:23:16ID:???アホかお前。もしやお前は脊髄反射が得意な>>786か?
知ったかぶる前に、一連の流れをもう一回最初から読み直せバカ基地害。
動的に配信された画像をキャッシュさせる話だっつってんだろが。
0827nobodyさん
2006/12/04(月) 20:30:24ID:Tc134QUM>>823のような単純なのでキャッシュされてるんだから
「キャッシュされていない」って言ってる人はなにか勘違いしてるとしか思えないね
0828nobodyさん
2006/12/04(月) 20:39:24ID:???なんか頭に血が上ってる人が2人ほどいるみたいだけど、ちょっと落ち着きませんか?
0829nobodyさん
2006/12/04(月) 20:55:45ID:Tc134QUM(α) = アクセスしない
(β) = If-Modified-Since付きでアクセスする
(γ) = If-Modified-Since無しでアクセスする
IE7の設定
(1)Interner Explorerを開始するたびごとに確認する
リンククリック:(α)
更新ボタン:(β)
Ctrl+更新ボタン:(γ)
(2)Webサイトを表示するたびに確認する
リンククリック:(β)
更新ボタン:(β)
Ctrl+更新ボタン:(γ)
Firefox2.0 の設定・・・する場所はない?
リンククリック:(α)
更新ボタン:(β)
Ctrl+更新ボタン:(γ)
各ファイルのソースは次のレスで。
0830nobodyさん
2006/12/04(月) 20:57:31ID:Tc134QUMimage.php
<?php
$pastTimeString = gmdate(DATE_RFC1123, mktime(10, 10, 10, 10, 11, 2006));
header("Last-Modified: $pastTimeString");
header('Content-Type: image/jpeg');
readfile('./topimage.jpeg');
?>
test1.html
<html><head><title>test1</title></head><body>
<a href="test2.html">test2</a>
<img src="./image.php">
<img src="./image.php?hoge=1">
</body></html>
test2.html
<html><head><title>test2</title></head><body>
<a href="test1.html">test1</a>
<img src="./image.php">
<img src="./image.php?hoge=2">
</body></html>
0832nobodyさん
2006/12/04(月) 21:06:03ID:Tc134QUM[R]を付けるのと付けないのがあるでしょ。
0833nobodyさん
2006/12/04(月) 21:29:01ID:???要するに>>738はContent-TypeとContent-Lengthだけで
Last-Modifiedヘッダを吐いてないならキャッシュされるわけないだろトンマ。
って話?
0834nobodyさん
2006/12/04(月) 21:36:43ID:voLSDiiKつ http://sb.xrea.com/showthread.php?t=11414
0835nobodyさん
2006/12/04(月) 21:43:29ID:Tc134QUMさあ。。。>>763の通り、Last-Modifiedつけても駄目らしいですけどね。
キャッシュ関係はいい加減ウザイからキャッシュさせるのを再現する方法を>>829-830に掲載しただけ。
0836nobodyさん
2006/12/04(月) 22:01:52ID:???0837nobodyさん
2006/12/04(月) 22:17:00ID:???Last-Modifiedを吐いてもキャッシュされないから問題になってんだろトンマ。
>>835
どうでもいいけどお前のコードで試すと
Last-Modified: WedAMGMTE_ROctoberC1123 などとおかしな値になるぞ。
>>836
バカかお前は。すでに一連の議論の中で必要なコードは出尽くしてるだろ。
0838nobodyさん
2006/12/04(月) 22:21:05ID:Tc134QUM1段落目
キャッシュされてるかどうかを判断する方法手順が間違ってるんだよきっと
2段落目
DATE_RFC1123 定数はPHP5.1.1以降だって。
>>809みて初めて知ったから試したのがまずかった。
"D, d M Y H:i:s \G\M\T" でいいんじゃね?
0839nobodyさん
2006/12/04(月) 22:36:46ID:???0840nobodyさん
2006/12/05(火) 00:47:18ID:???>キャッシュされてるかどうかを判断する方法手順が間違ってるんだよ
だから間違ってないってば。この話のレスの流れを全部読んだかい??
きちんとHTTP通信をキャプチャして、ブラウザのリクエストとか
サーバの応答コードとか全部チェックしてるんだから間違いようがない。
0841nobodyさん
2006/12/05(火) 01:29:40ID:???for($i=0;$i<count($hairetu);$i++){
echo "$hairetu[$i]"."<br>";
}
のようにして配列内のデータを表示しますが、
フォーム登録時のinputに<input type="checkbox" name="hairetu[]">
というようにしている場合、上記のソース上に$hairetu=$_POST["hairetu];
みたいな記述は必要ないのでしょうか?(ちなみにこの書き方ではエラーなりますが・・
0842nobodyさん
2006/12/05(火) 01:39:19ID:???$hairetu = $_POST["hairetu"];がいる
一回変数に入れなおすのもいいけど
for($i=0;$i<count($_POST["hairetu"]);$i++){
echo $_POST["hairetu"][$i]."<br>";
}
こういうのもできるよ
あとcountはループの条件評価で使わないほうがいいかも
ループする前に変数に入れるとか初期値として使うなら全然いい
0844nobodyさん
2006/12/05(火) 02:54:31ID:???ループでcount使わない方がいいの?なんで?
>>843
コード間違ってるだけじゃない。Arrayになってるならprint_rぐらいしてみたら?
php.netを見ても最新のバージョンしか置いて無いようです。
どなたかPHPの最新バージョン以外を置いてある所って
ご存知ありませんか?
0848nobodyさん
2006/12/05(火) 11:19:41ID:???どこを探したんだ
http://us2.php.net/get/php-5.1.6-Win32.zip/from/a/mirror
0850nobodyさん
2006/12/05(火) 11:30:40ID:???countっていう関数名だからって、第2引数を指定しない限りは、本当に1個1個カウントするわけじゃないよ。
気にしなくておk。
0851841
2006/12/05(火) 12:41:29ID:???だいぶ遅くなってすみません・・。
print_rももちろんしているのですが、なぜかAとかArrayとかでます。
こちらのテスト環境ではregister_globalsをOnにしてるからかな?とも
思いましたが、ググっても理由が分かりません。
ちなみにcountの箇所をcount($hairetu)にすると問題なく処理されます。
0852841
2006/12/05(火) 12:46:09ID:???登録フォームで配列の箇所は別ファイルにしているからだろうか、、、
関係ないと思いますが、色々調べてみます。お騒がせしました。
0854nobodyさん
2006/12/05(火) 13:57:45ID:nXBCkDsb0856a
2006/12/05(火) 16:41:58ID:s1tJ/lxX0857nobodyさん
2006/12/05(火) 16:46:03ID:???0859nobodyさん
2006/12/05(火) 16:50:12ID:???何言ってんだ。
サーバの原理はみんな一緒だ。
クライアントから何らかの要求を受けたら、何らかの答えを返す。
サーバってのはそういうもの。
0861nobodyさん
2006/12/05(火) 16:52:35ID:???WebサーバはWebページの要求を受けたら送信する。
原理はどちらも同じ。受ける要求や返す内容が違うだけ。
0863nobodyさん
2006/12/05(火) 16:53:29ID:???0864nobodyさん
2006/12/05(火) 16:55:13ID:???>>861をよく読め。
サービスってのは、サーバというハードやソフトが供給する仕事を指す。
だからサーバとサービスは密接不可分。
0865nobodyさん
2006/12/05(火) 17:08:41ID:???サーバーが中でやってる仕事はWebとメールじゃ随分違うのでは。
>>861
> メールサーバはメール送受信の要求を受けたら実行する。
ここで「何を実行するのか」が論点なんじゃないの?
0866nobodyさん
2006/12/05(火) 17:25:19ID:nXBCkDsb知識自慢は余所でやれ!
0867nobodyさん
2006/12/05(火) 17:34:53ID:???0868nobodyさん
2006/12/05(火) 17:38:14ID:???お前は「原理」という言葉を辞書で100回ほど調べるといいだろう。
>>866
「知識自慢」じゃなくて、単なる質問への回答でしかない。
そしてそれを「自慢」と感じるのは、お前が無教養なバカだから。
0869nobodyさん
2006/12/05(火) 17:40:26ID:???0870nobodyさん
2006/12/05(火) 17:47:30ID:???0872nobodyさん
2006/12/05(火) 18:39:24ID:???$hoge = preg_replece('/<(script)>/i', '<\1>', $hoge);
0874nobodyさん
2006/12/05(火) 19:12:42ID:???とりあえず落ち着けよ
0878ura. ntkngw286002.kngw.nt.ftth.ppp.infoweb.ne.jp.2ch.com
2006/12/05(火) 20:41:09ID:???0879age
2006/12/05(火) 20:45:32ID:nt4HnWjk0880nobodyさん
2006/12/05(火) 20:48:14ID:???ここはいかが?
http://oku.edu.mie-u.ac.jp/~okumura/php/env.php
0881nobodyさん
2006/12/05(火) 21:36:56ID:GzZh5Paf無意味にクエリ文字つけるのはよろしくないですか?
0883nobodyさん
2006/12/05(火) 23:04:41ID:???FTP上のものをブラウザからダウンロード可能にしようと思った場合、
セキュリティ上の脆弱性は問題ないでしょうか?
例えば、ダウンロードさせるようのHTTPヘッダを表示して、
その後、ユーザ任意のファイルを表示(出力)させることになるのですが、
この段階で、ファイルの内容によって脆弱性が発生することは
あるのでしょうか?
通常であれば、PHP上で任意のファイルを出力させるのは危険極まり無いですが、
ヘッダー出力後なので問題ないのかなと思ってます・・・。
間違ってますでしょうか?
0884nobodyさん
2006/12/05(火) 23:15:30ID:???0886nobodyさん
2006/12/05(火) 23:43:19ID:???脆弱性云々がブラウザ上でのXSSだけを指してるんなら
特に問題はないんじゃない?
そんなの言い出したら世間のダウンロードサイトは
全部セキュリティがやばいことになってしまう。FTP関係ない。
0887nobodyさん
2006/12/05(火) 23:46:33ID:???カテゴリごとにファイルを分けて必要な時にrequireやincludeで読み込むのと
1つのファイルでfunctionによって分けるのと、どちらが汎用性や処理の面で
良いのでしょうか?
0888nobodyさん
2006/12/05(火) 23:51:38ID:???>>886
ブラウザが仕様通りの動作をしてくれれば問題無い。
だけど、IE6 (SP2で多少改善されたがIE6SP1からアップグレードした人は設定が自動では書き換わらなかったような) だと、
HTTPヘッダを無視して内容で判断されるから、scriptを含めたhtmlファイルをアップされたらブラウザ上でそのドメインとしてのスクリプトが実行されちゃう。
これはブラウザの欠陥、というか脆弱性だが、そういう脆弱なIEを配慮するなら、
ユーザに任意のファイルをアップロードさせる、つまり、アップローダーをやるならば、
捨てドメインを使うべき。
間違っても、Cookieでセッション管理しているドメインでやっちゃ駄目。
あ、あと Cookie 使っているなら httpOnly 属性を使えばXSSによるCookieの漏洩は抑制できる。ただし、完全ではないし、
XSSにはCookie漏洩以外の問題もある。
0889nobodyさん
2006/12/05(火) 23:57:44ID:???>ヘッダー出力後なので問題ないのかなと思ってます・・・。
ってことはヘッダー出力前にファイルを出力する方法があるってことだろ
だから、それは何ですか、と。
0890nobodyさん
2006/12/06(水) 00:09:15ID:???が、うまくいきません。(置換されていない)
テーブル:A
word word1 word2 word3
果物 フルーツ fruit くだもの
上のようなテーブルがあり、PHPからクエリを投げて、word1,word2,word3の
いずれかにヒットしたときは、変数に格納されている語句をwordに変換したい
のですが。。。
$phrase="fruit";
$select=<<<EOM
SELECT * FROM A WHERE word='{$phrase}' OR word1='{$phrase}'OR・・;
EOM;
$sel_query = sqlite_query($db_open,$select);
$rows = sqlite_num_rows($sel_query);
$query_array = sqlite_fetch_array($sel_query,SQLITE_NUM );
//ヒットしたレコードがあったら、そのレコードのwordフィールドの語句に置換
if($rows == 1){
$word_replace = str_replace("$phrase","$query_array[0]",$phrase);
}
0891nobodyさん
2006/12/06(水) 00:13:38ID:???>HTTPヘッダを無視して内容で判断されるから
それって、IEはContent-TypeやContent-Dispositionまで無視して、「ファイルの内容」からHTMLを判別(推測)してるってこと?
そんな無茶な・・・
0892nobodyさん
2006/12/06(水) 00:15:08ID:???どっかの坊さんが言ってたな。
プログラムするときって知恵が重要だよねー。
0893nobodyさん
2006/12/06(水) 00:28:19ID:???(スクリプトの処理による)Octet-Stream指定でのヘッダ出力後、って意味でしょ。
任意ヘッダ出力前のファイル出力=自動ヘッダ出力=text/html指定。
Octet-Streamにしとけばユーザが自ら「表示」を選択しない限り
ブラウザで表示されることはないはずだよね、というのが質問の趣旨かと。
>>888
IEの「内容で判断」って拡張子での判定だっけ。
0894888
2006/12/06(水) 00:39:08ID:???その通り。
実験してみれば分かるよ。
IE6 on Windows 2000 や IE6 SP1 on Windows XP だとそうなる。
image/gif 返しても、中身HTMLだとHTMLとして処理される。
もじら組みとかにも載ってるよ。
0895888
2006/12/06(水) 00:40:01ID:???IE6SP2の、拡張子によって判断する、ってオプションの拡張子はMIMEタイプを示す。
(MSの表記が問題あって分かりにくいけど。)
なので、これがONになっているIE6 SP2 なら問題なし。
0896nobodyさん
2006/12/06(水) 00:49:35ID:???Content-type: application/octet-streamやContent-disposition: attachmentまで無視されるとしたら、かなりやっかりだな。
IE6SP1以前の「内容がHTML」ってのが、いったいどのように判定されているのかわからないと対処しようがないね。
圧縮してダウンロードさせるしか安全な方法はないのか。
もしくは、ファイルの1バイト目が「<」だった場合だけ圧縮するとか。
0897nobodyさん
2006/12/06(水) 02:58:24ID:???いくらでも抜け穴のある対策法だなww
0898867
2006/12/06(水) 03:19:43ID:EpXwEc8l0899nobodyさん
2006/12/06(水) 04:21:36ID:???Apr 05 2005
↑
をタイムスタンプや
4月5日01:00
4月5日2005
とかに簡単に直す方法ってありますか?
今はちまちまとif文使って、Aprの場合は4、Aug の場合は8、とか
ありえないことやってるんですが・・・。
0900nobodyさん
2006/12/06(水) 05:04:57ID:???前者は年を挿入してやらないと無理っぽいが、後者なら
$unixtime = strtotime("Apr 05 2005");
echo date("n月j日Y", $unixtime);
でできる。
前者も05と01:00の間に date(" Y ") を挿入してやれば変換可能。
0901nobodyさん
2006/12/06(水) 05:09:55ID:???872のを直して
$html = preg_replace('/<(script[^>]*)>/i', '<\1>', $html);
でいいんじゃないの?
0902nobodyさん
2006/12/06(水) 05:10:38ID:???$html = preg_replace('/<(script[^>]*)>/i', '<\1>', $html);
か?
0903nobodyさん
2006/12/06(水) 05:19:36ID:???0904903
2006/12/06(水) 05:20:50ID:???恥ずかしや恥ずかしや(ノ∀`)
0905nobodyさん
2006/12/06(水) 11:06:14ID:???firefoxなら前者、IEなら後者。
<script<script type="text/javascript>">
document.write('You are third-class.');
</script>
<script<script type="text/javascript" charset=">">
document.write('You are third-class.');
</script>
0906905
2006/12/06(水) 11:11:34ID:???プログラミングの原則だろ。
質問は下らなくてもいいが、回答まで下らないと話にならない。
0907nobodyさん
2006/12/06(水) 11:46:43ID:0xIGcNVS0908nobodyさん
2006/12/06(水) 12:04:08ID:???>質問スレで運悪く、ろくな答えもよこさない(ry
という嫌味な文面を探して時間を浪費しているところを想像してしまったのはオレだけですか?
レス数が900を超えています。1000を超えると表示できなくなるよ。