【PHP】下らねぇ質問はID出して書き込みやがれ 85
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/06/15(月) 22:53:52ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0552nobodyさん
2009/07/15(水) 14:06:13ID:yniO2VZr構文エラーチェックってのは思いついたんで
それ以外でお願いします。
0553nobodyさん
2009/07/15(水) 14:09:39ID:yniO2VZr0555nobodyさん
2009/07/15(水) 15:07:53ID:???http://php.benscom.com/manual/ja/function.uniqid.php
0556nobodyさん
2009/07/15(水) 20:06:04ID:???想像されてもいい値ならオートインクリメントだっていいぐらいだ
0557nobodyさん
2009/07/15(水) 20:56:47ID:???uniqid が楽だと思うけど
0558nobodyさん
2009/07/15(水) 20:58:59ID:???登録後じゃないとIDが出てこないという欠点はあるが。
でなきゃ、uniqid だね
0559nobodyさん
2009/07/15(水) 21:08:05ID:???0560nobodyさん
2009/07/16(木) 03:37:05ID:???直接データベースに入れればいいけど、
単に重複しない値を得るだけならuniqidの方が楽だろw
関数一個でいいんだぜ。
関数一個ですむことを負荷増やしてまでデータベースでやるとか
あほらしいw
0562nobodyさん
2009/07/16(木) 06:08:55ID:uYVqD/1s何かアドバイスくださいませ。
0563nobodyさん
2009/07/16(木) 09:19:39ID:???0564nobodyさん
2009/07/16(木) 09:47:57ID:???鯖側でIPを記録する
とかしてカウントする
クッキー(セッション)は消せるしIPも多くの人ならすぐに変えられるから
完全な対策は無理
ファイルのサイズを調べる関数はfilesize()
0565nobodyさん
2009/07/16(木) 13:11:50ID:uYVqD/1sありがとうございます。
なるほど・・
ipを記録する方法でやってみようと思います。
一応phpでipを記録する方法で考えてみたのですが、
0.データにアクセス
1.filesize()で○bytes以上であれば以下を実行
2.ip取得
3.記録されている(ダウンロード中の)ip全てを参照して、2で取得したipがあれば弾く
4.2で取得したipが一致しなければ、このipを記録
5.データをダウンロード開始
6.データのダウンロード終了、もしくわ途中で終了したりすれば記録したipを消去
で、いきなり3で詰まってしまいました・・
4で記録するipを3で参照するつもりで、
記録しておきたいのは、データのダウンロードしている間だけなんです。
でもこの”間だけ”という操作をどうすればいいのかよくわかりません(6のデータ転送”終了時”の判断方法も)・・
そもそも1〜6の操作が的外れかもしれませんが
どなたかよい方法を教えてくださいよろしくお願いします。
0566nobodyさん
2009/07/16(木) 13:14:57ID:uYVqD/1sデータのダウンロード中に、さらに同一ipからデータをダウンロードされる、、ということです、説明不足でしたすいません
0567軟式PHP
2009/07/16(木) 13:16:31ID:???mod_limitipconnとか使えないのかいな。
0568nobodyさん
2009/07/16(木) 13:18:30ID:iIDXJDL1ダウンロードボタンクリック→JavaScriptでボタンをdisabledにする
0569nobodyさん
2009/07/16(木) 13:31:14ID:uYVqD/1sなるほど、でも新しくページをリロードされたりクッキーとかと同じでやはり代えられてしまうのでしょうね
>>567
いえ、大丈夫です。
mod_limitipconn調べてみました、流し読みですが
なんとかできそうかもしれませんありがとうございました
0570nobodyさん
2009/07/16(木) 13:32:54ID:uYVqD/1sしかしながら、多重クリックで未然に防ぐことができるのではと思いました
ありがとうございました
0573nobodyさん
2009/07/16(木) 15:11:07ID:???大量のデータから重複のチェックなんてDBの十八番じゃないか
0574nobodyさん
2009/07/16(木) 15:37:23ID:NM9P6RACmb_ereg_replace("\"",'',$line);
とやっても消えません。
どうやったら良いのか、誰か教えてください。
0575nobodyさん
2009/07/16(木) 15:45:38ID:???0576nobodyさん
2009/07/16(木) 15:45:54ID:???ちなみにその例ではmb_ereg使わなくてもstr_replaceでいいと思うけど
コード
<?php
$text = 'The person said "Working is losing of life."';
echo mb_ereg_replace("\"",'',$text);
結果
The person said Working is losing of life.
0577nobodyさん
2009/07/16(木) 15:53:53ID:NM9P6RAC>>576
有難うございます。
でも、やっぱり削除されません。
何が原因なんでしょうね、これは…
0578nobodyさん
2009/07/16(木) 15:56:20ID:???0579nobodyさん
2009/07/16(木) 15:57:42ID:???用途なら、>>419に書いてあるじゃんw
だいたいランダムな値って言っているのに、
連番を答えるやつは頭が悪いね。
0581nobodyさん
2009/07/16(木) 16:08:06ID:NM9P6RAC有難うございます。一度違うやり方でやってみます。
0582nobodyさん
2009/07/16(木) 16:12:57ID:???答えてるやつは重複しなけりゃいいだっていう理論をもとに
質問者の求めてる「一般的ないい方法」を言ってるに過ぎないよ
ランダムな値を管理するには結局DB使うんでしょ?
ならオートインクリメントでもいいんじゃないの?っていう話
0583nobodyさん
2009/07/16(木) 16:16:09ID:???0584nobodyさん
2009/07/16(木) 16:18:29ID:???0585nobodyさん
2009/07/16(木) 17:08:56ID:???0586nobodyさん
2009/07/16(木) 17:39:57ID:???0587nobodyさん
2009/07/16(木) 17:43:16ID:???0588nobodyさん
2009/07/16(木) 18:02:35ID:wZUMSXTz俺昨日駅で拾った
0589nobodyさん
2009/07/16(木) 18:05:33ID:???0590nobodyさん
2009/07/16(木) 18:10:45ID:???> ランダムな値を管理するには結局DB使うんでしょ?
なんで決め付けてるわけ?
そんなの要件に合った?
ファイル・ディレクトリかもしれないじゃんか。
0591nobodyさん
2009/07/16(木) 18:18:27ID:???0592nobodyさん
2009/07/16(木) 18:37:36ID:???用途がわからないことにはなんともいえないが
例にあげたようなアプリケーションでその言い分は苦しいよ
どこのレンタルサービスがそんなのファイルで管理してると思う?
0593nobodyさん
2009/07/16(木) 18:47:19ID:wiET9Ah7レンタルサーバーを定期更新したいと思い
centOS php5の自鯖から
$conn = ftp_connect( $ftp_server,21,60 );とやったところ
どんなサーバーへも接続できません
何か根本的なところが抜けているとは思うのですが
なにを確認するのでしょうか? phpのコンフィグで --enable ftpにはなっています
0594nobodyさん
2009/07/16(木) 18:47:45ID:???ランダムな値が必要とされているなら、
uniqid使うのが手っ取り早いし効率がいいでしょ?
それとも簡単にランダムな値を生成してくれるDBがあるとでもいのかな?
DBに格納しても重複されない値が得られるだけ。
それは決してランダムな値ではない。
0595nobodyさん
2009/07/16(木) 18:54:19ID:???rand()関数使って、ランダム(かもしれない)な値を生成。
それを主キー(プライマリーキー)か一意制約(UNIQUE)をつけたフィールドにいれる。
なお主キーにnullを入れて格納しても、連番になるので要求を満たさない。
そしてデータベースに入れて、エラーになれば、
再度rand()関数を実行して、ランダムな値を生成して格納する。
この処理を繰り返す。
俺ならすなおにuniqid()使うw
0596nobodyさん
2009/07/16(木) 19:06:29ID:wZUMSXTz0597nobodyさん
2009/07/16(木) 19:16:38ID:9yCTA3Ep今はよく使う関数はユーザー定義関数でまとめてるし、それで事足りています。
よく、「車のエンジンやギアなど中の精密な構造まで知らなくても
運転の仕方が分かれば車は乗れる」とかたとえ話するばか
みす。する方がいらっしゃいますが、それでは分かりません。
具体的に教えてください。
0598nobodyさん
2009/07/16(木) 19:32:20ID:???DBでも乱数の生成は可能だが重複する可能性のあるただの乱数をキーに使うのはご法度
DBの算術関数操作だけで重複しないまともなキーを作成するのは可能かもしれない
自分は数学詳しくないんで具体的なやり方はわからないけど
ただそんなご苦労なことやるぐらいならすでに用意されているものを使うべき
車輪の再発明だっけか?
DBでできることはやったほうがいいとはいうが限度ってものがある
プログラム側で簡単に実現できるならそっちを使ったほうがいい
パスワード突っ込むときだってプログラム側でハッシュ関数にかけてるのと同じこった
0599nobodyさん
2009/07/16(木) 20:04:06ID:???0600nobodyさん
2009/07/16(木) 20:12:22ID:???0601nobodyさん
2009/07/16(木) 20:59:10ID:wZUMSXTzお勧めのライブラリとかありましたらおしえてください
0602nobodyさん
2009/07/16(木) 21:09:21ID:???0603nobodyさん
2009/07/16(木) 21:45:36ID:???ものの考え方だからそんな難しく考えないで
オブジェクトに対する情報(プロパティ)と動作(メソッド)
これをまとめたのがクラス
パーツまで考えるときりがないのでおおざっぱにパソコンというオブジェクトを考えると
動作(メソッド)として、『起動する』 『シャットダウンする』ってのがあるね
これをソースであらわすと
class パソコン {
function 起動する() {
}
function シャットダウンする() {
}
}
こうやって最初に考えておいて後で中身を書いていくのがオブジェクト指向的な書き方
こんな調子でWebアプリケーションにおきかえて考えてみればOK
掲示板というオブジェクトを考えると
動作(メソッド)は『書き込む』 『表示する』とかあるね
class 掲示板 {
function 書き込む(内容) {
内容を書き込む
}
function 表示する() {
内容を表示する
}
}
情報(プロパティ)については割愛したけど考え方としてはこんな感じ
最初はこんな感じから始めればOK
継承とかMVCモデルとかははじめは気にしなくていい混乱するだけだから
とにかく始めはオブジェクトに必要なもの(書くべきことを)を見極めるところから
0605nobodyさん
2009/07/16(木) 22:09:01ID:xcgIWd6Zクラス単位にまとめた方が見やすい。継承も使えるし。
0606597
2009/07/16(木) 22:13:58ID:9yCTA3Epありがとうございます!
0607nobodyさん
2009/07/16(木) 22:44:56ID:???>こうやって最初に考えておいて後で中身を書いていくのがオブジェクト指向的な書き方
それはオブジェクトというよりは段階的詳細化の気がするなあ。。
gotoとラベルでも同じことはできるわけで。
0609nobodyさん
2009/07/16(木) 22:57:08ID:???0610nobodyさん
2009/07/16(木) 23:06:32ID:???手続きとデータをまとめて持てる、っていうのと
(言語にもよるかもけど知れんが)他人から隠せるっていうのが利点かな。
>>603のBBSの例で、例えば書き込み先がファイルだとする。
関数だと、呼び出し元がファイルポインタを引数として渡すか、
あるいは関数内でグローバルスコープにする必要があるわけで
つまり「ファイルポインタ」の存在を気にしないといけない。
0611nobodyさん
2009/07/16(木) 23:40:54ID:???0612nobodyさん
2009/07/17(金) 01:47:11ID:???2chで規制を食らった時に書き込みをする方法について某スレで紹介が
ありそこでその存在をしったのですが、
そのサイト上のページに
・書き込みを行いたいURL
・名前
・投稿内容
・(自分の携帯メールアドレス)
を入力し「送信」ボタンをクリックすると自分の携帯メールにURLが送られて来て
そのリンクをクリックすると2chの投稿フォームに入力した内容が設定される
のですがあれはどうやっているのでしょうか?
0613nobodyさん
2009/07/17(金) 01:53:01ID:???大抵の場合、先にネックになるのはDBだから
PHPで簡単にできるならPHPでやってしまうってのは悪くはない。
0616nobodyさん
2009/07/17(金) 02:40:25ID:???どうしてご指名なのかは知らんが、getでパラメータ渡してんじゃねーのかな。
その携帯に送られてきたURL晒してみ?
0617nobodyさん
2009/07/17(金) 02:52:05ID:???簡単にいうと、カプセル化、ポリフォーフィズムかな。
完璧に動き、仕様変更は絶対ないという前提なら、それでもいいかもしれん。
2-3行で利点を説くのは難しいわい
0618nobodyさん
2009/07/17(金) 03:13:04ID:???面白いこと考える奴がいるんだね、商売上手だなぁ
WebProg 初心者の質問スレで質問すべきだと思うけど。
その携帯に送られてきたURLにユニークのgetパラメータがついてるんだよ
で、それをクリックするとリンクした先のページでそのパラメータを判別して
それに応じた書き込みデータを投稿するようになってるんだと思う
(きっと送信完了画面にはあれこれ広告が貼り付けてあるだろうねw)
0619593
2009/07/17(金) 09:41:13ID:189Q4h2A0622nobodyさん
2009/07/17(金) 11:03:34ID:???0623nobodyさん
2009/07/17(金) 11:14:33ID:???オブジェクト指向ねぇ。
ユーザー定義関数としてまとめてるでしょ?
いろんなプログラムで汎用的に使う関数は
きっと別のファイルに分けてまとめているはず。
オブジェクト指向は、このまとめ方をさらに発展させたものだよ。
いろいろごちゃごちゃ言う人いるけどねw
0624nobodyさん
2009/07/17(金) 12:01:11ID:???データと関数をまとめただけとか低レベルすぎ
0625nobodyさん
2009/07/17(金) 12:23:31ID:???そこを言えよw
0626nobodyさん
2009/07/17(金) 12:28:29ID:+Z3bH2zE【PHPのバージョン】php5.30
<?php
//setting.txtの読み込み
{
$setting_txt = file( 'setting.txt' );
foreach( $setting_txt as $setting ){
$setx = split("\n", $setting);
$set[$setx[0]] = $setx[1];
unset($setx);
}
}
?>
これを実行すると
Warning: implode() [function.implode]: Invalid arguments passed in X:/index.php on line 6
Warning: implode() [function.implode]: Invalid arguments passed in X:/index.php on line 6
何か根本的な勘違いをしてるような気がするのですが
自分ではわかりません指摘していただけると嬉しいです
0627nobodyさん
2009/07/17(金) 12:32:19ID:WCCLHa3V心配しているのが、大量のファイルを悪意でアップロードされた場合に、
どのように防ぐか悩んでいます。
最大アップロードサイズを指定しても、それに満たないサイズで、
大量にアップロードされた場合に防ぐ方法が分かりません。
質問1:
クライアントからアップロードされたファイルを一時ファイルに置く処理(upload_tmp_dirで指定された場所に置く処理)は、
どのタイミングで行なわれるのでしょうか。
悪意のユーザーと分かった時点で、アップロード中に処理を切りたいと思います。
質問2:
upload_tmp_dirに置かれた一時ファイルは自動的に削除されますか?
Windowsでは、アップロードされた一時ファイルが探しましたがありませんでした。
「C:\WINDOWS\Temp」のところを見ました。
スクリプトの処理が終わると自動的に消去される仕組みでしょうか。
宜しくお願いします。
0628nobodyさん
2009/07/17(金) 12:33:00ID:???0629nobodyさん
2009/07/17(金) 12:34:15ID:???悪意のユーザってどうやって判別するの?
一時ファイルを削除するのはOSの仕事じゃないですかね.
まぁ別にPHPから削除してもいいと思うけど
0630nobodyさん
2009/07/17(金) 12:56:05ID:WCCLHa3Vレスありがとうございます。
悪意のユーザを判定する一つとしては、
小さいファイルを何回も何回も短時間にアップロードを繰り返すようなケースでしょうか。
そのほか、サーバーに負荷が掛かるようなケースに制約を掛けたいと思います。
0632nobodyさん
2009/07/17(金) 13:09:01ID:WCCLHa3Vそのように信じたいのですが、
暇なユーザーかどうか分かりませんが、
毎日毎日届くスパムメールやウィルスなどのことを考えると、
セキュリティーのために、予算の許す限りで考えられる得る対策はしたいと思っています。
0633nobodyさん
2009/07/17(金) 13:23:17ID:???そのようなシステムかな?
無駄に制限をつけるのなら、最初からそのシステムの思想に
欠陥が在るように思えるが、いかがか?
0634nobodyさん
2009/07/17(金) 13:27:28ID:???×アップローダがブログの画像投稿
○アップローダかブログの画像投稿
文章を間違えました。
アップローダならばDBにアップロード時刻を保存して時間で制限をかける
画像投稿ならファイルサイズにて制限と思いますが、
細かいファイルのやり取りで制限をつけるなら、クッキーで
カウントさせて回数を制限させるのが簡単と思います。
それではダメですか?
0635nobodyさん
2009/07/17(金) 13:36:55ID:???継承とか、オーバーライドとかオーバーロードを理解すると便利さが分かるかもしれない。
でも、現時点で困ってないならいらないんだと思う。
複数人での大きめの開発とかだと有効だけど、一人で書く分にはそれほど効果は上がらないかも。
0636nobodyさん
2009/07/17(金) 13:47:10ID:???セキュアな機能は多くの場合無駄にはなるが、
その無駄が正常なシステムの運用を支えるのであって、
その無駄を欠陥と考えるのは、平和主義者の素人だな。
0637nobodyさん
2009/07/17(金) 13:51:51ID:???0638nobodyさん
2009/07/17(金) 14:31:47ID:F6lKm6fiというような設定はできますでしょうか?
例えば、test.htmlが、
<html>
<body>
<?php
echo phpinfo();
?>
</body>
</html>
であったとしても、拡張子がhtmlなのでecho phpinfo();は実行されない
という感じです。
よろしくお願いします。
0639nobodyさん
2009/07/17(金) 14:35:26ID:???それはPHPとは関係ない
Webサーバ側の設定でしょ(htaccessとかの話)
深読みしてPHPのソースを表示したいなら
拡張子phpsにする
htaccessにAddType application/x-httpd-php-source .phpsを追加
0640nobodyさん
2009/07/17(金) 14:39:17ID:???シス管がシステムをしっかりと安定させてトラブル対策を少なくしているより
トラブル発生しまくりで対応に動いている方が働いていると思われるのと同じだよな
0641nobodyさん
2009/07/17(金) 17:07:31ID:NiuWIla/$data["test"] = "123";
$data["abc"] = "456";
$after = preg_replace("/(http:\/\/www\.example\.com\/\?file\=)([\w\-\.!~\*'\(\)%#]+)/","変換後",$befor);
echo $after;
$afterが「123<br>456」のように
変換後の部分を$2の拡張子を取った $data["$2"] のようにしたいのですが$2を文字列として上手く利用できません
どなかご教示出来ますか?
0642nobodyさん
2009/07/17(金) 17:50:12ID:raMKvGDhまたはゼンドガードに代わる暗号化ソフトやコンパイラ無いですか?
ソースが見えるのはともかく、データベースのパスワードも丸見えなのはセキュリティ上どうかと思います。
あとユーザー関数を使う度に呼び出すのではなく常にメモリ上に置いておきたいのですが
そういうのできますか?
0644nobodyさん
2009/07/17(金) 17:56:15ID:kh/NJMurオワビニ、ライチモテキタヨー
ウレチーライチシュキダッタヨネ!
キョウモ、イッパイモッテキタヨー
0645nobodyさん
2009/07/17(金) 17:57:02ID:kh/NJMur0648nobodyさん
2009/07/17(金) 19:51:26ID:???0649nobodyさん
2009/07/17(金) 20:04:21ID:???公開FTPにおいてあるとか人為的流出ならマヌケと言わざるをえないけど
しっかりとした対策をした上でサーバの脆弱性を突かれて見られてしまったとかなら
もうそれはどうしようもない話
レンタルサーバならなおさら
DB鯖の脆弱性ついて直接ハッキングされるなんて可能性も捨てきれないわけで
通常運営するにあたってちゃんとした対策しができてるならそれ以上の過度な対策は必要ない
やっても無駄だから
0650nobodyさん
2009/07/17(金) 20:11:54ID:???心配するほど
人来ない
orz
0651nobodyさん
2009/07/17(金) 22:42:09ID:vZoTOxod$id = $_POST['id'][$i]; //3を返す
$var = "DB_lessonPic".$id;//DB_lessonPic3を返す
$_POST['{$var}']; で3を返すようにしたいですがうまくいきません
どうしたら良いでしょうか?
0652nobodyさん
2009/07/17(金) 22:47:15ID:???強いて言うなら、$_POSTはスーパーグローバル変数なのでコード内でキーや値を変えないほうがいいです
■ このスレッドは過去ログ倉庫に格納されています