【PHP】下らねぇ質問はここに書き込みやがれ 39
まず読め→【PHP マニュアル】
http://www.php.net/manual/ja/ PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは
>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 38
http://pc10.2ch.net/test/read.cgi/php/1170520777/ ◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
http://pc10.2ch.net/php/subback.html ・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
http://pc10.2ch.net/db/subback.html ・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http://〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
>>1 乙です。
前スレ後半変なのが湧いたけど仕切り直していきまっしょい
それがPHPクオリティ(^^)
キャー!カカッタノダ♪(*゜ー゜)ノ\____((¶))
YLy/IkNCが「ご教授」と書いてたな。
php-usersに出てくる釣り質問者に通じるものを感じたw
10 :
nobodyさん:2007/02/12(月) 20:59:53 ID:YLy/IkNC
session_cache_expire(60*24);
↑セッションの有効期限を24時間にする方法ですが、
デフォルトの180分(php.iniの値)でセッションが切れてしまいます。
何か原因が分かる人は教えて貰えますか?
ちなみに、session_cache_expireの値を秒数だと勘違いしてる人が
いましたが、これは分数を指定します。
11 :
nobodyさん:2007/02/12(月) 21:00:37 ID:YLy/IkNC
>>9 単なる嫌味です。自分を優れてると勘違いしてる人へのね。
>>10 ◆質問する時の注意を緑内障になるまで読み返してからこい
スキルのない大前春子みたいだな
17 :
nobodyさん:2007/02/12(月) 22:13:05 ID:YLy/IkNC
>>14 >◆回答者への注意
>・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
確かに↑と書いてありますね。アンカーのつけ方を知らない人は、初心者板へどうぞ
,.-===ュ、__
,.イ.:.:::l:i:::`丶、\``>
r、 /.:/.:::::;:川ト、ィ;l:ヽ V、
>\__ !.:::l:::::ノノ リ,ィtナl.::;;! 1::',
(ミム )X^ヽ リ.:;:Vtソ 、 `ー' |;;/ |::::', 下らねぇ質問は
`ーく_ノ `ー-r─‐‐ヽ:::;、 「 ヽ イ1米|:::::', ここに書き込みやがれ
`ヽ、 |\ i `l>、`ー' イ:::| |::::::l ちび人間っ
`フ| ヽ |米|.:::゙、 ̄>くl米|::::::|
./ .:| | ,1 |.:::::{i //介l」 |:::::r‐、
/ .:.::|__ |/:::|米「:::::{l i;|゚j;i ヽト、ムYノ
L_.:.:.:.:.::|_ |.::::| |:i!::::{l. |;|゚j;| N:::}=〈::l
\.:.:.::l/.::::|米|.:i!ニ{L `゚j´ |:|::| |::|
\ノ.::::::|_|.::i!三三ニ「]|」:| |:::|
ディレクトリ下のファイル一覧を作ろうとしてるんですが、うまくいきません。
すみません、どこがおかしいですか?
回答よろしくお願いします。php5です
$dir_ary = scandir("./doc");
$itemNum = count($dir_ary);
for($i=0;$i<$itemNum;$i++){
if($dir_ary[$i] != "." && $dir_ary[$i] != ".."){
echo filetype($dir_ary[$i]);
}
}
>>20 filetypeの引数のパスが間違っている
"./doc/"つけて相対パスにするか絶対パスにしてから渡す
>>20 ソース的には問題はなさそうだけど
何がうまくいかんの?
23 :
nobodyさん:2007/02/12(月) 22:47:38 ID:1UHqIA+/
回答ありがとうございます
>>21 そうなんですか?
試しに"./doc/"にしてもうまくいかないです
ちなみに、"./doc"のままでも
echo $dir_ary[$i]; なら正常に動くんです。ちゃんと以下を返します。
⇒1.Intro2.Basic3.Component4.DataBase5.Appendixsample.doc
>>22 echo filetype($dir_ary[$i]);の部分がエラーが返るんですが、、
この書式ってphp.iniとかをいじらなきゃダメだったりするんですか?
うーん、、
>>23 違う、filetypeに渡す時にファイル名だけになってる
echo filetype('./doc/' . $dir_ary[$i]);
25 :
nobodyさん:2007/02/12(月) 23:32:59 ID:1UHqIA+/
>>24 そっか、 すいませんfiletypeの引数のディレクトリですね。
教えてもらったのに勘違いしてました。
うまくいきました、ありがとうございました!!
26 :
nobodyさん:2007/02/13(火) 00:03:59 ID:V5Md+oDi
全スレでpregでエラーが起こると質問した858です
preg_match_all('/("(?:[^"]|"")*"|[^,]*),/',$data,$result);
↑正規表現で、画面真っ白になって、エラーメッセージも無く止まるって質問でした
エラーの理由は分かりました
文字数が10000超えるとpregで必ずエラーが起きるようです(2バイト文字の量によって、文字数は増減します)
さて… php.iniの設定かな? と思い…
max_execution_time = 450
max_input_time = 750
memory_limit = 350M
ここら辺を変えてみましたが、まだ直らず…
ぱっと思いつく、変更点はありませぬか?
>>26pregライブラリの限界だと思う。設定じゃ回避できないかと。
つーかpreg関連に設定なんて特にないし。
test
>>26制限なんてあるの?
試しにこんなの書いたらヌルヌル動くんだけど
for($str = '', $i = 0; $i < 10000; $i++) $str .= '("Aあ亜"),';
echo strlen($str); // 120000
preg_match_all('/("(?:[^"]|"")*"|[^,]*),/', $str, $match);
echo count($match[0]); // 10000
>>10session_startの前に呼んでる?
31 :
nobodyさん:2007/02/13(火) 01:26:47 ID:V5Md+oDi
>27>29
レスありがとうございます
う〜ん、確かに29さんの動くなぁ
CSVデータにHTMLが入ってるやつを読み込んでいるので、HTMLコード入れて試してみました
HTMLコードのところが問題だったようです…
ごめんPreg;;
でもですね、その確実にエラーになる所は、
HTMLコードで8000文字の内、文字数減らすとエラーにならないんですよ (消す時「”」の数には注意してます)
何処を消しても、エラーが起きなくなるんですよねぇ… だから文字数だと思ったのですが…
例えばヤホーのトップページをCSVの一つのカラムに入れて、「”」を「””」にしてpregかけても真っ白になります。
そして、そのHTMLを10000文字以下にして、pregかけるとヤホーでもエラーが起きなくなる…
う〜〜〜〜〜ん… わかんね…
33 :
nobodyさん:2007/02/13(火) 02:08:02 ID:V5Md+oDi
>32
マルチバイトたくさんあります
34 :
nobodyさん:2007/02/13(火) 02:15:48 ID:WLri6D19
すみません質問です
scandir() で一覧化したファイル名は mb_convert_encoding() でエンコーディング
できないんでしょうか?
$currentDir = "./doc/";
$dir_ary = scandir($currentDir);
$itemNum = count($dir_ary);
for($i=0;$i<$itemNum;$i++){
if($dir_ary[$i] != "." && $dir_ary[$i] != ".."){
echo "<td><a href='".$currentDir.$dir_ary[$i]."'>".mb_convert_encoding($currentDir.$dir_ary[$i],"EUC-JP","SJIS")."</a></td>";
上記のスクリプトの最終行がブラウザに表示されないのは、そういうことなのか、
それとも根本的に他の間違いがあるのか 分からなくて困ってます
よろしくお願いします。
>>31csvファイルってことだけどちゃんと読み込めてるのかどうかが怪しそう
fgetcsvをつかってるのでしょうか?
そういう時は原因の切り分けを心がけよう
もしくはもうしてるのかも知れんが、その場合は書いてくれないと分からない上に回答者に無駄手間を取らせることになる。
1.mb_conv...を通さなければ表示されるのか
表示される→mb_convの問題:(a)へ
表示されない→ファイルリストが上手く取れてない:(b)へ or HTMLの問題:(c)へ
(a) 文字列単体を持ってきて変換できてるかテストする。PHPソースとブラウザの文字コードは?
(b) var_dump($dir_ary)してみる
(c) <table>タグなくても表示されんの?ブラウザの文字コード変えてみた?HTMLソースは見た?
37 :
nobodyさん:2007/02/13(火) 02:52:24 ID:V5Md+oDi
>35
読み込みはばっちりです。fopenとfgetsでやっとります。
fgetcsvは使っていません。これがちゃんと動けば、CSVの解析なんてしなくていいのに;;
ガチで、HTMLの量が多くない限り、動くんだって〜;;
信じて;;
$fp = fopen($file,'rb');
while ($data = fgets($fp)) {
//処理とか 例えばprint $data;
}
今、確実に止まるのを29さんのコードを元に作成中…
mysqil関数を使っています。
mysqli_queryを使って、Update文のクエリを実行したとき、
updateされたフィールドの数を取得すしたいと思っています。
mysqil関数で可能なんでしょうか?
40 :
nobodyさん:2007/02/13(火) 03:20:17 ID:V5Md+oDi
やっぱり量みたい…?
$str = '"';
//for($str = '', $i = 0; $i < 10000; $i++) $str .= '(Aあ亜)'; //動く
//for($str = '', $i = 0; $i < 10000; $i++) $str .= '(""Aあ亜"")'; //動く
//for($i = 0; $i < 100; $i++) $str .= '(<input type=""text"" values = ""Aあ亜"">)'; //動く
for($i = 0; $i < 250; $i++) $str .= '(<input type=""text"" values = ""Aあ亜"">)'; //動かない文字1万ちょい
$str .= '","これは""マルチバイト""です",';
echo strlen($str)."<br>";
preg_match_all('/("(?:[^"]|"")*"|[^,]*),/', $str, $match);
echo count($match[0]);
違い全くわらかね;; 動く方が居たら、教えてください;;
もしそうならPC違いか… php.iniの設定でしょうか…
当方core 2 duo, memory1G, fedora5, PHP 5.1.6
display_errorは?
ini書き換えた後再起動した?
そもそもその書き換えたiniをちゃんとシステムは読み込んでるの?(phpinfoすべし)
42 :
nobodyさん:2007/02/13(火) 03:33:53 ID:V5Md+oDi
>41
え? このコードでエラー出ます? 漏れの環境だと、画面真っ白で止まるのですが…
display_errorはOnです。もちろん再起動しましたが… 念のため、もう一回再起動してみます
真っ白だから言ってるんだよ
44 :
nobodyさん:2007/02/13(火) 03:47:18 ID:V5Md+oDi
php.iniは、間違いなく読み込んでます
display_errors On
memory_limitとかの設定も反映されてますなぁ…
御願いですから上のコードを走らせてみて;; どうなりますか?
$time_start = microtime(true);
//検証したい方を残してもう一方をコメントアウト
$s = '(<input type=""text"" values = ""Aあ亜"">)'; //マッチしない文字列
$s = '(<input type=""text"" values = ""Aあ亜"">),'; //マッチする文字列
for($str = '', $i = 0; $i < 100; $i++) $str .= $s;
echo strlen($str)."\n"; // 4000 くらい
preg_match_all('/("(?:[^"]|"")*"|[^,]*),/', $str, $match);
echo count($match[0])."\n";
echo $time = microtime(true) - $time_start;
これでテストしてみると
マッチしない文字列 処理時間 10 秒
マッチする文字列 処理時間 0.00007 秒
つまりマッチしない文字列だとすご〜く時間が掛かるので
max_execution_time とかに引っ掛かって死ぬって事では?
46 :
nobodyさん:2007/02/13(火) 04:46:42 ID:V5Md+oDi
>45
ありがとうございます 楽しく検証できました〜 確かに時間かかりますねぇ。と言うより、マッチする文字列が早すぎですなぁ
それと死ぬって所は確かにそうだと思っています。
ちょと検証してみました。
max_execution_time 10
max_execution_time 450
max_execution_time 45000
全てループ回数235回、文字数10000+、五秒経過後、までは耐えます
その回数以上だと死ぬ感じになります
ついでにmax_execution_time 1 も試してみました
Fatal error: Maximum execution time of 1 second exceeded
やったw 久しぶりにエラー見たw pregのラインでした
>>40 俺の環境ではまったく問題ない
10532
2
と表示される
WinXP Apache2.0.59 PHP 5.2.0
48 :
nobodyさん:2007/02/13(火) 07:56:49 ID:Ns+uranC
PHPでできた、PukiWikiを使ってサイトを運営しているのですが、
コメントページにスパムの書き込みが大量にあり、
コメントページが編集不可能な状態に陥ってしまいました。
編集フォームまでは重いながらなんとかいけるのですが、
スパムコメントを削除して、
更新ボタンを押したところで応答が帰ってこなくなります。(しかも即答)
これってなんかの脆弱性ですよね?
脆弱性を報告したいのですが、どういう脆弱性なのかわかりません。
本来ならPukiWikiの専用スレを探してきくべきなのでしょうが、
こういう手の話題は、PHPでいろいろ開発してる方に聞いたほうがいいと思い、
ここで質問させていただきました。
考えられる脆弱性としてはどういうものが考えられるか教えていただければ嬉しいです。
>>40 オレも問題なくうごく
PHP4.4.4
OS:FreeBSD
Apach:1.3.37
max_execution_time 30秒だが、1秒くらいで結果が返ってくる
>>48 それだけでわかるエスパーは流石にいないと思う
51 :
48:2007/02/13(火) 09:54:02 ID:Ns+uranC
>>50 もうちょっと詳細を書くと、
入力値チェックはなく、なんでも書き込めるようになっていました。
あと一番最後の書き込みが、異様に長かったです。
750kbほどでした。
何かヒントになれば幸いです。
>>11 おまいさんは、嫌みを言うときは、誤用するのかいw
53 :
48:2007/02/13(火) 09:56:13 ID:Ns+uranC
知ってる方は知っていると思うのですが、もう1つ重要なことを忘れていました。
PukiWikiはデータベースは使っていません。
ログはテキストに書き込むようになってると思います。
>>48 情報が乏しくてはっきりしないが
サーバの制限に引っ掛かってるとかじゃない?
何が750KBあるのかようわからんがなんかに引っ掛かりそう
ところでPHPエディタとエクリプスPHPプラグインとどっちがいいと思う??
>>40です。会社に来たので、申し訳ないがsage〜
>>47>>49ありがとうございます
動くのかぁ… 会社の環境でも動かないんだよなぁ…スペック以外、全く環境一緒ですが…w ちなみにfedora5, php5.1.6, apache2.0.58
やっぱりループの回数も上限235くらい。
ループの回数500くらいでも、問題無く動きそうな感じっぽい文章ですよねぇ…
会社に来てから
set_time_limit(600);
ini_set('memory_limit', '1024M');
も試してみましたが、駄目ぽい。きっと設定なんだろうけどなぁ;;;;
>>55 Zend Studioお勧め。鯖サイドとAjaxまで含めたJavaScriptのデバッグがエクリプスで近い将来出来るらしいから、ほんとはエクリプスお勧め。両方激重なのが難点
>>56 ありがとうございます。
そうなんですよね、うちのPCもスペック低いのでEclipseしにそうになる・・orz
58 :
nobodyさん:2007/02/13(火) 12:03:12 ID:9s+Mbwue
>>55 PHP IDEがいいよ。DEBUGできるし
59 :
nobodyさん:2007/02/13(火) 12:26:47 ID:DIAK3rft
今月分のデータというのを取り出したいので、
今月初めのタイムスタンプ、終わりのタイムスタンプを取り出したい。
$nen=date("Y");
$tuki=date("n");
//今月初めと終わりのタイムスタンプ
$month_strart = mktime(0,0,0,$tuki,1,$nen);
$month_end = mktime(23,59,59,$tuki,31,$nen);
としたが、これでは上手くいかない。例えば2月は28日までしかないので、
これでやると、2月末日のタイムスタンプが欲しいのだが、
3月3日ぐらいのタイムスタンプになる。うるう年とか考えるともう・・・
解決お願いします。
60 :
59:2007/02/13(火) 12:33:31 ID:DIAK3rft
date("t")を使って自己解決しました。
61 :
nobodyさん:2007/02/13(火) 13:02:21 ID:oNelk7aK
php4.4とmysql5の
try〜catchが出来ない環境だと
どういった感じでcommit rollbackをすればいいのでしょうか?
>>55 phpeditorはやめとけ
サクラエディタ使ったほうがまし
64 :
nobodyさん:2007/02/13(火) 13:45:17 ID:oVwJ3IKf
imagecreateした画像から
サイズを取得したい時はどうすればいいですか?
わかりましたすみません
66 :
nobodyさん:2007/02/13(火) 13:46:44 ID:zJDkWK4f
001-002と3桁で番号をふっていくにはどうすればよいですか!
67 :
nobodyさん:2007/02/13(火) 13:53:43 ID:rCAmUKes
PDOのプリペアドステートメントについて質問です。
$stmt = $obj_dbh->prepare("INSERT INTO test (name, price) VALUES (?, ?)");
$folder=array();
for($i=0 ;$i<2 ;$i++){
$stmt->bindParam( $i+1, $folder[$i] );
}
$data=array('ぶばぶば', 2000);
foreach($data as $key=>$value){
$folder[$key]=$value;
}
$stmt->execute();
上のはうまく動くのですが
$stmt = $obj_dbh->prepare("INSERT INTO test (name, price) VALUES (?, ?)");
$folder=array();
for($i=0 ;$i<2 ;$i++){
$stmt->bindParam( $i+1, $folder[$i] );
}
$data=array('ぶばぶば', 2000);
$folder=$data;
$stmt->execute();
こうすると空のデータが放り込まれるのですがなぜでしょうか?
上ので動くのでやりたいことは出来るのですが、
どうしてなのか気になったもので。
両方とも print_r($folder) すると、変数のなようはまったく一緒です。
bindというのをイマイチ良く理解していなのですがその辺が原因で何か勘違いしてますでしょうか?
for($i=1;$i<100;$i++){
$str.= $i==99 ? str_pad($i,3,"0",str_pad_left) : str_pad($i,3,"0",str_pad_left)."-";
}
とかは?
69 :
68:2007/02/13(火) 13:56:01 ID:???
for($i=1;$i<100;$i++){
$str.=str_pad($i,3,"0",str_pad_left);
$str.= $i==99 ? "" : "-";
}
こうか
70 :
66:2007/02/13(火) 14:03:01 ID:zJDkWK4f
>>69 む、、難しそうだ。
array(001,002)とかで定義してやってみます><
>>67 そんなこともできるるんだな。
参照でわたってるからなんだろうけど・・・
気持ち悪いことするね。
値代入してから、それを使うのが普通だろ?
72 :
虚弱PHP:2007/02/13(火) 14:15:05 ID:???
>>67 参照の問題じゃないかな。
つまり、bindParamした$folderを$dataで"上書き"しているからうまくいかない。
73 :
虚弱PHP:2007/02/13(火) 14:23:26 ID:???
>>66 $str = sprintf('%03d', $i);
でもゼロパディングした文字列作れる。
74 :
69:2007/02/13(火) 14:32:55 ID:???
>>73 そんな方法もあるんですね。
勉強になりました。
文字列を探すstrpos関数を使っています。
この関数調べる文字列の、一番最初の文字を
無視してしまっているようなのですが、どうすればちゃんと探してくれるんでしょうか?
>>75 自己解決しました。
一番最初にあると、0を返してくるんですね
78 :
nobodyさん:2007/02/13(火) 15:35:09 ID:Nn5A3pDr
クッキーについて質問です
> クッキー名で配列を記述することにより、 クッキーの配列を設定することも
> 可能ですが、複数のクッキーがユーザーのシステム上に保存されることになります。
> explode() を使用してひとつのクッキー上に複数の名前と値をセットすることも考慮してください。
http://www.php.net/manual/ja/function.setcookie.php とのことですが、みなさんはどうしていますか?
Googleなどは一つのクッキー上にまとめてセットしているようです。
配列の数が少なければ問題ありませんかねぇ?(二つだけです)
80 :
虚弱PHP:2007/02/13(火) 15:58:11 ID:???
>>79 <input type=hidden value=<?php echo $_GET['a'];?>>
↓
$_GET['a'] = 'a onMouseOver="alert();"';
↓
<input type=hidden value=a onMouseOver="alert();">
二重引用符で囲んどけば、そんなに気にしなくてOK。
81 :
nobodyさん:2007/02/13(火) 15:58:54 ID:Nn5A3pDr
>>79 二重引用符で括ってある場合は「< > & "」をサニタイズすれば
(一応)問題ないが、単引用符で括ってある場合はさらに「'」もサニタイズする必要があるってこと。
属性値をちゃんと引用符で括ってあれば半角スペースまでサニタイズする必要はないと思う。
HTMLの仕様は、単引用符でも二重引用符のどちらでもよいことになっているけれど
二重引用符の方がいいんじゃないかな。
そのHTMLがどちらでも可になってるという仕様はどこで見れますか?
83 :
nobodyさん:2007/02/13(火) 16:12:11 ID:Nn5A3pDr
84 :
nobodyさん:2007/02/13(火) 16:16:01 ID:UEm9K3UG
PHPの関数すべて覚えてるって人いる?
>>80、
>>81 >たとえばmixiなんて属性を二重引用符で囲ってないから、危険ってこと?
86 :
nobodyさん:2007/02/13(火) 16:20:01 ID:oVwJ3IKf
透過GIFのサイズを変えたくて
imagecolorresampledをしたのですが、
透過でなくなってしまいます。
透過のままサイズ変更するにはどうすればいいですか?
>>80 そのマウスオーバーだと動作しちゃうぞ。
valueを二重引用符で囲うべきだ。
>>85 mixiはいきなり危険
普通にログインしてる人はe-mailとpasswordがバレバレだしw
>>88 >普通にログインしてる人はe-mailとpasswordがバレバレだしw
なにそれ。適当な嘘吐きはイカンよ。
IEでmixiにログインしてる場合はアレな部分があるけど、
メアドとパスワードなんて漏れないし。
>>84 なんで? なんで全部覚えなくちゃいけないんだ?
マニュアルを参照すればいいだけなのに……。
>>87 悪い例なんじゃないの?
虚弱はわざと嘘教えてるんだよ
他人がセキュリティーホール満載のページ作っても関係ねーしなw
>>90 そんなに自信あるならソース出せ、狼少年。
>>89 httpsじゃないから余裕でゲットできるって話
>>94 パケットキャプチャでググりなさい、羊くん。
97 :
nobodyさん:2007/02/13(火) 16:35:01 ID:3uUSgwIq
掲示板へ書き込むときに、相手にIPアドレスを知られない様にする方法は有りますか。
>>95、
>>96 それはmixiの脆弱性というよりHTTPというプロトコル自体の脆弱性というか仕様だしww
しかもパケットキャプチャなんて実際には確率的にほぼ実行不可能だし。
キャプチャがやれるもんならやってみろよww 少なくともお前らには無理だからw
99 :
89:2007/02/13(火) 16:35:41 ID:???
パケットキャプチャでググってみました。
mixiってメアドもパスワードもバレバレだったんですね^^;
お恥ずかしい発言してごめんなさい…
暗号化うんうん言い出したらネットから切断した方が良いw
例え通信でばれなくても鯖管にはわかるわけだし、中の人が信じられる保証はどこにも無い
>>95や
>>96のようなバカが、にわか知識で知ったかぶって
無知な大衆の不安を無駄に煽るせいで、
むやみに「セキュリティ! セキュリティ!」と騒ぐバカがさらに増える悪循環。
>>96=
>>99wwwwwwwwwwwwwwwwwww
で、お前は実際にキャプチャできたことがあるのか?とwwww
っていうか
>>100がいいこと言った。
パケットキャプチャされる状況がおかしいんじゃね?
そこまで心配するなら、キーロガーからなにからなにまで心配しないと。
羊くんが作った会員サイトは
クッキーに生のIDとパスワードを保存してそうだなw
>>102 できたことがあるのか?ってなんだよ。
ツール使えば誰でもできるって。実際にやったことももちろんあるよ。
106 :
nobodyさん:2007/02/13(火) 16:43:55 ID:UEm9K3UG
じゃあさじゃあさ
インターネット上を飛び交ってるデータをキャプチャするのはどうやってやるの?
ユーザーとサーバーを仲介しなきゃ無理なんじゃないの?
どうやって仲介するのさ?
キャプチャで検索してもネットワーク上のことしか書いてないんだけど・・・
なーんだ。
パケットキャプチャか
そういうレベルなら、メールの内容もつつぬけだお。
mixiのログインにはhttpしかない。
Yahooのログインにはhttpsもある。
それが答えだろ。危険じゃないならhttpsなんか用意する必要ないんだから。
知らなかったと思うけど
メールも暗号化できるお。
111 :
虚弱PHP:2007/02/13(火) 16:49:59 ID:???
>>85 mixiはさすがに、こんな単純な穴はふさいであるんじゃない?
よくわからんけど。
可変項目じゃなければ、引用符で囲われてなくても普通は問題おきないだろうし。
>>87 あ、ごめん。説明足りなかった。脆弱性の例を書いてみた。
多くは中途半端な知識での感情反応だとは思うけどね
個人責任の部分はサイト側でどうにかできるわけでもなし
113 :
nobodyさん:2007/02/13(火) 16:52:44 ID:UEm9K3UG
>>108 そうか。
全部httpsになってないYahooも
結局ダメだってことを言いたいんだな。
ログイン画面はYahooのように別ページに用意するべきである
mixiはトップページにログインできる画面があるから
そのままログインしてしまう初心者はパスワードバレバレである
ただしhttpsでログインしてるユーザーはばれない
117 :
虚弱PHP:2007/02/13(火) 16:58:14 ID:???
まあ、パケットキャプチャーで見れたらダメなんて言い出したら、
Webブラウズは全部httpsじゃないとダメだろうね。
>>115 なんで全部なんだよ。
芸能ニュースみるのにGETするときに暗号化する必要あんのかよ。
しかし昔のYahooのログインはデフォがhttpだったんだけど
いまはデフォがhttpsになったんだな
119 :
nobodyさん:2007/02/13(火) 17:00:45 ID:UEm9K3UG
ねぇ106に答えられる人いないのにセキュリティとか騒いでるの?
ほんと気にしだしたら電話も使えないし何もできないから忘れとけ
パスワード入れてログインするときくらい気にしろよw
123 :
nobodyさん:2007/02/13(火) 17:12:53 ID:0SkSueaH
HTMLページにCGIを埋め込むというか呼び出すことをなんていったっけ。
SSLとかSSIみたいなアルファベット3文字で、無料レンタルサーバーでは使用禁止に
されることがあるアレのこと。
また厨が湧いてきたな
126 :
124:2007/02/13(火) 17:17:04 ID:???
うおっぷす、書いてあった。
それ以外か…吊ってきます
127 :
nobodyさん:2007/02/13(火) 17:24:09 ID:Q9x6IAh5
これからLinuxにPHPをインストールするのですが、
インストールする順番は
Mysql→Apache→PHPの順番でいいのでしょうか?
昨日PHPを先にインストールしたせいかライブラリが足りなくて…
ゆとりの春休みは地獄だなほんと
>>118 キャプチャできるという前提で話してるんじゃないの?
ログイン画面だけhttpsにしても駄目でしょ?
セッション盗まれちゃうよ?
セキュリティ的にどうかという視点で並べると
全てhttps>ログイン画面だけhttps>全てhttp
ってだけのこと。
漏れたときのリスクを考えて適時選択すればよいだけ。
>>106 ローカルネット(と書くのも適切じゃないと思うけど、そのあたりは
私のスキル足りなくてよくわからんとです)間でしかキャプチャで
きないので、普通、キャプチャうんぬんは心配しなくってよいと思うよ。
まぁ、現実的に気になる例をあげるなら、会社でネットやってるときだろうな。
といいつつ、今はスイッチングハブ使ってるだろうから、一部は覗けても
全部覗き見するのは無理だろうと思ってる。
131 :
虚弱PHP:2007/02/13(火) 17:38:31 ID:???
>>127 俺ならApache→MySQL→PHP。あんまり考えてない。
確かに、PHPは最後にしといた方がいいと思う。
温暖化のせいか
もう夏厨が……
>>127 パッケージでインストールするなら、あまり順序とか
気にしなくても自動でやってくれるはずだけどな。
PHPのパッケージは細分化されてるから、MySQLのモジュール
をインストールしていないとか、インスト忘れてるパッケージ
あるんじゃない?
ソースから入れるなら、
>>131が言うとおりだと思う。
date()で先頭にゼロをつけない分は何だっけ?
apache->php->Mysqlでいいじゃん
>>134 マニュアル〜
136 :
134:2007/02/13(火) 18:20:02 ID:???
自己解決しました
138 :
134:2007/02/13(火) 18:46:04 ID:???
139 :
134:2007/02/13(火) 19:03:58 ID:???
自己解決しました
141 :
127:2007/02/13(火) 19:43:40 ID:jAe38mg6
何から入れていいのかすらわからないド素人はサーバーやるのやめとけ
windowsでローカルだけでやることをおすすめする
mixiは全部httpsではない → パケットキャプチャの可能性がある → だからmixiは危険だ
…という超アホな三段論法を使っている基地害厨房くん(おそらくこのスレで一人w)は、
それを言うんだったら、そもそもインターネットに接続すること自体が危ない…という根本概念を理解していない。
いみじくも
>>103や
>>130が指摘している通り。
145 :
134:2007/02/13(火) 20:03:37 ID:EyrqWuQ4
date()で先頭にゼロをつける分は j
では先頭にゼロをつけない分は何ですか?
マニュアル見ても載ってませんでした
>>136 >>139 は私ではありません
もうID出したからできないと思うけど
他人の名前を語って嫌がらせするのはやめてください
なんのために質問者がIDだすのか
>>1を100回読んでこい。
話はそれからだ。
148 :
144:2007/02/13(火) 20:10:47 ID:???
>>148 おまえ愚痴言うためにここきてるのか?
だったら邪魔なだけだからとっととウセロ
>>149=
>>147 だから「ハァ?」だよ。
なんで
>>144と
>>146が同一人物だと思い込んでるだお前は。
どうしようもねぇスットコドッコイだなw
誰にも答えてもらえなくて発狂してる厨房かな?ww
>mixiは全部httpsではない → パケットキャプチャの可能性がある → だからmixiは危険だ
ログ見たけど
こんなこと言ってるやつ1人もいねーしw
なんか・・・春だね・・・
>>151 一人だけいるよ。お前だよお前www
>>88=90=96=99=104=105=108=116=120=122=151
=中途半端な知識で吼えまくる厨房ww
根本的な部分を突かれて知識の浅さを露呈し、発狂した基地害www
155 :
nobodyさん:2007/02/13(火) 20:24:41 ID:Z4ceRFCQ
もうウザいから全員ID出せよw
>一人だけいるよ。お前だよお前www
どこで
>>144みたいなこと言ってる?
>>88か?言ってないぞ?
どこで
>>144みたいなこと言ってるのか だけ でいいから答えてみ
>>157 ハイハイ分かったよボクちゃんwww
もうお前は全ページがhttpsじゃないサイトは一切使わないようにしろよww
もちろん2ちゃんもな。
お前の書き込み内容がIPなどと共にネット上を流れるから「超危険」だよww
>>151 おいおまえ早く
>>157に答えろよw
それからおまえだけでいいからID晒せよw
逃げるなよ?w
160 :
nobodyさん:2007/02/13(火) 20:34:06 ID:ROC0KVQu
このスレって定期的に変なの湧くね
1.mixiのログイン画面はトップページにある
2.そのページは標準でSSLではない
3.SSLとかわかってない初心者はそのままパスワードを入力する
4.暗号化されてないのでパスワード覗くことができる
5.だから危険
1.googleのログイン画面は別ページにある
2.そのページは標準でSSLである
3.SSLとかわかってない初心者はそのままパスワードを入力する
4.暗号化されてるのでパスワードを覗くことができない
5.だから安全
わかった?
小学生に教えてる気分だわ・・・
もうめんどくさいから教えないぞ・・・
>>151はID晒せ
>>162 パスワード覗くのはどうやってやるの?って聞いたら
パケットキャプチャって答えたから
このスレの大半の人は馬鹿じゃねーの?って思ったわけさ。
生パスワードが流れてないのに・・・
すげー荒れまくってるwwwwwwwwwwwwwwwwwww
最近、異常気象がさかんに叫ばれておりますが、このスレにも異常気象の影響か、
早くも春厨が発生しております。みなさんご注意ください。
春厨の華麗なる歴史
>>88=90=96=99=104=105=108=116=120=122=151=157=
>>159
>生パスワードが流れてないのに・・・
何パスワードが流れてるの?w
暗号化パスワード?じゃないよなあ
何だろ?(うぷぷw
★春厨の華麗なる歴史
>>88=90=96=99=104=105=108=116=120=122=151=157=159=
>>168
よく分からんけど人気に嫉妬
現在おまえは標準HTTPからmixiにログインしてる
自分のパスワードが漏れてることを認めたくない
だからHTTPSは不要
しかもHTTPは暗号化されてる
さらにパスワードも漏れない
と思いたい
ってオチか?w
どっちが厨房だよカスが
もうレスしねーからなw
どうせ、mixiは企業がやってるからパスワードが漏れることはない、とでも思ってんだろw
これだからガキは困る
メシ食っていま来たら俺のレス番までイコールでつながれてるw
173 :
61:2007/02/13(火) 21:13:32 ID:oNelk7aK
>>62 ありがとうございます。
php5の例文見ると
tryの後ろにcommit
catchの後ろにrollbackがありますが、
beginからrollbackまで一気にぶち込んでもかまわないのでしょうか?
try〜catchする意味はどこにあるのでしょうか?
174 :
nobodyさん:2007/02/13(火) 21:14:20 ID:pIKbY/0y
漏洩が気になるならさっさとPCのコンセントを引っこ抜けw
たぶんhttps使わなくてもまあ、安全だよね
AS間も漏れないだろうし、そうするとプロバから自宅まで
だけど、みかかに勤務していたようなストーカーが居ない限り
まず安全
プロバイダ〜企業間は知らん。
大手町にでもレンサバ置いてありゃまず安全
スーパーハカーがいると聞いて飛んできますた
>>173 SQLだけに関して言えばそんなに意味はないんでないかい?
っていうかそれとこれとは意味というか内容が若干違うような・・
どっちかていうとそれ以外の処理でエラー出た時の対応とかに使う意味のほうがあると思う・・詳しいことは全くわかりませんが
178 :
173:2007/02/13(火) 21:33:37 ID:oNelk7aK
なるほど では
$sql =<<<EOS
SQL文
EOS;
って感じでSQL文内でBEGIN、COMMIT、ROLLBACKしちゃえばOKですね
ありがとうございます
>>173 try〜catchはオブジェクト指向構文を使う時に投げられる例外を捕獲するためのもの。
だから例外を投げられないPHP4では必要が無い。
>>171の基地害っぷりにコーヒー吹いたwww
>自分のパスワードが漏れてることを認めたくない
ハァ?
>しかもHTTPは暗号化されてる
ハァ??
>mixiは企業がやってるからパスワードが漏れることはない
ハァ???
プロトコルや通信経路の話だったのに、なぜかmixiで保存してるパスワードの話にすり替わってるしww
(っていうかmixiが生パスワード保存してるわけないけどww)
181 :
173:2007/02/13(火) 21:38:02 ID:oNelk7aK
なるほど、SQLはエラーが出たらrollbackするからって事ですね。
phpはしないってことですね
エラー処理の意味合いですね
たぶんアレだよ。
>>171は「ボクの友達はスーパーハカーなんだぞ!」って言うタイプだよw
★春厨の華麗なる歴史
>>88=90=96=99=104=105=108=116=120=122=151=157=159=168=
>>171←決定打w
184 :
173:2007/02/13(火) 21:40:37 ID:oNelk7aK
ありがとうございました。
なぞが解けました。
186 :
nobodyさん:2007/02/13(火) 21:50:54 ID:TYmWGfNy
ログイン画面がhttpなら生パスワード流れてるだろ。
httpsならSSLで暗号化されたのが流れてるだろ。
これらの話と、サーバ側のDBが持ってるのが、生パスワードなのか?
という話がごっちゃになりつつあるな。
>>180 >プロトコルや通信経路の話だったのに、なぜかmixiで保存してるパスワードの話にすり替わってるしww
>(っていうかmixiが生パスワード保存してるわけないけどww)
すりかわってないだろ。
>>171をどう読めばそうなるんだ??
保存しているパスワードの話なら
>>171にHTTPSという言葉は出てこないだろ
>>187 「どうせ、mixiは企業がやってるからパスワードが漏れることはない」と
>>171は言っている。
しかし今はプロトコルや通信経路に関わる話をしているので、
mixiが企業運営だろうが個人運営だろうが、(プロトコルの違いによる)パスワード漏洩とは関係がない。
それなのに
>>171が前述のようなアホな発言をしてるから、
>>180のような指摘になったわけだ。
わかりまちたか〜〜〜??
>>187
ちなみに mixi がクッキーに残しているのは
パスワードでなくてセッションなのだが
phpとmixiに何の関係があるのか
190 :
187:2007/02/13(火) 22:08:14 ID:???
>>188 だからmixiだろうが個人運営だろうが
httpだとパスワードが漏れることがありますよって
>>171は言ってるんだろ。
読み違いをしてるのはあなただよ。
191 :
nobodyさん:2007/02/13(火) 22:14:58 ID:pIKbY/0y
そもそもHTTPSだから絶対安全という事もないのでは?
不可逆ではあるまいし
HTTPSに詳しい人、解説よろろ
192 :
nobodyさん:2007/02/13(火) 22:18:31 ID:jAe38mg6
さっきapacheとphpとmysqlのインストールの順番を質問させていただきました。
ありがとうございます。
やっぱりmysqlからインストールするのが楽そうなのでmysqlからいきます。
それにしても、mysqlのmakeに結構時間がかかるのですが・・・
すみません 質問させて下さい。
pearのDBをインストールして、それを使用した以下のようなコードを書きました。
<HTML><BODY><B>connect test</B><HR />
<?php
//-省略------------------------------------------------
$dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName";
$conn = DB::connect($dsn);
if(DB::isError($conn)) { die($conn->getMessage()); }
printf("<B>connect</B>");
$conn->disconnect();
//-------------------------------------------------
?>
</BODY></HTML>
SQLへの接続エラーは出ないのですが printf("<B>connect</B>"); が実行されません。
原因を教えて下さい。 よろしくお願いします。
>>191 ググれ。スレ違い。無知なら黙ってろ。つまんねー煽り入れるな。
前スレの611ですが解決しなかったのでもう一度書き込ませてください。
マルチバイト文字列の先頭から一文字ずつ取り出したいのですが、
どうやるのが作法というかパターンなんでしょうか。
$len = mb_strlen($text);
for ($i = 0; $i < $len; ++$i) {
$c = mb_substr($text, $i, 1, 'utf-8');
}
みたいにmb_substrで一文字ずつとり出すという方法もありますが
これだときっと長さに対して二乗のオーダーがかかりますよね。
これを線形オーダーでやるにはどうすればよいのでしょうか。
以上です。
みなさんはどのようにしているのでしょう?
198 :
nobodyさん:2007/02/13(火) 22:48:29 ID:6SJdW3Cy
Linux Fedora Core5でPHP開発環境を整えたいのですが、
Linux自体初めてなのでどうすればいいのかわかりません。
解説書を読んでみてインストールなどを行ったのですが、
PHPの部分が載っていません。
>>197 そのやり方が一般的だと思ってたんだが違うのか!?
FlashActionScriptならsplit("",$str)で普通に1文字ずつにしてくれるから便利だよな
201 :
67:2007/02/13(火) 22:56:14 ID:cdO9gFj7
>>71 >>72 レスサンクス
ああ、そうか。
executeしたときに見に行くのはbindParamした変数のメモリ上のアドレスで
$folder=$data; というのは$dataが保存されているアドレスを$folderに設定してるってわけですか。
bindParamした変数を参照する変数はなくなっちゃってるんですね。
参照ってそういうことですよね?
そういう解説読んだことあるけど、今理解したような気がした。たぶん。
ちなみに、これだけ見るとキモイでしょうけど、これは問題点を絞って説明するでして^^;
prepare&bindParamするメソッドと、実際のDATAを与えてexecuteするメソッドを分けて
クラスを設計してたもので^^;
ありがとうでした。
テケテテッテ テッテー♪
オッ レベルがまたあがったw
202 :
nobodyさん:2007/02/13(火) 22:56:13 ID:WZPOI3IZ
PHPって仕事多いですか?
DBは何でも使えますが言語はVBしか使えません。
204 :
nobodyさん:2007/02/13(火) 23:09:18 ID:meZ0Ozs4
phpでピンポイントの天気予報を取得してきて
サイトに表示させたいのですが
なにかサンプルはないでしょうか
一応ググッてみましたが
kenbo.net氏のを使ってみようかと思いましたが天気予報がピンポイントでないので・・・。
また
Weather Hacksを使えばいいのかなと思ったけど、どうすればいいのかわかんないし・・・。
下らない質問ですがよろしくお願いします。
205 :
nobodyさん:2007/02/13(火) 23:13:55 ID:TYmWGfNy
$area = array("北海道", "青森", "秋田", "......略 "沖縄");
$select = "<select name='area'>";
for ($i = 0; $i < 47; $i++) {
$select .= "<option value='$i'>$area[$i];
}
$select .= "</select>";
受け取る側
$num = $_POST['area'];
echo "<script language='javascript' charset='euc-jp' type='text/javascript' src='
http://weather.livedoor.com/plugin/common/forecast/$i.js'></script>";
とか?
207 :
nobodyさん:2007/02/13(火) 23:19:28 ID:UEm9K3UG
HTTPプロトコルを必要とするって
例えばどんな使い方があるの?
208 :
206:2007/02/13(火) 23:20:23 ID:???
>>193 バイナリってオプションつけられるのか不安で、
教本どおりにソースからやってしまいました。
時間がかかるので次やるときはバイナリにしたいと思います。
>>198 わたしのやりかたでよろしければ提示しますよ。
210 :
nobodyさん:2007/02/13(火) 23:22:29 ID:6SJdW3Cy
お、なごんだレスみるとweb制作から派遣された細々組がいるなw
213 :
nobodyさん:2007/02/13(火) 23:36:09 ID:UEm9K3UG
>>211 強烈なスレッドストッパーですね
ファイルの存在確かめるのは404が返ってくるか確かめなくても
is_existsだかで確認できるじゃん?
HTTPってなんかある?
SMTPとかならメール解析して携帯用アップローダとかできるし、
データーベースだっていろいろ扱えるよね
214 :
204:2007/02/13(火) 23:39:53 ID:???
>>206 さっそくすみません。
参考にして色々やってみますペコm(_ _;m)三(m;_ _)mペコ
215 :
204:2007/02/13(火) 23:46:34 ID:meZ0Ozs4
216 :
nobodyさん:2007/02/13(火) 23:56:38 ID:6SJdW3Cy
>>212 もちろんApacheから入れていかないといけないですよね?
それとも、そのパッケージで全部インストールできるのでしょうか?
phpMyAdminをパッケージからインスコしたんだがどうやって実行するんだこれwwwwwww
バージョンぐらいかけや(^^#)
Windowsでzipで圧縮してYahooのブリーフケースにうpして、
それをLinux鯖に落として解凍したんだが、「それにアクセスするとアクセス権がない(403)と出るんだが仕様?
Linux の話をしてる人たちは ID 出してくれ
端から見てると訳わからん
おいどんが222げっと
225 :
197:2007/02/14(水) 01:15:56 ID:???
>>200 そうなんですか。やはり標準的な方法はないんですね。
どうもありがとうございました。
Windowsアプリのプログラマだった俺が・・・今度からphpメインに
こ、これは! 左遷ってやつか・・・
ここを日記と勘違いしてるバカがいるな
$str = "test";
$array = preg_split('//',$str);
これでなら1文字ずつできたんだけど、
preg_splitのマルチバイトってないのかな?
mb_splitならあるのだが・・・
>>231 UTF-8 ならパターン修飾子 u 使うと良いよ
235 :
nobodyさん:2007/02/14(水) 01:49:08 ID:NADcIyxP
文字コード決め打ちなら正規表現で一発だな
$str = "あaあiいうううeee";
//sjis
preg_match_all("/[\\x81-\\x9F\\xE0-\\xEF][\\x40-\\xFC]|[\\x00-\\x7F\\xA1-\\xDF]/", $str, $cap);
//euc
preg_match_all("/\\x8F[\\xA1-\\xAB\\xB0-\\xED\\xF3-\\xFE][\\xA1-\\xFE]|[\\xA1-\\xA8\\xAD\\xB0-\\xF4][\\xA1-\\xFE]|[\\x00-\\x7F]/", $str, $cap);
var_dump($cap);
237 :
nobodyさん:2007/02/14(水) 03:01:40 ID:1cNo3AQs
ポイントシステムを作ろうとしているのですが、
そこで二重クリック(カウント)防止について相談です。
1度クリックするとクッキーを発行し、一定の期間はカウントアップされない
ようにとも考えたのですが、これだとクッキーを有効にしてないと意味がない。
次に、クリック者のIPアドレスとクリック日をログに保存するパターンも
考えたのですが、これもいちいちログに保存していると、ログが誇大化しそう。
と言うわけで他の良いアイディア、「こうすればいい」と言うのはありませんでしょうか?
cookie 有効にしてないやつ弾けば良いだけの話
239 :
nobodyさん:2007/02/14(水) 03:09:23 ID:1cNo3AQs
>>238 そうですね。それしかないような気がしたんですが、
やっぱりそれしかないですね。。
ありがとうございました。
>>237 ログインさせてDBとか使ってクリックしたら1にするとか
IPアドレスなんざ固定IPの奴にしか効果ない
241 :
237:2007/02/14(水) 03:15:50 ID:???
>>240 メンバーサイトではそうしようと思っているのですが、
バナー広告(アフィリエイトみたいな)の場合、どうしたら
不正を防げるかな?と思いまして。
>>241 完全に防ぐ方法は存在しない(と思う(弱気))。
ログインさせる方法はほぼ完全に防げるけど。
同一IPからの投稿を防ぐというのは以下の点で問題がある
・proxyを強制的に使わせられる環境(会社とか)からだと1名しか使えない
・接続し直せばIPが変わるプロバイダがある
cookieを使う方法は以下の点で問題がある
・cookieを拒否するブラウザからだとアクセスを拒否するくらいしかできない
・cookieを消されたら何度でもアクセスできてしまう
以上の点を勘案してサイトの性格や客層を考えて、
どれが有効に機能するか考えれば良いかと思う。
243 :
237:2007/02/14(水) 03:41:55 ID:???
>>242 そうですね。悩んでいたのですが、背中を押された気分です。
もう少し考えてみます。ありがとうございました。
最良の解決方法は、ポイントシステムなんてケチくさいことはやらない。
>>236 mb_splitの場合、''ってするとエラー出る・・・
246 :
nobodyさん:2007/02/14(水) 15:35:31 ID:Wx0Ihw2G
当たり前だと思いますが、鯖にSquirrelMailが入ってる時に
mb_send_mail() などでメール送信しても、SquirrelMailの送信履歴に残りません。
これを残るようにするためには、どうすれば宜しいでしょうか?
247 :
虚弱PHP:2007/02/14(水) 16:04:02 ID:???
>>246 SquirrelMailは知りませんが、直接SquirrelMailと会話するとか。
またはSquirrelMailをハックしてデータファイル(またはDBを)いじるとか。
248 :
激初心者:2007/02/14(水) 16:11:48 ID:znoSRiTB
初心者で勉強中です。つまらない質問かもしれませんがなにとぞよろしくおねがい
します。質問PHPの#makeができません。環境 Fedora 2
[root@localhost php-5.2.1]# ./configure --with-pgsql --with-apxs2=/usr/local/apache/bin/apxs --enable-mbstring --enable-mbregex
〜省略〜
Sorry, I cannot run apxs. Possible reasons follow:
1. Perl is not installed
2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
3. Apache was not built using --enable-so (the apxs usage page is displayed)
The output of /usr/local/apache/bin/apxs follows: apxs:Error: Sorry, no shared object support for Apache apxs:Error: available under your platform. Make sure
apxs:Error: the Apache module mod_so is compiled into apxs:Error: your server binary `/usr/local/apache/bin/httpd'. configure: error: Aborting
とでます。perlのインストールが必要ということでしょうか?
[root@localhost root]# rpm -qa perl* perl-HTML-Parser-3.35-5
perl-libxml-enno-1.02-30
perl-5.8.3-18
perl-URI-1.30-1
perl-HTML-Tagset-3.03-29
perl-Parse-Yapp-1.05-31
perl-XML-Parser-2.34-2
perl-libxml-perl-0.07-29
perl-XML-Encoding-1.01-25
perl-Text-Kakasi-1.05-10
perl-Filter-1.30-5
perl-DateManip-5.42a-1
perl-libwww-perl-5.79-1
perl-XML-Dumper-0.71-1
perl-NKF-2.04-2.1
perlの./configure も必要になるのでしょうか?
>>248 apxsのパスが間違ってると思われ
find / -name apxsで探してそのパスを指定すべし
あと、質問するときは「初心者ですけど〜・・・」とかはなるべく控えた方がいい
250 :
激初心者:2007/02/14(水) 16:19:19 ID:znoSRiTB
>>249 ありがとうございました。初心者は次回より撤回します。
>>248 apxs2なのにlocalの下がapacheになってるんだけど、apacheは2をつかってんだろうな?
>>194 print("<B>connect</B>");
>>246 当たり前だバカ。
mb_send_mailは「単に送信」するだけで、記録とかはしてない。
それにPHPとSquirrelMailは連動してない。
>>246 送信ログ用のアカウントを作って、そこにもBccで
メール送ればいいんだよ。
当然、送信履歴としては残らんけどな
ログ目的なら用は足りるはず。
255 :
nobodyさん:2007/02/14(水) 16:56:49 ID:J6wAx8mi
PHPの開発はWindowsでも完結できますか?やっぱりLinuxで行うのがいいですか?
完結できます
俺はWebシステムの中でmail関数で飛ばす時にメールデータをDBに入れて
それをログなりに使えるようにしてるよ
Windowsじゃ無理
「PHP」を開発するのか……
そりゃ大物だな。
新柳沢発言以上の言葉狩り乙
ソースからエクステンションを作りたいんですけどWindowsでコンパイルしたものがLinuxでも使えるのでしたらWindowsでもいいのですがどうなんでしょうか…
横槍ですまないが
エクステンションってどういうときに作りたくなるもんなんでしょうか?
>>261 クロスコンパイルできるコンパイラなら Windows でもできるけど
当然動作確認は Linux でやる必要があるわね
264 :
nobodyさん:2007/02/14(水) 17:49:16 ID:Wx0Ihw2G
>>247さん
SquirrelMailのcompose.phpをハックしているんですが、かなり難解です・・・
Outlook ExpressのIMAPでメール送信してもSquirrelMailで履歴残るので
恐らく鯖のIMAPに処理を投げれば送信履歴などの処理全部してくれると思うのですが。
>>254さん
すごい!それなら簡単ですね。
ただFROMが自分になり誰からメールが来たのか分からなくなるので、
もう一回FROMは送信相手で自分にメール送ればいいのかな。
265 :
248:2007/02/14(水) 17:50:48 ID:znoSRiTB
>>249 パスはあっているようです。
[root@localhost php-5.2.1]# find / -name apxs /root/apache_1.3.4/src/support/apxs
/usr/local/apache/bin/apxs
>>251 apache 2 ではありませんでした。
[root@localhost php-5.2.1]# ./configure --with-pgsql --with-apxs=/usr/local/apache/bin/apxs --enable-mbstring --enable-mbregex
〜省略〜
Configuring SAPI modules
checking for AOLserver support... no
checking for Apache 1.x module support via DSO through APXS...
Sorry, I was not able to successfully run APXS. Possible reasons:
1. Perl is not installed;
2. Apache was not compiled with DSO support (--enable-module=so);
3. 'apxs' is not in your path. Try to use --with-apxs=/path/to/apxs
The output of /usr/local/apache/bin/apxs follows
apxs:Error: Sorry, no shared object support for Apache
apxs:Error: available under your platform. Make sure
apxs:Error: the Apache module mod_so is compiled into
apxs:Error: your server binary `/usr/local/apache/bin/httpd'.
configure: error: Aborting
講習本の通りではうまくいかないのでつらいです。
266 :
264:2007/02/14(水) 17:56:14 ID:Wx0Ihw2G
あー違うな、送ったメール(Sent)だからFROMに入れたら駄目か
>>248 英語読めんのか?
「apacheをmod_so込みでコンパイルしろ」とapxsが言っている。
>>250 「初心者ですけど」は言ったほうがいい。
どれくらいわかってる人間なのかわかったほうが教えるほうも教えやすい。
269 :
nobodyさん:2007/02/14(水) 19:31:30 ID:/in1FXWr
Webの就職が決まった者です。
仕事をするにおいて、PHPが不要な職場でした。
しかし、PHPの実務経験を重ねたいと思うのですが、
フリーランスで受けたほうがよろしいのでしょうか?
271 :
nobodyさん:2007/02/14(水) 20:11:19 ID:X1SIEjFH
フリーになるなら時給***円で一日*時間、月**日働くのがいいのか
算出方法がわかりません。
日給で決めて月給を出すやりかたがいいですかね?
272 :
nobodyさん:2007/02/14(水) 20:30:30 ID:dUL7YtjG
すみません、文字コードの質問です
いま、フォームに情報入力して、名前をつけて保存。
⇒あとで一覧から書く名前を指定して開く というようなメモ帳のシステムを
作っています。(DBは使わず、ただのファイル保存です)
で、「名前」をアルファベットにしたら問題ないのですが、日本語にしたら
あとで参照した時に文字化けしたファイル名がでてきます(しかも2つ)。
どうしたら良いでしょう?
メタのcharsetをEUCでブラウザに表示(入力画面も当然EUC)にしているんですが。
参照画面の名前一覧を表示する際に、保存ディレクトリ以下のファイルを
$dirObj = dir("./doc");
while($strPath = $dirObj->read()){
$strPath = mb_convert_encoding($strPath,"EUC","Sjis");
として取っているんですが、このエンコードでいいんでしょうか?
また、ファイルの中身を読み取る時も同様のエンコードをしています。
自分なりに"EUC"と"Sjis"を置き換えたりしたんですがうまくいきません。
原理的な部分で理解できていないんだと思うんですが、、
誰かご回答お願いします。
>>272 読み取る時にファイル名を
mb_convert_encoding($strPath,"EUC","SJIS");
するなら、保存する時に
mb_convert_encoding($strPath,"SJIS","EUC");
しておかないといかんと思うが?
phpと関係ないんですがwin環境用のapacheをsslと一体化したブツをコンパイルして作りました。
海外サイトに同じようなものがあるのですがアングラっぽいので自分で作ったのですが、
せっかくだから配布しようかと思っているのですが、
日本人がやったものが欲しいお方はいらっしゃいますかね?
それぞれのバージョンの最新、一個前のを置こうかと思ってます。
276 :
nobodyさん:2007/02/14(水) 22:21:45 ID:dUL7YtjG
すみません、272です
そもそもの根本的な部分をお聞きしたいんですが、
>$strPath = mb_convert_encoding($strPath,"EUC","Sjis");
というの自体、何故SJISからEUCにエンコードしてるんでしょう?
SJISで保存されているデータはそのままいじると文字化けするから??
ワカラン、、、
277 :
248:2007/02/14(水) 22:26:54 ID:znoSRiTB
>>267 ありがとうございます。みなさんのおかげでなんとかMAKEできました。
しかし、windowsしか知らない自分からみればかなりとまどいます。
linuxはなにか心構えというコツみたいのがあるのでしょうかね。
PHP初心者本を勉強中なんですけれども、
ビット計算って使う場面って出てきますか?
あと、シェル実行するような場面はどういう場面でしょう?
GIF画像を合成できるのですが、
GIFアニメを合成するにはどうすればいいですか?
>>276 > 何故SJISからEUCにエンコードしてるんでしょう?
知らんがなw
保存時のコードを晒さないと正しい読み取り方が分からない。
>>279 GIFアニメといっても、GIF画像の集合体だから、
GIFデータを一つのファイルをマッピングすればいいだけ。
>>276 > 何故SJISからEUCにエンコードしてるんでしょう?
hint: char codes on Windows is 'SJIS', but char codes on UNIX OS is 'EUC'
>>281 GIF+GIFではGIFの最初のコマしか表示されませんでした。
ググってみたところ参考になるようなサイトがありません。。。
>>283 そりゃそうだろ。GIFのヘッダーに再生するフレーム数を書け。
2コマなんですが、
どのように書けば良いのでしょうか・・・?
header("Content-Type: image/gif", 2);
こうではないですよね・・
なにその適当具合
>>278 ビット演算は実務ではビットフラグの読み書きに一度使ったくらい。
ビットフラグについては検索したら出てくるよ。
&=と=&を勘違いしない程度に覚えるだけでいいと思う。
シェルはsystem()系関数全般の話?
PHPでどうしても直接操作できない処理に使う。
ps axに使った記憶があるけど、ひょっとしたらPHPでもできたかも。
>>279 PEAR探したらそれ系のライブラリあるかも。
>>288 もう、web3.0とか出てんのか…
流れが速くてついてけん。
出てないよ。でも
>>285みたいに適当にコード書いたら
勝手にコンピュータがやらんとしてることを読み取って
文法修正してくれる時代になったら3.0名乗ってもいいかもね。
おれの考え方
Web1.0 −− 【地図のない旅行】おまえら(give)ユーザ(take)
Web2.0 −− 【地図のある旅行】おまえら(give&take)ユーザ(give&take)
Web3.0 −− 【ツアーによる旅行】おまえら({give&take}*2)ユーザ({give&take}*2)
>>291 よくわからないw
「ツアーによる旅行」とか「{give&take}*2」とか曖昧な表現でごまかさずに、
正確に定義しろ。
いや、もういいから・・・
>>292 だから【おれの考え方】だって、一言おいてるのに (´・ω・`)
295 :
nobodyさん:2007/02/15(木) 02:07:10 ID:148YlLut
PEARって日本語環境ないの?
296 :
nobodyさん:2007/02/15(木) 03:24:09 ID:RmGuU60L
ユーザが入力したauの絵文字を内部で#文字コード#の形にしたいのですがどうすればいいでしょうか?
以下のように試してみたのですが、文字コードがうまく取れなくて困っています
$str = $_POST['txt'];
$str = unpack("C*", $str);
$max = count($str);
$buf = "";
$i = 1;
while($i <= $max) {
$char1 = $str[$i];
$char2 = $str[$i+1];
echo $char1.'<hr>';
if(($char1 == 0xF3) || ($char1 == 0xF4) || ($char1 == 0xF6) || ($char1 == 0xF7)) {
$d = strval(dechex($char1)).strval(dechex($char2)) ;
$buf .= "?".strtoupper($d).";" ;
}
$i++;
}
elseif(((0x81 <= $char1) && ($char1 <= 0x9f) ) || ((0xe0 <= $char1) && ($char1 <= 0xfc))){
$buf .= pack("C", $char1) . pack("C", $char2);
$i++;
}
else
$buf .= pack("C", $char1);
$i++;
}
return $buf;
}
絵文字をPOSTすると
echo $char1でau規定の絵文字コードである「0xF3、0xF4、0xF6、0xF7」になるはずなのに0xEEになってしまいます。。。
分かりにくいかもしれませんがどうかお力お貸しください(;ω;)
$str = unpack("C*", $_POST["text"]);
$c = count($str);
for($i = 1;$i <= $c;$i++){
$char1 = $str[$i];
$char2 = $str[$i + 1];
if((($char1 == 0xF3 || $char1 == 0xF6 || $char1 == 0xF7) && (($char2 >= 0x40 && $char2 <= 0x7E) || ($char2 >= 0x80 && $char2 <= 0xFC))) ||
($char1 == 0xF4 && (($char2 >= 0x40 && $char2 <= 0x7E) || ($char2 >= 0x80 && $char2 <= 0x8D)))){
$d = strval(dechex($char1)).strval(dechex($char2));
$buf .= "?".strtoupper($d).";";
$i++;
}else if(($char1 >= 0x81 && $char1 <= 0x9F) || ($char1 >= 0xE0 && $char1 <= 0xFC)){
$buf .= pack("C*", $char1, $char2);
$i++;
}else{
$buf .= pack("C", $char1);
}
}
>>296 とりあえず
・文法が間違ってる
・echo $char1が吐くのは数字
ROOMだとカテゴリ追加や検索を付けるの面倒だから
他に携帯対応のランキングないですか?
300 :
299:2007/02/15(木) 06:40:43 ID:???
別板で教えてもらい自己解決しました
>>292 っていうか「web2.0」だって、巷でなんとなく使われてるだけで
別に正確な定義なんてないし定義する必要もないし。
ガチガチの定義を求めようとする考え方自体が「web1.0的」で古くてダサいww
302 :
虚弱PHP:2007/02/15(木) 10:48:27 ID:???
303 :
nobodyさん:2007/02/15(木) 11:48:17 ID:yf6o9ju+
いちいちmimeを調べて
imagecreatefrom***
を呼び出すのではなく
自動に判断して欲しいのですが
そういう方法はないですか?
>>303 クラスのコンストラクタに条件文書くなりなんなりと
305 :
296:2007/02/15(木) 12:59:18 ID:???
306 :
296:2007/02/15(木) 13:27:53 ID:???
度々すみません。
>>297さん
if(〜)は297さんのものに替えさせていただきましたありがとうございます
_, ._
(;゚ Д゚)
switch使いたくてうずうずする
定数に配列を格納することは可能ですか?
311 :
nobodyさん:2007/02/15(木) 15:20:42 ID:nWsvEsXs
Webのデザインが下手なんですがみなさんはどういう風に作っていますか?
なにか参考になるサイトや書籍その他あればぜひ教えていただきたい。
imagecopymergeを使って
セル画のように
透過画像を背景画像に重ねあわせたいのですが、
透過gifだと問題なく重ね合わさるのですが
透過pngだと透過部分が透過になりません。
どうすれば透過させることができるのでしょうか。
313 :
nobodyさん:2007/02/15(木) 15:29:51 ID:cLwPj1RO
>>313 買取価格15万とかTAKEEEEEE!
普通にデザイナに発注できる値段じゃん
しかも書き換えないといけないし何なの
315 :
nobodyさん:2007/02/15(木) 16:06:16 ID:nWsvEsXs
>>313 ありがとうございます。
一応仕事です。
Webのシステム作るのがメインですけどデザインも多少しないといけないので・・。
>>312 透明色を指定して、透明にさせればいいと思う
317 :
285:2007/02/15(木) 16:30:36 ID:Mtb8sZSI
すみません
header("Content-Type: image/gif", 2);
は冗談のつもりです。
どうやってコマ数を指定すれば良いのでしょうか?
318 :
虚弱PHP:2007/02/15(木) 16:52:42 ID:???
>>312 関数使ってないから的外れかもしんないけど、
FireFoxだと透過表示されたりしないよね?
IE6だと透過png対応してなかったと思うけど。
>>317 標準関数だけでは無理
自分でバイナリ書き換えするか
できるモジュール探して実装するか
>>317 こま数の指定はないよ
順番に表示するだけ
322 :
nobodyさん:2007/02/15(木) 17:24:01 ID:Mtb8sZSI
323 :
虚弱PHP:2007/02/15(木) 17:32:00 ID:???
>>322 コントロールとイメージデータだけつなげるんだよ
ヘッダとトレーラは1個でいいんだからな
意味わからないならお前には無理
300日もたってないのに、他の男とSEXするなんて節操がなさ杉だろw
法律がわるいじゃねーよ、自業自得だろ。
>>325 確かに別れる前から身ごもってるヤリマンが悪いな。
だがここはスレ スレ (´∀`( ´∀`) チガイ
327 :
nobodyさん:2007/02/15(木) 19:09:09 ID:p5YTJion
>>296 =
>>305 >>306 が
このスレで回答もらえんってことで、
[PHP-users 31468] に進出してるぞ〜
すげーことするな〜
>>327 つまり、このスレの住民は見捨てられたってことだw
他人のコードコピペして丸投げかw
しかも全く無関係なスレッドに返信してるしww
>>327 さらにヲチすれにコメントがついてるしw
331 :
nobodyさん:2007/02/15(木) 21:32:39 ID:148YlLut
すみません、質問です。 いま、XMLをCSVに変換するプログラムを作ってます。
ですが、CSVが生成されるものの、エクセルで開こうとすると
「読み込めません」というエラーが出ます。なにが理由でしょう?
ご回答よろしくお願いします。
すみませんが、長いので書き込みを分けます
332 :
nobodyさん:2007/02/15(木) 21:34:32 ID:148YlLut
【xml2csv.php】EUCで保存
<?php
//変換先のcsvを開く ※fopenで対象ファイルがないときは自動的に作られる
$fp_o = fopen("books.csv","w");
//変換もとのファイルをオブジェクト化
$xml = simplexml_load_file('books.xml');
foreach($xml->book as $book){
//XML中のデータを格納する配列を作る
$aryTmp = array("isbn"=>"","name"=>"","publish"=>"","price"=>"");
//実際に代入
$aryTmp['isbn'] = $book['isbn'];
$aryTmp['name'] = $book -> name;
$aryTmp['publish'] = $book -> publish;
$aryTmp['price'] = $book -> price;
$strTmp = mb_convert_encoding(join(",",$aryTmp),"SJIS","UTF-8");
fputs($fp_o,$strTmp,"\n");
}
fclose($fp_o);
?>
変換終了しました
333 :
nobodyさん:2007/02/15(木) 21:36:49 ID:148YlLut
【books.xml】UTF-8で保存
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<book isbn="ISBN4-7980-0095-7">
<name>今日からつかえるXMLサンプル集</name>
<publish>秀和システム</publish>
<price>2800</price>
</book>
<book isbn="ISBN1-2345-6789-0">
<name>ダメ人間養成講座</name>
<publish>ダメダメ企画</publish>
<price>890</price>
</book>
<book isbn="ISBN0-9999-6666-3">
<name>樹海探検記</name>
<publish>ミイラ出版</publish>
<price>1200</price>
</book>
</books>
以上です。CSVのエラーとは別に特に分からない点として、phpの方の
$aryTmp['isbn']=$book['isbn']; だけ -> の形になってないのがなぜか分かりません
xml専用関数があるの初めて知ったwwwwwwww
エディタとかで普通にその生成されたファイル見たらどうなってんの
>>331 > ですが、CSVが生成されるものの、エクセルで開こうとすると
> 「読み込めません」というエラーが出ます。なにが理由でしょう?
障害の切り分けとして、Excelでエラーが出ているんだから、
そのCVSがどう出力されているかを見る方が先だろ?
CVSでエラーがでる行を特定するために、
エラーが出来なくなるまで行を削っていけば、原因が見えるはず。
337 :
nobodyさん:2007/02/15(木) 21:45:40 ID:148YlLut
>>334 秀和システムの「今日から使える php5サンプル集」(初版2004・12)って
本に載ってたんで、とりあえずやってるのですが、毎コミュの「php逆引きリファレンス」には
この関数自体のってません。(初版2006・11)
正直「XMLを使わなきゃ必要ない勉強かな」という気もしてるんですが・・・
初心者なので知らないんですが、phpの開発でXMLを併用すると
「すごく便利」というケースってあるんでしょうか?
338 :
nobodyさん:2007/02/15(木) 21:47:17 ID:148YlLut
>>335-336 すみません、CSVを確認しました。
エディタで開くとカラです。容量も0になっています。。
>>331 ちゃんと書き込まれてなくない?
(ファイルサイズが0kbになってるとか)
俺試してみたけどちゃんと書き込まれなかった
>>337 javaならXMLパーサーが幾らでもあるからいいけど、phpなら百害あって一利なし。
$aryTmp = array("isbn"=>"","name"=>"","publish"=>"","price"=>"");
これがforeachの中にあるからじゃね?
342 :
nobodyさん:2007/02/15(木) 21:51:37 ID:148YlLut
>>339 はい、カラでした。 コードがおかしいんでしょうか??
でもみんなこんな関数使ってないのかなー 時間の無駄かなぁ。。
>>340 そうですか、 ますますヤル気が…w
>>333 > $aryTmp['isbn']=$book['isbn']; だけ -> の形になってないのがなぜか分かりません
isbnだけ属性値だからでしょ。
<isbn>uho</isbn>
とかあったら区別できないから。
>>332 fputs($fp_o,$strTmp,"\n");
,strTmpの後、カンマじゃなくてピリオドでは?
フレームワークでうまい事読んでくれないときに
整形するってくらいしか思い浮かばないかな
1回2回程度だったら手作業でやるが・・・
そもそも、ソースの中にリテラル値を二重引用符と一重引用符が混在してる。
それだと、コンパイラーが誤った解釈する原因。
347 :
nobodyさん:2007/02/15(木) 21:55:36 ID:+b+mInq+
dirname(__FILE__); とするとそのファイルがあるディレクトリを取得出来ますが、
そのファイルがある1つ上の階層を取得するにはどうしたらいいのでしょうか?
相対指定じゃなくて、dirnameが使えるならその方法でのやり方を教えて下さい。
俺の場合、XML操作はJavascriptでやってるな
>>337 XMLは覚えておいて損はないよ
Webサービスで使われてることもあるし
年賀状印刷ソフトの住所録にも使われてる
>>347 dirname(dirname(__FILE__));
>>333 name, publish, priceはbookの子要素だから ->(アロー演算子)を使う
属性の場合は連想配列
例えばnameの属性にsubtitleっていうのがって
<name subtitle="10日でマスター">今日から使えるXMLサンプル集</name>
となっている場合は、$book->name['subtitle']でアクセスできる
351 :
nobodyさん:2007/02/15(木) 22:01:29 ID:148YlLut
>>334 うっ ありがとうございます! うまくいきました!!
助かりました!
ほんとにありがとうございました。
>>333 なるほど、確かによく見たらそうですね
でも、何故コレだけこうなってるのか、ちゃんと解説してくれる本買えばよかったなー
>>345 たったそれだけのレスなのに知識不足で理解できません。リテラル値?
勉強します。
>>346 今後注意します。サンキュ
>>348 なるほど、 イマイチ知識不足でありがたみが分からないですが、、
必要が出てきてからじっくり勉強することにしました
皆さんありがとうございました。
353 :
nobodyさん:2007/02/15(木) 22:02:56 ID:148YlLut
>>350 おお、詳しい解説ありがとうございました!
なるほどねー
XMLも万能じゃないから、長所と短所を見極めて使うようにな。
大量のデータを内部で扱うなら、XMLは向かない。
XMLは全文パースするのに、処理コストが掛かるから。
phpにもSAX系のXMLパーサーがあればいいんだが。
<book isbn="ISBN4-7980-0095-7">
これのisbnってどこに入るんだ?
358 :
nobodyさん:2007/02/15(木) 22:05:02 ID:l05otmqr
359 :
347:2007/02/15(木) 22:06:14 ID:???
>>349 おお!こんなやり方があったんですね!これは非常に便利な使い方です。
参考になりました。ありがとうございました。
二重引用符と一重引用符が混在してると
>>346の脳みそが誤作動するって話だろ。
もしくは定期的にネタレスを投下してくる粘着。
もしくは真性。
>>358 fopenでファイル名の変わりにURL
詳しくはphp関数リファレンスを見よ
363 :
358:2007/02/15(木) 22:13:28 ID:???
>>361 ブラウザに文字が表示されてしまいます。
364 :
358:2007/02/15(木) 22:14:46 ID:???
>>362 うまくいきました。ありがとうございます
結構PHPやってきた俺も
>>324の言うことがわからないのは異常か
366 :
nobodyさん:2007/02/15(木) 22:19:58 ID:8fen4pAd
すいません
sessionを利用する場合、
そのsessionデータはcookieに自動で保存されるのでしょうか?
それともsetcookieする必要があるのでしょうか?
>>365 phpの話じゃないだろw
gifファイルの仕様の話だろ。よく読め。
369 :
nobodyさん:2007/02/15(木) 22:24:48 ID:8fen4pAd
ありがとうございます。
と言うことはsessionつかって会員サイト作る場合
sessionデータをcookieなどを使って渡す必要がある
ということであってますか?
sessionは鯖に記憶
cookieはクライアントに記憶
じゃなかったっけ?
セッションは勝手にクッキーが保存されるよ
setcookieが必要なのはセッション以外の任意の値
>>371 またネタスレかよ。勝手に保存なんかされねーだろ。
session_startを書いた時だけ。
もしくはiniのsession.auto_startをonにした時
相当なひねくれ者だな
仮に掲示板とかに自動書き込みツールを作ろうと思ったら
どのような言語がわかれば作れるのでしょうか?
おすすめの書籍なども教えてください
>>375 Lispとprologっていうのが分かればいい
アセンブラちょうおすすめ
>>376-377 自分が知っている言語を言えば良いってもんじゃないでしょ。
そう主張する根拠を具体的に示して。
ActivePerlのwperl.exeみたいに、
コマンドプロンプトを表示しないものはありませんか?
mechanizeのPHP版ってありますか?
ffmpeg使いたいんですが、ロリポップやXREA、そのたレンタルサーバーで利用できるのでしょうか?
383 :
379:2007/02/16(金) 07:17:59 ID:???
自己解決しました。
381も自己解決しました。
382も自己解決しました。
>>317 gifcat.plをPHPに移植したgifcat.phpというのがある
gifcatはgifアニメの左位置をずらして全部表示させてるだけなので
その部分を改造したら普通のgifアニメにできるよ
>>372はバカなのか、それともマジで言ってるのか・・・。
>session_startを書いた時だけ
そりゃそうだ、session_startを使う=セッションを開始する、ってことだからな。
387 :
nobodyさん:2007/02/16(金) 10:27:38 ID:ARswDuxS
PHPとpostgresqlを使ってるのですが
postgreの関数でpg_fetch_objectっていうのあるじゃないですか?
まだ実験してないんですけど(汗
説明読んだ感じだと、自分で作ったクラスを指定して
あるメソッドを持ったオブジェクトに行を読み込んで
そのオブジェクトを保持した配列とか作れますよね?
で、それってPDOで出来ないのでしょうか?
FETCHタイプにPDO::FETCH_OBJっていうのがあるけど
オリジナルクラスを指定出来ないっぽいです・・・
日本語マニュアルに出てないカクレキャラとかありませんか?
もしくは見逃してたりして・・・
お願いします
388 :
381:2007/02/16(金) 10:59:44 ID:fSTSWZAw
まだ解決していません。_| ̄|○
>>384 やめてくれ
389 :
虚弱PHP:2007/02/16(金) 11:23:33 ID:???
>>381 聞いたことないけど、別にPHPに拘る必要はないんじゃないのだろうか。
>>381 多分ないと思う、俺も探したような気がする
PEARのHTTP_ClientやZFのZend_Http_Clientで
各リクエストとクッキー操作あたりまではできるが
リンク辿ったりとかフォーム送信みたいなのまで
ちゃんとできてるライブラリは無いっぽい
スクレイピングツールもあんまりないし
phpはこういう類のライブラリ弱いイメージがある
391 :
381:2007/02/16(金) 11:34:02 ID:???
>>389-390 thx。いやまさにスクレイピングしようと思っていました。
素直にmechanize使います。(実はperlあまりさわったことないんだ・・・)
>>391 SimpleTestにScritable browserてのがあるよ、使ったこと無いけど。
個人的にはWebスクレイピングはMechanizeか、そうでないならnetcatでお手軽にすます。
mb_send_mail あたりでSSL使って送信する方法ってなかとでしょうか。
相手先サーバーまで暗号化したいとです
smtpsってやつですかね。
これはPHPじゃなくて送信サーバの設定でじゃない?
一番の暗号化は、メール一通につき一通送ることだ、あとで文字を組み立てれば読めるのだから問題ない
一通につき一通って当たり前のことじゃん。
>>393 >相手先サーバーまで暗号化
それはSSL使っても無理。
smtps(SSL)で暗号化されるのは、メール送信者のMUAとMTAまでの間の経路だけ。
PHPでメール送信する場合は「MUAとMTAの間」は事実上無い(同じサーバ上)。
だから意味が無い。
PHPで自動実行が出来ないものかと思い、調べていると
pseudo-cronというPHPでcronの代わりになると言うものがありました。
しかしこれはアクセスがあるページにソースをを貼って実行するので
本来のCronの機能とは全く違う気がします。(cronのコードは使えるけど…)
そこで質問ですが、PHPでcronのようなことはできないのでしょうか?
cron使えや
・手動で起動
・携帯から定時にPHPスクにメール飛ばして起動(要メールまわりイジリー)
・クーロンが使える鯖を借りる
>>398 >PHPでcronのようなこと
なぜcronそのものを使わないのか。
402 :
虚弱PHP:2007/02/16(金) 15:17:14 ID:???
Windowsならタスクスケジューラーかat
phpでcronみたいな機能を作りたいということか?
>>398 一定時間おきにURLにアクセスしてくれるサービスをどこかでやってたな
まあそこのサバがダウンしたら意味ないけど
407 :
nobodyさん:2007/02/16(金) 17:40:15 ID:84XPqP8V
PHPとRubyはどちらが需要が高いですか?あとやれることは同じですか?
408 :
虚弱PHP:2007/02/16(金) 18:14:50 ID:???
需要で言えば今はこんな感じじゃないかな?
PHP >= Perl >> Ruby
ハッカー的なとんがっている人はPerlとかRubyの方が多いと思う。
Rubyはこれから伸びそう。
Javaは別ジャンル。
「やれること」って曖昧すぎるよね。
虚弱PHPはニートって本当ですか?
これからはパインソの時代だよ
>>407 そりゃPHPの圧勝。
やれることは「同じ」と言って差し支えない。
少なくともお前みたいな質問するレベルなら、どれでも同じことやれるから心配するな。
>>408も指摘してる通り、「Perlはヲタが未だに捨てられない技術」であり、「Rubyはヲタが新たに誇示したい技術」である。
したがって、ただ単に実用的に自分の願望を素早く実現したいだけなら、PHPを選んでおけば間違いない。
cronが使えないレンタルサーバ借りてて
一日中PCとブラウザ立ち上げておいて
ツールで指定時間にsubmitしてるやつ昔いたよ
たとえばXREAでも借りれば月200円で済むのに・・・
1日中PC使う電気代のほうが高いんじゃネ?
そろそろその低レベルな会話やめないか?
もうPython最強でいいよ
熱い、熱いぞー!
417 :
nobodyさん:2007/02/16(金) 19:33:33 ID:dT8Hr45p
うちの会社でPHPをオブジェクト指向的記述法でソース書かれててびっくりしたんだけど
主流だったりするの?
今までC言語的記述しかしてなかったからソース見てほんとびっくりしたんだよね
的ってなによ・・あくまで指向じゃないのね・・
420 :
nobodyさん:2007/02/16(金) 20:37:30 ID:80BNRnzJ
初心者的質問で申し訳ない。
PHPって、HTTPでアクセスがあったときにサーバサイドで動くものだと理解しているのですが、
だとすると、
1. メールに自動返信
2. 定時になったらメールを送る
といった、メールや時間をトリガーにした
動作ってのはできないもんなんですか?
421 :
387:2007/02/16(金) 20:45:59 ID:???
ごめん
やっぱり見逃してた
PDO::FETCH_CLASS
っていうのがありました。
試してみます
お騒がせしました
>>420 Web用途に特化してるだけ。
シェルから普通のプログラム(インタプリタ)としても実行できる。
MTAなりcronなりお好きなトリガーでどうぞ。
>>420 1.メールボックスとPHP実行が同じマシンなら
メールボックスにメールが届いた際にPHPスクリプトを起動することが可能
>PHPって、HTTPでアクセスがあったときにサーバサイドで動くもの
が間違い。「.forward」とか「PHP-CLI」とかを調べる。
2.PHPスクリプトをずっと起動しておく(常駐)させておいて、
設定時刻になったら該当の処理をするということも可能だが、
(これも概ねPHP-CLIを使う)
このスレの少し前にも話題に上がってるcron/at/タスクスケジューラを使い、
「設定時刻になったら」の部分はそれらに任せ、そこからPHPスクリプトを起動する。
>>423 >PHPスクリプトをずっと起動しておく(常駐)させて
おいおい・・・
425 :
nobodyさん:2007/02/16(金) 21:33:12 ID:oLVs3bsF
メールアドレスをDBに保存する際に暗号化して保存したいんだけど、どうしよう?
PHPには可逆暗号関数が無いから自前で実装するしかないだろうけど、
どういったアルゴリズムがベストかな?
復号化を頻繁にやっても負荷が上がらないように、あまり重くない処理がいいよね。
たとえば16進数に変換してゴニョるとか?? おまいらのアイデア求む。
>>425 mcryptってPHPでモジュールになかったっけ?
あったらそれで、なかったら可逆のやつつかえばいいよ
>>425 アイデアと呼べるかどうか分からないけど、
モジュールやPEARの一覧を調べるとか、
プログラマなら誰でも思い付くマトモな行動を取ればいいと思うよ!
428 :
nobodyさん:2007/02/16(金) 22:16:19 ID:oLVs3bsF
>>426 mcryptって可逆だったのか。。。 不可逆だと思い込んでた。
>>427 PEARとか、他人が作ったものは使いたくないっす。
万が一、データが漏れたときでも、なるべく復号アルゴリズムをわかりにくくするため、
自前で実装したいであります。でもmcrypt使うかも。
430 :
nobodyさん:2007/02/16(金) 22:28:57 ID:oLVs3bsF
・・・と思ったら、mcryptって標準じゃ使えないのね・・・
>>428 1. 自分で妙なアルゴリズムを考えて、そのアルゴリズム自体を隠蔽する
2. 先人達が考案した実績あるアルゴリズムを採用して、その暗号化キーを隠蔽する
1より2のほうが遥かに簡単。かつ信頼性が高い。
もしあなたが高名な数学者とかだったら非礼をお詫びいたします。
432 :
nobodyさん:2007/02/16(金) 22:47:13 ID:oLVs3bsF
str_rot13最強伝説
メールアドレスを、反対から読んで保存するだけで全然OK
>>432 コストが高くて信頼性の低い方法を選ぶのですね。
すいませんここのスレタイを忘れてました。
437 :
nobodyさん:2007/02/16(金) 23:11:36 ID:vtSyuBIy
すみません、具体的なスクリプトの質問ではないのですが、
phpでサイトを運営する上で、いろんなクラッカーとかイヤガラセの
攻撃を受ける可能性があるわけですが、そういうメンテナンス上の問題回避のために
読むべき、理解すべきことってどんなことでしょう?
そういうことをプログラムのノウハウ的にまとめている本でオススメってありますか?
技術的なことでなく、運営者マニュアルみたいなものでも良いですが。。
UTF-8で統一してるんだが
MySQLに入れたデータがphpMyAdminで文字化けする
接続照合順序utf8_unicode_ciじゃアウアウ?
>>422-424 さきほど、色々な方法があると言いましたが、
結局、php-cliを使う事が要点なのですね。
再質問で申し訳ないですが
つまりphp-cliでないと、
phpはhttpのリクエストで動くものという理解で良いという事でしょうか。
>>437 とりあえずこのへんとか。
http://www.atmarkit.co.jp/fsecurity/index/indexfiles/index-serial.html セキュアなWebサイトを運営するための
Webアプリケーションに潜むセキュリティホール
Webアプリケーションに潜むセキュリティホールが注目されている。
その危険を認識し、セキュアな開発を目指そう
第1回 サーバのファイルが丸見え?!
第2回 顧客データがすべて盗まれる?!
第3回 気を付けたい貧弱なセッション管理
第4回 エラーメッセージの危険性
第5回 Webアプリケーションの検査テクニック
第6回 Webサイトのセッションまわりを調べる方法
第7回 攻撃されないためのセッション管理の検査方法
第8回 ロジック系の検査
第9回 オンラインショッピングにおける脆弱性の注意点
第10回 安全なWebアプリケーション開発のススメ
第11回 Webアプリケーションファイアウォールによる防御
第12回 mod_securityのXSS対策ルールを作成する
第13回 OSコマンドインジェクションを防ぐルールを作成する
最終回 Webアプリケーションの脆弱性を総括する
>>439 えーっと、UNIX入門みたいな本でも読んだ方がいいと思ふ
443 :
nobodyさん:2007/02/16(金) 23:39:14 ID:vtSyuBIy
>>440 ありがとうございました たくさんありますねー
そのページ書いてあるようなことをプログラマは全部理解して
その上でコーディングしてるんでしょうか? すごいなー
自分は初心者なんで、信じられないですが、、
>>441 ありがとうございました XSS調べてみました
フォームに悪質なjsを書き込まれた場合の対処という理解で良いんでしょうか?
他の具体例も知りたいんで、なんか良い本ないですかね??
色々ありがとうございました。
他にもあったら気の向いた人教えてください。
444 :
439:2007/02/16(金) 23:41:23 ID:80BNRnzJ
>>442 つまりそれは、
>>439の質問が、的外れな質問すぎて、Y/nで答えられないという事ですか?
とりあえず、UNIXの再勉強はしておきますが
>>439がどのくらい的外れなのかは、ちょっと教えてくれませんか。
>>437 OSレベルのセキュリティじゃなくって、Webアプリレベルのってこと?
>>440 のタイトル見ただけだが網羅されてるようだね。
PHPの本でセキュリティうたってるのをAmazonとかで検索してみな。
それとも、荒らし対策の話?
IPではじくとか、BBQとかそういう話か?
446 :
nobodyさん:2007/02/16(金) 23:59:41 ID:j0IYGYSi
GD2でフォントを表示しようとするとポイント単位になりますが
画像の中心に表示したいのでピクセルで指定したいです
ピクセル-ポイント間変換はどうやればできますか?
447 :
445:2007/02/17(土) 00:04:32 ID:???
>>443 >そのページ書いてあるようなことをプログラマは全部理解して
>その上でコーディングしてるんでしょうか? すごいなー
いや、知らない人結構いると思うよ。
かなり大雑把だけど
・セッションがらみ(成りすましされちゃうとか)
・サニタイズがらみ(XSS,CSRF,SQLインジェクションとか)
・権限ミス(見せてはダメな人に見せちゃうとか)
ぐらいで分類できると思う。
448 :
nobodyさん:2007/02/17(土) 00:05:20 ID:P/33vo48
>>445 そうそう、OSレベルではなくて、スクリプトやアプリレベルです。
荒らし対策とか知りたいですね
単純にロボットスパム? ときどき掲示板に海外のエロサイトのアドレスが
馬鹿みたいに書かれてるの見かけますが、ああいうの防ぐ方法とか。
(ちなみに、書き込み送信前に画像の見難い数字パスワード?を入力させる方法
以外にどんなのがありますかね、アレ)
>>444 常駐してるメーラーダエモンさんからPHPに渡してもらえば良いだけだよ。
アパッチの中のPHPスクリプトに渡す時、一瞬CLI使うだけ。
全部PHPで作る気なの?
UNIXのコマンドとかもアパッチモジュール版のPHPの中から使えるし
無駄な徒労で意味無いよ。ってことが
>>442の人は言いたいんだと思う。
>>448 有名どころの日本の商用レンタルBBSだと2バイト文字がない奴
全部弾いてたりする。
URLが入ってる投稿全部弾くように
http://とかに禁止ワード設定して URL登録フォームはAJAX的にボタン押すと出現させるようにすれば
防げると思うけど、俺は面倒だからやってない。
451 :
445:2007/02/17(土) 00:16:55 ID:???
>>448 >書き込み送信前に画像の見難い数字パスワード?を入力させる方法
CAPTCHAのことだな。
あとは、シングルバイトのみははじくとか、
NGワードではじくとか、
IP、UserAgentではじくとか、
BBQではじくとか、
チケット使うとか、
かなぁ。。まぁ、どれも完璧じゃないです。
マルチバイトなかったらとか環境変数みたりとか
結構いろいろ方法があるけど
焼き鳥マジオヌヌヌ
これだけでほとんどはじけたよ
453 :
444:2007/02/17(土) 00:31:39 ID:9nsEzfET
>>449 なるほど。
何となく分かった気がします。
ありがとうございました。
CLIを使うか否かにこだわったのは、
今借りてるサーバがPHP 4.4.4 (cgi) だったからです。
何にせよ、もうちょっと、PHPだけじゃなくて、周辺知識を得てみます。
454 :
nobodyさん:2007/02/17(土) 00:36:47 ID:P/33vo48
>>452 焼き鳥ってなんですか?
あと、悪質な書き込みする奴弾く時はIPですかね?
荒らし書き込みした奴にクッキー食わせてそいつだけ弾くとかかな
CGIバイナリでインスコされてるならCLI使う必要ないじゃないの
>>454 DNSBLで検索汁
BBQのアドレスは覚えてないけどこれも検索すればすぐでてくるはず
あともう一つ海外の有名どころ1つくらい押さえたほうがいいかもね
457 :
446:2007/02/17(土) 01:11:37 ID:???
ピクセル=(ポイント/72)×DPI
で、
DPIはlinux=75,win=96,mac=72
というところまでは分かりましたが
この場合DPIはクライアントのものになるのか
サーバのものになるのかどっちでしょう?
458 :
446:2007/02/17(土) 01:37:05 ID:???
By default, gd passes a resolution of 96 dpi to the freetype text
rendering engine
らしいです
GIF動画同士の合成はできたんだが、アニメーションが止まって表示される
アニメーションを動かすには別のモジュールが必要なんだがどうすればいいよ?
>>461 imagemagick 使うなら
path 通して直に叩けばいいんじゃないの?
imagemagick で希望のことができるかは
私は知らないけれども。
「<」「>」「"」「'」「&」
見たいなhtml上で使っちゃいけない記号を、
「?」「?」「?」「?」「?」
といった文字列に置き換える関数はありませんか?
>>465 すいません置き換えられてしまいました。
質問の続きなんですが、うまく説明できないんですが、
html上で使える記号に置き換える関数はありませんか?
htmlspecialchars
定数で、ログを記録するかしないかを選択する処理を入れたいのですが、
define("LOG", 0); //ログ記録するなら0 しないならその他の数字
if (LOG == 0) {
ログ記録する処理
}
define("LOG", 0); //ログ記録するなら0 しないなら1
if (LOG == 0) {
ログ記録する処理
} elseif (LOG == 1) {
何もしない
} else {
die("LOGの設定がおかしい");
}
どっちがいいと思いますか?
それとも他にもっと合理的な書き方がありますか?
470 :
469:2007/02/17(土) 09:54:16 ID:EkLER66+
すみません。癖でsageてしまいました。
472 :
469:2007/02/17(土) 10:02:00 ID:???
>>471 何その書き方とか突っ込まれるかと思いましたが、
こういう書き方で大丈夫なんですね。
どうもありがとうございます。
string型の変数に++するとa-zまでカウントしてくれますよね
それを0-9も含めたカウントしたいんですが
比較を使って手動でカウントする以外の方法はありますでしょうか?
よろしくお願いします
2007-02-17T04:15:10+09:00
こんな感じの時間を返したいと思っているんですが、
これは何基準で返した時間なんでしょうか?
年と日付はdateで返せるんですが、
時間が+とかついててちょっと良くわかりません。
どんな関数を使えばいいんでしょうか?
475 :
nobodyさん:2007/02/17(土) 10:27:13 ID:it5sKBkR
476 :
nobodyさん:2007/02/17(土) 10:36:02 ID:jve/T2Nq
改行タグ (<br />) を動作環境に応じた改行コード (\x0D\x0Aや\x0Dや\x0Aなど) に変換するにはどうすれば良いのでしょうか。
あるいは \n で統一しても良いのでしょうか・・・。
どなたかご教示願います。
難しく考えず、求める結果になるならなんでもいいんざゃない?
>>469 それでもいいけど、できれば 1のとき記録するにしたほうがよいんじゃない?
if(LOG) {
記録処理
}
でいける。
>>473 よくわからないですけど配列にa〜9まで入れて++の代わりにnext使ってってのはどうですか?
481 :
469:2007/02/17(土) 11:51:00 ID:???
>>479 1にすればそんな書き方ができるのですね。
知りませんでした。
早速使わせていただきます。
>>479 define('LOG', true); の方がモアベターかと。
Hypertext Preprocessor
これをどう略したらPHPになるんですか?
LOGするとき0ってのも意味分かんないな
PHPはパーソナルホームページの略ですw
>>484 WikipediaでPHPの歴史見てみるといいよ。
488 :
nobodyさん:2007/02/17(土) 16:31:41 ID:g7Ihrm8U
PHPで2ch用ブラウザ作っているのですが、
新規スレッド作成の時にリファラ情報が変と出ます。
リファラ情報を変えることはできないのでしょうか?
>>488 リファラ情報を変えることは、勘助を信虎の家臣にするようなもの。
490 :
nobodyさん:2007/02/17(土) 16:49:24 ID:g7Ihrm8U
>>489 つまり、外部からの書き込みは不可なんでしょうか?
>>439 php-cgiはCGIとして利用する場合は、HTTPサーバが前提だけど
php-cliが出来る前は、php-cliの代わりにも利用されてきた。
つうことでphp-cgiが入ってれば、貴方の期待するようなことは出来ると思うよ。
493 :
nobodyさん:2007/02/17(土) 17:03:48 ID:g7Ihrm8U
>>491 Windowsなのでおそらく入っていないです
494 :
484:2007/02/17(土) 17:18:40 ID:???
HTTPプロトコルでやっちゃえ
497 :
nobodyさん:2007/02/17(土) 17:41:00 ID:g7Ihrm8U
>>493 php-cgi.exeという名前か、php.exeという名前で入ってる。
php-cliの方はphp-cli.exeという名前か、php.exeという名前で入ってる。php-win.exeも
cgiとcliが同じ名前で一時期混乱を招いた(Win版に限らず)。
取り合えずパスの優先順に気を付けた上で「php-hoge -v」してみ。
朝のやつ出来ちゃいました。ありがとぉ〜
Who are you?
>>500 you are "Internal Server Error".
>>497 PHPでブラウザを作るんだよ
実際User-Agentとかいろいろ偽造できるんだぜ?
503 :
502:2007/02/17(土) 18:39:26 ID:???
504 :
nobodyさん:2007/02/17(土) 18:39:37 ID:g7Ihrm8U
505 :
nobodyさん:2007/02/17(土) 20:26:51 ID:dqj9QXnt
よく、『「--with-●●●」を付けてコンパイルされていることが必要です』などと説明してあったりしますけど、
もう既にPHPがインストール済みの場合、あとからそういうのを
パッチ的に(?)当てたりすることは出来るんでしょうか?
それともコンパイル&インストールからやり直し??
(共用レン鯖とかだと、それさえも不可能ですが・・・)
>>505 そんなパッチがあったとしても
レン鯖屋のバイナリに勝手にパッチ当てられるわけないでしょ。
レン鯖の提供する機能でやりくりするか
レン鯖屋を乗り換えるしかない。
海外のレン鯖で自由にパッチ当てられる鯖あったけど。
>>506 いや、根本的にそういうことを聞いてるんじゃないだろ。
じゃあ専用鯖だとしたら?? ってことでしょ。
パッチが当てられるか否かの話だろw
今度はrpm限定かよw
>>509 要点はそこじゃないだろバカかお前ww
つまり「コンパイル・オプションを後から追加できるかどうか」って話だろ。
手法がパッチかどうかの問題じゃないっしょ。
男は黙って再コンパイル
>>505 全部の拡張機能が可能というわけではないが、
後からでもphpの起動時に動的にロードできる。
# 実行にロードできるものも
「phpize」をキーワードにして検索。
再コンパイルが確実だろうけど、時間かかって面倒くさいし、
何よりも、いま正常に動いているスクリプトが動かなくなったら怖いよな。
>>516 いたって普通の手法じゃねぇか。
ファイル置いてphp.iniで有効にするだけだろ。
それすら嫌なら全部phpで書けよ。
>>517 ビルドだのインストール作業だのがあるじゃん。
そうじゃなくて、コンパイル済みのバイナリをアップして
php.iniをいじるだけ…とかにしてほしいんだ。
>>519 実は、私も人柱を探していたところなんです。
助かります。宜しくお願いいたします。
私も519が人柱になるのがいいと思います!
自分も柱探していました。
>>519さんよろしくお願いします。
>>519 たいした暗号化じゃないし、zendの使ったほうがまだマシ
>>524 そういう戯言は、実際にクラック成功させてから言ってくれ。
528 :
nobodyさん:2007/02/17(土) 23:45:45 ID:g7Ihrm8U
>>527 戯言⇒ざれごと(ふざけて言う言葉。冗談。)
虚言⇒きょげん(うそ。いつわり。)
>>526 524じゃないけどもうやったよ。
パスワード入力をする前のコードは復元できなかった(つか時間が無くてあんまり出来なかった)けど
入力後のコードは普通に特定の文字を置換してbase64_decodeしたら生ソースが出てきた。
SourceCopよりかはベター、Zendのに比べれば劣る(当たり前だけど)
某所で見かけた難読化のやつはすごかった。非ASCIIのバイナリを直接関数にわたしてた。
531 :
439:2007/02/18(日) 00:05:13 ID:???
>>455 >>491 レスありがとうございます。
UNIX系の知識自体が不足していたようで、申し訳ないです。
phpばかりじゃなくてunixももうちょっと勉強して、答える側に回りたいものです
532 :
nobodyさん:2007/02/18(日) 00:41:29 ID:VMFXb98L
OsCommerceのパスワードの暗号について教えてくれ
>>532 こんばんは、山本と申します。
それについては今晩8時からNHKの番組の中で語りますので、ぜひご覧下さい。
>>529 >base64_decodeしたら生ソースが出てきた
そういうのは暗号化とは言わないんだよバカ。
あの製品は、HTMLとJSは、単に難読化してるだけで暗号化はしてない(っていうか暗号化したらブラウザが読めなくなる)。
そっちじゃなくて、「暗号化されたPHPスクリプトのソース」を解読してみろって言ってんの。
>>530 ハァ? なんで社員になるんだよチンカス。
>>529は難読化と暗号化の違い、および、
HTMLソース隠蔽とPHPソース隠蔽とをごっちゃに混同しているようだ。
両者はそれぞれ全く別の話。
なんでソフトの話からぶっ飛んだ話をしたがるんだ君は
アクセス解析もどきを作っているのですが、リンクが
http://***.com/link.php?a=1 で、このリンクをクリックしたら解析のページにlocationで飛びます。
ここまではわかるのですが、locationにパラメーターを指定して
index.php?b=1みたいにしてもいいのでしょうか?
index.phpでは、$_GET["b"]に1が表示されれば良いんです。
新しモノ好きで、誰にも頼まれてないのに勝手に人柱になるヤツも多いけどなw
>>538 久しぶりに良い質問だ。
30x系のHTTPヘッダーにそのままパラメータ付きのURLを入れればOK。
GETメソッドなら、RFC上も全く問題ない。
>>538 いい悪いっていうかそういう風に作ればいいじゃん。
よくないと思う理由は何?倫理的なもの?法律的なもの?
543 :
538:2007/02/18(日) 01:11:35 ID:???
>>541 なるほど。参考になりました。ありがとうございました。
>>538 header("Location:./index.php?b=1");
ってできるかってこと?
僕はそれやったことあるよ
わかってると書きながらためしてみたかためしてないか、問題はそこなんだよ
546 :
529:2007/02/18(日) 02:36:34 ID:???
>>534-535 意味が分からん。そもそも暗号化なんて言葉は一言も使ってない。
それに俺が言ってるのはその製品におまけ程度に付いてるHTMLを難読化する機能じゃなくphpを難読化する方のことなんだけど。
つかHTMLの難読化なんて一切話題にしてないし。
base64_decodeが馬鹿ならその製品に言ってくれ。実際にそれだけで生ソースが出てきたんだから。
>>546 >>526の発言に対して、「もうクラックした」と言ってるじゃないかお前。バカだろお前w
base64_decode=クラックじゃねぇぞ。ただのデコードだろ。
そんで、PHPソースはbase64エンコじゃねぇし。
実際にやったことないくせに妄想で語るな嘘吐きが。
じゃあioncube使え。PHPはいいよな隠蔽できるから。
Javaは全部逆コンパイルできるからシェアウェアとか作りづらい。
ionCubeは高いのが難点だな。
あとライセンス体系も。
JAVAでも逆コンパイルできないように暗号化できる。
551 :
529:2007/02/18(日) 03:15:32 ID:???
>>547 実際にやったよ。そんなに疑うならサンプルファイル用意してみろ。
用意したものを元に戻せばおまえさんも納得ですか?
つかクラックなんて超絶に頭の悪い発言したのは俺じゃない。
勝手に
>>526と結びつけないでくれ。
内部でbase64_decode使ってるのは事実なんだから妄想も糞もないがな。
>>548 ProGuardが無償で提供されてるだけでも。。
CPU が解釈できる以上は
どんな言語でも逆アセンブル(逆コンパイル)は可能だろう。
原理的には。
どうでもいいけど529必死杉
とりあえず
>>526と
>>529が馬鹿だということはわかった。
こういう民度の低いのがいるからPHPは見下されるんです。カエレ(・∀・)!!
555 :
nobodyさん:2007/02/18(日) 08:29:46 ID:IA/vQM+L
設計に関する質問・相談です。
自分は今まですべてのコンテンツ分の登録・編集機能を用意してて
自由に管理者が投稿出来るようにしたのですが、それを友人に試用して
もらったところ、「投稿したはずの書き込みが別のユーザで反映されている」
との指摘を受けました。(実際は、ユーザIDを間違えて登録していた
会員制の掲示板の場合、書き込みさせたいユーザがログインして書き込むので
ユーザIDが違うと言った問題はないのですが、管理者が管理システムから
書き込めるようにすると、そのような問題が考えられます。
そこで質問ですが、皆さんは会員制サイトを作る時の管理システム(管理者が使う)で、
登録・編集フォームはすべてのコンテンツ分、用意してますか?
もしくは管理者には自由に書き込めないようにしてますか?
自分の調べたところphpBBもOpenPNEも会員としてログインして書き込む形になっていました。
内容と規模とその時の状況に依るかな。
掲示板みたいな大したものじゃなかったら面倒なので削除だけだし
企業ものだったらほぼ全てっていうかフレームワークでできたcrudそのままって感じだし。
ただsuperAdminの権限を与える場合は
大抵DBも扱えるようにしてるからphpadminとかで勝手にやっちまえ
っていうお話。
557 :
555:2007/02/18(日) 09:05:41 ID:???
>>556 ありがとうございます。自分用の場合は大体
>大抵DBも扱えるようにしてるからphpadminとかで勝手にやっちまえ
>っていうお話。
で済むのですが、第三者が使う場合、何が一番良いのか迷う時があります。
仕事みたいに依頼されて作る場合は主旨が明確なので作りやすいのですが、
WEBの知識の無い人間に対して利用させる場合、を想定すると実に迷います。
ほぼすべての機能を使えるようにしたら誤った操作をしてしまわないか?
っと思うし、仮に使える機能を制限すると、管理者が投稿する時は
いちいち会員として投稿しなきゃいけなくなる。その点の判断が
いつも迷ってしまい、フローチャートの段階で詰まることも多々あります。
(実は今も詰まってしまい、質問したわけですが...
558 :
529:2007/02/18(日) 10:45:39 ID:???
>>553-554 何が必死なのか何が民度が低いのか、
レス返しただけなんだけど。
phpのスレでphpについての話題をして
帰れと言い出す
>>554の脳はさぞ素晴らしいんでしょうね。
結局
>>547はサンプルも用意できずに逃げたみたいだから
出てくるまではこのスレには来ないよ。
>>529 お前二度とここ来るな
永遠に来るな 今すぐ去れ
560 :
nobodyさん:2007/02/18(日) 12:07:55 ID:7ifKcsCF
Fotal Errorの画面ってカスタマイズできない?
正規表現で特定のディレクトリに特定のメッセージ出したりリダイレクトできたらいいんだけど
561 :
nobodyさん:2007/02/18(日) 12:11:13 ID:7ifKcsCF
ゴメ
スペルミス
>>552 て言うか、復号できない暗号化なんて無意味だよ。
アルゴリズムとキーをどれだけ隠蔽できるかの勝負だろ。
563 :
nobodyさん:2007/02/18(日) 13:10:41 ID:zIKYxPXS
こんにちわ、お世話になります。
imap_openでopenに失敗した場合に即効で値が返ってくる方法はありませんでしょうか?。
imap_timeoutを使っても時間がかかったりPHPのタイムアウトまで時間がかかってしまいます。
変数に使うと、定義名を返すような関数はありますか?
565 :
nobodyさん:2007/02/18(日) 13:17:06 ID:ix4BYiPN
暗号化の話で盛り上がってるところ悪いけど
くだらない質問を一つさせてください。
例外処理ってどうしてますか?
例えばクラス側では投げるのに徹して、クライアント(実際にブラウザで実行するphp)側で
tryとcatchをするとか、セオリーみたいなのってありますか?
もっと楽そうなのは、投げっぱなしにしておいて
set_exception_handler()で一括処理なんて言うのも考えたんですけど
あんまりしませんか?この方法は問題ありでしょうか?
意見ありましたらお願いします。
>>557 たとえば削除なら
削除権限をつけた管理者だけが削除フラグを1にでき
かつ管理者の操作ログを保存する。
匿名掲示板程度ならここまで大げさにしないけどね。
>>560 Apacheが出してるやつならPHPで、カスタマイズしたやつを出力できる筈。
>>565 セオリーみたいなのがあるかどうかは知らないけど・・・。
throwはとにかく例外的なことが起こったらどこでも投げればいい。
try-catchは、例外から回復するのが目的なので、きちんと意味のわかるところにおいておくのがよい。
まとめられるものはなるべくまとめる方が楽だから、トップレベルで全部catchしたくなるのもわかるけど、それではrobustなシステムは作れない。
クラスの中でもcatchして流れを継続できる部分があるかどうかも検討すべき。
もちろん面倒なときに、「全部まとめてcatch」みたいなことができるのも、この構文の利点ではあるけどね。
try〜catchって具体的にどういうときに使うの?
マニュアルとか見て意味は分かるけど
具体的な使用例がほしい
どこかのスクリプトで使ってるところありますか?
Codelockの暗号はbase64_decodeするだけで復元できるとか言ってたバカは、
「復号キー」の存在を知らないのだろうか??
何のための「復号キー」なのだ、と小一時間・・・
まさか試用版の固定された復号キーであるという前提で、「解読できた」とか
言ってんじゃないだろうな?このバカww
try〜catchはthrowも合わせて使ってようやく本領発揮だよな。
572 :
nobodyさん:2007/02/18(日) 16:07:56 ID:K0qFGfn0
gdのリソースを格納した変数を
$img2 = $img1
等の方法で単純にコピーしようとすると
リファレンス渡しになります。
値渡しで丸コピーするにはどうすればよいですか?
>>572 どうしてリファレンス渡しじゃなくて値渡しにしたいのか?
画像データを加工するためにコピーしたいんです
575 :
529:2007/02/18(日) 16:15:51 ID:???
>>570 意味ぐらい知ってるよ。あんたほど馬鹿じゃないんでね。
今日ざっとCodelockの中身を見てみて完全じゃないけどそのキーの発見方法も見つけた。
つか問題なのは複合したあとのコードがいともたやすくデコードできてしまうことだろ?
複合キーで複合したあとのソースなんて難読化のかけらも無い。
実用で使う時には既に複合キーで解除されたあとなんだから何かの手違いでソースが漏れたらやばいだろって話。
おわかり?
>>575 んなこと言ったら、実行不可能なほどの暗号化しなきゃいけなくなるだろうが。
>>575 俺もやってみたけど、キーで復号したあとのテキストも、
単純なbase64デコードではごく一部しか復元できなかったが?
578 :
529:2007/02/18(日) 17:20:26 ID:???
>>576 別にこの製品を否定してるわけじゃないよ。
実行不可能なほどの暗号化をするのはZendとかionCubeとか。
比べれば分かるけど値段が全然違うでしょ。
スクリプト自体に脆弱性があればソースを難読化しようが暗号化しようが問題ありありなのを分かってほしい。
>>577 当たり前。俺の過去のレス読んでよ。
つかデコード方法を解説したらまずいと思うからそこらへんは自分でやって。
>>578 >実行不可能
「実行」の意味を勘違いしてる気がする。「解読を実行」って意味で使ってるだろ?
そうじゃなくて、「スクリプトの実行」だよ。zendが実行不可能な暗号化するわけないだろw 意味がない。
>スクリプト自体に脆弱性があれば・・・
論点ズレてる。そんなことは今は問題にしていない。
580 :
529:2007/02/18(日) 18:08:04 ID:???
>>579 Loaderが無ければ実行不可なんだからそういった表現をしたまで。
ほかのスクリプトは単体(サポートスクリプト含む)で動く。
つか論点って何よ。何を気にしたいわけ?
>>580 必死だなぁ。。。
机上の空論はもういいから、実例を示しなよ。
スルーできないやつも同罪だろ
583 :
529:2007/02/18(日) 19:01:22 ID:???
>>581 だから何の実例だよ。主語が分からん。
>>582 必死な野郎は必死にスルーしてください。
日曜日だな。だが読むべきところは全くない
くだ質スレではよくある事
imagettfbboxの結果が
実際に表示される文字列のサイズと
かなり乖離してるのですが
このあたりどうしてますか?
>>560 エラー画面のカスタマイズはset_error_handler()でできる。
特定ディレクトリは…AliasMatchでどっかのPHPに飛ばして
そこでエラーハンドラ書き換えて再び本来のスクリプトを
includeなりすりゃいいんだろうけど、一筋縄では行かないかもね。
>>569 例えば通常の運用では出ないようなイレギュラーなエラーのために
関数の引数をわざわざ参照にしてそこに戻り値入れさせたり
上位関数に返すために毎回エラーの有無確認したり面倒でしょ?
>>586 他の言語でGD触った時の情報だけど、
戻り値に実際に書き込んだ矩形の位置情報が
配列で返ってきたからそれで調整したよ。
>>581 実例のために早くサンプル用意してね。
>>前スレ992さんありがとう
ファイル名による条件分岐を前スレで教えて頂いたのですが、
どうしてもうまくいかないものでお知恵を拝借させてください。
top_link.php、und_index.php、sid_read.phpと3つファイルがあるとして
ファイル名の頭3文字による条件分岐をしたい
<?php
$array = array("top_link.php", "und_index.php", "sid_read.php");
foreach($array as $file){
preg_match("/(.*)_.*\.php/", $file, $match);
switch ($match[1]){
case "top":
echo "トップ";
break;
case "und":
echo "アンダー";
break;
default:
echo "その他";
}
}?>
ところが実行するとechoが全て実行されてしまいます。
どうやったらうまくいきますでしょうか?
>>588 全部指定してforeachで回してるんだからそれぞれは正しく分岐されてるじゃないの。
>>587 581ではないけど、今コードロックの解析してるからちょっとまっとれ。
591 :
588:2007/02/18(日) 22:04:04 ID:???
>>589 すいません、あほな書き方してしまいました。
やりたいことは、ファイル名によって表示文字を分岐させたいということです。
$File = basename($_SERVER['SCRIPT_NAME'],".php");
<?php
preg_match('/(.*)_.*\.php/', $File, $match){
switch ($match[1]){
case 'top':
echo 'トップ';
break;
case 'und':
echo 'アンダー';
break;
default:
echo 'その他';
}
}
?>
自分の力ではなかなかうまくいきませんで・・・
592 :
590:2007/02/18(日) 22:04:37 ID:???
スクリプト内の
A=0 B=1 C=2 .... a=26 b=27 c=28 ... 0=52 1=53 2=54 +=62 /=63 ==64 その他は0
に変換する。
1文字目は上の式の(値-0)/4の商
2文字目は(値-1)/4
3は(値-2)/4
4は(値-3)/4
5文字目は1文字目と同じ6文字目は2文字目と同じ……と変換していく。
変換した値を2進数にして頭に0をつける。
各文字を結合。
ここまで第一段階。
593 :
590:2007/02/18(日) 22:07:13 ID:???
>>591 $File = basename($_SERVER['SCRIPT_NAME']);
にする
>>591 それで全てのechoが実行されるの?ほんとかよ
595 :
590:2007/02/18(日) 22:30:26 ID:???
第一段階でできた文字列を8文字ずつ分割しループ。
分割した値を10進数に変換
暗号化キーから、現在のループ回数%8の値文字目を取り出す。=$bとする
10進数にした値から暗号化キー文字数(strlen)を引くきchr()にかける。 = $aとする
ビット演算子 xor
$text = ord($a) ^ ord($b))
$textを再びchr()にかける。 8文字で分割したやつすべて上の処理して結合
暗号化キーは暗号化されたスクリプトの3行目あたり$codelock_lock変数に格納されてるものをbase64デコードして、
$codelock_unlockで検索すれば書いてある。
疲れたので続きはまた明日。
というか、複雑にするためかif文とかわざわざ文字列で書いてevalとかしてるしかなりめんどい。
このあとgzinflateとかbase64_decodeがものすごいからみあってくる。
簡単に書くと
コード -> 2進数 -> 10進数 -> ビットレベルで変換 -> base64デコード -> (deflate解凍) -> base64_decode -> deflate圧縮 -> deflate圧縮 -> base64_encode
かな。
これが暗号化する方法だから、複合化は逆順で。
まぁ明日まってろ。
おれは突っ込まないぞ
597 :
529:2007/02/18(日) 22:49:40 ID:???
訴えられても俺は知らんぞ。
599 :
nobodyさん:2007/02/18(日) 23:54:15 ID:RrKrWkvD
例外を投げるのにExceptionクラスを直接使わせたくない(使ったときコンパイル自体を防ぎたい)
のですがどうすればいいでしょうか?
>>597-598 >>590じゃないけど、いったいどこに何を訴えると言うのだww
むしろ簡単にクラックできる暗号化ソフトを有料で売ってる方が訴えられるぞw
601 :
nobodyさん:2007/02/19(月) 00:34:03 ID:axdehxdy
すみません、今、メールフォームでアンケートの入力内容を特定のアドレスに
送信するというのを作っています。
で、環境はwinでアパッチ+PHPなんですが、事前の準備としてphp.iniの設定が
良くわかりません。
[mail function]
; For Win32 only.
SMTP =
smtp_port = 25
; For Win32 only.
sendmail_from =
SMTPとsendmail_fromにはなにを入れたら良いんですか?
デフォルトではlocalhostが入っていましたが。。
契約しているプロバイダのsmtpと自分のプロバイダメールアドレスで良いんでしょうか・
試しにやってみたらエラーが出ました。。>SMTP server response: 503 No recipient(s)
よろしければ教えてください。よろしくお願いします。
テスト用のローカル環境だよな?
その昔radishってフリーソフトをインスコしてやったような希ガス
詳細は忘れた
603 :
nobodyさん:2007/02/19(月) 00:47:20 ID:axdehxdy
sendmailっていうのはリナックスに入っているメール送信機能ですよね?
winにはないから、どこかのsmtp設定する必要があるんですよね。
じゃあリナックス入れた方が良いんでしょうか?最終的にはレンタル鯖で
リナックスで操作することになると思うんですが、、
phpの勉強だけならwin環境で良いかと思ってたのですが、色々複合して
やろうとすると結構不便なのかなー
605 :
nobodyさん:2007/02/19(月) 01:32:03 ID:axdehxdy
test.php?fileName=abc.swf
などのようにして動的にファイルを読み込んでいて。
受けて側を↓にしてます。
readfile("{root}/files/" . $_GET["fileName"]);
この{root}以下に重要なファイルがあるのですが、
/files/以下だけは、どのファイルを読み込まれてもOKです。
このようなロジックで、/files/以外のディレクトリが
悪意のユーザーによって読み込まれてしまう可能性ってありますか??
日本語でおk
>>606 お前はとりあえず一度回線切って首(ry
つーか{root}ってなんだよ? 変数のつもり?
基礎からやり直せ。
つ相対パス
>>606 ../secret.txt
って入力されたらアウトかな。readfileの実装によるけど試してみる価値はある。
>>607-
>>610 すみません。説明が悪くて。
>>610 >../secret.txt
試してみました。で、これは大丈夫でした。404エラーになりました。
ディレクトリまで指定して、ファイル名だけをGETのパラメータにしているので、
大丈夫だと思っていますが、イタズラが結構多いので心配しています。
心配だったらファイル名正規表現でチェキするとか、
あらかじめファイル名のリスト用意しておくとか
>>611 いや、パスで指定してるんだから404は関係ない。
URLエンコードしたのでこれで試してみて。
test.php?fileName=%2e%2e%2fsecret%2etxt
常套手段で普通にアウトなんだけどな。
>>613 > いや、パスで指定してるんだから404は関係ない。
確かに!!そうですね。
> URLエンコードしたのでこれで試してみて。
> test.php?fileName=%2e%2e%2fsecret%2etxt
ははは、駄目でした。見つかっちゃいました。
>>612 > 心配だったらファイル名正規表現でチェキするとか、
なるほど、そうしたら、.htaccessで↓のように書きました。
RewriteRule ^([a-z0-9]+)\.php\?fileName=([a-z0-9\.]+)$ $1.php?fileName=$2
RewriteRule ^([a-z0-9]+)\.php\?fileName=(.+)$ /404.htm
↑これで、動作的にも上のような問題にも対応できそうですが、
他に問題点などありますか?
$_GET["fileName"]
を正規表現でチェックしろってことだろ?
".."を含んでる場合はあぶないよな?
あと、ブラックよりホワイトチェックのがよい
fsockopen()でソケット接続後にbodyだけを抽出したいんですが、
何か良い方法ないでしょうか??
$fp = fsockopen($host, 80, $errno, $errstr, 30);
while(!feof($fp)){ $line .= fgets($fp); }
fclose($fp);
知識が偏ってる希ガスw
>>616 > $_GET["fileName"]
> を正規表現でチェックしろってことだろ?
あ、確かに。このパラメータ限定で.も入らないようにチェックします。
> あと、ブラックよりホワイトチェックのがよい
すみません、これで最後ですが、この「ホワイトチェック」ってどういう意味でしょうか?
googleで「ホワイトチェック」でも「ホワイトチェック php」でも「ホワイトチェック プログラム」でも、
検索してみたのですが、ホワイトチェック「柄」のページばかり引っ掛かってしまってみつかりませんでした…
>>620 普通にそのページは違くね?
<?php
$allowFileList = array('ok.txt', 'ok2.txt', 'ok.swf');//許可するファイルのリスト。(ホワイトリスト)
$fileName = $_GET['fileName'] || array();
if (in_array($fileName, $allowFileList)) {//ここ。
//処理
} else { die('不正なファイル名です。';) }
?>
OKなファイル名に一致してるかチェック。
623 :
間違えた:2007/02/19(月) 03:56:27 ID:???
$fileName = $_GET['fileName'] || array();
↓
$fileName = $_GET['fileName'] || '';
>>620-623 なるほど、確かにその方が安全な実装ですね。
「ホワイトリスト」も初めて聞いた。
色々勉強になりました!ありがとぉ!
realpath()とdirname()使えば「特定ディレクトリ以下を許可」もできるね
もう1つ質問
$_GET["filename"]
このGETの値が自分のURLからきたかどうかチェックするにはどうしたらいい?
>>626 sessionを保持しているかでチェックするのが吉。努々リファラでやること勿れ
628 :
617:2007/02/19(月) 07:28:18 ID:???
すみません、自己解決しました
>>624 その前に、もう一度ディレクトリ構成を考え直した方が良いのでは?
630 :
虚弱PHP:2007/02/19(月) 10:08:08 ID:???
>>626 基本的にCSRF対策と同じになるから、
CSRFで検索してみるといいと思うよ。
セッション&ワンタイムトークン使えばいい。
number_formatで小数点表示出来ますが、
小数点が発生する場合は、切り上げではなく切り捨てに
する場合、どういう設定にしたらいいのでしょうか?(6.6でも6にする)
floor
634 :
588:2007/02/19(月) 12:17:06 ID:???
>>593 あ、すいません。
凡ミスでした。
ただ、やはりうまくいきません
preg_match('/(.*)_.*\.php/', $File, $match){
の行について↓のエラーがでてしまいます
Parse error: parse error, unexpected '{'
>>594 全てのechoが実行されてしまうのは
>>588の書き方です。
紛らわしくて吸いません
preg_matchの返値はboolじゃないの
>>634 そのエラーメッセージを穴の空くほど見つめてみろ。答えが書いてある。
親切なエラーメッセが出てるのに、なぜ自分でそれを見て考えずに質問丸投げするのだお前は。
>>635 アホ。配列だよ。
638 :
616:2007/02/19(月) 13:04:41 ID:???
ブラック、ホワイトチェックってのは俺の造語だったかもだわ
〜リストは一般的だが、概念としてはリストに限らんだろ
ブラック:通してはいけないものをチェックしてクリーンにする
ホワイト:通してよいものをチェックしてクリーンにする
どっちがより安全かはわかるよな
639 :
nobodyさん:2007/02/19(月) 13:10:28 ID:kbGuwf2q
書き方について質問です。
■1番目
if($a==1){
echo"正解";
}else{
echo"不正解";
exit;
}
■2番目
if($a!=1){
echo"不正解";
exit;
}
echo"不正解";
やってる内容は同じですが一番目と二番目の書き方でどちらが妥当でしょうか?
1番目だな。 $a==2だったらとかを加えるときに加えやすい。
俺だったら
result = "不正解";
if($a==1){
result = "正解";
}
echo result;
だな。途中にどんな条件が加わってもOKだからメンテしやすい。
641 :
nobodyさん:2007/02/19(月) 13:26:50 ID:kbGuwf2q
ありがとうございます。メンテしやすさを考えて書いて見ます。
//代入があまり好きでない
$result = array("不正解","正解");
if( $a==1 ) {
$result[$a];//正解
} else {
die($result[$a]);//不正解
}
条件が増える可能性があるならswitchだろ
switch($a){
1:echo '正解';break;
default: echo '不正解';break;
}
exit;
あくまで追加を考えなければ
echo $a==1 ? "正解":"不正解";
ってのもありじゃない?
PHP4にてクラスに初めて挑戦してるんですが、
メンバ変数の宣言(var $var;)を行わなくても
特に問題なくスクリプトは動作します。
宣言することにはどういった意味があるんでしょうか。
646 :
虚弱PHP:2007/02/19(月) 14:15:02 ID:???
>>645 メンバ変数じゃなくて、ローカル変数になってない??
ゴガギーン
ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!出てこい
>>636!!
「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
グループで開発するときに変に中身を弄られたくないものに使うって感じ。
一人でも引き継いだりするときあるならちゃんとやっとくのがマナー
>>635=
>>637=
>>647=PHPの公式マニュアルすら読めない基地害
>>634の事例におけるpreg_matchの返値がboolだと言い張る超チンカスくんwww
最近こういう基地害が増えて困るね。
>>649 下スレだからまぁ許してあげなよ
まぁできればマニュアルと過去ログくらいは見てもらえたら嬉しいけどね
誰か下スレwikiとか作ってくれないかなw
お前、必死だなw
作った奴は広告で稼ぐだろうw
654 :
nobodyさん:2007/02/19(月) 15:19:26 ID:QDcNnbeD
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
を追加してない。もしくは追加はしたがApacheの再起動をしてない。
>>656 ありがとうございました。
phps が php になってましたorz
echoとprintって違うんだね。はじめてしった
おなじじゃないだろ。だいじょうぶか?
1: 【PHP】Lvうpしたいので宿題ください (191)
というスレがsageられてるのにあがっているのは仕様ですが?
>>662 そういう仕様だから「しよう」がない。
ガハハハァァァ.........!
セッションのすばらしい書き方を教えてください。
670 :
665:2007/02/19(月) 19:22:01 ID:???
すみません、自己解決しました
671 :
665:2007/02/19(月) 19:34:41 ID:???
phpって習得が簡単なだけにある程度まで使える奴になったら
>>639みたいな単純な部分でどれだけ工夫できるかが勝負だよな
>>669 マニュアルに超具体的に書いてあるだろ。
673 :
nobodyさん:2007/02/19(月) 19:58:09 ID:aXeEKgI5
PHPでアフィリエイトプログラムを構築したいのですが
構築の仕方が載っている本かサイトを教えてください
金払って作ってもらえ
そんなニッチな本出てないだろ。
バリュコマとかA8とか登録して設計パクったほうがはやそう。
676 :
nobodyさん:2007/02/19(月) 20:23:34 ID:aXeEKgI5
A8とか見てみたんですけどいまいちよく分かりません
どっかにサイトがないでしょうか?
>>670 エラーが出るたびにexitして処理止めるとHTMLを最後まで読まないからいやなんだよな。
でも、
エラーがあるたびにexitすると処理が読みやすいんだよな
>>676 パクるかそれが難しければアフィリエイトの本(アフィで儲ける用の本でも)
買ってきて仕組みを理解して設計すればいい。
設計しちゃえばPHPで作ろうが何で作ろうが同じでしょ。
>>676 すでにあるアフィリサービスを自分で使ってみて、
それでもクローンを作れないレベルなら、どちらにしろ実力不足。
お前には100年早いから諦めろ。
で、そんなのが載った本があるわけないだろ。
お前みたいな他力本願のチンカスに、たかだが2000円かそこらの本でノウハウ教えるわけがない。
システム制作を請け負えばそれで100万円単位でお金もらえるんだから。
PHP使い慣れてくると他の言語がめんどくさくなってくる・・・・
いきなりPHP言語勉強するとあれだよな
>>676 素人が、アフィのような金に関わるシステムを作るのは止めとけ。
業務システムを何件か構築した経験がないと辛いぞ。
それらしいものが出来ても、後々大変なトラブルになりかねない。
682 :
676:2007/02/19(月) 21:08:52 ID:aXeEKgI5
>>681 それでも、構築したいので
>>681さんが始めて構築して躓いたところがあれば教えてください。
基礎ができないのにいきなり応用はこれいかに
俺が友達にプログラム組めること言ったら友達に
「出会い系サイト作って金と女でウハウハしようぜ」と言ってきた
今時出会い系サイトでそんな夢見れないことを言い出せなかったから承諾した
死にたい
PHPとの連携のためにJavaScript覚えてるんだけど、若いころからやっときゃよかった。
686 :
676:2007/02/19(月) 21:39:44 ID:aXeEKgI5
>>683 アフィリエイト的な事は組み込むけど
>>681のような事態にならないために
システム自体はなるべく簡易化して
トラブルの発生率を下げようかと思います。
トラブルが発生したときも2ちゃんで質問するんだろな、どーせw
688 :
676:2007/02/19(月) 21:53:11 ID:aXeEKgI5
そん時はよろしくお願いします。(;´Д`)
と言うのは冗談で、動作テストしてからやりますよ。
アフィは金を小数点で数えるイメージあるから面倒くさそうだな
ソース公開する気があるなら手伝ってもいいぜ。
691 :
nobodyさん:2007/02/19(月) 22:04:02 ID:ycTIkwVf
>>688 トラブルってのはな、テストではわからなかった問題が発覚するからこそトラブルなんだよ。
692 :
588:2007/02/19(月) 22:05:45 ID:???
>>636 できました^^
穴があくほどみつめてもわからなかったけど、手当たり次第にやったらなんとか。
<?php
preg_match('/(.*)_.*\.php/', $File, $match);
switch ($match[1]){
case 'top':
echo 'トップ';
break;
case 'und':
echo 'アンダー';
break;
default:
echo 'その他';
}
?>
アドバイス頂いた皆さんThanks
>>688 お前のレベルがどの程度あるのか分からないから説明のしようがない。
今までの書き込みから推測するレベルだと。
無理だからやめとけ。
>>688 取りあえず分からないところをハッキリさせてから又来てください。
695 :
nobodyさん:2007/02/19(月) 23:18:22 ID:kbGuwf2q
どこかのページでみたんですけどホワイトリストってなんですか?
アクセスを許可するためのリスト。
デフォルトでアクセス禁止、リストに載ってるものだけ許可する。
対してブラックリストはアクセスを禁止するリスト。
デフォルトで誰でもアクセス許可、リストに載ってるものだけ禁止する。
Allow=ホワイト
Deny=ブラック
でおk?
わかりやすい説明です。
ありがとうございました。
ソース元がわかりました。
日本のPHP本家のPDFを拝見しましたことを記しておきます。
イィィヤッッッッホオォォォー
* + 巛 ヽ
〒 ! +
+ 。 | |
* + / / +
∧_∧ / /
(´∀` / / +
,- f
/ ュヘ | *
〈_} ) |
/ ! +
./ ,ヘ |
ガタン ||| j / | | |||
―――――――――――――
それがWebProg板クォリティ―
>>700 反応ありがとうございます。
httpd.confのところです
>>702 バーチャルホストの設定が間違ってると思われます
>>701 > イィィヤッッッッホオォォォー
>
> * + 巛 ヽ
> 〒 ! +
> + 。 | |
> * + / / +
> ∧_∧ / /
> (´∀` / / +
> ,- f
> / ュヘ | *
> 〈_} ) |
> / ! +
> ./ ,ヘ |
> ガタン ||| j / | | |||
> ―――――――――――――
> それがWebProg板クォリティ―
すみません、チンチンが描かれていないのですが。
ディテールまでしっかりとお願いします。
>>698 バーチャルホストの設定が間違えてるよきっと
709 :
nobodyさん:2007/02/20(火) 02:55:38 ID:G1OnfDcX
preg_matchを使って文章を抽出する仕組みを作っています。
fgetsを使って一行一行読んで抽出する仕組みで、特定の文字列(この場合はend)が来たらその文字列は抽出せずに
処理を終了したいと考えています。
while (!feof($fp)) {
$line = fgets($fp);
$flag = 0;
if (preg_match("/^<h3>/",$line)){
echo $line;
while ($flag == 0) {
$line = fgets($fp);
echo $line;
if (preg_match("/^end/",$line))
{
$flag = 1;
break;
}
}
}
if ($flag == 1){
break;
}
}
これだとendと言う文字を含む行も抽出してしまいます。何かいい方法は無いでしょうか?
preg_match('/^end$/', rtrim($line))
>>698 いや、違う。きっとバーチャルホストの設定が間違ってるんだよ。
>>710 rtrimは文字列右側の空白しか取れないはずじゃ・・・。
行ごと消したいんですが、何か自分勘違いしてます?
713 :
nobodyさん:2007/02/20(火) 03:18:00 ID:G1OnfDcX
すいませんidが消えてました。
>>712は自分です。
714 :
nobodyさん:2007/02/20(火) 03:29:52 ID:G1OnfDcX
echo $line;の位置を変えてif (!preg_match("/^end/",$line))の中に入れてみたら
出来ました。
お騒がせしてスイマセンでした。
>>714 なんでそういう風になったのか理解してないと
同じこと何度も繰り返すよ・・・
>>715 一応考えた上の結果でやったので大丈夫です。
あと、忠告有難うございます。
717 :
nobodyさん:2007/02/20(火) 04:31:19 ID:R5rvnRFt
>>716 送りがなが間違っています。
「有難う」ではなく「有り難う」です。
よくある間違いですが、不愉快に思われる方も多いと思いますので、
訂正をお願いします。
一応考えた上の結果でやったので大丈夫です。
あと、忠告有り難うございます。
どっちも正解だろ。
教示と教授の違いのほうが不愉快に思う人は多いと思った。
>717は、どっちも正解のような気がする・・・。
有り難たうでいいよもう
そんな事で不愉快に思う人の気が知れない。
ここはキレやすい若者の多いスレですね
正直、逐一指摘するヤツの方が不快
育児イライラどう発散してる?育児板
http://life8.2ch.net/test/read.cgi/baby/1041904343/ 141 名前:名無しの心子知らず[] 投稿日:03/03/10(月) 22:53 ID:DvGFLzmy
浮気でストレス発散・・・
192 名前:キツネ[] 投稿日:04/04/19(月) 20:50 ID:Yl8B2LzA
私も、部屋で、タバコプカプカ。子供、娘2歳の近くで。泣きやまない時は、ビンタ
。ストレスだらけ。1日、タバコ、2箱。
248 名前:名無しの心子知らず[] 投稿日:04/09/24(金) 03:04:39 ID:FYZZtlFm
たまりにたまった悪がきへの思い。ある時おもいっきり頭なぐってやった。もっと殴ってやりたい。
267 名前:名無しの心子知らず[sage] 投稿日:04/10/24(日) 01:04:10 ID:KwUUn3a/
発散法は赤子放置で2ちゃん。
282 名前:名無しの心子知らず[sage] 投稿日:05/02/05(土) 19:04:54 ID:4+gVqtlV
旦那のおでこをバシバシ叩く。とにかく叩く。
306 名前:名無しの心子知らず[sage] 投稿日:2005/03/23(水) 00:46:46 ID:Ab3/+gku
叱る声も何度か同じマンションの住人に虐待じゃないかと疑われるような叱り方
307 名前:名無しの心子知らず[] 投稿日:2005/04/02(土) 23:31:07 ID:WtKjdAOb
赤さんに苛々することはあまりないけど夫に苛々しっぱなしです。
そういう時は夫をこきつかって茶わん洗いやら買物やら散歩やら全てやってもらってます。
>>725 子供→子ども(当て字)
頭なぐってやった。もっと殴ってやりたい。→頭殴ってやった。もっと殴ってやりたい。(表記の揺れ)
茶わん洗いやら買物やら散歩やら→茶わん洗い、買物、又は散歩(助詞の連続)
もらってます。 →もらっています。(助詞不適切)
名無しの心子知らず→親の心子知らず(慣用表現の誤用)
たびたびですが、訂正をお願いします。
プログラミング言語をやられる前に、自然言語を勉強して下さい。
オブジェクト指向を分かりやすく理解できる解説をくれ
728 :
虚弱PHP:2007/02/20(火) 11:10:57 ID:???
>>727 結城浩氏のJava関連の本を読めばいいと思う。
Javaやるといいよ。
PHPでオブジェクト指向やると、
「オブジェクト指向いらねー」となる可能性大。
729 :
nobodyさん:2007/02/20(火) 11:30:27 ID:lw8NzlOC
>>728 そう!そうそうまさにそれよ
オブジェクト指向を利用しなくても十分良いものを作れるという勝手な想像をしていた。
でも何かしら理由があって解説してるんだろうから、見過ごせなかった。
参考にします。ありがとう。
>>698 亀レスだが、バーチャルホストの設定をみなおしてみたら?
>>728 PHPでオブジェクト指向はやってもあまり意味ないのでしょうか?
今ちょうど勉強しているのですが
PHP5ならPHPだからってのはないのでは?
PHP5よりPHPまでこそないでしょ?
735 :
虚弱PHP:2007/02/20(火) 12:51:58 ID:???
>>732 いや、そんなことは無いと思います。
自分もオブジェクト指向な感じで書いてるし。
ただ、PHPでオブジェクト指向の勉強をすると、
勉強してる途中で「役に立つのかなぁ?」という疑問を生じやすいと思う。
そういう疑問が勉強を妨げちゃったりする。
Javaで使われているようなオブジェクト指向は勉強には最適だと思う。
中にはPHPでは使わなくていいパターンもあると思う。
そこら辺は設計の技術を身に着けていく過程で取捨選択すればいいんじゃないかな。
偉そうなこと言ってるけど、自分も全然ダメだけどさw
中規模〜大規模あたりになるとオブジェクト指向の有り難味が分かるが
小規模では逆に鬱陶しく感じるんだろうな
737 :
nobodyさん:2007/02/20(火) 14:15:35 ID:/OHhVetq
アフェリエイトを提供するプログラムのような物を作りたいのですが、PHPとMYSQLの組み合わせがベストでしょうか?簡単にできるオススメありましたら教えて下さい。
お前には無理
お前にも無理
740 :
nobodyさん:2007/02/20(火) 14:32:08 ID:/OHhVetq
別に俺が作るわけじゃなくて、外注するつもりなんだけど、ある程度の予備知識が必要かなと
742 :
虚弱PHP:2007/02/20(火) 14:47:54 ID:???
PHP+MySQLからJava+Oracleになったら、
見積もりは3倍以上になりそうw
小規模ならDBはSQLiteでいいんじゃあるまいか。
金取るシステムでSQLiteってw
苦笑した
そもそもSQLを使う必要があるのかと
テキストファイルでトランザクション管理すんのか?
>>743 そのように感じるのはお前が最下層の雇われ人だから。
経営者の視点で実質的なことを考えると、SQLiteで十分な場合もあるし、
>>744の言うように、DBが不要な場合もある。
ただ、総合的なことを考えるとMySQLで作ったほうが結局ラクだけど。
どうせタダで使えるんだし。
商用の場合MySQLはタダじゃないだろ
SQLiteやDBを使わないことと経営者か社員かは関係ないし
それらにOK出してしまう経営者は現場の勉強不足だと思うね
749 :
虚弱PHP:2007/02/20(火) 15:11:43 ID:???
テキストファイルで金取るシステム作ってるところもあるしね。
SQLiteはトランザクションサポートしてるし、
単純なクエリーならMySQLよりも速いし、
ライセンスは単純だし。
逆に具体的な問題指摘してもらった方がいいんじゃないかな?
俺はよくわかってないしw
PostgreSQLって選択肢もあるよね。
750 :
軟式PHP:2007/02/20(火) 15:13:42 ID:???
GPLの元の開発でよければ無料だけどね>>MySQL
俺は基本的にPostgreSQLばっかりだなぁ。
アフィの場合はDBうんぬんより、他に気をつけなければならない点が色々あると思うんだが。
結局、何処で課金が発生するのかにもよるし不正クリックなどの問題もあるからね。
どちらにしろ情報が限られているからSQLに依存しなくても簡単に作れる。
あとは速度の問題だろ、そういう部分ではオンメモリで常駐するSQLの方に分がある。
752 :
66:2007/02/20(火) 15:19:53 ID:elhWeI/T
小規模と中規模との境目はどこなんだと。
そんな境界線のないものにこだわるあたりが小物だと。
754 :
nobodyさん:2007/02/20(火) 15:23:52 ID:ZbvgNiBK
<a>タグ内のURLのみを取り出したいと思っています。
$html_code=trim('<a href="
http://www.2ch.net/" target="_blank">2ch</a>');
list($html_a01,$html_a02) = explode( '<a href="', $html_code);
list($html_a03,$html_a04) = explode( '" target="_blank">', $html_a02);
echo $html_a03; //URLが表示
サンプルで上記のようなコードを書いたのですが、あまり正しく無いような気がします。
もっと簡略化、もしくは最適化出来る方法・書き方はありませんでしょうか?
>>754 正規表現を使ったほうがいいとおもわれ。
757 :
754:2007/02/20(火) 15:40:27 ID:???
>>755-756 ちょっと書き方が分からないのですが、、、
preg_match("/
http://([0-9a-zA-Z])[\"]/",$html_code,$html_array);
ではないですよね?
ではないですよ。
>>748 > 商用の場合MySQLはタダじゃない
どこにそんなライセンスがある??
商用の場合だってタダのケースが多々あるぞ。
逆に言えば、どのケースの場合が有料なのかを示してほしいね。
そっちのほうが少ないから。
760 :
nobodyさん:2007/02/20(火) 15:44:54 ID:/OHhVetq
>>741-752 ありがトン
セキュリティーはSSIで対応するとして、ワンクリックで課金というようなものでもないです。
ただ、内部のものが気軽にいじれるんでは困るので…
postgreSQL調べてみます。
>>757 「<a href="」と「" target="_blank">」にはさまれてる、という書き方が楽かと。
762 :
nobodyさん:2007/02/20(火) 15:52:55 ID:rS4uJTur
function hoge() {
if (条件) {
$str = "string";
return $str;
}
return true;
}
こんな感じで、条件によって返り値の型が違うのですが、
問題ないでしょうか?
>>762 動くか動かないかで言えば動く。
でも普通、返り値があるならそれを、そうでなければ false を返した方が
自然な流れじゃね?
修正したりするときも、そっちのがわかり易いと思う。
765 :
nobodyさん:2007/02/20(火) 15:57:26 ID:rS4uJTur
>>764 やっぱそうですよね。
他の書き方に変えたいと思います。
どうもありがとうございました。
>>762 返り値の型が違うこと自体は問題ないけど、意味のわからんコードは問題ある。
nullでいいよもう
>>762 PHPは標準関数でも戻り値がmixedのやつが多い
769 :
nobodyさん:2007/02/20(火) 16:03:15 ID:rS4uJTur
ちょっと意味を読み間違えていました。
function hoge() {
if (条件) {
$str = "string";
return $str;
}
return false;
}
これなら大丈夫でしょうか?
771 :
nobodyさん:2007/02/20(火) 16:10:11 ID:rS4uJTur
>>770 どうもありがとうございます。
これでまた少し賢くなりました。
早速続き書いてきます。
772 :
nobodyさん:2007/02/20(火) 16:54:56 ID:wxBC7nWr
>>769 こういう関数を作る時、false→エラーとなるような場合には
・関数内でエラー処理までさせる
・返り値で判別させる
と迷うのですが、普通はどちらにするものなのでしょうか。
今は関数の使いどころに応じて使い分けています。
>>772 普通かどうかはわからないが
if (!$str = hoge()) {
error();
}
とかやって、falseを返してエラー関数を呼び出すな
好き嫌いありそうだけど。
関数・クラス設計上ありえないエラーは、内部で
無理やりExitさせたりしてる。
入力によっては有り得るエラーはCall元で処理させてる。
好みとか決めの問題、仕様の問題になるけど、基本返り値で判断させてる。
関数内でエラーチェックさせてると、後で見たときにエラーチェックをしているかどうかを
関数の中を見ないといけないのが面倒だし、返り値でfalseを使う以上、
返り値を見るのがスジかなあと思っているので。
ただし、その関数があちこちで呼ばれているなどで、関数内で判断させた方がいい場合もあるし、
一概には言えない。
主な仕様を決めてしまって、それにのっとってやるのが良いと思う。
となると、やっぱphp5で気楽にthrowできることのありがたみが身にしみるな。
どうして例外が出てこないのか不思議だったw
778 :
虚弱PHP:2007/02/20(火) 18:05:14 ID:???
自分で作ったプログラムはなるべくエラーを返さずに済むようにするw
throwも問題はあるから、あんまり使いまくるのは良く無さそう。
>>763 MySQLのダメダメなところは、そのライセンス体系の複雑さと曖昧さ。
「再頒布しないのならライセンス不要」と言ってる一方で、
「■MySQLを含んだソフトウェアを顧客に販売し、顧客が自身のマシンに当該ソフトウェアをインストールする場合」はライセンスが必要だとも言っている。
この両者は矛盾する。
なぜなら、「頒布」という言葉は多数に広く配布することだから。
ある特定の顧客一人(一社)に有償で譲渡することの何が「頒布」に当たるのか? MySQL ABはその辺がダメだ。
数学的解釈では何の問題もないけどね。
もちろんその解釈じゃ駄目なんだろうけど。
781 :
虚弱PHP:2007/02/20(火) 18:28:46 ID:???
MySQLのライセンスの話になると、
ライセンス発行してる会社ですら曖昧な事しか言わなくなる。
心配ならライセンス買っとけって言われるんだよね。
というわけで、俺はMySQLライセンスをきちんと理解してませんw
783 :
nobodyさん:2007/02/20(火) 18:32:48 ID:qg/4MsFw
オブジェクト指向を勉強しようということで、カウンターから始めてみました。
以下のクラスを$action->IP_Check($_SERVER['REMOTE_ADDR'])
で呼び出してみたところfgetsとfcloseで"supplied argument is not a valid stream resource"
とエラーログを吐かれました。これは「クラス内でファイルを読み書きするな」ってことですか?
というか、オブジェクト指向はこんな記法であってるでしょうか?
class IP_Check{
function IP_Check( $IP ){
$fp = fopen($IPchecklog, "r");
$compareIP = fgets($fp, 1024);
fclose($fp);
if($IP == $compareIP){ return false; }
else { return true; }
}
}
>>783 本当にファイルがopenできてる? 失敗しているんじゃない?
fopenしたあとの$fpの値を調べてみるよろし。おそらくfalseになってる。
785 :
軟式PHP:2007/02/20(火) 18:35:26 ID:???
>>783 IPchecklogってどっから来たんだ。
あとfopenの後はエラー処理をしませう。
786 :
nobodyさん:2007/02/20(火) 18:40:50 ID:wxBC7nWr
787 :
783:2007/02/20(火) 18:45:20 ID:qg/4MsFw
>>784,785
方々のご推察の通り$IPchecklogがクラスの外にあり、
ファイルオープンできてませんでした。
ありがとうございました。
コイツは前途多難だな .... orz
まあがんばれ。結果チェックなんて面倒くさいと思いがちだが
結果をチェックしないほうが事態が面倒くさくなることのほうが多いぞ
789 :
虚弱PHP:2007/02/20(火) 18:51:45 ID:???
>>782 throwはgoto文より強力な制御構造だから。
使い方に注意しないと、
本当にやるべきことをやってるのか後で確認するのが辛くなる。
小規模だったら問題ないと思うけど。
>>788 結果チェックより事前チェックだろw
できるだけ早い時期に障害を見つけるのが肝要だ。
fileの処理でいうなら、ファイルを開く前にファイルの存在チェックや
読み取り(書き取り)可能かをチェックすることだ。
>>783 オブジェクト指向ってのは書き方の概念というか
抽象的な物だからこれが正解ってのはないけど
そんな感じに一つのオブジェクトでの役割を簡潔にして
同じような処理は関数化しておいたりして
組み立てていく感じでいいと思うよ。や、俺もよくわかってないが…
>>781 本家本元のサイト見ても、曖昧な記述しか載ってないからねww
●●の場合はライセンス購入を「お勧めします」だもんw
「購入する必要があります」って断定じゃないからね。
>>779 再頒布若しくはMySQLを含んだソフトウェア販売の場合はライセンスを取得しなくてはならない
ってことでしょ?
何が難解なの?
>>793 アフィ厨が言ってるようなバックエンドでMySQLが動いてる
商用Webアプリは「再頒布」でも「ソフトウェア販売」でもないよな?
これはどっちだ?無償とも有償とも読み取れないぞ
もうOracleかDB2でいいよ
そもそも
>>737の、
>PHPとMYSQLの組み合わせがベストでしょうか?
という質問をなんでPHPのくだ質スレでするのか…?
>>796 DB2は、とっくの昔にMSのSQLServerに吸収されちゃっているけど、何か?
799 :
nobodyさん:2007/02/20(火) 20:55:07 ID:wdqQBZkR
>>801 順序が逆だろw
日本語訳じゃなくて、原文(英文)をよく読め。
>>789 うーん、gotoはどんな処理をしているのかが非常にわかりにくくなる面があるけど、throwは処理を中断する方向にしかいかないし、そもそも「どこまで飛ぶか」を意識する必要もないんじゃないかな。
エラーとか入力チェックとか変数のnullチェックとかで、つじつまを合わせるのが難しいと感じたら、すぐthrowするくらいの勢いで問題ないと思うよ。
まあ確かに限度はあるだろうけど・・・。
うん。throwはばしばしとばしまくりで問題ないと思う。
気をつけなければならないのはcatchの方。
要らないやつまで細かくcatchすると、どこで捕捉されているのかわからなくなる。
>>803-804 throwってどうやって使えばいいの?
ifとかexitとかで代用できそうな気がしていまいちよく分からない
俺も知りたいです。
or die使いまくりなもんで。。
>>805 代用できなくはないけど、例外処理のほうがフレキシブル。
exitは一回呼び出したら全てが終了するけど、throwした例外はcatchさえすれば、回復して元の処理を継続することができる。
たくさんthrowしても、まとめて全部catchすることもできるし、catchブロックはエラー等の対処という明確な位置づけで考えることができるから、一度理解してしまえばすごくわかりやすいしね。
とにかく、エラー処理(=面倒くさい処理)を一箇所にまとめることで、コードがとても清潔で健康な状態に保たれる。
>>802 > 原文(英文)をよく読め。
その必要は全くない。
公式な日本語訳が存在してるんだから。
if (func1()==false) {
エラー処理
}
if (func2()==false) {
エラー処理
}
func3();
810 :
809:2007/02/20(火) 22:36:21 ID:???
try {
func1();
func2();
func3();
}
catch {
エラー処理
}
811 :
809:2007/02/20(火) 22:37:57 ID:???
いまいちな例かもしれんが、
プログラム組んでると正常処理が異常処理に埋もれてしまう。
>>809 try,catch使うと、これらを分離しやすい。
>>810 のもtry,catchの利点かもな
いや、わかりやすかった
813 :
809:2007/02/20(火) 22:41:18 ID:???
一方、どの関数からどんな例外が投げられるかが
>>810 ではわからん。というのはデメリットだな。
>>789 がgotoより強力といってるのはこれのことかと。
>>813 そういうのはthrowする側が例外オブジェクトで通知してくることなんじゃないかな。
815 :
nobodyさん:2007/02/20(火) 23:08:40 ID:WMH2bERy
$subject = "";
if(preg_match('/^([0-9a-zA-Z]*)$/', $subject))
echo "マッチしました";
else
echo "マッチしませんでした";
$subject は、空文字列 ( "" ) なのでこの正規表現では
マッチしないはずなのですが、「マッチしました」が出力されます?
なんででしょうか……。
preg_match('/^([0-9a-zA-Z].*)$/', $subject)
817 :
軟式PHP:2007/02/20(火) 23:14:04 ID:???
*だからね。
>>815 *は0以上マッチすることを表す。
つまり、空文字にもマッチする。
恐らく君が望む場合*を+(一回以上のマッチ)に変更しなければならない。
819 :
nobodyさん:2007/02/20(火) 23:19:40 ID:WMH2bERy
820 :
816:2007/02/20(火) 23:20:18 ID:???
すまん、1文字以上は+だったわ
あれ?ドットってなんだっけ?1文字だけだったよな
無 理 す ん な
正規表現のレスをした後って、必ず一抹の不安が残るよねw
一応テストしてから書くようにしているからさほど心配はしないけどなw
フォームの値を取得する際にどこから来たのか調べたいので
$hoge = ほにゃらら
if($hoge != $_SERVER["SERVER_NAME"]) {
error();
}
とやりたいのですがほにゃららに当てはまる処理はどのように記述したら良いでしょうか?
$_SERVER["HTTP_REFERER"]
まあ偽装できるけどね。
あと!=じゃなくてstrposとか部分一致で判断しないとダメ。
$AcceptHost = "/example\.com/";
if( preg_match($AcceptHost, $SERVER['HTTP_REFERER']) ) {
error();
}
- if( preg_match($AcceptHost, $SERVER['HTTP_REFERER']) ) {
+ if( !preg_match($AcceptHost, $SERVER['HTTP_REFERER']) ) {
>>824 判定させる意味が分かんないけど
>>825の言っている様に
どこから来たのかというのがリファラーで
それを吐かない場合にエラーを吐くのであれば''かnullか!で
strposだと
ドメインがabc.comでリファラーがabcd.comだとエラーになりませんよね?
aabc.comとabc.comです
"
http://".$_SERVER["SERVER_NAME"]
にすればいいじゃん
くそ、Janeのバグか。
"えいちてぃーてぃーぴー://".$_SERVER["SERVER_NAME"]
にすればいいじゃん。
同じだろ
いや、IEだと普通に見えるけどJaneだとリンクが化けてるんだよ
835 :
nobodyさん:2007/02/21(水) 06:00:08 ID:SAIWRW73
<?php
include $_POST....
?>
↑で色々なHP表示させたんですが、サイトによっては
文字化けしたり、しなかったりします。 何故なんでしょうか?
yahooはOKで、googleは化けたりします・・・うーん
>>832 それでwwwありとwwwなしのURLをどう区別する?