【PHP】下らねぇ質問はここに書き込みやがれ 44
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/12(木) 16:54:47ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 43
http://pc11.2ch.net/test/read.cgi/php/1175368910/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0752nobodyさん
2007/04/24(火) 00:35:19ID:eGs+hfXKお手数かけました。ありがとうございます。
0753nobodyさん
2007/04/24(火) 00:44:36ID:???0754nobodyさん
2007/04/24(火) 00:47:09ID:???気持ち悪いんですけど。そんなところまでperl真似なくて
いいと思うんですけど。
0755nobodyさん
2007/04/24(火) 00:51:31ID:???0756nobodyさん
2007/04/24(火) 00:53:19ID:???他にもたくさんwebで使えるいい言語はあるぜ
0757nobodyさん
2007/04/24(火) 00:57:16ID:???0759nobodyさん
2007/04/24(火) 01:01:07ID:???変数の前に$記号しかないなら、無くても同じだと思うんですが。
$記号打とうとして#と打ち間違えたりして、毎回いらいらするんですが。
0761nobodyさん
2007/04/24(火) 01:03:42ID:???0762nobodyさん
2007/04/24(火) 01:03:47ID:???$a = 'baka';
$b->$a; // $a->baka
みたいなことができる。なんに使うのか? って疑問に思うだろうけど、
結構これは使い出がある。なんとも汚い文法だとは思うけどもね。
0763nobodyさん
2007/04/24(火) 01:03:58ID:???0764nobodyさん
2007/04/24(火) 01:10:47ID:???PHPでやってみてたんですが、Rubyだけで何でもできるようになりたいです。
0765nobodyさん
2007/04/24(火) 01:21:12ID:???0766762
2007/04/24(火) 01:25:32ID:???ruby使ってますよ。むしろあれでリフレクションを覚えて
「おー、PHPでもできるワロス」とかいいつつ使っていました。
あと訂正
$b->$a; // $a->baka (×)
$b->$a; // $b->baka (○)
0767nobodyさん
2007/04/24(火) 01:45:10ID:???$変数
を打ち間違えていらいらするなんてプログラマとしてあり得ん。
0768nobodyさん
2007/04/24(火) 01:52:21ID:???で、周りでは皆PHP・・・あたし悔しい!みたいな?
0770nobodyさん
2007/04/24(火) 02:30:08ID:???遅レスだが、CGI=Perlっていうのが今でも当たり前になってるだろ?
PHPが浸透してきているとはいえ、今でもWebのシェアはPerlが大半を占めている。
Web特化というのが売りのPHPは、当然Perlを一番意識している。
なんでPerlに大部分が似ているかというと答えは簡単。
Perlユーザーを移行させるのが狙い。
他にもJavaやCからの移行者を増やすためにそれらの言語に似た処理を取り入れてる。
そして新規参入のプログラマにもとっつきやすい言語となっている。
利用者を増やすというのは勝ち残る為に一番の条件なのだよ。
0771nobodyさん
2007/04/24(火) 02:35:22ID:???・・・のはずであった。
0772nobodyさん
2007/04/24(火) 02:41:44ID:???コレは全く問題ない。
だがしかし!
C#の「:」だけは許せねぇ!
ソースをざっと読んだだけじゃ見落としちゃうじゃないか!
0773nobodyさん
2007/04/24(火) 08:00:41ID:???学校でCとかJavaやると時々変数に$付けてしまう
0774nobodyさん
2007/04/24(火) 08:18:37ID:???あとPHPの$記号って何か意味あるんですか。
変数の前に$記号しかないなら、無くても同じだと思うんですが。
$記号打とうとして#と打ち間違えたりして、毎回いらいらするんですが。
この中で変数はどれですか? $記号ですか?
0776nobodyさん
2007/04/24(火) 08:39:47ID:???0777nobodyさん
2007/04/24(火) 12:55:14ID:sEkvt9e40778nobodyさん
2007/04/24(火) 13:00:34ID:???phpinfoみたいなやつです
0779虚弱PHP
2007/04/24(火) 13:02:54ID:???http://www.php.net/manual/ja/function.date.php
0781nobodyさん
2007/04/24(火) 13:04:53ID:???ろくに理解してないのに3万も使ってる…
0782nobodyさん
2007/04/24(火) 13:05:37ID:???0783nobodyさん
2007/04/24(火) 13:13:05ID:aF4+VraQ掲示板の書き込みとか、何かの新規登録受付フォームとかで
ランダムな文字をノイズの入った画像にして、
その文字を入力しないと登録できないようになってる仕掛けが
ありますが、あの仕掛け、フリーなCGI(PHP含む)でどこかに
ありませんでしょうか?
0784虚弱PHP
2007/04/24(火) 13:13:22ID:???おっと、勘違い。
標準関数では無いと思う。
http://shain.tomocreative.net/2007/04/post_2.html
0786nobodyさん
2007/04/24(火) 13:22:26ID:???0787nobodyさん
2007/04/24(火) 13:57:37ID:???0788nobodyさん
2007/04/24(火) 14:20:59ID:43dSuuSBPHP4.4.6
RHL7.3
[行ったこと]
canpen.php
1. フォームからテキストエリア内に文字列を入力。$messages
2. POSTで飛ばす。$messages
canpen_write.php
3. $messagesの取得
$messages = str_replace("<", "<", "$messages");
$messages = str_replace(">", ">", "$messages");
$messages = str_replace("\t", "", "$messages");
$messages = nl2br($messages);
4. $messages出力。確認表示。
※改行されて、<>←も表示されている。
5. 「書き込み」ボタンにて、POSTで飛ばす。hiddenで。
→自ページ canpen_write.php
6. $messages取得。
ここで、再度、「3.」でやった文字列の整形をするんでしょうか?
で、再度整形して、$messagesを出力すると、
$messages:<ccc><br />
<ddd><br />のように出力されます。
はじめにフォームで、入力した文字列は、<ccc>エンターキー<ddd>エンターキー
です。(です。は、入力していません。)
<br />が出力されるので、これを出力させない方法があれば、
どなたかご教授して頂けないでしょうか?宜しくお願い致します。m(..)m
0789nobodyさん
2007/04/24(火) 14:23:57ID:43dSuuSB※改行されて、<>←も表示されている。
5. 「書き込み」ボタンにて、POSTで飛ばす。hiddenで。
→自ページ canpen_write.php
6. $messages取得。
ここで、再度、「3.」でやった文字列の整形をするんでしょうか?
で、再度整形して、$messagesを出力すると、
$messages:<ccc><br />
<ddd><br />のように出力されます。
はじめにフォームで、入力した文字列は、<ccc>エンターキー<ddd>エンターキー
です。(です。は、入力していません。)
<br />が出力されるので、これを出力させない方法があれば、
どなたかご教授して頂けないでしょうか?宜しくお願い致します。m(..)m
0791nobodyさん
2007/04/24(火) 14:41:12ID:???とりあえずstr_replaceじゃなく、htmlspecialcharsを使っとけ
タイミングとしては、「送信されたとき」というよりむしろ「表示するとき」にhtmlspecialcharsを呼び出せば間違いは減る
0792nobodyさん
2007/04/24(火) 14:58:28ID:43dSuuSB791さん、ありがとうございます。
htmlspecialcharsで出力すると、&lt; &gt;と、そのまま&lt:&gt;
がブラウザに出力されます。実体参照に戻されて、<>等と出力されるはずが、
そのまま出力されます。
htmlspecialcharsを使用するときは、何か特別な設定がいるんでしょうか?
m(..)m
0793nobodyさん
2007/04/24(火) 15:01:19ID:43dSuuSB0794nobodyさん
2007/04/24(火) 15:03:46ID:???0795nobodyさん
2007/04/24(火) 15:09:53ID:???確認画面でhiddenに埋め込む方にはnl2brをかけなくていい
(表示する方だけにnl2brを行えばいい)
0796nobodyさん
2007/04/24(火) 15:22:16ID:43dSuuSBSuccess!!です。成功しました。とても助かりました。
今やっている部分を頭の中にまとめて理解したいと思います。
791さんのおかげで、モヤモヤが今スッキリしていきそうです。
(まだ、完全に理解していないw)パターンで覚えるよりも、仕組みをキッチリ
理解していこうと思います。速レスでとても感謝しています。
ありがとうございました。m(__)m
0797nobodyさん
2007/04/24(火) 16:26:10ID:???俺が昔作ったやつ
http://nike.s151.xrea.com/qreki.phps
0799603
2007/04/24(火) 16:41:18ID:YIKrD66nあれから調べてみましたが、
session_regenerate_id(true) の処理が問題のようでした
この処理を外したところ、問題は出なくなりました
また、session_regenerate_id() ではセッションが切れるということはありませんでした
今、セッションデータを file ではなく、
データベース上で処理する仕組みを作って検証しています
session_set_save_handler は使用せず、Cookie, GET, POST の値を拾って
独自に PDO クラスでセッション ID や有効期限を保存、更新処理等するものなのですが、
こちらは複雑な処理に関わらず、更新ボタン猛連射でもまったく問題が出ていません
session_regenerate_id(true) は、古いセッションデータファイルを
自動で削除してくれるとはいえ、DB コンテナに比べて
大したオーバーヘッドになるとも思えないし、
セッションファイルが多数存在するのなら別ですが、検証上では 5 ファイル程度です
推測ですが、session_regenerate_id(true) の処理には
連続リロードに耐えられない問題があるのではと思います
アクセスが多いサイトのセッションの仕組みに利用すると問題がでるかもしれません
0800虚弱PHP
2007/04/24(火) 16:47:27ID:???俺も推測でしかないけど、
session_regenerate_id()で問題出ないなら、
余計にsession_regenerate_id(true)の問題じゃなくて、
ブラウザ側の問題だと思うよ。
ブラウザがサーバーから返されたCookieヘッダを解釈・設定する前に
F5押したとかじゃないかなぁと思うんだけど。
0801nobodyさん
2007/04/24(火) 16:48:18ID:???お前相当暇人だなw
不覚にもこれには笑ったぜw
ttp://nike.s151.xrea.com/okki.php
0802nobodyさん
2007/04/24(火) 16:57:34ID:EJNwdirJ適当な場所にライブラリパスを通して、そこにファイルコピーすればいい
0806603
2007/04/24(火) 17:17:38ID:YIKrD66nどうも
>>603 で書いたとおり、HTTP リクエスト、レスポンス上で見る限りは
Cookie, Set-Cookie は切り替わったものを正しくやり取りしてるんですよね
今、独自 DB コンテナの方で session_regenerate_id(true) の相当の機能を
作成中でして、これで連続リロードしてみれば
ブラウザ側動作の影響かどうかある程度はっきりすると思います
ブラウザ側動作の影響なら、連続リロードした人間だけの問題になりそうなので
この件は無視できそうです
>>801
わらた
0808nobodyさん
2007/04/24(火) 18:27:05ID:???0809nobodyさん
2007/04/24(火) 18:33:05ID:???0810虚弱PHP
2007/04/24(火) 18:45:46ID:???うむむ。そうかぁ。
save_handlerがmmだと切れるって話があったような気がするんだけど、
今回はfilesみたいだしね。
0811603
2007/04/24(火) 19:25:37ID:YIKrD66nそちらのご推測通りでした
独自DB コンテナで再現した session_regenerate_id(true) 相当の機能でも同じ症状がでました
再度検証してみたところ、致命的な見落としがありまして
例えば連続で素早く 10 回程更新ボタンを押すと、サーバ側には
本来残らないはずのセッションデータファイルが 5 〜 10 近く残っているが、
HTTP Header キャプチャ(Live HTTP header on Firefox) 上では
3 つ程のやり取りしか残っていない・・
試しに ieHTTPHeader on IE で調べたら、Firefox で行った同じ速度でリロードしても
すべてキャプチャしてくるし、セッション自体も切れないみたい
Opera では Firefox 程ではないけどまれに切れる
ちなみに、GET だけに制限してみたセッション ID のやりとり(この場合はリンクの猛連射)
でも同じ症状がでるので、HTTP レスポンス自体を受け取ってないんでしょうね
どうもありがとうございました
// 正直、JavaScript や CSS 以外でブラウザ別の動作に悩まされるとは思わなかった
0812nobodyさん
2007/04/24(火) 19:37:08ID:???0814nobodyさん
2007/04/24(火) 22:36:23ID:DXOCGV6O長ったらしいテキストファイルの1部分のみ情報を取り込みたいのですが、
そういうのに適した関数等はありますでしょうか。
0815nobodyさん
2007/04/24(火) 22:39:13ID:???0816nobodyさん
2007/04/24(火) 22:55:02ID:???0818nobodyさん
2007/04/24(火) 23:38:17ID:???それらの仕組み、もしくはそのシステムが構築できてあるソースのURLなど知っている人がいましたら教えていただけないでしょうか。
0819nobodyさん
2007/04/24(火) 23:38:55ID:???URLはシラネ
0820nobodyさん
2007/04/24(火) 23:51:38ID:???youtubeは解析されまくってるから仕様なんかはすぐ出てきそうだけど
0821nobodyさん
2007/04/25(水) 01:01:57ID:j8qAcKjIPHP見るとデフォルトでSJISになる
PHPに記述しないでデフォルトをEUCにできないかな
0824nobodyさん
2007/04/25(水) 01:52:00ID:j8qAcKjI本のサンプル全部に記述がだるい…
0825nobodyさん
2007/04/25(水) 01:58:40ID:???タグに記述してもPHPで指定しても文字化けすることもあるしね
EmEditorとかで保存時のエンコードをEUCに設定すればいいと思ふ
未確認
0826nobodyさん
2007/04/25(水) 01:59:40ID:???0827nobodyさん
2007/04/25(水) 02:01:56ID:j8qAcKjI0828nobodyさん
2007/04/25(水) 02:03:16ID:???0829nobodyさん
2007/04/25(水) 02:03:56ID:???0830nobodyさん
2007/04/25(水) 02:10:20ID:j8qAcKjIEUCに嫌われたかな
0831nobodyさん
2007/04/25(水) 02:19:38ID:???それ前提で話してるのかと思ったけど
0832nobodyさん
2007/04/25(水) 02:23:29ID:???そういうレベルの質問にしか見えない。
0834nobodyさん
2007/04/25(水) 02:28:29ID:j8qAcKjI0835nobodyさん
2007/04/25(水) 02:34:58ID:???ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
0836nobodyさん
2007/04/25(水) 02:35:23ID:???\
>
/
(^^)/ なんてこったい!
/\ ̄\
/ \ \
< | |
\ / ̄ ̄\
ゝ / \
/ >
/ /
/ /
0838nobodyさん
2007/04/25(水) 02:56:56ID:???output_bufferingをonなんかにするなって話じゃない?
PHP初めて3年半たつがoutput_bufferingなんて一度もonにしたことねぇ
0839nobodyさん
2007/04/25(水) 03:01:34ID:???0840nobodyさん
2007/04/25(水) 03:04:32ID:???そのときからキャッシュは1MBまでに制限してる。
更新する度にページをダウンロードするようには設定できないのかな。
0841nobodyさん
2007/04/25(水) 03:12:30ID:???0842nobodyさん
2007/04/25(水) 03:14:01ID:???0843nobodyさん
2007/04/25(水) 03:14:46ID:???0844nobodyさん
2007/04/25(水) 03:17:52ID:???0845nobodyさん
2007/04/25(水) 03:49:52ID:???0846nobodyさん
2007/04/25(水) 04:18:44ID:???0847nobodyさん
2007/04/25(水) 08:57:51ID:???0848nobodyさん
2007/04/25(水) 09:36:06ID:Hk5iwc7Fたとえば
index.php?hoge=0001
というページは存在するので、問題なく表示します。しかし
index.php?hoge=0002
や
index.php?hoge=
などのような場合今だと白紙?のページになります。
そこを、404や403を返すようにしたいのですが、どうすれば出来るのでしょうか?
0849nobodyさん
2007/04/25(水) 09:44:28ID:???0850nobodyさん
2007/04/25(水) 11:53:14ID:???if (存在しないページ) {
header( レスポンスコード404を送る );
// 以下自分の好きな404のページ
?>
<html>
404 そんなページはないでやんす
</html>
<?php
exit;
}
?>
0851nobodyさん
2007/04/25(水) 12:54:42ID:j8qAcKjIキャッシュが3GBになってたよ…
0852nobodyさん
2007/04/25(水) 12:54:59ID:1/ImtFz/アクセスする度にDBから読み込まれている状態になっているのですが、
これだとサーバに負荷がかかって、ページの読み込みが遅くなる気がします。
こういう、あまり変動しないデータを読み込んで表示させる場合、
どういう風なソースを書けばいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています