トップページphp
990コメント299KB

【PHP】下らねぇ質問はここに書き込みやがれ 68

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/05/03(土) 22:52:16ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
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カテゴリ)の各スレで
0207nobodyさん2008/05/07(水) 17:58:56ID:???
>>205-206
ご回答ありがとうございます。
>>205さんのおっしゃる通り、レコードが数万単位になってきたら、ループで回すのは現実的じゃないですね。
A の方法を取ろうと思います。
参考になりました、ありがとうございました。
0208nobodyさん2008/05/07(水) 19:58:34ID:???
>>206
日本語でおk
0209nobodyさん2008/05/07(水) 22:09:34ID:jO2+N/ib
mysqlの話が出たので流れに便乗して質問

mysqlに接続するときにmysqlのuserとpasswordが必要になりますが
PHPの場合はどこにその情報を持ちますか?
設定ファイルとしてconf.phpとかを作成してその中に持つのが簡単ですが
生パスワードが書かれるのは、できれば避けたいと思いまして
0210nobodyさん2008/05/08(木) 00:03:27ID:???
生だろ生
嫌なら暗号化処理とかすればいい
ついでだからバイナリ化しておけばパット見わからんぞ
0211nobodyさん2008/05/08(木) 00:13:19ID:???
そんなに気になるのならSSL使えよ貧乏人
0212nobodyさん2008/05/08(木) 00:31:48ID:???
SSLを使うとソース上に事実上解読不可能な形でパスワードを保存することが可能なの?
0213nobodyさん2008/05/08(木) 00:39:50ID:???
金持ちはSSLで全て解決できるようです
0214nobodyさん2008/05/08(木) 00:39:59ID:tHYDIFZk
携帯でセッションを持ちまわす方法を考えているのですが、
なかなかいい方法が浮かびません。なにか方法があるのでしょうか?

サイトにログインしてそのアドレスを他人に送信したときに入れなければいいんですが
urlに引数でユーザーIDとか持たせてるので、今はそれだけで認証させているのですが
もちろんそれだと他の人でも余裕で入れてしまいます・・


よろしくおねがいします。
0215nobodyさん2008/05/08(木) 00:43:43ID:???
>>214
携帯端末情報取得

データ照合

処理
0216nobodyさん2008/05/08(木) 00:50:32ID:???
後出し情報どうぞ
02172092008/05/08(木) 01:09:01ID:???
>>210
やっぱ生すかねえ
暗号化したところでhashみたいに一方向にはできないですし

apacheユーザでパーミッションを0600にでもしておきます
0218nobodyさん2008/05/08(木) 01:11:07ID:???
パーミッションって4桁あるの?
0219nobodyさん2008/05/08(木) 01:16:25ID:???
八進数は頭に0を付ける
0220nobodyさん2008/05/08(木) 01:17:48ID:???
SetUIDとかじゃなかったっけ。違ったかな。
0221nobodyさん2008/05/08(木) 01:46:12ID:???
8進で600とか無茶もいいとこだw

SUIDとかSGIDとかスティッキービットの部分かな
必要無いときゃ書かないのが普通だと思うけど
0222nobodyさん2008/05/08(木) 02:00:01ID:???
>>214
前スレでも同じような話あったな
同じヤツか?
0223nobodyさん2008/05/08(木) 03:00:32ID:/YXnYoEj
ttp://php.mirror.camelnetwork.com/manual/ja/simplexml.examples.php
このページの例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
>>224
すいません・・・、見てませんでした
取りあえずxmlを操作してみたく飛ばしてました
始めから読み直します;
ありがとうございました
0226nobodyさん2008/05/08(木) 03:18:45ID:???
>>222
そんなこと言ってたらほとんど同じやつだろがjk
0227nobodyさん2008/05/08(木) 05:16:22ID:bsvRXjwo
simplexml_load_file()で外部のサイトからロードしてるんだけど
これがすごく遅い

ブラウザからアクセスするとそんなに遅くないんだけど
なにか原因になりそうなことあります?
0228nobodyさん2008/05/08(木) 05:32:42ID:???
0229nobodyさん2008/05/08(木) 05:33:14ID:???
PHP5で、変数をクラス名として、クラス変数にアクセスできますか?

$className = "Hoge";
$className::classProperty;
$className::classMethod();

みたいにしたいのですが・・・
02302292008/05/08(木) 05:35:07ID:???
と、質問してみたけど時間が悪かったので質問取り下げます。。。
0231299 ◆SxucvMLsOs 2008/05/08(木) 05:36:53ID:???
取り下げませんよw

暇な事してないで答えてくれよ!
0232229 ◆SxucvMLsOs 2008/05/08(木) 05:37:22ID:???
・・・レス番間違えたorz
0233nobodyさん2008/05/08(木) 05:40:19ID:???
>>230-232
あの、やめてもらえませんか?
だれかおねがいします
0234nobodyさん2008/05/08(木) 05:43:35ID:???
>>229
それを試してから聞いてるのですか?
0235229 ◆SxucvMLsOs 2008/05/08(木) 05:46:58ID:???
>>234
試してます。

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が表示されておりませんがどういう考えでしょうか?
ここはID表示されないとまともな回答は得られないスレですので
0238nobodyさん2008/05/08(木) 05:57:20ID:???
トリップ付けてるからいいんじゃないの?
2回目からだけど
0239nobodyさん2008/05/08(木) 05:57:52ID:???
僕はスーパーハッカーなのでIDを消してます。
IDと全角で表記するのは非常にイケテない気がします。
0240nobodyさん2008/05/08(木) 07:12:47ID:a30fSoKv
Ajaxのサーバー側プログラムについて、お知恵をお貸し下さい。

サーバーとクライアント間を相互に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:???
>>240
$data = file_get_contents('php://input');

どうしてもXMLを使う理由が無いなら、
クライアント → サーバは 普通にpost
サーバ → クライアントは JSON
をお勧めする。

0242nobodyさん2008/05/08(木) 08:37:17ID:a30fSoKv
>>241
レスありがとうございます。
取得できました。
そんな方法があるとは知りませんでした。(さすがです!)
JSONの方が楽なのは承知しているのですが、色々と事情がありまして・・・
02432142008/05/08(木) 09:00:38ID:lngjMkTW
>215
それだとFORMしかリンクに使えなくなるのでテキストのリンク部分などは回避したいところです・・

>222
違います
0244nobodyさん2008/05/08(木) 09:10:35ID:???
>>243
携帯情報端末を使うのになんでFORMにしかリンクがつかえなくなるの?
0245nobodyさん2008/05/08(木) 09:12:35ID:???
何か基本的なところが理解できてない感じするね
0246nobodyさん2008/05/08(木) 09:12:48ID:???
>>243
携帯端末情報は普通のアンカーからでも取れると思うよ。
DoCoMoだと端末側に送信するか否かの確認は出るだろうけど。

それが嫌なら、
・URLにユーザIDではなく、セッションIDを持たせる。
・セッションIDはアクセス毎に変更する
とか処理しとけば要件満たせるよ。
02472432008/05/08(木) 09:58:57ID:6fBs3OYg
>244-246
すいません、勘違いしてました。

>246
セッションIDもたせたばあい、そのアドレスでアクセスしたら
他の端末でアクセスしたときのセッションの内容がみれたのですが・・
0248nobodyさん2008/05/08(木) 10:10:42ID:???
前スレの
「セッションハイジャックが毎日行われています。客に仕様だと説明しているのですが
 納得してもらえません。どう説明すればいいのでしょう?」
と似てきたな。
0249nobodyさん2008/05/08(木) 10:39:32ID:???
>>247
>セッションIDもたせたばあい、そのアドレスでアクセスしたら
>他の端末でアクセスしたときのセッションの内容がみれたのですが・・
セッション側で管理してなきゃ当然の動作だ。

まずはユーザエージェントでも見て、セッションの有効性をチェックしろ。
これで3割防げる。

