【PHP】下らねぇ質問はここに書き込みやがれ 68
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/05/03(土) 22:52:16ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0201nobodyさん
2008/05/07(水) 16:45:55ID:???出力済みヘッダ内容を、自分自身で受け取ったり文字列として再出力する手段は俺は寡聞です。力になれなくてごめん
もしデバッグ用途なら、firebugとか使ってクライアント側でヘッダ見るんじゃ駄目なのかな?
0202nobodyさん
2008/05/07(水) 16:57:54ID:???http://jp.php.net/manual/ja/function.headers-list.php
じゃダメなのかね。Apacheレベルでなんかしてたらお手上げだけど。
って言うか、質問者はマニュアル読んでるのかな。
0203nobodyさん
2008/05/07(水) 17:07:35ID:???ありがとうございました
firebugを使ってなかったのでいれてみました
>>202
これですね
こんな機能が標準で備わってると思わなかったのでみていませんでした
ありがとうございました
0204nobodyさん
2008/05/07(水) 17:33:33ID:???勉強用に単純な検索プログラム(ユーザーの入力した条件から適切なレコードを検索、表示する)を作っています。
結果が一定数以上の場合はページ遷移を行うわけですが、ここで少し迷ってしまいました。
@ SQLから結果を全て受け取って、配列に入れておき、それを for で回す。ページ遷移は for の引数を変えていく。
A LIMIT などを使って、そのページ、そのページで、SQLから結果受け取る。
どちらの方法を取るべきなのか、ご助言いただけると有難く思います。
よろしくお願いします。
0205nobodyさん
2008/05/07(水) 17:38:00ID:???なのでA番のほうがいいと思いますー。
そんなにレコード数はないだろうけど、勉強用としてはもってこいな題材だし。
0207nobodyさん
2008/05/07(水) 17:58:56ID:???ご回答ありがとうございます。
>>205さんのおっしゃる通り、レコードが数万単位になってきたら、ループで回すのは現実的じゃないですね。
A の方法を取ろうと思います。
参考になりました、ありがとうございました。
0209nobodyさん
2008/05/07(水) 22:09:34ID:jO2+N/ibmysqlに接続するときにmysqlのuserとpasswordが必要になりますが
PHPの場合はどこにその情報を持ちますか?
設定ファイルとしてconf.phpとかを作成してその中に持つのが簡単ですが
生パスワードが書かれるのは、できれば避けたいと思いまして
0210nobodyさん
2008/05/08(木) 00:03:27ID:???嫌なら暗号化処理とかすればいい
ついでだからバイナリ化しておけばパット見わからんぞ
0211nobodyさん
2008/05/08(木) 00:13:19ID:???0212nobodyさん
2008/05/08(木) 00:31:48ID:???0213nobodyさん
2008/05/08(木) 00:39:50ID:???0214nobodyさん
2008/05/08(木) 00:39:59ID:tHYDIFZkなかなかいい方法が浮かびません。なにか方法があるのでしょうか?
サイトにログインしてそのアドレスを他人に送信したときに入れなければいいんですが
urlに引数でユーザーIDとか持たせてるので、今はそれだけで認証させているのですが
もちろんそれだと他の人でも余裕で入れてしまいます・・
よろしくおねがいします。
0216nobodyさん
2008/05/08(木) 00:50:32ID:???0217209
2008/05/08(木) 01:09:01ID:???やっぱ生すかねえ
暗号化したところでhashみたいに一方向にはできないですし
apacheユーザでパーミッションを0600にでもしておきます
0218nobodyさん
2008/05/08(木) 01:11:07ID:???0219nobodyさん
2008/05/08(木) 01:16:25ID:???0220nobodyさん
2008/05/08(木) 01:17:48ID:???0221nobodyさん
2008/05/08(木) 01:46:12ID:???SUIDとかSGIDとかスティッキービットの部分かな
必要無いときゃ書かないのが普通だと思うけど
0223nobodyさん
2008/05/08(木) 03:00:32ID:/YXnYoEjこのページの例1の、$xmlstr = <<<XML ~ XML; の所が
”<<<XMLで”始まり、”XML;”で終わっていますが
変数に文字列としてxmlを代入する場合の決まり事っていう事でいいのでしょうか?
調べてみても分からなくて、気になったもので・・・
よろしくお願いします
0224nobodyさん
2008/05/08(木) 03:07:24ID:???http://jp.php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc
0225nobodyさん
2008/05/08(木) 03:16:09ID:/YXnYoEjすいません・・・、見てませんでした
取りあえずxmlを操作してみたく飛ばしてました
始めから読み直します;
ありがとうございました
0227nobodyさん
2008/05/08(木) 05:16:22ID:bsvRXjwoこれがすごく遅い
ブラウザからアクセスするとそんなに遅くないんだけど
なにか原因になりそうなことあります?
0228nobodyさん
2008/05/08(木) 05:32:42ID:???0229nobodyさん
2008/05/08(木) 05:33:14ID:???$className = "Hoge";
$className::classProperty;
$className::classMethod();
みたいにしたいのですが・・・
0230229
2008/05/08(木) 05:35:07ID:???0231299 ◆SxucvMLsOs
2008/05/08(木) 05:36:53ID:???暇な事してないで答えてくれよ!
0232229 ◆SxucvMLsOs
2008/05/08(木) 05:37:22ID:???0235229 ◆SxucvMLsOs
2008/05/08(木) 05:46:58ID:???試してます。
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
が出てしまうので、構文的にアウトなのはわかるのですが・・・
別の書き方があるのかと思い、質問してる次第です。
0236229 ◆SxucvMLsOs
2008/05/08(木) 05:51:10ID:???PHP5.3から出来るようになるとの事。
おとなしくcall_user_func使うよ・・・
0237nobodyさん
2008/05/08(木) 05:52:14ID:???ここはID表示されないとまともな回答は得られないスレですので
0238nobodyさん
2008/05/08(木) 05:57:20ID:???2回目からだけど
0239nobodyさん
2008/05/08(木) 05:57:52ID:???IDと全角で表記するのは非常にイケテない気がします。
0240nobodyさん
2008/05/08(木) 07:12:47ID:a30fSoKvサーバーとクライアント間を相互にXML送信したいのですが、
サーバー → クライアント のXMLは問題ないのですが、
クライアント → サーバー の場合、XMLHttpRequestを使ってXMLを送信した場合、
サーバー側のPHPではどうやってXMLを取得すればいいんでしょうか?
クライアント側のJavaScriptはこんな感じです。
// POST
Ajax.prototype.Post = function Post( argPost ){
post = '<xml>xml</xml>';
// post = 'va1=1&va2=2';
this.request = this.CreateXMLHttpRequest();
this.request.onreadystatechange = this.OnReadyStateChange;
this.request.open( 'POST', this.url, this.async, this.user, this.pass );
// this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
this.request.send( post );
}
サーバー側のPHPは、下のようにして値をチェックしてます
<?php
var_dump($_GET);
var_dump($_POST);
var_dump($_SERVER);
?>
0241nobodyさん
2008/05/08(木) 08:06:49ID:???$data = file_get_contents('php://input');
どうしてもXMLを使う理由が無いなら、
クライアント → サーバは 普通にpost
サーバ → クライアントは JSON
をお勧めする。
0242nobodyさん
2008/05/08(木) 08:37:17ID:a30fSoKvレスありがとうございます。
取得できました。
そんな方法があるとは知りませんでした。(さすがです!)
JSONの方が楽なのは承知しているのですが、色々と事情がありまして・・・
0243214
2008/05/08(木) 09:00:38ID:lngjMkTWそれだとFORMしかリンクに使えなくなるのでテキストのリンク部分などは回避したいところです・・
>222
違います
0245nobodyさん
2008/05/08(木) 09:12:35ID:???0246nobodyさん
2008/05/08(木) 09:12:48ID:???携帯端末情報は普通のアンカーからでも取れると思うよ。
DoCoMoだと端末側に送信するか否かの確認は出るだろうけど。
それが嫌なら、
・URLにユーザIDではなく、セッションIDを持たせる。
・セッションIDはアクセス毎に変更する
とか処理しとけば要件満たせるよ。
0247243
2008/05/08(木) 09:58:57ID:6fBs3OYgすいません、勘違いしてました。
>246
セッションIDもたせたばあい、そのアドレスでアクセスしたら
他の端末でアクセスしたときのセッションの内容がみれたのですが・・
0248nobodyさん
2008/05/08(木) 10:10:42ID:???「セッションハイジャックが毎日行われています。客に仕様だと説明しているのですが
納得してもらえません。どう説明すればいいのでしょう?」
と似てきたな。
0249nobodyさん
2008/05/08(木) 10:39:32ID:???>セッションIDもたせたばあい、そのアドレスでアクセスしたら
>他の端末でアクセスしたときのセッションの内容がみれたのですが・・
セッション側で管理してなきゃ当然の動作だ。
まずはユーザエージェントでも見て、セッションの有効性をチェックしろ。
これで3割防げる。
そして、セッションIDをアクセス毎に変えろ。
ユーザが故意にセッションIDを流出させない限り
これで9.99割防げる。
0251nobodyさん
2008/05/08(木) 11:33:28ID:???0253nobodyさん
2008/05/08(木) 11:43:53ID:???.__
ヽ|´∀`|ノ <先生!fscanfがおかしいです!
|__|
| |
0254nobodyさん
2008/05/08(木) 11:45:46ID:???0255243
2008/05/08(木) 12:03:56ID:6fBs3OYgもしよければ具体的なソースコードなど教えてもらえないでしょうか?
0256nobodyさん
2008/05/08(木) 12:04:51ID:???0257nobodyさん
2008/05/08(木) 12:05:52ID:???0258nobodyさん
2008/05/08(木) 12:07:34ID:BM6vmusKこれスクリプトおかしくない?
0259nobodyさん
2008/05/08(木) 12:14:31ID:???ググレばやまほど情報出てくるよ。
ロジックを考える事でPGは育つので、
自分で考えてみると良いと思う。
ヒント
$_SESSION['USER_AGENT'] を保存しておいて、
アクセス毎に、ユーザエージェントが変わってないかチェック。
セッションIDを毎回変えるというのは、
session_regenerate_id で検索すればいいよ。
0261243
2008/05/08(木) 12:33:03ID:6fBs3OYg同じ機種だと同一のagentにならないですか?
0263nobodyさん
2008/05/08(木) 12:41:47ID:???レンタルサーバーに設置して予定編集ページに飛ぶためにクリッコしてもページが切り替わらんのです。
自宅サーバー設置してやってみましたが同じだったのでスクリプトかと思いまして
0265nobodyさん
2008/05/08(木) 12:54:16ID:???ヒント:古いバージョンと新バージョンのPHPでのGETとPOSTの取得方法
ソースみたら動かなくて当然
よく読まなかったのかい?
0266243
2008/05/08(木) 14:27:27ID:6fBs3OYgDoCoMoだと毎回確認が出てうざくなるので
できれば使いたくないのですが・・・
ページによっては使うことになると思うんですが。
0267nobodyさん
2008/05/08(木) 14:47:17ID:???0268nobodyさん
2008/05/08(木) 14:55:12ID:???一回だけ認証すればあとはセッション使うだけだろ
ちなみにguid=onでIDが取れるようになったが、簡単に偽装できるのでお薦めしない
0269nobodyさん
2008/05/08(木) 15:33:41ID:???セッションの内容を消してしまうと、本来のユーザが困るし・・・
0270nobodyさん
2008/05/08(木) 15:35:29ID:???0271227
2008/05/08(木) 15:41:46ID:???鯖というと自分側のですよね?
相手側は直アクセスでは遅くないし
でも 外部へのアクセスだけがそんなに遅いもんです?
なにか解決方法ないものか…
もちろんキャッシュはしてるけど してないときが激遅です
0274nobodyさん
2008/05/08(木) 16:19:20ID:???まじあざっす!
まったくPHPがわからない素人なのです
.htaccessでregister_globalsをONにしたらできました
0275269
2008/05/08(木) 16:35:36ID:???セッションIDを変更して新規のセッションとして開始すると、
UAをころころ変えながら繰り返しアクセスすることで
セッションリソースを大量消費される攻撃に晒される危険があるかと思います。
またexitで処理を停止させてしまうのも、あまりよろしくない。
ルーティングは、後に任せるべき。
セッションがない状態でアクセスした時と同様の処理をしたいのですが、
既にその時点でセッションは開始されてしまっているので、
なかなかむずかしいんですよね・・・
0276269
2008/05/08(木) 16:43:38ID:???それでいながら、
その変更を本来のセッションストレージに反映させず、
また新規でセッション領域を消費しない」
と処理をやればいいかと思います
どうすればいいですか?
0277nobodyさん
2008/05/08(木) 17:44:50ID:???なぜ、現行Verではデフォルトでregister_globals=offになっているのかも知っておこうね。
0278nobodyさん
2008/05/08(木) 18:23:08ID:???>>261
>同じ機種だと同一のagentにならないですか?
逆を言えば、同一機種(+同一ファームウェア?)で無い限りはアクセスを遮断出来ます。
実装が簡単な割に得られる効果は大きいです。
>セッションIDを毎回変えるというのは、
>session_regenerate_id で検索すればいいよ。
は検索しましたか?
URLにセッションIDを含む以上、URLが漏れたら非常に危険です。
しかしセッションID自体をアクセス毎に変えることで、
この危険性はほぼ100%解消できます。
間違えて表示中のURLを漏らしてしまったとしても、
そのURLに含まれるセッションIDは既に無効になっている事になるからです。
0279nobodyさん
2008/05/08(木) 18:32:13ID:???1.接続環境の変更は考慮しない
2.接続環境の変更を確認した時点で、セッションを適切に破棄し、
新セッションを開始する。
>接続環境の変化を検知した時点で
>セッションIDを変更して新規のセッションとして開始すると
新規セッション開始前に、旧セッションを破棄すればいいだけでは?
>UAをころころ変えながら繰り返しアクセスすることで
>セッションリソースを大量消費される攻撃に晒される危険があるかと思います。
まずセッション管理はどうしてるの?
ブラウザ終了時までのセッションであれば、
ブラウザ起動する毎に新セッションが発行され、リソース消費を防ぐ手段はありません。
クッキーに有効期限が設定されているのであれば、
適切に不要なセッションを削除する事でリソースの消費は防げます
0280nobodyさん
2008/05/08(木) 19:47:02ID:???0281nobodyさん
2008/05/08(木) 20:04:07ID:???っていうか、セッションファイルが大量になった時のパフォーマンスどうなんだろ?
特に考えたこともなかったけど
symfonyのキャッシュ機構みたいに遅くならない工夫してんのかな
0282nobodyさん
2008/05/08(木) 21:24:09ID:???パフォーマンスに影響する程のモノでは無い。
きちんと破棄処理すりゃiノードを圧迫する事はありえない。
どうしてもきになるなら、session_save_handlerでも使って好きに実装すればいいんじゃね?
0283nobodyさん
2008/05/08(木) 21:39:36ID:???JavaScriptでencodeURIした文字列を受け取ると"+"だけ消えるんですが何故?
a.html
<select name="select"><option value="A+-*/">
a.js
var a=encodeURI(document.forms[0].select.value) ←この時点では"A+-*/"
(xmlHTTPRequestでPOST送信)
a.php
a=$_POST['a'] ←ここで"A -*/"になってる
+だけの理由がよくわかりません。
0284nobodyさん
2008/05/08(木) 22:25:28ID:???実装の違い。
PHPのurldecodeは+をスペース文字としてデコードする。
js側で encodeURIComponent() 使えばいいよ。
0286nobodyさん
2008/05/08(木) 23:28:14ID:???0287nobodyさん
2008/05/08(木) 23:36:49ID:???誰かに作成依頼するなら話は別だが
0289nobodyさん
2008/05/09(金) 00:38:14ID:???同一なのかそうでないのかすら書かれてないのに判断できる訳がない
違うと推測して>>272のIPアドレスでのアクセスは試してみたのか?
0290227
2008/05/09(金) 01:08:14ID:???PHPが動いてるのはレンサバですねー
アクセスしてるのは外部のサイトの公開API
直だと早い早い RESTだからブラウザ直でアクセスしても早いよ
借りてるうちのレンサバのPHP -> 外部APIが激遅
なんでかねえ・・・
0291nobodyさん
2008/05/09(金) 01:26:12ID:???simplexml_load_file()を含む部分のコードを自分の端末で動かして外部サイトに繋いでみるとか
レンサバにsshとかで入れるのなら、レンサバのw3m等で繋いでみるとか
PHPの問題なのか、レンサバの問題なのかすらわからんじゃないか
0292nobodyさん
2008/05/09(金) 01:26:13ID:???0293227
2008/05/09(金) 02:55:54ID:???その辺はテストしてますよー
PHPからだと遅い…
simplexml_load_fileというか HTTPリクエスト系が激遅
鯖なのかな
それにしては激遅だ
0294227
2008/05/09(金) 03:06:20ID:???鯖なんかなあ
時間帯が時間帯だしなあ
PHPからはいつやっても遅いのはたしかなんだけど
0295nobodyさん
2008/05/09(金) 03:12:39ID:???0296227
2008/05/09(金) 03:16:08ID:snanmjytResolving ... で時間がかかってる
時間が時間だけにたまたまかもだけど
ブラウザからとPHPからとで 相手側がなんか処理わけとるんかなあ
0297227
2008/05/09(金) 03:19:58ID:snanmjytこれはDNSが問題???
どうしようもないのか よくわからないんですけど
0298227
2008/05/09(金) 03:32:48ID:snanmjytw3m, getw から ドメインでアクセスすると遅い
IP直でアクセスすると早い
Resolving ドメイン名 .... が長い
だけど nslookupでドメインからひいて見ると IPはすぐに返ってくる
よくわからん・・・
その場しのぎでIPでアクセスするようにするか・・
0300277
2008/05/09(金) 03:55:06ID:snanmjytいみがわからなかったから調べてました…
PHPからgethostbyname()で事前に変換してみても おそかった
直IPだと早い
ということは 解決方法はなしですかね??
今、IP直でやるようにしましたが 万が一相手の鯖がかわったらアウトですよね
0301nobodyさん
2008/05/09(金) 03:59:05ID:???予想ではipv6関係でbind9が遅くなってる
でもこんなんはレンサバの設定を見なきゃ何も言えん
もはやPHP関係ないし
■ このスレッドは過去ログ倉庫に格納されています