そして、セッションIDをアクセス毎に変えろ。
ユーザが故意にセッションIDを流出させない限り
これで9.99割防げる。
0250nobodyさん2008/05/08(木) 11:16:11ID:???
>>248
いちいち前スレのことをもちだすな
ストーカー気質で気持ち悪い
0251nobodyさん2008/05/08(木) 11:33:28ID:???
ストーカーされて気持ち悪いの間違いでは?
0252nobodyさん2008/05/08(木) 11:36:09ID:???
>>248=>>251
0253nobodyさん2008/05/08(木) 11:43:53ID:???



    .__
    ヽ|´∀`|ノ <先生!fscanfがおかしいです!
    |__| 
     | |

0254nobodyさん2008/05/08(木) 11:45:46ID:???
仕様です
02552432008/05/08(木) 12:03:56ID:6fBs3OYg
>>249
もしよければ具体的なソースコードなど教えてもらえないでしょうか?
0256nobodyさん2008/05/08(木) 12:04:51ID:???
えっ!
0257nobodyさん2008/05/08(木) 12:05:52ID:???
びっくりしたなぁもう!
0258nobodyさん2008/05/08(木) 12:07:34ID:BM6vmusK
http://www.cgikon.com/search/detail.php3?menu=1&cgi_id=426
これスクリプトおかしくない?
0259nobodyさん2008/05/08(木) 12:14:31ID:???
>>243
ググレばやまほど情報出てくるよ。
ロジックを考える事でPGは育つので、
自分で考えてみると良いと思う。

ヒント

 $_SESSION['USER_AGENT'] を保存しておいて、
 アクセス毎に、ユーザエージェントが変わってないかチェック。

 セッションIDを毎回変えるというのは、
 session_regenerate_id で検索すればいいよ。
0260nobodyさん2008/05/08(木) 12:26:13ID:???
>>258
おかしくないんじゃね?書き方が古いが

斜めにしか読んでないから納得いかないなら具体的に示せ
02612432008/05/08(木) 12:33:03ID:6fBs3OYg
>>259
同じ機種だと同一のagentにならないですか?
0262nobodyさん2008/05/08(木) 12:36:29ID:???
>>261
何度いえばわかりますか携帯端末情報とればいいだろ
0263nobodyさん2008/05/08(木) 12:41:47ID:???
>>260
レンタルサーバーに設置して予定編集ページに飛ぶためにクリッコしてもページが切り替わらんのです。
自宅サーバー設置してやってみましたが同じだったのでスクリプトかと思いまして
0264nobodyさん2008/05/08(木) 12:44:28ID:???
>>263
まずおまえが使ってる鯖設定とかphpバージョンとかphp.iniの設定とかあるんじゃないのかね?
0265nobodyさん2008/05/08(木) 12:54:16ID:???
>>263
ヒント:古いバージョンと新バージョンのPHPでのGETとPOSTの取得方法

ソースみたら動かなくて当然
よく読まなかったのかい?
02662432008/05/08(木) 14:27:27ID:6fBs3OYg
>>262
DoCoMoだと毎回確認が出てうざくなるので
できれば使いたくないのですが・・・
ページによっては使うことになると思うんですが。
0267nobodyさん2008/05/08(木) 14:47:17ID:???
いつの時代の話だよw
0268nobodyさん2008/05/08(木) 14:55:12ID:???
>>266
一回だけ認証すればあとはセッション使うだけだろ

ちなみにguid=onでIDが取れるようになったが、簡単に偽装できるのでお薦めしない
0269nobodyさん2008/05/08(木) 15:33:41ID:???
セッション処理で接続先の環境が違った場合の処理ってどうするのがいいですか?
セッションの内容を消してしまうと、本来のユーザが困るし・・・
0270nobodyさん2008/05/08(木) 15:35:29ID:???
最近下らない質問じゃなく頭悪い質問が多いな
02712272008/05/08(木) 15:41:46ID:???
>>228

鯖というと自分側のですよね?
相手側は直アクセスでは遅くないし


でも 外部へのアクセスだけがそんなに遅いもんです?
なにか解決方法ないものか…

もちろんキャッシュはしてるけど してないときが激遅です
0272nobodyさん2008/05/08(木) 15:55:56ID:???
>>227
DNS?一度IPでアクセスしてみて確認
0273nobodyさん2008/05/08(木) 16:13:07ID:???
>>270
答えられないなら黙っとけよゴミ虫
0274nobodyさん2008/05/08(木) 16:19:20ID:???
>>265
まじあざっす!
まったくPHPがわからない素人なのです
.htaccessでregister_globalsをONにしたらできました
02752692008/05/08(木) 16:35:36ID:???
接続環境の変化を検知した時点で
セッションIDを変更して新規のセッションとして開始すると、
UAをころころ変えながら繰り返しアクセスすることで
セッションリソースを大量消費される攻撃に晒される危険があるかと思います。

またexitで処理を停止させてしまうのも、あまりよろしくない。
ルーティングは、後に任せるべき。

セッションがない状態でアクセスした時と同様の処理をしたいのですが、
既にその時点でセッションは開始されてしまっているので、
なかなかむずかしいんですよね・・・
02762692008/05/08(木) 16:43:38ID:???
「$_SESSIONをクリアし、
それでいながら、
その変更を本来のセッションストレージに反映させず、
また新規でセッション領域を消費しない」
と処理をやればいいかと思います
どうすればいいですか?
0277nobodyさん2008/05/08(木) 17:44:50ID:???
>>274
なぜ、現行Verではデフォルトでregister_globals=offになっているのかも知っておこうね。
0278nobodyさん2008/05/08(木) 18:23:08ID:???
>>243
>>261
>同じ機種だと同一のagentにならないですか?
逆を言えば、同一機種(+同一ファームウェア?)で無い限りはアクセスを遮断出来ます。
実装が簡単な割に得られる効果は大きいです。

>セッションIDを毎回変えるというのは、
>session_regenerate_id で検索すればいいよ。

は検索しましたか?
URLにセッションIDを含む以上、URLが漏れたら非常に危険です。
しかしセッションID自体をアクセス毎に変えることで、
この危険性はほぼ100%解消できます。

間違えて表示中のURLを漏らしてしまったとしても、
そのURLに含まれるセッションIDは既に無効になっている事になるからです。
0279nobodyさん2008/05/08(木) 18:32:13ID:???
>>269
1.接続環境の変更は考慮しない
 
2.接続環境の変更を確認した時点で、セッションを適切に破棄し、
 新セッションを開始する。
 
>接続環境の変化を検知した時点で
>セッションIDを変更して新規のセッションとして開始すると

新規セッション開始前に、旧セッションを破棄すればいいだけでは?

>UAをころころ変えながら繰り返しアクセスすることで
>セッションリソースを大量消費される攻撃に晒される危険があるかと思います。
 
 まずセッション管理はどうしてるの?
 ブラウザ終了時までのセッションであれば、
 ブラウザ起動する毎に新セッションが発行され、リソース消費を防ぐ手段はありません。
 
 クッキーに有効期限が設定されているのであれば、
 適切に不要なセッションを削除する事でリソースの消費は防げます
0280nobodyさん2008/05/08(木) 19:47:02ID:???
セッションにどんなでかいデータ持たせるつもりなんだ?
0281nobodyさん2008/05/08(木) 20:04:07ID:???
iノードは有限だから小さくてもファイル大量に作られたら嫌じゃね?
っていうか、セッションファイルが大量になった時のパフォーマンスどうなんだろ?
特に考えたこともなかったけど
symfonyのキャッシュ機構みたいに遅くならない工夫してんのかな
0282nobodyさん2008/05/08(木) 21:24:09ID:???
ファイルに保存するのであればOS依存だろうし。
パフォーマンスに影響する程のモノでは無い。
きちんと破棄処理すりゃ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:???
>>283
実装の違い。
PHPのurldecodeは+をスペース文字としてデコードする。

js側で encodeURIComponent() 使えばいいよ。
0285nobodyさん2008/05/08(木) 22:38:35ID:???
>>284
フムウそんな罠があったとは
調べてみるサンクス
0286nobodyさん2008/05/08(木) 23:28:14ID:???
プレス‐リリースを発信してるサイトはPHPで作ってるのが多いですが、簡単に作れますか?
0287nobodyさん2008/05/08(木) 23:36:49ID:???
質問内容から判断すると簡単には作れないだろう
誰かに作成依頼するなら話は別だが
02882272008/05/09(金) 00:29:55ID:???
>>272

どもです
直だと早いんですよねー

PHPからだと遅い… 謎
鯖がくそなのかなあああああ
0289nobodyさん2008/05/09(金) 00:38:14ID:???
そもそも、その直でのアクセスしてるマシンとPHPが動いてるマシンが
同一なのかそうでないのかすら書かれてないのに判断できる訳がない

違うと推測して>>272のIPアドレスでのアクセスは試してみたのか?
02902272008/05/09(金) 01:08:14ID:???
>>289

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:???
02932272008/05/09(金) 02:55:54ID:???
>>291

その辺はテストしてますよー

PHPからだと遅い…
simplexml_load_fileというか HTTPリクエスト系が激遅

鯖なのかな
それにしては激遅だ
02942272008/05/09(金) 03:06:20ID:???
w3m もう一度試したら 遅いわ・・・

鯖なんかなあ
時間帯が時間帯だしなあ

PHPからはいつやっても遅いのはたしかなんだけど
0295nobodyさん2008/05/09(金) 03:12:39ID:???
とりあえずIDは出した前
02962272008/05/09(金) 03:16:08ID:snanmjyt
wgetでやっても同じですねー

Resolving ... で時間がかかってる

時間が時間だけにたまたまかもだけど

ブラウザからとPHPからとで 相手側がなんか処理わけとるんかなあ
02972272008/05/09(金) 03:19:58ID:snanmjyt
出てきた IPでつないだら早い・・・・

これはDNSが問題???

どうしようもないのか よくわからないんですけど
02982272008/05/09(金) 03:32:48ID:snanmjyt
わかたこと

w3m, getw から ドメインでアクセスすると遅い
IP直でアクセスすると早い

Resolving ドメイン名 .... が長い

だけど nslookupでドメインからひいて見ると IPはすぐに返ってくる
よくわからん・・・

その場しのぎでIPでアクセスするようにするか・・
0299nobodyさん2008/05/09(金) 03:50:29ID:???
>>272,289でとっくに言われてるのに・・・
03002772008/05/09(金) 03:55:06ID:snanmjyt
すんません
いみがわからなかったから調べてました…

PHPからgethostbyname()で事前に変換してみても おそかった
直IPだと早い

ということは 解決方法はなしですかね??
今、IP直でやるようにしましたが 万が一相手の鯖がかわったらアウトですよね
0301nobodyさん2008/05/09(金) 03:59:05ID:???
解決方法はレンサバに文句を言う事

予想ではipv6関係でbind9が遅くなってる
でもこんなんはレンサバの設定を見なきゃ何も言えん
もはやPHP関係ないし
03022272008/05/09(金) 04:03:33ID:snanmjyt
>>301

そうですか…
とりあえず原因がすっきりしたことに感謝します

レンサバにもきいてみます

しかたないのでしばらくはIP直でやるか
cronでときどき gethostbyname しておいて それを使うとかしようと思います
0303nobodyさん2008/05/09(金) 04:26:38ID:???
test
0304nobodyさん2008/05/09(金) 08:07:25ID:???
いつからここは日記帳になったんだ
03052432008/05/09(金) 09:38:31ID:NVAYhOqr
みなさんありがとうございました。
ようやくそれなりに満足できるものが作れました。
0306nobodyさん2008/05/09(金) 09:42:34ID:???
k.k.projects再始動します

帰ってきたk.k.projects【私がやります】
http://pc11.2ch.net/test/read.cgi/php/1210192743/
■ このスレッドは過去ログ倉庫に格納されています