【PHP】下らねぇ質問はID出して書き込みやがれ 83
質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 82
http://pc11.2ch.net/test/read.cgi/php/1236532468/ ◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
【簡易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に保存?
→ 好きにしてください
7 :
nobodyさん :2009/04/06(月) 11:40:29 ID:YGaHAQ+b
くだらない質問ですがよろしくお願いします。 fopenで開いたファイルをforeachで1行ずつ表示するにはどうしたらいいでしょうか? $fp = fopen("file.txt","r"); foreach( この続きがわかりません。よろしくお願いします。
>>7 $file = file("file.txt")
foreach ($file as $v) echo $v;
9 :
7 :2009/04/06(月) 12:05:09 ID:YGaHAQ+b
>>8 レスありがとうございます。
fileじゃなくてfopenで開いたファイルをforeachで1行ずつ表示したいと思ってます。
よろしくお願いします。
>>9 君の用途ではfopenは適さないんだけどな・・・
$filename = "../data/exp.txt";
$size = filesize($filename);
$fp = fopen($filename,"r") or die("ng");
$str = fread($fp,$size);
echo $str;
あと
---------------------------------------------------------------------
最近のスクリプト言語は機能が多く、基本的な機能はほとんど実装されているので、
アルゴリズムをどうこうするより、どの機能を使うか選ぶ方が重要だったりしますね(コーディングの効率的にも)。
---------------------------------------------------------------------
>>9 それとforeachは配列を回すものだから勘違いしてることに気づこうね
君の場合はfopenを使う場面じゃないから
12 :
nobodyさん :2009/04/06(月) 12:52:50 ID:JQHQzsie
print_rで見ると以下の構造の配列があります サンプルのため値は4つしかありませんが、値の数は不定数と捉えてください Array ( [0]=>Array ( [0]=>apd_set_socket_session_trace() [1]=>apd_set_socket_session_trace() ) [1]=>Array ( [0]=>aspell_check() [1]=>aspell_check() ) ) この配列を以下のように直したいのですがどのようにしたらよろしいでしょうか? Array ( [0]=>apd_set_socket_session_trace() [1]=>apd_set_socket_session_trace() [2]=>aspell_check() [3]=>aspell_check() )
順に代入すればいい
foreach($input as $a){ foreach($a as $b){ $output[]=$b; } }
15 :
7 :2009/04/06(月) 13:42:50 ID:???
>>10 foreach使ってませんね。
簡単だと思ったのですが、難しいのかな?
>>15 当たり前だろ
fopenで開いたファイルは配列じゃないから無理に決まってるだろ
何でそんなにfopenにこだわるのか書け
>>7 fopenの意味を理解してない証拠
出直しておいで
18 :
7 :2009/04/06(月) 13:55:08 ID:???
>>16 昔知り合いに作ってもらった。
そのスクリプト忘れて知り合いと連絡取れないのでここで聞いた。
ここの人なら簡単にできると思った。
>>7 fopenで開いたものをforeachで出力する方法が好まれない理由がわからない初心者杉だろ
おとなしくfileとか使ってろ
$h=fopen($filename, "r") or die("NG");
while (!feof($h)) {
$b=fgets($h, 4096);
$s[]=$b;
}
fclose($h);
}
foreach ($s as $v) echo $v;
>>18 とりあえず、言動に気をつけましょう
そんなんでは教えてもらえませんよ
21 :
19 :2009/04/06(月) 14:02:08 ID:???
欲読め 最近のスクリプト言語は機能が多く、基本的な機能はほとんど実装されているので、 アルゴリズムをどうこうするより、どの機能を使うか選ぶ方が重要だったりしますね(コーディングの効率的にも)。
22 :
7 :2009/04/06(月) 14:17:56 ID:???
じゃあwhileでもいいです。
でも
>>19 のように fgets($h,4096);←4096とか数字は入れたくない。なぜならすべてのファイルに対応できないから。
これでお願いします。
>>7 答えは出てますね
ここは手取り足取りスレじゃないんで
>>7 はもう放置でおk
はい次の質問どうぞ
26 :
7 :2009/04/06(月) 14:28:17 ID:???
>>19 初心者を馬鹿にするのはどうかと思いますよ(自分も初心者のくせに)
ちなみにそれやるなら
while($b = fgets($fp,4096)){ }
こっちのほうが美しいですけどね。
>>7 は、アホ過ぎる。こんなの小学生でも分かるのに。
>while($b = fgets($fp,4096)){ } >?こっちのほうが美しいですけどね。 顔真っ赤っかで必死に反論考えたんだろうけど、それじゃ動きませんよっと とりあえず態度を改めた方がいい
>>26 それだとファイルの内容によってはエラーになるんだよな
初心者乙
30 :
7 :2009/04/06(月) 14:53:38 ID:???
2人のアホが言い合いしてるのは暇つぶしにはいいよね
fopenで開いたものをforeachにかけるとかwwwww バカもほどほどにしろよw
手っ取り早く行イテレーションしたいならSplFileObjectでもどうぞ。
34 :
7 :2009/04/06(月) 18:17:24 ID:???
>>33 日本語が読めないらしいですね
foreachでお願いしますね
まるまる書いてやらないと解らないのか? $file = new SplFileObject('file.txt'); foreach($file as $line) { // some operation } unset($file);
36 :
nobodyさん :2009/04/06(月) 19:26:35 ID:fgZcgjRX
反論者もIDだせばいいのにね。
PHPでC#とかにある様な try { } catch(Exception Error) { Debug.WriteLine(Error.Message); } finally() { } とかはありませんか?
try catchもあるよ
finally以外あるよ。 gotoよりもこっち実装しろと
はやく finally を実装してくれ。
44 :
nobodyさん :2009/04/06(月) 20:59:04 ID:2EYsJzxb
imagemagick で画像を保存して表示されるのじゃなく 保存せずにブラウザーに表示するにはどんな方法があるんでしょうか?
使ったことないけどblob2image ⇔ image2blob
46 :
nobodyさん :2009/04/06(月) 22:55:44 ID:Lg8L8FIC
PHPで以下のような書き方って出来ますか? $testの値が5なら「てst」と出力するのですができますでしょうか? <?php if ($test == 5): ?> てst <?php endif; ?>
47 :
nobodyさん :2009/04/06(月) 22:57:50 ID:tQxsy1N7
すいませんarray()はキーワードらしいんですけど特別な意味があるのでしょうか?
>>46 そのまんまできるけど試せばいいのに
>>47 文字通り配列を作成
詳しくはphp.net/array
50 :
49 :2009/04/06(月) 23:03:53 ID:9ymstZFd
すいませんID出し忘れました
51 :
nobodyさん :2009/04/06(月) 23:06:56 ID:5SFFX38L
php.iniでタイムゾーンを設定しなかった場合、 何を基準で時刻が表示されるのですか?
52 :
47 :2009/04/06(月) 23:07:37 ID:???
55 :
nobodyさん :2009/04/06(月) 23:18:12 ID:qkQqSy3E
phpの環境構築の質問です windowsです php5.2.9を一個インストールしました apacheを3つ(1.3と2.0と2.2)インストールしました apacheを三つ起動してphpを動かすことはできますでしょうか?
ポートをきちんと分ければいけるんちゃう?
58 :
nobodyさん :2009/04/06(月) 23:23:18 ID:tZqDzIhT
以下のようなコメントはダメって言われたのですが不具合はありませんでした なぜだめなのでしょうか? <?php /* echo 'テストです'; /* このコメントが問題を生じます */ */ ?>
60 :
nobodyさん :2009/04/06(月) 23:26:33 ID:LvefCDF1
$fopen = fopen("textfile.txt","w")って書き方を知りました $fopenにはリソースが入るらしいんですが、このことについてご教示お願いします fopenで読み込んだファイルはメモリに読み込まれるということでしょうか? ということはfcloseをしたら情報はメモリから消えるということになるのでしょうか?
これも仕様上正しい書き方になるわけだもんな /* /* echo 'テストです'; */
時々、正規表現中の */ とかぶってパニクる。
$foo = 5 + "10 Little Piggies"; 公式でこれ$fooが整数らしいんですけど何故ですか? 公式が間違えてるのでしょうか?
ビット演算子の勉強をしています $strに含まれる文字列を1bit右にずらしたいのですが思う通りの結果になりません どなたかご教示お願い致します $str ="abcde"; echo $str ^ 1;
67 :
66 :2009/04/06(月) 23:41:03 ID:PTpMIEWr
ID出し忘れました 申し訳ございません
俺がマジレスしてやると echo $str >> 1;
ここまでの質問は全部おれの自演 お陰で勢いが80超えた^^
なぜにIDを出して質問をしなくちゃいけないのか
甚だ疑問。
>>1 は死ね
出さなくていいほうがあるんだからそっちいけカス
73 :
nobodyさん :2009/04/07(火) 14:08:44 ID:4/ZzdyJu
PHPで作成したWEBシステムで、独自に吐かせているログをlogrotateしたいのですが、 PHPはapacheのモジュールとして動いているので、現在のapacheで運用されている # cat /etc/logrotate.d/httpd ------------------------------ /var/log/httpd/*log { missingok notifempty sharedscripts postrotate /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true endscript } ------------------------------ と同じものは書かなくても良いのですよね? 以下のもので大丈夫でしょうか? # vi /etc/logrotate.d/mysytem ------------------------------ /var/log/mysystem/systemlog { missingok } ------------------------------
>>73 ディストリは何使ってるんだ?それによって答えが若星変わる
75 :
nobodyさん :2009/04/07(火) 16:31:53 ID:4/ZzdyJu
>>74 ありがとうございます。
Red Hat Enterprise Linux ES release 3 です。
>>75 ああ、RHか
企業参入後のそれは使ったことないから控えとくわ
>>73 ディストリとか関係ないからw
/etc/logrotate.d/httpd にログファイルのパスを追加するだけ。
78 :
nobodyさん :2009/04/07(火) 17:30:41 ID:4/ZzdyJu
>>77 あ、そっか。。 ありがとうございます!
# vi /etc/logrotate.d/httpd
------------------------------
/var/log/httpd/*log /var/log/mysystem/systemlog {
missingok
notifempty
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}
------------------------------
82 :
nobodyさん :2009/04/07(火) 21:57:01 ID:nY33/bGj
csvファイルAからcsvファイルBへ特定の行だけを移動したいと思ってます。 チェックボックスで選ばれた行をAから削除しBへ書き込むプログラムを 色々考えたのですがさっぱり検討もつかず1週間経ちます どうかヒントだけでもいいので教えてください。
ファイルを2つ同時に開いて出したり入れたり
csvのカラム構造はどうなってるのさ 一意なキーがあればあとは簡単だと思うが
ttp://wikiwiki.jp/web/ 一応、一問一答でwikiにためてたりスレのテンプレを記録するために借りてみた
一緒に更新お願いします
PHP用のwikiってことでお願いします
ページ下部のアフィは勝手についたもので俺には1円も入らないから気にしないで下され
いや自分が更新しろや
wikiのタイトルを「PHPの事はここ見やがれ」したら受けそう
下らねぇ質問はここ見やがれ でいいじゃん
編集の仕方がわからない><
90 :
nobodyさん :2009/04/08(水) 03:33:41 ID:0hFuJwMz
別の板できいたらスレチだったのでここで質問します 変数の中に入ってる文字列をファイル名として 変数.txtとか変数.jpgのようにあらわすにはどうすればいいのでしょうか?
$x.'.txt'; どっちがいいんだかいつも迷う
93 :
nobodyさん :2009/04/08(水) 11:11:24 ID:r8DEvZ6R
whileでもforでもどちらでも繰り返しの表現ができるときは、 特にこだわりなくforでやってても問題ないでしょうか? ○○な理由で、できる限りこっちでやったほうがいいみたいなことないですかね。 よろしくお願いします。
$x.'.txt'; だと、エディタが変数の色代えてくれるけど、 設定で"の中の$も代えてくれるかもしれん
95 :
nobodyさん :2009/04/08(水) 12:55:37 ID:cjj/9xGO
すみませんが、質問です。
リクエストパラメータが正の整数であるかどうかをチェックしたいのですが、
どういう方法が良いでしょうか?
is_int()は使えませんが、is_numeric()も良くなくて、結局 preg_match()を
使うしかないのでしょうか?
(参考)PHPと16人の仲間達 : is_numeric は・・・なぁ
http://php16.exblog.jp/4720976/
頻出すぎて萎える
>>95 試してないけどこれは?
$s = チェックする値
if($s<0)echo "負の数です";
pregだと数値か文字列か判別できんだろ
99 :
95 :2009/04/08(水) 13:45:02 ID:cjj/9xGO
ちょっと質問を補足します。 あるリクエストパラメータが、通常の正の整数(の文字列化)になっているか を判別したいのです。 リクエストパラメータは文字列ですから、is_int()は使えません。 is_numeric()はある程度使えますが、"+0123.45e6"もtrueになってしまいます。 ・trueとなってほしい値。 "1", "0001", "132", etc... ・falseとなってほしい値 "0", "-1", "1.0", "0xFF", "+0123.45e6", etc... これにかなうのは、 preg_match('/^\d*[1-9]$/', $param) しか思いつかないのですが、他に何か良い方法はないでしょうか?
>>99 それ、間違ってるだろ。とりあえず。
preg_match('/^[1-9]+\d*$/D', $param)
"+1"はどうなのよ"+0"はどうなのよ
102 :
95 :2009/04/08(水) 13:56:41 ID:cjj/9xGO
>>100 それは
>>99 の "0001" が trueになりませんし、
"0"がtrueになってしまいます。
>>101 どちらもfalseです。trueになるのは"正の整数"と
>>95 ,
>>99 で書いています。
あと、符号を含むものはfalseのつもりでした。
しかしこの流れだと、正規表現以外なさそうですね。
104 :
95 :2009/04/08(水) 14:13:53 ID:cjj/9xGO
>>103 引用したページが私の質問の意図をうまく説明するものだったので貼りました。
他のページが全部間違いでも問題ないと思います。
is_numeric って is_numeric("0xFF"); // 16進表記 や is_numeric("+0123.45e6"); // 指数表記 をTRUEとしてしまうようです。(マニュアルに書いてありますけどね) マニュアルに書いてあるんじゃん
>>95 それ10の倍数だとfalseだけど。
ctype_digit($param) && $param > 0
でいいんじゃないの。
107 :
95 :2009/04/08(水) 14:24:10 ID:???
>>106 ご指摘のバグは今さっき気づいたところです。
> ctype_digit($param) && $param > 0
まさに望みどおりのものです。ありがとうございます。
108 :
95 :2009/04/08(水) 14:24:40 ID:cjj/9xGO
あ、下げてしまった。
>>107 は私です。では失礼します。
何か俺が作るサイトはデザインが自分でも悪い。 何かみてくれをよくするテクニックを纏めたオススメの書籍はありますか?
認識してるのにデザインが悪いと思うってことはなにかと比べてるからだと思うが その比べてるデザインの優れたと思うものを真似してみればどうだろう 好みなんて人それぞれだし万人が好むと思って押し付けても違ったりするから
デザインは板違いじゃないか?
>>109 いくらみてくれはよかっても、アフィをみてほしいのか記事(内容)をみてほしいのか
意味不明なサイトじゃなきゃ問題ない。
もちろん見た目は大事だけど内容と見易さ(使いやすさ)だよ。
115 :
nobodyさん :2009/04/08(水) 17:39:59 ID:9xKyaeca
SQLとファイル、どっちをデータ保存に使うか?ってよく出る話題ですが、 たとえばチャットシステムのように 数秒単位でデータの挿入、更新、削除が行われる場合ってどっちがいいんでしょうか。 どっちでも扱いやすいほうで、構いませんか?
パフォーマンス計ってみればいいじゃん
好きな方でいいよ
>>110 >>112 サンクス
先ずは、見易さ第一に作り次に自分が綺麗と思うサイトのHPのデザイン
を真似する事から始めます。
※真似されたHPの管理人は怒るかもしれませんが。
チャットでパフォーマンスが気になるなら共有メモリとかにした方がいいんじゃないの。 使ったことないけど。
>使ったことないけど
>>115 俺の意見だと、ファイル保存が良いと思う。
アクセス解析作るのに使っている。
ただ、扱いやすいとは言えない
122 :
nobodyさん :2009/04/08(水) 23:16:49 ID:tkomkeAN
取得したいページをfile_get_contentsで取りたいのですが、
url先とは違う内容が$fileに入ってしまいます
関数一覧のページなんですがどのようにしてしっかり取得することができるのでしょうか?
<?php $file = file_get_contents("
http://jp.php.net/manual/ja/indexes.php ";);
echo $file;
?>
はい?違う内容って?
124 :
nobodyさん :2009/04/09(木) 00:04:47 ID:m7XTC3qO
【OS名】linux 【PHPのバージョン】php5.2.5 【質問内容】 文字列の中から英数字の部分だけを抽出したい場合は、どうやればいいでしょうか? $str = 'あああaaa_いいいiii_ううう-20090401'; : echo $result; // aaaiii20090401 と表示される ereg("[a-zA-Z0-9]+", $str, $regs); $result = $regs[0]; echo $result; だと「aaa」しか取得できませんでした。
>93 基本は、ループの頭に差し掛かった時点でループ回数が分かる場合はfor。 ループを回してみないと分からない場合はwhile。 whileの場合はループ変数がどう変わるかを意識しながらコードを読まなければいけない。 forならば基本的にループ回数はループに入る時点で分かるので、ラクに読める。 ただまあ、例外はいっぱいある。 「1000以下の3の倍数を全て列挙」なんて場合、事前にループ回数を調べる事はできる。 だけど、「変数が1000を超えるまで繰り返す」という意図ならば、それを反映してwhileで書いた方が読みやすいわけで。 一般論にするなら、自分の意図がもっとも読者に伝わりやすい表現を選べ、という事になる。
127 :
nobodyさん :2009/04/09(木) 02:12:40 ID:8Md27rPN
[とか]ってURLエンコードする必要ありますか? ある文字がURLエンコードするべきかどうかってどうやって判断すればよいでしょうか? 初心者的な質問ですいません。。。
>>127 RFC1738とその関連文献を見るといいよ
グーグルランクをPHPで取得する方法がわかりません
131 :
130 :2009/04/09(木) 05:15:38 ID:sBmn/pA0
グーグルランク取得したいです。PHPで でも、その方法が調べてもわからないんです PHP暦は一年でそこそこです
132 :
124 :2009/04/09(木) 08:53:26 ID:???
>>124 preg_match_all("/[a-zA-Z0-9]+/", $str, $regs);
$result = implode("",$regs["0"]);
正規表現(笑)
135 :
124 :2009/04/09(木) 09:12:16 ID:???
自己解決しました。
$str = 'あああaaa_いいいiii_ううう-20090401';
preg_match_all("([a-zA-Z0-9]+)", $str, $matches);
$regs = $matches[0];
foreach($regs as $reg) {
$result .= $reg;
}
echo $result;
どうもありがとうございました
>>124
136 :
124 :2009/04/09(木) 09:14:20 ID:???
>>133 implodeを使えば良いんですね!
どうもありがとうございます。
137 :
124 :2009/04/09(木) 09:19:33 ID:???
>>134 正規表現(涙)は、一度本を読んだんですが、頭に入らないです><
誰かチートシート(早見表)を作って配布してくれないですかね?
…てか、言いだしっぺ=自分で叩き台を作って、ここで添削してもらえばいいかな?
138 :
124 :2009/04/09(木) 09:44:05 ID:???
139 :
nobodyさん :2009/04/09(木) 10:21:07 ID:3wJSGAQj
mkdirでディレクトリを作成する時、開発環境(WinXP)では簡単に作成されますが、 ネットのLinuxサーバ上ではパーミッションの問題で作成出来ない場合があります。 その場合、「パーミッションエラーで作成できない」事を 伝える必要があると思うのですが、そう言うことを調べる関数ってあるのでしょうか?
やったことないけどディレクトリを作成する親でぃれくとりがis_executableかどうかでできないかな
142 :
139 :2009/04/09(木) 11:15:45 ID:3wJSGAQj
>>140-141 つまり、単純に
if(!mkdir("test")){
die("ディレクトリが作成できませんでした。パスかパーミションを確認して下さい。");
}
みたいな感じで良いですかね?
143 :
nobodyさん :2009/04/09(木) 12:52:32 ID:GoKaiEbv
144 :
nobodyさん :2009/04/09(木) 12:53:27 ID:GoKaiEbv
145 :
nobodyさん :2009/04/09(木) 12:59:56 ID:pGRnXLlI
以下のような多次元配列があります これを1次元に直したいのでforeachを使いました $ary[0][0]=1; $ary[0][1]=2; $ary[0][2]=3; $ary[0][3]=4; $ary[0][4]=5; $ary[0][5]=6; foreach($ary as $v) { foreach($v as $vv) $h[] = $vv; } 標準関数か何かでこれよりもスマートなやり方があった記憶があるのですがどなたかご教示お願い致します
関数じゃないけど $h= $ary[0]; とか??
147 :
145 :2009/04/09(木) 13:44:57 ID:???
>>146 とても効率の良いものですね
ありがとうございます
148 :
nobodyさん :2009/04/09(木) 14:51:46 ID:IIKZIRWt
Imagick::roundCornersで画像の角を丸めると、 背景がいつも黒になってしまうのですが、 どのように設定すればよいのでしょうか?
149 :
nobodyさん :2009/04/09(木) 16:01:29 ID:OhmeRcsr
PHPの関数についてググるとヘルプのミラーサイトが結構でてきます ミラーサイトは公式サイトに断らなくても公開してもいいのでしょうか? また、公式サイトで公開されているhtml形式のヘルプをダウンロードしてそのまま自分のレン鯖においても問題ないでしょうか?
自分でライセンス確認すれや
既にあるものをなんで公開しようと思うの?どうして?死ぬの?
>>151 それをミラーサイト全ての管理人に言ってくださいませんか
155 :
nobodyさん :2009/04/09(木) 23:15:50 ID:YWPkP/9r
test.phpをテキストファイルとして出力させるのですが このときブラウザの青い帯の部分(タイトルが表示される部分)に 任意の好きなタイトルを表示させたいのですが不可能でしょうか? どなたかご教示お願い致します 【test.php】 <?php header("Content-Type: text/plain"); echo "test"; ?>
バカのくせにえらそうに
>>156 たぶん君も知識が足りないと思うんだがfxのタイトルバーの色が何色か見てごらん
あとoperaもな
大丈夫^^?
今時WebKitじゃないブラウザーとか・・・・ゴミいか。 角丸つくるのにいまだに透過ジフ?w
headerでjavascriptのコード埋め込めば任意のタイトルにできるんじゃない?
>>159 それはないよ
WebKitはJavaScript周りがだめだめ
162 :
nobodyさん :2009/04/10(金) 00:28:34 ID:z5toBuCm
PHP5.2使ってます。 ファイルを一意な名前で renameする良い方法ないですか? tempnam を使ってファイル名を生成すると、その時点でファイルが生成されてしまうため、 renameできません。tempnam で作った後に unlinkするのは、やっぱり気分が良くないし、 厳密には一意性が保証されない気がするので。
タイトルをHTTP Headerでどうにかするのは無理 <title>好きなタイトル</title>を出力するしかない
165 :
nobodyさん :2009/04/10(金) 02:28:23 ID:bYC4ar8C
staticなメソッドの中で、 それがHoge::moge()の形で呼ばれたのか、 $hoge->moge()の形で呼ばれたのかを判別するにはどうしたらいいですか?
$thisを見るとか?
>>165 そもそもstaticなメソッドをthisからメンバ関数として呼ぶべきじゃないよ
static全否定?
169 :
168 :2009/04/10(金) 09:48:47 ID:???
ああ、ごめん勘違い
170 :
nobodyさん :2009/04/10(金) 10:13:06 ID:0gMhmbJC
171 :
nobodyさん :2009/04/10(金) 10:32:51 ID:BYyPBH+i
foreach を 配列の途中から始めることはできますでしょうか? このような場合はforを使うのが普通なのでしょうか? よろしくお願いします。
>>171 >foreach を 配列の途中から始めることはできますでしょうか?
できないけど結果として同じものを得るのは可能
>このような場合はforを使うのが普通なのでしょうか?
はい
173 :
171 :2009/04/10(金) 10:53:33 ID:BYyPBH+i
>>172 レスありがとうございます。
やはりforを使うのが普通なのですね。
いちおう、後学のためにforeachを使って途中から開始する方法も教えていただけないでしょうか?
forで初期indexがわかってる時しか使えないでしょ。 seekしてiterator使った方がいいよ。
>>173 途中から開始するわけではなくて無駄な分はしっかりまわす感じ
whileでやるようなやり方
$array = array(1, 2, 3, 4, 5);
for ($i = 2; $i < count($array); $i++) {
echo $array[$i];
}
$count = 0;
foreach ($array as $value) {
$count++;
if ($count > 2) {
echo $value;
}
}
foreach自体に途中から始める機能はないけど foreach (array_slice($array, N) as $value) こうやるのが普通?かな
>>175 マジレスするとforeachの中でifで判定する手法は古いとだけ記述しておこう
178 :
173 :2009/04/10(金) 11:20:09 ID:BYyPBH+i
>>174 すみません。
知識不足で「seekしてiterator」というのがわかりません;
>>175 なるほど・・・
こうしてみると、たしかに後者は無駄が多いですね。
>>176 array_sliceで途中から取り出すというのは思いつきませんでした!
これは使えそうですね!
>>176 プチマジレスするとforeachの中でarray_sliceすると回すたびに関数が実行されるから
一度別の配列に入れるのがいい
マジレスするとforでやりなYO
>>179 以下のようにするとhogeが一度しか表示されないのはループの度にarray_sliceは実行されてfooは最初の一度だけってこと?
function foo()
{
echo "hoge<br>\n";
return array(1, 3, 5, 7, 9);
}
foreach (array_slice(foo(), 2) as $value) echo $value,"<br>\n";
>>178 $ai = new ArrayIterator(array(1, 3, 5, 7, 9));
$ai->seek(2);
while ($ai->valid()) {
echo $ai->current();
$ai->next();
}
>>175 forの中にcount入れるとかナイワ
184 :
nobodyさん :2009/04/10(金) 11:55:38 ID:FoG5RXFZ
プロキシでHPにアクセスする人います 80番ポートでアクセスしたとか8080番ポートでアクセスしたとか何番ポートを使ってアクセスしたかを調べたいのですが どのような関数を使うのでしょうか?
>>183 よく嫁foreachだろ
forはiで現在位置がわかるが
foreachはわからないからな
186 :
nobodyさん :2009/04/10(金) 12:00:54 ID:/dNSLV40
>>179 こうやってもhogeは一度だけ表示されるけどもしかしてarray_sliceって特別な実行のされ方?
function slice2()
{
echo "hoge<br>\n";
return array(1,3,5);
}
foreach (slice2() as $value) echo $value,"<br>\n";
188 :
186 :2009/04/10(金) 12:01:35 ID:/dNSLV40
すいませんID出し忘れました 以後、気を付けます
>>185 よく読んだらこう書いてありますね
for ($i = 2; $i < count($array); $i++) {
echo $array[$i];
}
>>175 じゃないが俺もcount使ってるわ
配列の長さ取得するのってPHPだとcountじゃないの?
JavaやJavaScriptでいうlengthと一緒だよね?
自分の場合、PHPでfor文使うのは、かなり少ないな。
なんかオフセット的なパラメータが出てくるのはうざったい。
自分の作ったコードでgrepしたら foreachの 1/10 以下だった。
while は半分ぐらい。
>>190 javascriptは微妙だけどね。
いきなり配列に x[100] = 'hogehoge'; とかすると、length は 101 になるくせに、
for(in) だと登録した1つしか出てこないし。そのわりに join は 101個結合するし。
折れも、for文なら count()を使う。 でも、大抵 foreach 文で処理しちゃうけどね...
193 :
178 :2009/04/10(金) 12:58:57 ID:BYyPBH+i
>>179 そうだったんですか!
ということは、for($i = 1; $i < count($array); $i++)
のように書いた場合も、毎回count()が実行されるのでしょうか?
一度 $count = count($array)
のようにしたほうがいいですか?
>>182 ArrayIteratorというクラスがあったんですね。
ややコードが長くなりますが、配列が直感的に操作できますね!
配列のループだけでもいろいろなやり方があって、勉強になります!
質問してみてよかったです!
// テスト用変数 function testAry() {for($a=0;$a<100;$a++) $h[]=$i;return $h;} // タイム測定 function bench() {return microtime(true);} // ベンチマーク表示 function cale($time) { echo "<pre>";print_r($time);echo "</pre>"; foreach($time as $t) {echo "<p>".($t[1]-$t[0])."</p>";} } // --------- 比較コード ---------------- */ $time[0][0]=bench(); $test = array(); $cnt=count(testAry()); for($i=0; $i<$cnt; $i++) {$test[]=$i;} $time[0][1]=bench(); // ---------- 175のコード ------------- */ $time[1][0]=bench(); $test = array(); for ($i=0; $i<count(testAry()); $i++) {$test[]=$i;} $time[1][1]=bench(); /* ---------- ここまで ---------------- */ cale($time);
>>194 の続き
ベンチマーク結果
0.00026893615722656(countをforから外したコード)
0.016515970230103(
>>175 と
>>185 が進めるのコード)
>>195 うほっ。最適化されるもんだとばかりorz。
>>181 そういうこと
foreach (array_slice(foo(), 2) as $value) echo $value,"<br>\n";
fooは一度しか呼び出されないが、配列の数だけarray_sliceが動いてる
さてベンチマークの俺の出番ですね
// テスト用変数 function testAry() {for($a=0;$a<1000;$a++) $h[]=$i;return $h;} // タイム測定 function bench() {return microtime(true);} // ベンチマーク表示 function cale($time) { echo "<pre>";print_r($time);echo "</pre>"; foreach($time as $t) {echo "<p>".($t[1]-$t[0])."</p>";} } // --------- 比較コード ---------------- */ $time[0][0]=bench(); $test = array(); $h = array_slice(testAry(), 50); foreach ($h as $v) $test[]=$v; $time[0][1]=bench(); // ---------- 175のコード ------------- */ $time[1][0]=bench(); $test = array(); foreach (array_slice(testAry(), 50) as $v) $test[]=$v; $time[1][1]=bench(); /* ---------- ここまで ---------------- */ cale($time);
続き テストした結果どちらもたいして変わらない
結論からいえばforの中で関数は使うなってこと
メールを受け取ったらphpファイルを起動させようとしているのですが上手くいきません。 昨日から詰まってます。。。。助けてください。 .forwardのパーミッションは600。メールの転送ができることは確認済みです。 PHP 5.0.4 FedoraCore .forwardの中身 "| /usr/bin/php -q /var/www/html/test2.php" test2.phpは単体で動かせることは確認済みです。 メールを受け取った後、test2.phpが動いてる様子がありません。。。
>>207 ってID出さないスレで正規表現でたたかれてた人物じゃない?
これ以上触れるとこのスレ荒らされるぞw
>>209 test2.phpに#!/usr/bin/phpみたいなパスは書いてあるよな?
これでダメならまたおいで .forwardの中身 "| /usr/bin/php /var/www/html/test2.php" test2.phpの中身の一行目(パスは自分の環境にあわせてね) #!/usr/bin/php -q
>>212 あ、test2.phpのパーミッションは705か755にしろよ
わざわざ配列のカウントを変数に入れたりしないから PHPだけの糞仕様を広めないでください まともな言語なら差は出ません
>>210 貴様のせいでこのスレに正規表現クンが来たじゃないかww
責任とって
>>175 を始末しろよw
215必死w
俺はーラッパーwwwwwwwwww バイトはスーパーwwwwwwwwwwwww タッパに葉っぱwwwwwwwwwwwwwwww 詰め込む河童wwwwwwwwwwww 頭はテンパーwwwwwwwwwwww パッパカパーwwwwwwwwwwwwwwwwww
>>215 >まともな言語なら差は出ません
( ゚Д゚)ポカーン
まともな言語というかコンパイラ言語なら差はでないだろうな。 JAVAやC#なんかからきたやつはforの中でlength書いてるだろうし、 PHPでも別にcountを中に書いてもいいよ。 速度ってもミリ秒の誤差程度だし別に気にする必要もない。
>>211 入れてませんでした。
だけれど試して見ましたがダメでした。
>>212 変化ありませんでした。
パーミは705でやってます。
あまりにも解けなさすぎて吐き気が。。。
222 :
207 :2009/04/10(金) 15:39:26 ID:???
いや・・・俺が言いたかったのは forの中で関数使うな for () { //ここで使うな } っていってるのかと思っただけなんだが
>>221 まず、パイプ前なのか、パイプ後なのか切り分けろや
とりあえず、シェルスクリプトならうごくかどうかやってみ。
touch hoge とかでいいから
>>221 "| /var/www/html/test2.php"
これでよしっと
>>223 メールうけとったあとのシェルの動かし方がわからん。
shhogeというファイルを作ってtouch hogeを書き込む。
sh shhogeで空ファイルが書き込めることを確認してから
パーミを705に変更。
.forwardの中身を"| /var/www/html/shhoge" や
"| /var/www/html/sh shhoge"にしてみて、メールを受け取ってみたが
だめだった。
>>224 それは最初にやったお。
test2.phpに#!/usr/bin/phpつけてやってもだめだったお。
一回再起動してもちつけ
.forwardには来てるの?
PHPとは関係ない気がするが、メールサーバのローカル配送ログは確認した?
/usr/bin/php が無かったりしないの?
>>229 ごめんなさいお。疲れたのでたったいまVMwareを落としたとこだお。
夜風を浴びて飯食べたら、また来るお。
メールサーバのローカル配送ログは観方が判らなかったので
スルーしてたお。あとで確認するお。
とりあえずその言葉使いはやめような
質問させてください。 レンタルサーバでcronを使って、2chを定期的に監視するプログラムを作ろうと思うのですが、 公開されているプログラムなどありませんでしょうか? スレ違いならすみません。
キミが監視しなくてもすでに他の人が監視してるから大丈夫
236 :
233 :2009/04/10(金) 18:44:10 ID:???
>>235 とりあえず自分のブログに盛り上がっているスレのリンクと、
先頭数レスの表示をしようと思ってます。
>>236 専ブラ作るために公開されてる仕様があるのでそれ嫁ができます
238 :
162 :2009/04/10(金) 20:32:35 ID:z5toBuCm
flockしる
一時的に利用するためのファイルの名前にこだわる理由がわからない
>>238 まず、自分がどうやってるか書いたら?
良い方法は?って言われてもな。
一意な名前を取得する方法なんて腐るほどあるっしょ。
インデックスを保持するファイルを一つ作っといて、そこで一意を確保してからrenameするとか
すきなアルゴリズムにしたらいいよ
連番でいいよもう
forの中で関数呼び出しはPHPに限らず大抵の言語でもパフォーマンスが落ちる。 コンパイラや実行環境が最適化してくれる場合もあるし、大した差がつかないのは事実だけどな。 初心者がやってたら理解していない可能性を考えて訂正するのは正しい姿勢だと思うが。 >194-196, >204 ベンチマーク取るにしては処理が短すぎる。 そのくらいだとPC内のほかのタスクとかがノイズになって意味のある数字が出ない。 1秒とか10秒とかの単位で時間がかかるような規模の試験をした方がいい。
批判する前に自分もコードを出したらいいじゃん
247 :
209 :2009/04/10(金) 22:19:41 ID:???
ログを見ても原因らしい原因が判りません。。。。
.forward
"| /usr/bin/php /var/www/html/test2.php"
test2.php
#!/usr/bin/php -q
<?php
print "START";
system("touch hoge");
echo "end";
?>
maillog
postfix/smtpd[3703]: connect from atg-asm1.t-com.ne.jp[218.219.54.53]
postfix/smtpd[3703]: 2895E5DC486: client=atg-asm1.t-com.ne.jp[218.219.54.53]
postfix/cleanup[3707]: 2895E5DC486: message-id=<004a01c9b9de$15f7cf10$0701a8c0@XXXXXX551ed45>
postfix/qmgr[3669]: 2895E5DC486: from=<
[email protected] >, size=1594, nrcpt=1 (queue active)
postfix/smtpd[3703]: disconnect from atg-asm1.t-com.ne.jp[218.219.54.53]
postfix/local[3708]: 2895E5DC486: to=<
[email protected] >, relay=local, delay=0, status=sent (delivered to command: /usr/bin/php /var/www/html/test2.php)
postfix/qmgr[3669]: 2895E5DC486: removed
パフォーマンス云々よりも count()っていうのはループ中に値が変わる可能性があるわけで バグによってループする回数が変わってしまう危険性 っていうほうが避ける理由じゃないかな。。
あと、上のほうにあったJavaScriptの話で arr.lengthとfor(x in arr )を同じつもりで使うのは危ないよ。 例えばDOM使うと、forだと思ったとおりにならないときがあると思う。
250 :
nobodyさん :2009/04/11(土) 02:13:44 ID:jaJ+Ur9l
httpヘッダのcontent-typeを取得したいのですが 送った、あるいは送る予定のheaderを取得するにはどうしたらいいですか?
こんな関数あったんですね ありがとうございました。
headers_listって自分で設定したヘッダしか取得できないんですね デフォルトで送る予定のContent-Type: text/http等は 決めうちで取得させるしかないですか?
254 :
nobodyさん :2009/04/11(土) 05:24:48 ID:HAu5s/9P
ファイルアップロードに関する質問なのですが、 $_FILEのtypeは信用できないということを聞いたので、 別の方法で取得するようにしたのですが、 その他のname、size、errorなどは信用してもよいのでしょうか? nameなどはエスケープ処理などする必要がありますか? よろしくお願いします。
>>247 それで、hogeは出来てないんだよね?
次はerror_log書いて、PHPのログをチェックかな
>>245 >1秒とか10秒とかの単位で時間がかかるような規模の試験をした方がいい。
そこまで両者に差が出るとは思えないし
そんな結果が出るまでやるとなるとメモリが足りなくなるでは?
できるならぜひベンチ結果をみてみたいが
というかそんな規模のものPHPじゃ作らないだろうし杞憂な気もするけど・・・
>>248 >count()っていうのはループ中に値が変わる可能性があるわけで
>バグによってループする回数が変わってしまう危険性
だいたいこういう処理は配列を1つずつ取り出す場合に使うのであって
対象の配列数が変わるような処理をやるほうがおかしいのでは?
具体的にどのようなことをするのか検討もつかないけど・・・
バグによってループ回数が変わるっていうのも意味不明
>>183 もナイワと批判を書くのではなくて
外におけばPHPではパフォーマンスがあがるという注釈をつければここまで伸びなかった
257 :
nobodyさん :2009/04/11(土) 06:53:18 ID:/nX8neeQ
>>257 PDO用の例外があるでしょ
PDOExceptionだったかな
>>257 失敗しても気にするなよ。諦めたらそこで試合終了だよ
>>258 でたらめなSQL書いてqueryしても例外でないんですよ。
で、戻り値はfalse
ちなみに環境は PHP5.2.9 とWindows版にバンドル版されてるSQLite です。
261 :
nobodyさん :2009/04/11(土) 07:22:23 ID:YDJbdlsq
基本的なことだと思うのですが、 <?php $a .= "あ" . "い" . "う" ; $b .= "あ"; $b .= "い"; $b .= "う"; echo $a."<br><br>".$b; ?> の結果は同じになると思いますが、 少し複雑に変数やループ処理を入れたときに、 なぜか$aの方の"あ"の部分が消えてしまいます。 しかし、$b方式だと成功します。 >少し複雑に変数やループ処理を入れたときに、 を詳しく説明したいのですが、コードが長く、 まとめるにも上手く伝える術が見つかりませんでした。 簡易に説明すると、 データを参照して、何ページかを判断して、 リンク付きのページ番号をずらっと表示させるようなプログラム部分になるのですが、 どうして$aではできないのに$bだとできるのか疑問に思いました。 何か心当たりありましたらよろしくお願いします。
262 :
nobodyさん :2009/04/11(土) 07:25:34 ID:YDJbdlsq
追記 ループ処理した$aを、 クラスの変数、private $a; に格納していって、function get_a(){return $this->a;} の、get_a()メソッドで参照したときに問題が起こりました。 phpは5.2.6です
コードが長けりゃどこかにうpすればいいのに
264 :
247 :2009/04/11(土) 09:40:31 ID:???
>>255 error_logはsystemの戻り値の判定のところに書けばいいの?
とりあえず、どこまで出来てるのか確認するのが基本 だから、<?phpの後でいいんじゃね?
266 :
247 :2009/04/11(土) 10:37:14 ID:???
エラーログを吐き出すようにしてみました。 単体でtest2.phpを動かすとログを出しますが、 メールを介して動かしてもログが吐き出されませんでした。 maillog (delivered to command: /usr/bin/php /var/www/html/test2.php) .forward "| /usr/bin/php /var/www/html/test2.php" test2.php #!/usr/bin/php -q <?php error_log("テストエラー",0); system("touch hoge"); ?>
267 :
247 :2009/04/11(土) 10:48:01 ID:???
forwardでコマンドは実行されているみたいですがtest2.phpは動いていない。 ・.forwardの中が間違っている。→/usr/bin/phpは存在する。 →/var/www/html/test2.phpでtest2.phpを 動かせる。 ・パーミッションが間違っている。→.forwardを600 test2.phpを705or755 あと考えられる事象はなんでしょうか。
>>267 ディストリは何使ってるんだ?
それがわかれば同じ環境作ってやってみるけど
>>267 .forward
"| /usr/bin/php -q /var/www/html/test2.php"
にしてみ
.forward "| /var/www/html/test2.php" うちは、これで動くけど?
まず "| touch /tmp/hoge" ってやってみて処理してるユーザ名を把握してはどうだろう
272 :
247 :2009/04/11(土) 12:15:02 ID:???
>>267 ディストリというのは環境という意味でいいのかな?
PHP 5.0.4kfedoracore4です。
>>269 >>270 試してみました。
>>271 suxxxxxxxのユーザーの空ファイルとなりました。
……test2.phpはroot。……まさか。。。
273 :
261 :2009/04/11(土) 12:15:24 ID:YDJbdlsq
ありがとうございます 自己解決しました。 実際は、 $a .= "あ" . $i+1 . "う" ; という風に、”い”の部分は計算式をいろいろと入れていたのですが、 その計算式を()でくくって $a .= "あ" . ($i+1) . "う" ; のようにしたら、できました。
274 :
247 :2009/04/11(土) 12:23:05 ID:???
>>271 作成されたファイルhoge
-rw------- 1 suXXXXXXX suXXXXXX 0 4月 11 08:36 hoge
.forward
-rw------- 1 suXXXXXXX suXXXXXXX 20 4月 11 08:35 .forward
test2.php
-rwx---r-x 1 root root 112 4月 11 08:02 test2.php
ごく。
275 :
nobodyさん :2009/04/11(土) 12:35:09 ID:jPW674z3
グローバル変数はまったく使わないほうがいいのでしょうか?
うん スーパーグローバルは使うけど
スーパーグローバルは便利だが、テストしにくくなる。 モジュールごと、クラスごとにテストを書かないといけないような、ややっこしいコードを作る時は避けた方がいい。 グローバル変数は使うべきではない、とされている。 これは、グローバル変数はどこでどう値が変えられるか分からないのが最大の理由。 ある時点でグローバルに何が入っているかは、プログラムの最初から最後まで全部読まないと分からない。 不具合発生時に原因を特定しづらいし、機能追加時などにどの時点でどの変数がどうなってるか分かりづらくなる。 いっぽう、一時変数は、その関数の中で生成され、その関数が終わったら消えるので、その関数の中だけ見れば値が分かる。 グローバルに依存しない関数は、同じ引数を渡せば同じ結果が常に返って来る。 プログラムのどこで呼ばれても(引数が同じならば)同じ結果が返る事が保証されているので、バグの原因を探しやすい。
278 :
247 :2009/04/11(土) 14:11:26 ID:???
ディレクトリィのパーミッションを777に変えてたら test2.phpまで届いてログが出るようになりました。 ですが、system("touch hoge")が実行されず まだ空ファイルが作られない状態です。
file_put_contents("/tmp/hoge.txt", realpath("."));を書いてみて、 カレントディレクトリを把握してはどうだろう。そしたらパーミッションを確認してと・・
280 :
247 :2009/04/11(土) 14:38:11 ID:???
>>279 file_put_contents("/tmp/hoge.txt", realpath("."));
file_put_contents("/var/www/html/hoge.txt", realpath("."));
二つとも空ファイルを作成できました。
ただ肝心のシステム関数が実行されていません。
system("touch hoge");
>>280 >注意: セーフモード が有効な場合、 safe_mode_exec_dirの中にある実行プログラムのみ実行可能です。実際的な理由により、現在、実行プログラムへのパスに ..を含めることはできません。
じゃあsystem("touch /path/to/hoge");みたいに書くか chdir("/path/to");を先に書いておくか・・
283 :
247 :2009/04/11(土) 15:06:27 ID:???
>>281 セーフモードは無効になっていました!
>>282 できた!
ようやく全て結合してDBも動きました。
ありがとうございます!
>>254 nameはクライアントの自己申告
move_uploaded_file() や header('Content-Disposition: attachment; filename=""') なんかに使う時は
使っていい・出力していいファイル名か審査する必要がある
sizeとerrorはPHPが決める値なのでそのまま使える
このあたりの処理は /main/rfc1867.c に書いてある
>>283 名を名乗るほどのモンじゃねえから礼はいいってことよ
287 :
nobodyさん :2009/04/11(土) 16:16:03 ID:/nX8neeQ
>>284 ありがとう。なんで見逃してたんだろ。
すんません。
288 :
nobodyさん :2009/04/11(土) 16:20:58 ID:6UsgbN52
Header("Content-type: image/png); ImagePng($output_image); とすれば画像を表示しますが、表示するんじゃなく、 imagemagickでexecコマンドで扱えるようにするにはどうすればいいんでしょうか? $cmd = "convert -resize 80x80 {$output_image} "; exec($cmd); みたいな感じでファイルを保存せずImagePng($output_image);のように画像だけ表示したいのですが
>>288 これでいいかい?
// GD パート
$image = imagecreatefromjpeg('original.jpg');
ob_start();
imagejpeg($image);
$source = ob_get_clean();
// ImageMagick パート
$command = 'convert jpeg:- -resize 80x80 png:-';
$ds = array(0 => array('pipe', 'r'), 1 => array('pipe', 'w'));
$process = proc_open($command, $ds, $pipes);
fwrite($pipes[0], $source);
fclose($pipes[0]);
$dest = stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($process);
// 出力
header('Content-Type: image/png');
echo $dest;
レスありがとうございます。 まだ帰れず試せないのですがもどったらやってみてまた報告します。
さくらインターネットスレで質問したのですが誰もわかる人がいないので こちらにて質問させて下さい。 FreeBSDにTeraTermで接続しコマンドラインから php /home/my-account/www/Test.php とすると正常に実行出来るのに さくらインターネットのサーバコントロール画面からcronの実行コマンド項目に 上記命令をコピーして「送信」ボタンを押して時間を指定して実行しているのですが まったく実行されません。 どうすればcronを実行させる事が出来ますか?
293 :
292 :2009/04/11(土) 22:37:47 ID:???
自己解決しました。
さくらインターネッツのコンパネ設定とか知らないけど telnet(ssh?)とか使えるんなら普通にcrontab -eで編集できるんちゃうん
テストファーストってした方がいいのかどうか微妙すぎて踏み切れん
<?php if( ( $stdin=fopen('php://stdin','r') )==true ){ while( !feof($stdin) ){ $line = stripslashes( fgets($stdin,4096) ); error_log("$line",0); } fclose($stdin); } ?> 受け取ったメールの編集をしたいのですが、 読み込んだメールをログに出力すると、文字化けしています。
報告乙
宣伝乙
303 :
nobodyさん :2009/04/12(日) 13:58:53 ID:Vo0Yfswz
xammpでapacheの設定とphpの設定ファイルって自分で書き変えても動くのですか?
xamppはやめとけ
ヤバい箇所をいじると動かなくなる可能性もあるが、まあ大抵は動く。 つうか、初期設定が糞すぎるので書き換えた方が開発効率が良い。 PHPかApacheかに拡張モジュール入れる場合とかは書き換えざるを得ないしな。
04webserver最強
>>303 簡単な動作テストだけならそのままでもいいけど
普通は設定かえるよ
if ($section = $abc::getObj($a)) { 処理 } これは$abc::getObj($a)の返り値が$sectionに代入されたら trueになるのでしょうか。
ありがとう。
312 :
nobodyさん :2009/04/13(月) 00:07:32 ID:Yv15gfHG
Apacheを起動してもlocalhostでページに繋がらず、いろいろと調べてみたんですが 解決できません・・ 何か原因の想像がつく方や改善方法を知ってる方は教えてください。お願いします。
>>312 ドキュメントのインストールガイドを読む
314 :
312 :2009/04/13(月) 00:22:05 ID:Yv15gfHG
>>313 ドキュメントのインストールガイドとはなんですか?
apache2.2ならhttpd.exe apache1.3〜2.0ならapache.exe(だっけ?) インストール先がc:\apache2.2\bin\httpd.exeであるなら コマンドプロンプトでbinディレクトリまで移動して「httpd.exe -t」を入力 syntax okって表示されてればおk されてれば設定ファイルを見直してみろ linuxも↑と同じやり方
316 :
315 :2009/04/13(月) 00:23:51 ID:???
協力してやりたいがキーボードのタイプ音が部屋に響くので寝ます 明日起きたときまたくる
317 :
312 :2009/04/13(月) 00:29:16 ID:Yv15gfHG
>>315 apache2.2です。
syntax okって表示されたところまでは行きましたがlocalhostのページは
ページ読み込みエラーで接続できませんでした・・
ちなみに「httpd.exe -t」の作業はどういったものなのでしょうか?
320 :
312 :2009/04/13(月) 00:32:10 ID:???
321 :
315 :2009/04/13(月) 00:33:11 ID:???
念のため言うが設定ファイルをいじったら再起動してるか? じゃあ寝るからレスは期待するな 319は俺
まずping localhostが通るかだろ常考
323 :
312 :2009/04/13(月) 00:35:59 ID:???
>>321 アパッチのリスタートしかしてませんでした・・
再起動してみます、ありがとうございました。
ワラタ
325 :
312 :2009/04/13(月) 00:48:08 ID:???
再起動してもページ読み込みエラーでした・・・ ping localhostってのをしてみたらよくわからない時間と統計が出てきました。
そうか
327 :
312 :2009/04/13(月) 01:12:01 ID:???
この時点でできないんじゃphpはまだまだですよね・・ スレ汚してすみませんでした。
329 :
312 :2009/04/13(月) 01:34:25 ID:???
その通りなんですよ・・ それでもせめて少しは頑張って、わからなくて・・ 助けを願って期待してたんですけどね・・
phpスレでapache聞いてる時点でもう終わってる
初心者がxampp使ったら余計悲惨なことになるだろ まぁ自分で何とかするならいいけど
初心者であればxamppを使ったほうがいいよ
>>332 そう言う人は多いけど、根拠は?
テスト環境ならxamppでも問題ないだろ
335 :
312 :2009/04/13(月) 02:44:40 ID:???
>>330 phpを使いたくて、テキストに従って環境作ってたらApacheでつまづいたので・・
>>331 xamppってのちょっとやってみます・・
↑ xamppバグだらけじゃん
>>336 xamppバグだらけだけど
お前の無職期間よりはマシだよ
>>336 大丈夫俺は無職じゃないから。
頑張って仕事探せよ。
未来のホームレス
339 :
312 :2009/04/13(月) 02:59:44 ID:???
どなたかプロい人、phpを使うまでの作業手順を教えてください。
341 :
312 :2009/04/13(月) 03:11:45 ID:???
5時間目まで目を通して終了しました・・
343 :
312 :2009/04/13(月) 03:38:33 ID:???
コメントや記事の日付が数ヶ月前なので、作りかけで更新もせず飽きたのかな・・と 思いました。
いやいやwww xamppのインストールができたかどうかだよ! そんなサイトの更新のことなんかきいてねえwww
>>334 自分で語るに落ちてる
xamppはテスト環境であって初心者の学習用環境ではない
346 :
312 :2009/04/13(月) 03:53:00 ID:???
>>344 ですよね?wすみません^^;
インストールはできました。
>>346 xamppがインストールできたら、
MS-DOSプロンプト立ち上げて、
php -v
って打って、なんか出てくれば、
phpのインストールはできてる。
>>312 127.0.0.1だと接続できたりするんじゃね?
350 :
nobodyさん :2009/04/13(月) 13:58:24 ID:ypI4OeZj
winでcronつかってPHPを使いたいのですが似たようなものってございませんか?
_______ __ // ̄~`i ゝ `l | / / ,______ ,_____ ________ | | ____ TM | | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>> \ヽ、 |l | | | | | | | | ``( (. .| | | | ~~ `、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二='' ヽヽ___// 日本 _____ _____ ______ _______ | ウェブ | | イメージ | | グループ | | ディレクトリ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ._________________ |windows cron │・検索オプション └────────────────┘・表示設定 | Google検索 | I'm Feeling Lucky | ・言語ツール  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ○ウェブ全体から検索 ◎日本語のページを検索
353 :
nobodyさん :2009/04/13(月) 21:54:51 ID:FmgZe7wf
隠しページ禁止のレンタルサーバでメンバー専用の機能を使えるようにするには どういう手を使うのがいいですか?
志村〜
>>353 隠しページはやめてくれってレン鯖の規約に書いてあるってことか
おまえ死ねよ
>>355 ん?
隠しページ駄目なの?
俺は今さくらインターネットでログインしないと見れないページを作ってるんだけど。
>>356 日本語が不自由な奴だな
隠しページ禁止のレンタルサーバでメンバー専用の機能を使えるようにするには
隠しページ禁止のレンタルサーバでメンバー専用の機能を使えるようにするには
隠しページ禁止のレンタルサーバでメンバー専用の機能を使えるようにするには
隠しページ禁止のレンタルサーバでメンバー専用の機能を使えるようにするには
隠しページ禁止のレンタルサーバでメンバー専用の機能を使えるようにするには
隠しページ禁止のレンタルサーバでメンバー専用の機能を使えるようにするには
隠しページ禁止のレンタルサーバでメンバー専用の機能を使えるようにするには ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
そもそも何で 隠しページを禁止する レンタルサーバがあるんだよ?
有料レン鯖ならこういう規約はまずないから
>>353 は無料レン鯖借りてるんだろどうせ
無料で提供してる鯖は広告収入でマイナスを埋めてるからこういうDQN(
>>353 )がやるような
メンバー専用ページを排除しているところもある
362 :
nobodyさん :2009/04/13(月) 23:27:01 ID:oGeHUnbf
DBから取得した値を可変の配列に格納しようと思ってるのですが、 .NetのArryalListに似たコードはありますか?
365 :
312 :2009/04/14(火) 01:25:02 ID:???
362はマルチ
368 :
312 :2009/04/14(火) 01:38:14 ID:???
>>367 hostファイルの設定とは・・?
【OS名】vista
その他まだよく分かってません・・
370 :
312 :2009/04/14(火) 02:03:08 ID:???
>>369 上はページ読み込みエラー、下はIt works!でした。
>>370 ウイルスにやられてるっぽいな
一回全スキャンしてみ
こないだのWindowsUpdateで、Defenderがhostsのlocalhostを消しちゃう問題が話題になってる。
IPv6関連じゃないか?
375 :
374 :2009/04/14(火) 11:35:28 ID:???
C:\Windows\System32\drivers\etc\hosts開いて ::1 localhost になってたらこれをコメントアウトして 127.0.0.1 localhostを追記する 127.0.0.1 localhost #::1 localhost これでもだめならcmdからipv6 uninstallしたらいけるかもしれないが非推奨 Vistaは使ったことないので知らないけど
vistaだけど ipv6とか触ったことないので関係ないと思う
触ったことないから関係ないとはまさにスーパーハッカーですね
わろた
380 :
374 :2009/04/14(火) 11:55:59 ID:???
僕
>>377 やないし・・・
スレ違いなのでさっくりこの話題終わらせたいから思い当たったこと言っただけ
これで解決できればいいけどね
ipv6で直るとか特定の環境過ぎるだろ
なんでもかんでも=で結ぶのは正規表現に粘着してた馬鹿だろ? 放置でおk
↑ 正規表現降臨乙
>>375 別にコメントアウトする必要はない。
IPv6は今回の件には関係ないし。
>>381 vistaはその特定の環境のようだが
_______ __
// ̄~`i ゝ `l |
/ / ,______ ,_____ ________ | | ____ TM
| | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>>
\ヽ、 |l | | | | | | | | ``( (. .| | | | ~~
`、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二=''
ヽヽ___// 日本
_____ _____ ______ _______
| ウェブ | | イメージ | | グループ | | ディレクトリ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
._________________
|localhost ipv6 vista │・検索オプション
└────────────────┘・表示設定
| Google検索 | I'm Feeling Lucky | ・言語ツール
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
○ウェブ全体から検索 ◎日本語のページを検索
hostsに x.x.x.x localhost を追加して悪さするやつがいたからDefenderは無条件に全て消すという愚挙を・・ だから127.0.0.1 localhost を追記するだけでいけるよ。
>>388 まあそうだが、3月上旬から何十件もあるこの手の質問の回答はすべてこれだったからな。
おまえらスレ違いですよ 質問(屮゚O゚)屮 カモーン
>>386 vistaだからipv6で症状が出るとでも思ってるのか?
お前vista使ったことないだろ
IPv6がなんちゃら言いたい奴は最近覚えた用語を使いたかったんだろ 察してやれよ
問題解決のための可能性を列挙してるだけなのにお前ら賑やかですね 自分と意見が違えば徹底的にたたくとかどこのガキだよ スレが無駄に伸びるし解決するまで黙って見守ってろや それか思い当たる解決法があるなら淡々と列挙しろ
396 :
nobodyさん :2009/04/14(火) 12:18:39 ID:XUS8hYov
WinBinderをPHP5.2.9で動かしたいのですが正常に動いてる方いらっしゃいますか?
まあ解決方法にHDDのフォーマットを紛れ込ませたりするやつもいるしな
>>396 PHPでわざわざGUIアプリ作ろうとする人なんてたぶんこのスレにいないよ
400 :
nobodyさん :2009/04/14(火) 12:54:52 ID:pC/MAxND
【OS名】Windows XP SP3 【PHPのバージョン】php5.2.9 【連携ソフトウェア】 【質問内容】 php.iniの デフォルトでoutput_buffering = 4096が適用されてますがこれって無効にしたらまずいですか? 有効・無効にするメリットとデメリットを教えてください あとその下にoutput_handlerとあるんですが教本にmb_output_handlerを設定してって書かれてあります これを設定する意味はなんでしょうか?
>>400 マニュアルとphp.iniのコメント参照
>>400 ここの人間のレベルでは答えられないと思う
ちょっとスレチガイかも知れないけどJane(2ch専用ブラウザ)を使って いるんだけど、投稿をすると常にIDが「???」になってしまいます。 このスレでは「IDを出す」事が必須らしいいのですが、 どうすれば出す事が出来るのでしょうか?
sage を消せば出るよ。 JANEは使ったことないけど、デフォルトがsageなんだろう。
めんどいからID常に表示する板設定にすればいいのにな
>>400 さすがにその程度の事、ぐぐろうよう・・・・・
ググるとかそういうの以前のここの住民で説明できるほど長けてる人間はいない件
409 :
nobodyさん :2009/04/14(火) 15:14:55 ID:lLj9k4ea
412 :
nobodyさん :2009/04/14(火) 17:06:33 ID:O0pp8kVu
zend debuggerをインストールしてphpinfoにも表示されてるのですが 肝心の使い方がわかりません わざとエラーになるようなコーディングをしてもいつもと変わらないエラーが表示されるだけで困ってます これはどのようにして使うのでしょうか?
>>400 出力内容に対する後処理を追加したいとか
バックエンドへ出力を引き渡す際のオーバーヘッドを減らしたい時に有効にする
mb_output_handlerの場合は前者で
エンコーディング変換のためのハンドラだ
php5.2.9に対応したxdebugが無いから早く出してほしい
416 :
nobodyさん :2009/04/14(火) 19:49:14 ID:h4ximX71
自分のPCでPHPを早く動かしてるんですが CPUとかメモリとか物理的な部分はどこが重要でしょうか? 現在のPCスペックがCPU P4 3.2GHz メモリ 1.5GB ですがCORE2とかメモリ増設とかすればそれなりに早くなるのでしょうか?
演算処理は早くなるんじゃね? ただP4のマザボにCore2はのらないでしょ メモリはプログラムが高速にアクセスするために使う記憶領域なので 容量が足りてればいい(増設したからといって必ずしも早くなるわけではない) P4時代のメモリよりは最新のDDR3とかのほうが早いだろうけどね DB使った中規模な処理とかでもそのスペックで十分
418 :
416 :2009/04/14(火) 20:08:08 ID:h4ximX71
core2とかでだいぶ早くなるならPC本体の買い替えも検討してます。
別にPHP動かすのならそんなにスペックは必要無いだろ。 .Netとか動かすとかなりきついけど
今買い替えても一年後のPCに比べたら落ちるわけだからどこかで妥協しないときりがない
>>423 鯖マシンなら妥当じゃね?
普段使ってる多目的PCでPHPのデバッグもやっているというならカスペックだが
425 :
nobodyさん :2009/04/14(火) 22:39:54 ID:QCyTU2q5
当方の環境でPHP5.2.9にしてからよく鯖が落ちるようになったので5.2.8をダウンロードしたいのですが 旧バージョンはどこから落とすのかご存知の方いらっしゃいましたらご教示お願い致します
Unsupported Historical Releases
>>425 winで5.2.9-2にしてからcakephpとか負荷のかかるもの使うとapacheが停止する
不具合はうちだけかと思ったら仲間がいてほっとした
早く修正版でねえかな
>416 マジレスすると、H/W買い替えを視野に入れたくなるほど処理速度が重要な局面でPHPを使うのが間違い。 PHPもRubyもPerlも、言語仕様上、JavaやC++に比べると速度がかなり遅くなる。 アルゴリズム見直して、APCやeAcc入れて、DBアクセス最適化すりゃ、恐らくじゅうぶん早くなる。 H/W増強はそれから。
つくづくphpの最新リリースは人柱になるなぁ・・・勘弁して欲しい。
>>416 一行目をよく見たら気づいたが、現状遅いってわけじゃないのか?
つかWEBサーバをレンタルする場合のコストを考えると確実にPHPに軍廃があがると思うんだけど。 あと普通のサイトを作ってるんだけど、そこまで遅いと感じた事は無いんだけどな。
日本語でおk?
432 :
nobodyさん :2009/04/15(水) 02:43:25 ID:+Ew/BfEW
Webサーバレンタルするより、ある程度のスペックのPC買って、動的DNSだっけか、あれやった方が安いよ。
サーバにもよるが電気代考えると・・ スレ違いじゃね
>>434 ネットワークについてあまり詳しく無いので質問させて頂きたいのですが、
現在マンションに備え付けの回線を引いているのですが、
先日までIP電話を使用していた時にはルータ(NEC製のルータ、Alterm)が
ついていたのでポートマッピング等を行う事が出来た(専用画面から)
のですが、IP電話の契約を解除してから(Atermを返送)ポートの開放が
出来なくなりました。
マンションに最初っから回線が引かれている場合には、自宅サーバはする事は
出来ないのでしょうか?
437 :
434 :2009/04/15(水) 03:04:00 ID:???
マンションに住んでないから、よく知らん・・ マンションにサーバがあってそっからIP振り分けてるのなら無理だろうけど。 でも、多分できるよ。
>>436 回線業者にも依るが、大概の場合は無理。
これがコレガのいいところ。
>>432 やっと覚えた単語をただ並べただけのレスですね。
442 :
436 :2009/04/15(水) 04:00:51 ID:???
>>437 実は、IP電話を使用していたころ(ルータのあった頃)は、Windows /Linux 双方で
自宅サーバを運営してました。
だけどIP電話を解約するとルータを返さなくてはならなくなったせいでこれまでの
手順で自宅サーバを公開する事が出来なくなってしまいました。
>>438 レンタルのルーターがあった頃は普通にポートを開放して自宅サーバを公開出来ていたのでその
辺りが少し疑問です。
ルーターぐらい買いなさいよ 1万ぐらいでそこそこのやつが買えるでしょ 直にネット繋いでるとか危険すぎる 後マンションの場合はたぶん共有だろうから ほかの住人に迷惑かからない程度にな 可能ならネット用の動的IPとは分けて 別途固定IPとったほうがいい
レンサバいま月200円ぐらいだろ。電気代と発火リスクかけて自宅サバやる意味ない
root権限があるからいいんじゃない
>>446 おいおい固定IPでクソ高いって何本IP取得するつもりだ?
1本なら5000円出せばおつりが来るがまさか5000円程度が
クソ高いというわけじゃないだろうな?
雑談スレに帰れよ
>>447 1ヶ月で5000は高いでしょ。
1ヶ月に5000も掛けるんならレンタルサーバ借りた方がマシ
5000円もあれば専用鯖借りれるよな
さくらインターネットなら安いよ
>>450 確かにw
つか5000円も掛けて固定IPをとって自宅サーバを構築何かする位なら
専用サーバを借りた方があらゆる面で良いと思うのは俺だけ?
453 :
nobodyさん :2009/04/15(水) 12:36:33 ID:l+JCAwpk
どなたか助けてください 昨日apache2.0とphp5.2.9とMySQL5.1を入れました phpMyAdminにアクセスしても真っ白い画面が出るだけで何も表示されません phpinfo()や簡単なコードでPHPが動作してるのか確認しましたがちゃんと動作してます データベースを使わないスクリプトなら問題ないのですが wordpressなどデータベースを使うスクリプトだとapacheが停止してしまいます どなたか解決方法をご教示お願い致します
>昨日apache2.0とphp5.2.9とMySQL5.1を入れました まず落ち着いてphpmyadminを入れてみてはどうだろう
455 :
nobodyさん :2009/04/15(水) 12:42:42 ID:l+JCAwpk
すいません自己解決しました
今後よく出てきそうなトラブルだと思うので解決方法書いておきます
問題はphp5.2.9に含まれているphp_mysql.dllは5.1に
mysql5.1に対応してなかったためです
mysql5.1に対応した修正版dllに差し替えたら無事に動きました
昨日の
>>425 と
>>427 は自分です
お騒がせしました
アセンブラでわざわざphp_mysql.dll見たけどほんとだ
PHPの関数で出来る事を他の言語でやった場合の書き方を 載せていくHPって需要ありますか? phpなら$hash = array(1,2,3) perlなら@hash= [1,2,3] みたいな
特にない
まったくないと思う そんな局所的な情報いらない
>>459-
>>460 アフィで稼げるからしめたと思って否定してるんですよねw
お前は何を言ってるんだ
463 :
455 :2009/04/15(水) 16:10:02 ID:???
たびたびすみません 私のトラブルって結構検索したら見つかりましたが yahoo知恵袋でも同じ質問でてますが解決方法ってあまり出回ってないようですね
464 :
416 :2009/04/15(水) 16:20:30 ID:TbWWsoJF
コード最適化とかAPCとかeAccはすでにやってる Cにすれば早いのは教えてもらわなくてもわかってる ハードの交換でどのくらい変わるのかと思い質問したのです。 ぐぐっても比較してるところって案外すくないんですよね
自分のマシンでbiosからcpu下げたりphp.iniでメモリとかその他設定できるんだから試さないの? 文句だけ言う人?
月5000円で専用サーバ借りられるんですか? VPSを借りようと思って比較検討してたけど、さくらの専用サーバの一番安いやつがいいでしょうか?
>>434 参考になります。ありがとうございます。
バッファローの無線LANを買おうと思っていたけど、コレガにした方が便利かな?
ダイナミックDNSサービスを試しに使ってみようかな?
>>466 スレチだがXreaのCore Serverがおすすめ
Xreaは昨今の騒動で信頼性が落ちたけど
運営実績はあるからね
安いわりにさくらより条件がいい
>>467 coregaとか使ってないからしらないが
DDNSのためだけにcoreag選ぶのはどうかと思うわ
DDNSサービスなんていろんな人が無料でやってるでしょ
CCNAに興味があるならCisco選んどくかぐらいで
ルーターは基本的な機能があればなんでもいい
>>464 phpの実行速度なんてニッチな比較してるところはそりゃ少ないだろうよw
というか本当にボトルネックはHWなのか?
APCとかeAccを既にやっていて、かつ
>>416 のスペックで遅いっていうなら
設計・実装・(使ってれば)DB設計、もしくはその全部が原因としか思えない。
そんな大量のデータを突っ込むほどメモリ使うのか?
>>416 の作ってるアプリケーションの規模が見えない
>>468 俺は高くても自由度が高くてなにかあった時に対応してくれるとこ借りるかな
proxおすすめ
月額1万なら自前で用意したほうがいいわ
477 :
nobodyさん :2009/04/15(水) 23:29:14 ID:4khjLUbv
header('Content-Disposition: attachment; filename="'.$file_name . '"'); で保存するファイル名を$file_nameにしようとしたのですが この$file_nameに半角スペースが含まれると、それがアンダーバーに置換されてしまいます。 IE7とFirefox3で試したのですがIE7のみこの現象がおきます。 IE7でも半角スペースは半角スペースのままにできないでしょうか?
>>477 PHPはサーバサイドで処理を行うので
同じ処理でブラウザによって挙動が変わるというのは
PHP側ではなくてブラウザ側に問題があると考えたほうがいい
479 :
416 :2009/04/16(木) 00:09:30 ID:CSR5Re1E
>>471 たぶん現状でもだいぶ早いと思います。
H/Wの変更が速度にどれぐらい影響あるかが質問の趣旨です
>>472 サンクス
>>473 かなり大規模な部類だと思います。
>>477 User-Agentを見るなりしてIEの時だけrawurlencode()するのが一つの手
$name = "あいうえお かきくけこ.txt"; // UTF-8で
header(sprintf('Content-Disposition: attachment; filename="%s"', rawurlencode($file_name)));
>>479 こういう答えの出ないアンケート的な話題は雑談スレがお勧め
スピリチュアルカウンセラーが沸いてしょうがないしそろそろ打ち切ってくれないか
IE7も十分に糞だったことにマイ糞ソフトの本気を感じた IE8はましになると信じたい、まぁ実際結構ましっぽいけど
どの辺りが?
>>482 IE6、IE7よりはずっとW3C標準に準拠してるじゃん
逆に駄目だという根拠はどこにある?
>>482 みたいな馬鹿がいるから対応がめんどくせーんだよ
なんでそんな必死なん?
×header関数がブラウザの挙動によって動作が変わるっておかしいよな ○headerの解釈がブラウザによって微妙に異なる
Core鯖使ってるけどやめたほうがいい 鯖落ち半端ないし、重すぎる
487 :
nobodyさん :2009/04/16(木) 11:13:07 ID:6tbBKPlQ
WebMessenger的なものを作ろうと思ったのですが、 新着メッセージがある場合にポップアップするのって、Ajaxで定期的に通信を行っているのでしょうか それとも、オンラインゲームのような通信方法なのでしょうか 定期的な通信の場合、サーバーに負荷がかかると思ったので、オンラインゲームのような、サーバーからクライアントに情報を送信するような方法ってPHPでできませんか? とか、あー何か色々書いてるうちに、Ajaxで定期的に通信したほうがいいかなと思ってしまったorz この質問キャンセルするわ
488 :
nobodyさん :2009/04/16(木) 11:16:38 ID:y04hknOT
<?php class Customer { private $name; public setName($name) { $this->name = $name; } } $c1 = new Customer(); $c1->setName("kinosita"); ?> Parse error: parse error, expecting `T_VARIABLE' in C:\apache2\htdocs\test.php on line 4 というエラーが出てしまいます 原因個所がわかりません どなたかご指摘お願い致します
public function
491 :
nobodyさん :2009/04/16(木) 11:28:45 ID:y04hknOT
ありがとうございます
functionが抜けてました
セットしたkinositaって名前を呼び出したいのですが
>>488 の最後にecho $c1->name;と記入すると
Fatal error: Cannot access private property Customer::$name in C:\apache2\htdocs\test.php on line 11
と出ます
なので3行目のprivateをpublicにしたら表示されました
privateの変数を出力する場合はどうしたらよろしいでしょうか?
セッターがあるならゲッター作ればいいじゃん
493 :
nobodyさん :2009/04/16(木) 11:56:36 ID:pfNZqllC
クラスの解説サイトを探してるのですがPHP4のしか見つかりません PHP5でクラスのサンプルコードついてる入門サイトを教えてください
>>492 セッターゲッターって初めて聞いた俺恥ずかしいwwwwwww
今までセット関数・ゲット関数って言ってたwww
>>496 うん
俺もJavaやりはじめてsetXXXとgetXXX使い始めたけど(スクリプトの改造がメインで)
その言い方聞いたのは今日がはじめてだったわ
下駄と雪駄か
499 :
nobodyさん :2009/04/16(木) 20:09:37 ID:jPGJyauu
テンプレート書いてるんですが、 良くあるリンクメニューで ページaaaの時 <li><strong>あああ</strong></li> <li><a href="bbb">いいい</a></li> <li><a href="ccc">ううう</a></li> ページbbbの時 <li><a href="aaa">A</a></li> <li><strong>いいい</strong></li> <li><a href="ccc">ううう</a></li> とりあえずこんな感じ <li><?php if ($page == 'aaa') echo '<strong>あああ</strong>' else echo '<a href="aaa">あああ</a>'; ?></li> <li><?php if ($page == 'bbb') echo '<strong>いいい</strong>' else echo <a href="bbb">いいい</a>'; ?></li> <li><?php if ($page == 'ccc') echo '<strong>ううう</strong>'else echo '<a href="ccc">ううう</a>'; ?></li> あああ、いいい、やhtmlは変わることがあるので、 テンプレートでデザイナが変更できるようにしたい。 こういうのは皆さんどうやって書いてますか?
foreachで回してifで分岐
$SITEURL = '
http:// '.$_SERVER['SERVER_NAME'];
$strong = ' class="strong"';//class名
$page = $_GET['page'];//など
$page_link = $_GET['mode'];//など
$A = 'A';
$a = 'あああ';
$b = 'ううう';
$c = 'いいい';
$link = <<<_EOD_
<a href="{$SITEURL}/{$page_link}.html" title="{$page}.htmlへ移動">
_EOD_;
$link2 = <<<_EOD_
</a>
_EOD_;
つづく
switch($page){ case aaa: $aa = $strong; $bb = $link; $cc = $link; $aaa = ''; $bbb = $link2 $ccc = $link2 break; case aaa: $aa = $link; $bb = $strong; $cc = $link; $aaa = $link2; $bbb = ''; $ccc = $link2; break; } echo <<<_EOD_ <ul> <li{$aa}>{$a}{$aaa}</li> <li{$bb}>{$b}{$bbb}</li> <li{$cc}>{$c}{$ccc}</li> </ul> _EOD_; うちは趣味でしかしてないのでこの程度で十分
きったねぇコードだな んでメニューが9つになったら3倍書くわけですか
504 :
nobodyさん :2009/04/16(木) 21:19:24 ID:krmlLaYN
配列作るときにarray()とか書かなくて済むようになるのっていつ? 拡張でできたっけ?
その程度の手間を惜しんでないでロジックを最適化しろ
506 :
nobodyさん :2009/04/16(木) 21:57:06 ID:XUzGmp6d
>>480 その方法で半角スペースの問題は解決しました。
しかし今度は長いファイル名のときにファイル名の先頭が文字化けに・・・orz
IEが糞なのを実感した。
>>504 [a, b, c] で書けるようなパッチが上がったようだが、本家への取り込みは却下されたらしい。
うざくなるだけだからいらない
ただでさえ言語汚いのに変な記号増やすべきじゃないってことだろ やるならせめてJava,C#系にあわせて {"a", "b", "c"} じゃないか?
JavaScriptは[]だろ ちなみに{}はJavaScriptでは連想配列 だいたいJava C#で配列なんて使わないし どうせならPHPがコレクション実装すればいい ってここでほえても仕方ないんだが
どうでもいいけどいつの間にかwindowsでcronできるようになったんだね
はい?
今更何言ってんの?
>>512 かなり昔からタスクスケジューラという名前で存在してるんだが・・・。
>>516 ごめんそれはcronじゃなくてタスクスケジューラだ
cron知らないの?バカなの?
519 :
nobodyさん :2009/04/17(金) 14:26:53 ID:rayC69Kt
変数について教えてほしいのだが、 例えば、パラメータ$_POST['hoge']やセッション変数$_SESSION['hoge'] というのが、特に代入なしに $hoge で取れてしまい、そういうものだと思っていたら、あるとき、 それでは取得できなくなったりし、この辺の仕様ってどうなっている? 結局怪しいので、全部きちんと$_POSTなどで取るようにしたが。
register_globals
>>519 それ昔の仕様
今でもiniで設定できたはずだけどやめたほうがいい
$_POST、$_GET、$_SESSIONで取得するのが一般的
522 :
519 :2009/04/17(金) 15:07:59 ID:???
>>520 , 521
サンキュー。
そういうことか。
昔の仕様すごいよなあ。querystringから内部の変数書き換えまくり
524 :
nobodyさん :2009/04/17(金) 17:12:12 ID:uEgfagTh
PHPとMySQLを使うシステムで、公開用サイトの全ページに 1:MySQL上のconfigテーブルを読み込む 2:configに設定してある内容によって処理を分岐 3:ログを書き込む という処理が発生します。 1アクセスで何回かのSQLを実行することになるのですが、 サイトのアクセスが増えると、処理の負荷などで後々問題になるでしょうか? 現時点では問題ないのですが、先の事を考える時になります。
>>524 いちどキャッシュとして書き出しておけばいいんじゃない?
>>524 configテーブルが満たす仕様による。
高度な検索性を必要とするconfigテーブルでないのなら、そんな設計はやめた方がいい。
527 :
nobodyさん :2009/04/17(金) 19:34:25 ID:hTOqIwMv
HPでヘッダやフッター、ナビボタン、背景、レイアウトは同じで 例えば写真だけ違うの見せたい場合ってPHPが役立つのですか?
HTMLコピペして画像のファイル名だけ編集してUPすればよくね
すきなの選べ ・DWのテンプレ機能 ・PHP ・Java ・Perl ・Ruby ・JavaScript
おいおい、SSIが入ってないぞ
3.0になったPythonもお忘れなく☆
ちょっとちょっとFlashが入ってないよ
533 :
524 :2009/04/17(金) 21:58:50 ID:uEgfagTh
>>525 それも考えたのですが、ファイルに書き出すなら
データベースの利便性が失われる気がして悩んでます。。
セキュリティとかも気になるし。
>>526 高度な検索は必要ありません。テーブルからconfigファイルを読み込み
配列に入れて、各条件(ログインなど)の時に参照すると言った仕様です。
534 :
nobodyさん :2009/04/17(金) 22:04:21 ID:3OZ9UJNj
if (!$fp = fopen('...', "r")) { ... }の (!($fpではなくて !$fpみたいなコーディングスタイル使ってる?
うん
>533 iniとかXMLとかJSONとか、なんでもいいから好きなファイルフォーマットで書き出しておけ。 もしくは単純にPHPコードに配列として書き込む(当然設定だけ別ファイルに隔離)のもアリ。 (本当はあまりよくないのだが、APCなどのキャッシュが効くようになるという大きなメリットがある) とりあえず、「データベースの利便性」ってなんだ? 上記のような手段ではなく、わざわざ遅く難しいDBに情報を格納している理由は?
>>533 データベースの接続に必要な情報はファイルの方に書き込まないといけないじゃん
その情報を知ってしまえば、わざわざデータベースに突っ込んでも無意味じゃん
それに設定項目が分散しちゃうと、後でめんどくさくなるだけじゃん
>>533 そもそも
>>524 のキャッシュとして書き出しって意味がわからんな。
一度取ってきたらメモリにキャッシュすればいい。
クラス変数にいれるか、インスタンス変数にいれてsingletonにする。
クッキーって期限がありますよね ということは、切れたとき使えないときの為のコードも要りますよね? クライアントが便利になるよという機能であって何かの代わりになるものではないですよね? 例えば、購入履歴とかはログを残しといてアカウントで参照できるようじゃないと クッキーが有効であっても期限がありますから ちがうん?
あってる。 クッキーは記録を残すための物じゃない。 ログイン状態の保持(セッションキーの保持)専用だと考えていいよ。PHPでは他の用途にはあんまり使わない。 消えたら困るものはクッキーに保存してはいけない。 何かを保存するとしても、掲示板の名前欄みたいな、消えてもいいものだけにしとけ。
すっきりしますた。ありがたや。
542 :
nobodyさん :2009/04/18(土) 02:14:48 ID:dAOHt7Vp
厳密にはphp関連の質問にはならないかもしれないんですが
index.php?i=1や
index.php?i=2といった変数付記でのページURLを、
home.html
news.html
というURLでも呼び出すことができるようにするhtaccess(か何か)の
記述方法があったはずなのですが思い出せません。
home.htmlやnews.htmlはファイルが実際存在するのではなくて、
URLっぽくする(というか、覚えてもらいやすくする)ための便宜ファイル名です。
例えば、ユーザー側――ブラウザ上のURLは「
http://www.hoge.com/news.html 」となりますが、
実際に呼び出しているファイルはサーバー側ではindex.php?page=1である、といった感じです。
断片的な情報しかなく稚拙な説明で申し訳ございませんが、どうかご教授下さい。
545 :
524 :2009/04/18(土) 11:10:50 ID:RfYbPRbr
返信が遅れてすみません。
>>536 DBを使ってない場合は、dat形式にしてファイルに書き出していました。
昔の、CGIの掲示板などを作る時のやり方です。
>とりあえず、「データベースの利便性」ってなんだ?
セットアップの仕組みを作っているのですが、DBで管理する方が
編集しやすいのです。ファイル編集でも出来ますが、手間がかかるし。
それに、有名なオープンソースシステムをみても、だいたいconfigは
DB上で管理しているので、同じようにしたいと思っています。
>>537 データベースに接続する情報はもちろんファイルに書きます。config.phpなどに。
そうじゃなくて、サイト毎の設定ってありますよね?(例えばdate形式とか)
そういう諸々の設定を管理するのにDBを使っています。
>>538 Smartyのキャッシュファイルのイメージで回答しました。
メモリキャッシュしても、ページ推移してたらもう一度読み込む必要がありますよね?
セッションやクッキーを使っても良いのですが、サイト自体の設定を
第三者のファイルにキャッシュするのは問題あると思います。
(認識が違っていたらすみません。もっと勉強します
どの程度効果が出てるかまでは測ってないんでアレだけど、自分はDBの内容から、 実行時に扱いやすいデータに変換したXMLを出力して、こっちを読み込ませてる。 一次データの管理はDBの方が安全だしね。 serializeの方がいいかなぁとも思ったが、なんかあった時にデバッグしにくそうなんで止めた。 後からでも変更できる話だし。
547 :
nobodyさん :2009/04/18(土) 11:49:03 ID:oOFMY9IY
cakephpを使おうと思ってcakephpのチュートアルに沿ってブックマークアプリを作ってたのですが 何故こういう書き方にするのか、何故こう書いたらこういう風に出力されるのか、といったことがまったく理解できません フレームワークを始める前にOOPの勉強をした方がよろしいでしょうか? また、学習の順番としてはクラスの書き方を覚えてからOOPに移行したらいいでしょうか?
まず公式マニュアルの言語リファレンスを読んだ方がいいよ
fsockOpenを使ったメール受信で、複数の添付ファイルがある場合複数ファイルを保存するにはどうすればいいのでしょう。
550 :
nobodyさん :2009/04/18(土) 13:10:05 ID:xPyKg5dr
さげちゃった。
551 :
nobodyさん :2009/04/18(土) 13:31:21 ID:B6cKaOUW
クラスとか全然理解できない ユーザ定義関数じゃだめなん?? どういったときにクラスで書くとか 感覚が掴めない こういうときに必要なんだぜって やさしく教えてつかあさい;;
クラスなんて使わない。 関数も自分でつくらない。必要があれば使えばいいし使わないでもいいなら使わないでもいい。 無理に使う意味なんてないでしょ。
クラスってのはオブジェクト指向設計を実装するために使うものだぞ?
554 :
nobodyさん :2009/04/18(土) 13:59:47 ID:moRQGLP/
関数内でincludeされたクラスや関数のスコープはグローバルとなる、というルールはPHP6以降でも変更されることはないの?
555 :
nobodyさん :2009/04/18(土) 14:06:59 ID:B6cKaOUW
>>552 そう割り切っちゃえば話は簡単なんだが、理解が出来ないってのがつらい;;
>>553 だから、そいつをやさしく教えてくれ;;
そのオブジェクト指向ってのがよくわからんのだ><
ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ
557 名前:nobodyさん[sage] 投稿日:2009/04/18(土) 14:14:54 ID:??? ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ 557 名前:nobodyさん[sage] 投稿日:2009/04/18(土) 14:14:54 ID:??? ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ 557 名前:nobodyさん[sage] 投稿日:2009/04/18(土) 14:14:54 ID:??? ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ 557 名前:nobodyさん[sage] 投稿日:2009/04/18(土) 14:14:54 ID:??? ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ 557 名前:nobodyさん[sage] 投稿日:2009/04/18(土) 14:14:54 ID:??? ウェブプログラムの規模だとクラス使って書いても便利だと実感できないだろ
>551 ・自分の書いたコードを晒して、ヒマな人に添削してもらう ・腕のいい奴の書いたコードを読む 前者のほうが力になりやすいかね。 屑コードを、クラスを使った近代的なコードに書き直していく過程を見るのが一番わかり易い。 そこらで公開されているPHPのコードはゴミと芸術品の両極端が多いから、初級→中級の勉強には微妙。 そこのステップは知識云々じゃなく、考え方の転換を迫られるから、引っかかる奴が多いのは事実。 >557みたいに諦めちゃう人も多いけど、身に着ければ強力で便利なツール。
>>551 まぁ、なんかWebアプリとかを作成していく中で、
誰かが作成したライブラリだとかPEARだとかを使うことになったとして
そのライブラリがただのユーザ定義関数だけで書かれていて、設定用に
大量のグローバル変数を有していたら、困ったことにならない?
それだけでも、機能の集合がクラスになっているということに意味はあると思うけど。
>>555 どの辺まで理解できて無いかによってはスレ全部埋めることになるが・・・ム板行ったら?
とりあえず全部自分ひとりで趣味レベルのモノ組むのであればオブジェクト指向にこだわる理由は無い。
どーしても理解したいって言うなら、近道は無いとだけ言っておく。
563 :
nobodyさん :2009/04/18(土) 17:49:55 ID:zbLkqu9f
mysqlからデータを引っ張りだし表示させたいのですが 20090418162123をいう文字列を(int)を用いてキャストした場合に なぜか同じ数字ではなく2147483647という数字に変換されてしまいます。 これはどういった問題が考えられるでしょうか? すいませんがアドバイスよろしくお願いします。
564 :
nobodyさん :2009/04/18(土) 18:04:18 ID:moRQGLP/
10桁こえとる
DATETIMEのままでいいだろ
(long)
567 :
nobodyさん :2009/04/18(土) 18:13:15 ID:moRQGLP/
しかしPHP5からクラスに変数(メンバ)保存できるようになったのでもっぱらstaticで使いまくって インスタンス全然つかわんようになったよ。せいぜいmysqliのインスタンス作るぐらい。 staticの方が3倍速いからね みんなはどうなの?
そんなに速さ追求するならなぜPHP使ってるの? ってつっこまれるぞ
staticしか使わないなら関数と大して変わらないじゃん
>>570 漢は手続き。
ちょっと言ってみたかっただけだけど。
OOPはわかってもMVCの概念を理解するのはむずかしい それを分離して補ってくれるのがフレームワーク OOPOOP言うのは面倒だからまとめてJavaのサイトで勉強してきなさい
PHPを書くのに使うIDEってーと、何がお勧めですか? コードス補完があると便利なんですが
574 :
nobodyさん :2009/04/18(土) 18:55:58 ID:moRQGLP/
>>568 普及率が高いから。jspやaspは搭載してないレンタルホストがほとんどだしね。
>>569 カプセル化だけほしいんだよね。変数の扱いが楽だから。漢は手続きと言ってみたいけど、へっぽこなので変数汚染しまくり。
>>573 初心者のうちはPHPエディタ。
中級以上はPDT
フレームワークの提供するMVC構造は型志向プログラミングの考え方からはそれなりに遠い地点にあるプログラミング構造だぞ。 例えばCakeやRailsなどのフレームワークはTableModuleパターンを押し付けてくるが、ストラウストラップのOOPの考え方に一番近いのはドメイン駆動型の設計。 で、フレームワーク上でドメイン駆動設計を実現しようとすると、クラス階層を1枚上に丸ごと被せざるを得ない、というくらい両者は相性が悪い。 (基盤となるM-V-C間の繋ぎこみ自体はポリモーフィックに行なわれている事が多いので、無関係でもないが) まあ、その「押し付け」のおかげでscaffoldingなどの高い開発効率を確保できるわけで、悪いとは言わないけどな。 少なくとも、MVC構造を理解する事と、OOPの考え方を理解する事は、別の問題と考えるべき。 実際、GoFをひとつも理解してなくともRailsやCakeで生産性は出るし、OOPを突きつめると必然的にRailsやCakeの設計に行き着く、というわけでもない。
579 :
563 :2009/04/18(土) 23:12:47 ID:???
580 :
nobodyさん :2009/04/19(日) 00:13:57 ID:KO8gMtKF
【OS名】Win32 【PHPのバージョン】5.2.9-2 【質問内容】 配列の任意の要素を削除する方法はありますか? 先頭や末尾の削除は簡単にできますが、任意の要素の削除ができません。 一応削除したい要素より後ろの要素を一つずつ前に詰めていく方法もありますが、一発でできるような方法があれば教えてください。
582 :
nobodyさん :2009/04/19(日) 01:12:04 ID:KO8gMtKF
プログラムは、「データ」と、データを扱う「処理」の2つの構成要素から成る。(チューリングマシン) オブジェクトは、データに処理がくっついたもの。 言ってしまえばそれだけのことでしかない。 OOPを難しく考える必要はないよ。
OOPを勉強するためにJavaを勉強するのも良いけど、 ラムダ計算、関数型プログラミングに慣れておくために、LISPも勉強しておくと良いと思います。
>>584 オブジェクト指向設計が重要なんだろ
単なるギミックじゃないぞ
>>584 の言い方はどうかと思うが、OOPで出来ることを、単なるギミックとして使うのもアリだとは思う。
いわゆる Stateパターンとか OOD的にはかなりビミョーと言う認識。
588 :
nobodyさん :2009/04/19(日) 13:15:49 ID:TOquu1lD
会員(ログイン)ページの中の申し込みフォームを 入力画面→確認→投稿という形で作ってまして 作成手順は入力画面でポストされたものをセッションに代入、 値を保持しながら確認→投稿という形で作成しました。 申し込みフォーム自体は問題がないのですが、 例えば、入力画面から確認に行き、そこから投稿せず会社概要など 他のページに移動して再度入力画面にいくと以前入力された値が 表示されてしまいます。おそらくセッションが残ったままに なってるのが原因だとは思います。 入力画面←→確認←→投稿は値を保持させ他のページに飛んだ場合は 値を消去するやり方を教えていただけませんか? アドバイスよろしくお願いします。
>>588 unset($_SESSION['hoge'])すればいいんじゃ?
590 :
588 :2009/04/19(日) 13:44:00 ID:???
>>589 返信ありがとうございます!
入力画面、確認画面、投稿画面以外の全てのページに
unset($_SESSION['hoge'])を設定しとこうかなとも考えましたが、
もしかしたら違うスマートやり方もあるのかなと思い質問してみました。
hiddenでいいやん。
>>577 そうだよな。CakePHPの例で言っても、所謂OOP的な書き方って、Model, Controllerのextendsくらいだもんな。
基本、コンストラクタは省略されてるし、セッター、ゲッターなしにいきなりプロパティ変数に設定値を代入でOKとか。
あと、命名規則とか記述に縛りが多いのも独特。
593 :
588 :2009/04/19(日) 15:05:06 ID:???
>>591 返信ありがとうございます。
hiddenも検討したんですが今回は項目が多く
入力←確認、確認→投稿時に全ての値をセットしないと
いけなくなりますので出来ればセッションでいけたらと思います。
変な質問すいません・・
そのページにどこから来たかでわければ?
初々しいな
1. 入力フィールドが多数ある時は、そいつらを扱うクラスや関数を作っておくと楽。 複数の画面から同じフォームを生成する場合などは、使い回しが効くと非常にラクになる。 2. hiddenは別に面倒じゃない。確認画面は foreach($_POST as $k => $v) echo "<input type=\"hidden\" name=\"$k\" value=\"$v\">"; でじゅうぶんだろ?(XSSを考え、実際はエスケープする事)。
>>547 まずCAKE使うだけならOOPの勉強しなくても、まぁ使える。
さらにCAKE使ってるとOOPに触れざる得ないから多少慣れるのもいい事かも。
で、クラスの書き方と使い方ぐらい入門系の情報でやっておくとある程度身に付いてくるよ。
>>593 まぁ好きにすれば良いんだけど、自分だったらそのセッションの内容をXMLに変換して、
これをhidden に持たせて、サーバ側ではsimplexml_load_stringでパースする。
どのみちCSRF防ぐためにワンタイムトークンとかHMAC仕込むときhidden使うしね あんま意味ないけどhiddenはbase64_encode(serialize())とかすれば一個ですむよ とこでいくつかのWebアプリでは、プレビューには投稿画面に入力データのリストを追加しただけのものを表示するね 確認画面というフェーズを新たに作るより省力化になっていいと思う。確認画面から投稿画面にもどって、、、という作業もいらないし
> あんま意味ないけどhiddenはbase64_encode(serialize())とかすれば一個ですむよ ここだけケチをつけて済まないが クライアントに渡すデータは他のフォーマットにしとけ unserialize()時にコードインジェクションが起きる
601 :
599 :2009/04/19(日) 23:09:38 ID:???
>>600 こりゃ失敬w
改ざん検知してないと__wakeup()されたりしちゃうね
602 :
nobodyさん :2009/04/19(日) 23:14:21 ID:cHMoaxlc
C++でPHPってかけますか?
はぁ?
一部C++で書かれてるし、エクステも一応書けるはず。
エクステンションとして利用するならCでもC++でも.netでもdelなんちゃらでもいける
606 :
nobodyさん :2009/04/20(月) 15:46:47 ID:yRu17DN3
$ary[1]= "blue"; $ary[2]= "red"; $ary[3]= "yellow"; $ary[4]= "white"; 上記のような配列があって、 一番大きい数字のキー(上記なら4)を取得したいのですが、 $aryをforeachで繰り返してキーを取得するより何かスマートな方法はありませんか?
count($ary)
>>606 その数値の定義のルールは?
1番目から1、2・・・5ってつけるなら
count($ary)でいけるんじゃね?
キーに文字列とか、飛ばし飛ばしの数値とかだったらループさせないといけないはず
キーソートあったと思うけど、個人的には何か使いたくないな
というか、使う機会がないな
arsort($ary,SORT_NUMERIC); foreach($ary as $value){ $abc[] = $value; } $abc[0]; こうするのがいやってことね。
>>606 つ $ary[max(array_keys($ary))];
611 :
nobodyさん :2009/04/20(月) 16:04:04 ID:yRu17DN3
>>607 >>608 ほんとだ、こんな方法が・・・。
自分の頭の固さを痛感しました。
>>609 ですね。でもシンプルなのが書けそうです。
ありがとうございました!
612 :
nobodyさん :2009/04/20(月) 16:15:13 ID:yRu17DN3
>>610 結果は同じでも、命令としてはこっちのが命令の意図に近いですね。
どっち使うかちょっと考えてみます。
ありがとうございます!
614 :
nobodyさん :2009/04/20(月) 16:54:04 ID:yRu17DN3
>>613 そんな便利なものが。
今回は取得したキー値を使い回すコード書いてるので、
endは使えませんが今後参考にさせてもらいます。
ありがとうございます!
617 :
nobodyさん :2009/04/20(月) 19:12:07 ID:9zjWZumm
abc cba acb 上記の内容のテキストファイルの"cba"の行を削除する場合、どのようなコードを書けばよいのでしょうか?
$str = str_replace("cba\n", '', $str);
>>617 ループしてその文字列がcbaなら消せばいいんじゃね?
620 :
nobodyさん :2009/04/20(月) 19:39:36 ID:9zjWZumm
>>618 ,
>>619 ありがとうございます。
それと、そもそもファイルの内容を行ごとに配列に格納するのはfreadでも可能でしょうか?
file関数だとロックができないようなんですが…
>>620 $rows = file('hoge.txt');
ごめん読んでなかった 明示的にロックしたいならやっぱflockで freadはデフォルトでは行末まで読み込みでしょ
ありゃごめん、phpのfreadは違うのか
グダグダだなw
627 :
617 :2009/04/20(月) 21:17:31 ID:9zjWZumm
皆さんありがとうございます。
何度も申し訳ないのですが、書き込みを参考にして以下のようなコードを書き、
実行したところ、出来上がったファイルはなぜか最終行がかぶってしまいます。
どこかおかしなところがあれば指摘していただけないでしょうか?
ファイルの内容は
>>617 と同じ状態です。
$filename = "test.txt";
$delword = "cba";
$handle = fopen($filename,"r+");
flock($handle,LOCK_EX);
$contents = fread($handle,filesize($filename));
$lines = explode("\n",$contents);
$del = array_search($delword,$lines);
unset($lines[$del]);
$line = join("\n",$lines);
rewind($handle);
fwrite($handle,$line);
flock($handle,LOCK_UN);
fclose($handle);
かぶるって何?
>>628 俺もそれ書き込もうとしたけどめんどくさくなってやめたwwww
630 :
628 :2009/04/20(月) 21:21:44 ID:???
まぁそりゃ abc acb を abc cba acb の先頭から書き込んでるんだから重複するだろう
631 :
nobodyさん :2009/04/20(月) 21:22:19 ID:9zjWZumm
>>628 >>629 分かりにくくてすいません。
abc
acb
acb
このようなファイルが出来てしまいました…
632 :
nobodyさん :2009/04/20(月) 21:32:10 ID:9zjWZumm
>>629 一度ロックを解除して新規に作成するしかないんでしょうか…
できればロック内ですべて行いたいのですが…
PDO_SQLITEでいいじゃないもう。
一時的に適当な名前にリネームしちゃえば?
>>627 fopenについてマニュアル呼んで来い
rとかwとかaとかbとか何を指定したらいいのか根本的にわかってなさ杉
636 :
617 :2009/04/20(月) 23:01:16 ID:9zjWZumm
もうあきらめてリネームすることにします。
>>635 私が
>>632 で書いたようにwで新規に作るしかないってことじゃないんですか…?
普通にやれよw
638 :
nobodyさん :2009/04/21(火) 00:54:05 ID:HHvQ3yZ0
いや別に何も終らんだろ。 エンタープライズ方面への昇格は絶望的になったが。
前のデータを残したまま上書きしてるのが問題 書き込む前にftruncate($fp, 0);とかしてファイルをクリアしてから書き込めばいい 書き出しが完了する前にプロセスが落ちるとファイルが壊れるので、renameの()方が安全とは思う しかしちょっとしたテキストなら `sed -e '/cba/d' test.txt`; でいいような木がする
641 :
nobodyさん :2009/04/21(火) 13:14:45 ID:aCugoNL+
$a=1;$b=1;$c=1;$d=1と$ary=array(1,1,1,1)はどちらが鯖に負荷がかかりませんか? 変数の数と値についてはサンプルのため簡略化しましたがどちらも一定ではないと捉えてください
どっちでも変わらん
【OS名】WindowsVista
【PHPのバージョン】php5.26
【質問内容】
正規表現でhogeをfooに変換したいのですが、どう書けばよいでしょうか?
それだけだと簡単ですが、<a>タグで囲まれてる中は変換したくないのです
例:
hoge<a href="
http://www.hoge.com/ ">hoge</a>hoge
という文字列があったとして、これを
foo<a href="
http://www.hoge.com/ ">hoge</a>foo
に変換したいです
使用するのはpreg_replaceでお願いします
644 :
643 :2009/04/21(火) 14:13:13 ID:???
5.26というバージョンはないんだぜ
646 :
643 :2009/04/21(火) 14:58:44 ID:???
ミスでした 【PHPのバージョン】PHP Version 5.2.6 でお願いします
おk 今調べてやるからちょっと待ってろ
648 :
643 :2009/04/21(火) 15:00:35 ID:???
>>644 リンク先のようなサイトあるのか
おれもつくろかな^^
一番はじめに回答できた方は下スレ公式認定回答者に認定します
例で使うドメインはexample.comにしろってテンプレ書いてあるじゃんよく読めよ
答えられない野郎がいきがるんじゃねえぞ!!!!!!!
^hoge|(?!<[^>]*>)hoge(?!<[^>]*>) パターンがよくわからん、こういう感じ?
654 :
643 :2009/04/21(火) 15:31:19 ID:???
>>651 いえ、hrefの中身にもhogeがあった場合、
そこも無視してほしいのです
>>651 回答も添えられないだけのただの煽り厨(笑)
656 :
643 :2009/04/21(火) 15:37:10 ID:???
>>653 入力例はただの例で、下記のような場合も考えられます
hogeAhogeAhoge<a href="hoge">hogeBhogeBhoge</a>hogeChogeChoge
<a href="hoge">hogeBhogeBhoge</a>hogeChogeChoge<a href="hoge">hogeBhogeBhoge</a>
↑の場合は↓のようになってほしい
fooAfooAfoo<a href="hoge">hogeBhogeBhoge</a>fooCfooCfoo
<a href="hoge">hogeBhogeBhoge</a>fooCfooCfoo<a href="hoge">hogeBhogeBhoge</a>
やりたいことはあくまで【aタグで囲まれてれいる以外のhogeをfooに変える】なのです
一度Aタグで囲まれている部分を別のものに置き換えてからやってみれば?
そこまで執念深くhogeを置換したい理由は? なんかされたの?
自分の力では解決できなくなると理由を捻じ曲げようとする低レベルのおじさん乙wwww
658じゃないが、一応何のために置き換えるか聞いておくと 別のやり方が見つかるかもしれんのじゃないかな? まぁ658の聞き方はちょっと良くないかもしれんが・・・
使用するのはpreg_replaceでお願いします 使用するのはpreg_replaceでお願いします 使用するのはpreg_replaceでお願いします 使用するのはpreg_replaceでお願いします 使用するのはpreg_replaceでお願いします 使用するのはpreg_replaceでお願いします 使用するのはpreg_replaceでお願いします 使用するのはpreg_replaceでお願いします
変換しない条件をすべて書き出してそれ以外のhogeを置換、だろ
まだできんのかよおまいら。。。 preg_replaceとstr_replace組み合わせるだけだろ
こんなの今時の小学生でも書けるのにおまいらときたら。。。
665 :
643 :2009/04/21(火) 15:59:30 ID:???
あれ、何故か書き込めない
666 :
643 :2009/04/21(火) 15:59:48 ID:???
>>658 >>660 本当にやりたいことは、
与えられた文字列の中のURLとメールアドレスと電話番号を
自動的にリンクに置換する関数を作るというものです
(それぞれ<a href="">と<a href="mailto:">と<a href="tel:">に)
名簿業者乙
668 :
643 :2009/04/21(火) 16:01:03 ID:???
URLとメールアドレスの置換はできたのですが、
電話番号の置換で意図しない動きをしたので、困ったのです
というのも
[email protected] という文字列が与えられた場合
メールアドレス置換
<a href="mailto:
[email protected] ">
[email protected] </a>
↓
電話番号置換
<a href="mailto:<a href="tel:0909999999">0909999999</a>@xxxx.ne.jp"><a href="tel:0909999999">0909999999</a>@xxxx.ne.jp</a>
という惨事になってしまうからです
http://www.hoge.com/0909999999/ の場合も同様の現象が起こります
ですので、URLとメールアドレスの変換を行った部分については無視し、
電話番号のリンクだけを作りたいと、そう思って質問した次第です
669 :
643 :2009/04/21(火) 16:02:38 ID:???
>>657 それが私のスキルでは一番早そうですね
一度それで組んでみます
ありがとうございます
>>667 名簿業者じゃないです
携帯サイトを作っていて
ユーザーの書き込みを自動リンクさせたいだけなのです・・・
先に電話番号を置換すればいいんじゃね? 基本的に文字の並びがシンプルなのから置換するのがベスト
673 :
643 :2009/04/21(火) 16:16:11 ID:???
>>672 そうしてしまうと、
先ほどの例のような
[email protected] が
<a href="tel:0909999999">0909999999</a>@xxxx.ne.jp
になってしまいます
ここはやはりメールアドレスで置換したいと思っています
リロードしてないで作業しろw
その前に、「与えられた文字列の中」の定義をパターン化する必要があると思う まさか掲示板に書き込まれた内容とかじゃないよな・・・?
676 :
643 :2009/04/21(火) 16:19:39 ID:???
>>675 そういったものです
携帯で自分のサイトを作って、
CMSに内容を変更できるような仕組みなのです
名簿業者しかやらない処理
678 :
643 :2009/04/21(火) 16:21:15 ID:???
変換なんて誰でもやるだろ。業者は逆にリンクなんか利用しない。逆に危険だから。
> CMSに内容を変更できるような仕組みなのです これどういう意味? 自分で新着情報とかそういうのに番号載せて、それにリンクつけるってこと? それだったら<tel:0120000000>のような形式で記述してそれを置換すればよくね? 一般ユーザーから投稿された電話番号の置換はやめとけ あと、ただの数字の羅列か電話番号かの判断などさまざまなパターンを考えれ
682 :
680 :2009/04/21(火) 16:29:37 ID:???
ちなみに俺の考えた電話番号マッチ @preg_match_allで数字の羅列を全て取得 Aループさせて色々なパターンをマッチ 0Xで始まる10桁の数字かどうか 090or080or070で始まる11桁の数字かどうか 0120で始まる10桁の数字かどうか etc B一致したものを、変換後の数字に持たせる Cループさせてstr_replaceとかで置換 書き方アバウトですまん。 あと他にいい方法あれば俺にも教えてくれ
683 :
643 :2009/04/21(火) 16:35:59 ID:???
>>680 ,682
なるほど・・・
>CMSに内容〜
これは、一般ユーザーの投稿内容でサイトの内容を変更する感じのサイトっていう意味でした
684 :
680 :2009/04/21(火) 16:37:52 ID:???
>>683 一般ユーザーが電話番号とか編集してそこにリンク貼るってこと?
個人情報漏洩の助長すんの?
685 :
643 :2009/04/21(火) 16:41:07 ID:???
>>684 うーん、クライアントの要望なんですが、どうなんでしょうね?
会社の電話番号とかじゃないでしょうか?
686 :
680 :2009/04/21(火) 16:43:12 ID:???
>>685 ああ、社内ネットワークで使うのか
電話番号だけ[]で囲ってもらうようにするとかすればいいんじゃないかな?
それか文字の先頭にTel:またはрつけてもらうとか
具体的にどのようなものを作るかによって変わってくるからなぁ
本質とは違うところで叩きたいやつばっかだな。どういう条件で動かすかもわからないのに。
688 :
643 :2009/04/21(火) 16:47:45 ID:???
>>686 なるほど、何かしら条件を付けてもらうことにします
ありがとうございました
689 :
nobodyさん :2009/04/21(火) 16:57:51 ID:yGbAtJxQ
preg_replace("/([^\"])(hoge)([^\"])/","\\1foo\\3",$str) タグの中がちゃんとクォートされてるならこれだけでいいんだけどね
>>689 ちゃんとログ読め
途中で仕様変わったぞwwwwwww
691 :
643 :2009/04/21(火) 16:59:53 ID:???
$file = file("textdata.txt"); foreach ($file as $v) { echo $v."
693 :
nobodyさん :2009/04/21(火) 19:37:46 ID:gWZ6QvqO
$file = file("textdata.txt"); foreach ($file as $v) { echo $v."<br>"; } textdata.txtがあります このファイルはオフラインで更新した後に、サーバにアップロードします この場合textdata.txtの内容を出力するときにhtmlspecialcharsは行うべきでしょうか?
textdata.txtは他人はいじるの?
695 :
693 :2009/04/21(火) 19:49:32 ID:gWZ6QvqO
いじりません 私が自宅のパソコンで編集してアップロードするだけで、他の人は一切編集することがありません
>>695 そしたらエスケープはしなくてよい。
自分でメモ帳で手打ちでHTMLを編集して
自分のホームページをアップロードしてるのと同じ。
697 :
nobodyさん :2009/04/21(火) 19:59:20 ID:W2YbvY8A
すまない/usr/bin/phpでhoge.phpをsystem()関数を利用して実行しようとしてるんだけど、 実行してもfalseが返ってくる。ほぼまる一日悩んでるんだけど、よくあるFAQがあったら教えてください OSはCentOSでPHP5.1.6 Apache2.2.3 php.iniのsafe_modeはoffにしてあって、シェルから目的とするphpを実行するとしっかり動作するんだが、 system()から実行できない・・・
肝心のどう書いたかぐらい書けばいいのに
699 :
697 :2009/04/21(火) 20:10:44 ID:W2YbvY8A
>>697 以前、同じような書き込みを見たことがあるような記憶があるような。
bash -c php うんたら でもダメなの?
>>696 トロイの木馬に感染して自分のPCから悪意のあるコードがアップロードされたら?
悪意のあるHP管理者がファイルをアップロードしたらマズくない? サニタイズされてたほうがいいんじゃないの?
704 :
nobodyさん :2009/04/21(火) 22:04:48 ID:uVsldpzX
classに配列をセットして読み込みたいと思っています。 // class内のメソッドとします。 function array_list($key,$val){ $this->list = array($key=>$val); return $this->list; } として $obj->array_list("title","てすと"); $obj->array_list("name","あああ"); を実行ファイルに記述して、class内に配列の値を蓄積したいのですが、 1つしか入りません。どこをどう変えたらいいのでしょうか?
$this->list[] = array(... あるいは array_push($this->list, array()); でどうか 詳しくはマニュアルを読め
>>704 $this->list = array($key=>$val);
ここで上書きしてるからそうなるんだよ
$this->list[$key] = $val;
にすればよい
>>706 一般論として考えるならこの手の類の問題は
なるべくなら最悪の可能性を考えて設計すべきだけど、
絶対に他人が触らず自分も忘れないという前提なら構わないよな
ただ、ちょっとした汎用関数を通すぐらいでカバーできるのなら、
最低それはしておくべきのような気がする
設計思想や仕様以前の安全対策として
text/plainでもどう処理されるか分からないからな
>>706 他の誰かが不正侵入して書き変えてたらどうするの?
>>710 サイト乗っ取られたらどうするってのと、同じレベルの話に聞こえるけどな。
これアップローダの話じゃないんだろ。
っていうか、 textdata.txtに入ってるのがHTMLだったらhtmlspecialcharsしちゃアカンし、
テキストだったらしといた方がラクだろ。
>>693 を見る限りhtmlを出力するみたいだけど
html「に」出力することはわかるけど、 <br>を行末に添付しているから、.txtがhtmlでないことはわかる だからエスケープ処理しとくべきかもね
無知な野郎が多いなww エスケープ刷る必要ねえだろw
>>714 <test>とかがテキストファイルにあったら、
ブラウザに表示されなくないか?
>>710 txtは書き換えるのにソース書き換えたりはしないなんてかわいい侵入者だな
717 :
nobodyさん :2009/04/22(水) 03:30:58 ID:JOPttRIE
>>697 /usr/bin/php ←これが間違ってるか
使えないコマンドを発行してる。
systemの中のコマンドをlsとか簡単なコマンドに変えてやってみ。
あとphpが/usr/bin/以外にないかfindしてみ
718 :
nobodyさん :2009/04/22(水) 14:02:27 ID:1Gt+zU8A
バージョン情報を表す正規表現を書きたいのですが、うまく実現できません。 条件としては数値部分[0-9]に関しては1文字以上の可変です。 以下の値は通過してほしい値です。 0.1 1.1 11.1 1.2.3.4 11.1.1.11111 以下の値は許可しない値です 1 .1.1 1.1. 1..1 始まり部分は以下のようになります。 /^\d{1,}\.\d{1,}〜$/ 〜以降が思いつきません。 以上の形式です。どなたかお力添えをお願いします。
勘だけど/^\d+(?:\.\d+)+$/D
(1)1文字以上の数字で始まる (2)ドット+1文字以上の数字 又は 1文字以上の数字 (3)(2)が1回以上続く でよかないですか?
721 :
718 :2009/04/22(水) 14:15:35 ID:1Gt+zU8A
>>719 希望通りの動作をしました。ありがとうございます。
ついでにD修飾子の意味を教えていただけるとありがたいです。
まずググりました?
723 :
718 :2009/04/22(水) 14:21:18 ID:1Gt+zU8A
>>722 正規表現内で使用(\D)すると[^0-9]ということは分かりましたが
修飾子として使用するとどのような動作になるのかを明記しているサイトを見つけることができませんでした。
725 :
718 :2009/04/22(水) 14:30:29 ID:1Gt+zU8A
>>724 装飾子ってのは修飾子のことを指してるんだとは思いますが、
その検索結果内には/regex/Dではなく/regex\D/の解説結果しかないと思います。
>>723 で明記した通りです。
727 :
nobodyさん :2009/04/22(水) 14:51:06 ID:MEQMnIq/
728 :
718 :2009/04/22(水) 14:51:58 ID:1Gt+zU8A
ゆとりは恐ろしいな・・・・
教えてもらったら態度が急変した事にフイタ
>>727 phpinfo.php が動いてるんだから動くだろうよ。
Server API CGI/FastCGI
だからcgiモードだろうけど。
732 :
nobodyさん :2009/04/22(水) 15:20:24 ID:MEQMnIq/
>>731 ありがとうございます。
Apacheモジュール版ではできて、cgiモードではできないことの代表例といったらどんなものがありますか?
参考までにPHPで作られたカウンタやキャプチャ機能付き掲示板、ブログ等を実装しようとおもっています。
>>732 異なるのはもっと上位レイヤだからほぼない。
cgi-binの下に置かないといけないとかそういうのぐらい。
代表例はBASIC認証を自前で入力画面作るとかだなあ
735 :
nobodyさん :2009/04/22(水) 15:40:35 ID:MEQMnIq/
そうでしたか、安心しました( ´∀`) それほど関係ないならほぼ全てのレンタルサーバーはPHPをcgiモードで 動かしてしまえばいいと思うのですが、そうではないということはユーザー のなかにはApachモジュールでの動作にこだわられてる方が多いということなんでしょうか?
>735 cgiで動作する場合、 Apache → php.exeとかが起動される → 実行 となる。対して、mod_phpはApache自身が実行するので、php.exeの起動を毎回する必要がなくなる。その分早い。 (Apacheがphp.exeを予め起動し、常時スタンバイ状態にしておくイメージ) (実際はUnix系サーバだろうからexeなんてファイル名じゃないわけだが、まあイメージだ)
739 :
nobodyさん :2009/04/23(木) 04:26:39 ID:113Aszds
PHPでping更新するプログラムを作っているのですが
更新pingを送信してやるプログラムを作っているのですが
そこでpingサーバーにPOSTしてやると言うことまでは
わかっています。
POSTするのはソケットかcurlだと思うのですがパラメーターの
名前がなくてもPOSTできるものなのですか?
ヤフーなら
http://api.my.yahoo.co.jp/RPC2 のURLにPOST送信して下さい
としか書かれていません。
よろしくお願いします。
xmlrpcだろ常考・・・
741 :
nobodyさん :2009/04/23(木) 10:21:51 ID:QVnMbBVw
php.iniの推奨設定ってございますか?
php.ini-recommended
>>741 文字周りをUTF-8
あと、初心者ならmagic_quote_gpcはOnの方がいいのかも知れない・・
推奨っていうか個々の設定の意味合いがちゃんと分かっていれば問題ないかなと思う。
うそをこきなさい magic_quote_gpcはオフったほうが絶対いいって、勝手に余計な処理されたら却って混乱する
745 :
nobodyさん :2009/04/23(木) 11:15:37 ID:ai/dLDOC
あいまい検索みたいな事って出来るのでしょうか? 例えば、test_file.phpというファイル名のファイルがあったとして testで検索してもそのファイルがヒットするようにしたいのです。 opendirなどで指定ディレクトリを開いてファイルを1つずつ読み込み、 preg_matchなどの正規表現でファイル名を調べる方法もありますが、 もう少し短い手順で、簡単に調べられる方法はないでしょうか?
746 :
741 :2009/04/23(木) 11:20:07 ID:QVnMbBVw
php.ini-recommendedを元にしてみてます そこで具体的な質問なのですが一部の箇所だけでも構いませんのでどなたかご教示お願い致します ・output_bufferingは0にするべきか ・mb_string不使用のレンタルサーバに対応するコードを書くためにmb_stringを使わないべきか ・セーフモードをオンにするだけでいいか。safe_mode_exec_dirなどセーフモードに関する設定も行うべきか ・[mbstring]項目のmbstring.http_inputなどの設定の仕方
748 :
741 :2009/04/23(木) 11:25:32 ID:QVnMbBVw
>>747 $dic = array("ノーダウト","ノープロブレム","ノーリスク","ノーリターン");
$point = 0;
$per = 0;
$answer = '';
if(isset($_GET['str'])){
$str = $_GET['str'];
foreach($dic as $word){
$new_point = similar_text($word,$str,$per);
echo $word."と".intval($per)."%似ています<br>";
if($point < $new_point){
$point = $new_point;
$answer = $word;
}
}
echo "<br>もしかして<strong>".$answer."</strong>?";
}
?>
<form action="" method="get">
<input type="text" name="str" />
</form>
>>749 いや、逆だろ
Onの方が余計混乱するって
752 :
745 :2009/04/23(木) 12:03:37 ID:ai/dLDOC
>>747 ありがとうございます。
たしかにこれでテキスト間を調べることは出来ますが、
やっぱり、ファイル名を調べるには、
ディレクトリ一覧を取得する方法しかないのでしょうか?
753 :
nobodyさん :2009/04/23(木) 12:03:58 ID:aSD7OG+w
ドコモでサイトを閲覧したとき、戻るボタンで前のページの戻ったとき、 キャッシュがなくて再読み込みされるらしいのですが、何が原因なのでしょうか auでテストしてみたところ、キャッシュが残っていてすぐに表示されました
ドコモ?w あのクッキーは使えねーどこも?w あんなキャリア無視していいよ。
757 :
nobodyさん :2009/04/23(木) 13:21:52 ID:aSD7OG+w
>>756 流石にお客さんの要望となると無視できないです・・・
こんなことで嘆いているks野郎が働いてて 全キャリア対応できるノウハウを持ってる優秀な俺が無職でいる日本
実際働いたら優秀でもなんでもない口だけニートか
新米社員必死だな
761 :
745 :2009/04/23(木) 14:02:10 ID:???
>>754 ,755
globもファイル内一覧を検索する関数ですし、
やっぱりそうするしかないんですね。
勉強になりました。ありがとうございました。
ない
ああ、試験機って手元で実際に使えるものかと思ってた それってキャッシュの設定までできるの?
>>753 というか、仕事なのにこんなとこで聞く程度のスキルでお金もらえるの?
どこの会社だろう。
いいな。うらやましい。2chで情報もらって金儲けか。
>>753 みたいな教えて君が俺たちを人力検索ボランティアに利用して金もらってて
俺みたいな何でも一人でこなせる優秀な人材が無職な日本
誰か無職な日本のガイドラインをガイドライン板に立てて
こんな優秀な俺が無職なのは社会のせいだ! ですか?()笑
>>768 心配すんな。いつでも判子押せるように横においてあるから
履歴書ですねわかります
UTF8で書いたPHPファイルをレンタルサーバにアップして見てみると 日本語が全部?になってしまいます。ソースも?になっています。 XAMMPでみると正常に表示されるんですが、これはレンタルサーバの 設定によるものなのでしょうか? だとするとPHPファイルの文字コードを合わせるしかないのでしょうか?
>>775 (1)エディタで保存するときにUTF-8になっているか
(2)メタタグでutf-8を強制しても直らないか
777 :
nobodyさん :2009/04/23(木) 23:28:39 ID:Slt+HzGf
波ダッシュ/全角チルダ問題についてですが UTF-8のDBに対しUTF8のスクリプトからSET NAMES UTF-8を行った上でUTF-8のエンコードの文字列を書き込んでいるのですが「〜」(全角チルダ)のみ?と化けて書き込めません。 書き込む直前に波ダッシュに変換したりした場合は問題有りません。 原因は何が考えられますか?
>>777 これが絶対っていう対処法は今のところない
ググると1ページめに対処法が2つあるからそれを読め
>775 まずそのまま、ブラウザのエンコーディングをUTF-8にしてみろ。 これで直るようなら、スクリプトに header('Content-Type: text/html; charset=UTF-8'); で解決。 適切なヘッダーを吐き出さないと脆弱性の元になるので、文字化けの有無に限らず常にヘッダは吐く癖をつけろ。 >776 自分でヘッダをいじれる環境で、メタタグを使う意味が分からない。
>>778 ありがとうございます。
波ダッシュ問題については認識しているのですが、全く同一仕様のサーバーに同一プログラムを置いているのですがそちらでは全角チルダをDBに書き込めています。
またphpの設定、DBの設定(phpMyAdminから見える範囲)も同一です。
phpMyAdminから見えないところでMySQLに設定しなければいけないものはありますか?
>>779 ちなみにメタタグでの指定は
「utf-7攻撃」
を防ぐために必要です
784 :
777 :2009/04/23(木) 23:41:28 ID:???
$qry .= "str=〜(波ダッシュ)"; $result = mysql_query($qry, $sql_connect); OK $qry .= "str=〜(全角チルダ)"; $result = mysql_query($qry, $sql_connect); NG(記録されるのが”?”) 化けるのは全角チルダONLYです。
>>784 昔作った掲示板でそれ対処したがもう寝るので回答がなければ明日のこの時間までにまたくるわ
>>786 ありがとうございます。
その時間までがんばりやす。
>>776 ,779 ありがとう
メタタグは入れてテストしていた・・・つもりだったのですが、再度やってみると
あっさり直りました。もやもやしますが、再現できないのでOKとします。
>>779 スクリプトからのヘッダ指定は知りませんでした。ちょっと教えて欲しいのですが
メタタグもスクリプトもPHPの中の人が同じファイル内を読んでその指示に
沿っているという点では同じかと思うのですが、意味が分からないということは
スクリプトで書いた方が良いことがあるのでしょうか?
789 :
775 :2009/04/23(木) 23:47:44 ID:???
>>788 とりあえずそのファイルをここに晒せ
検証してやる
>>779 は勝ち誇りながら上げ足をとったのに、
逆に上げ足を取られてクソフイタwwwwwwww
>788 メタタグを読んでいるのはブラウザの中の人。 headerを使うのとmetaを使うのとどう違うのか、と言われると実は実際問題たいした差は無い。 けど、http-equivのequivってのは「代替品」って意味。文字通り、ヘッダーを生成できない場合の代替が目的。 本物と代替品を両方使えるなら、本物を使うのが自然だと俺は思う。 まあ、RFCや歴史的経緯や由来なんぞ知った事か!って意見もあるだろうし、両方使う、ってのがベストではあるけどな。 (Apacheの設定でヘンなヘッダを吐かれるケースの対策でもあったんだが、そういうケースは最近はあんま見ない)
字義は「等価」だろ。歴史的経緯を考えると「代替」って解釈も妥当だが。 知らないってのは流石にダセぇとは思うが、どっちかを強制するような事じゃない。
>>790 最初メタタグなしで?だったのでメタタグを入れてダメで、間違いに
気づいてメタタグを正確に直したけど表示されないなぁと思って
聞いてみたんですけど、改めて見てみると正確に直してるファイルは
普通に表示され、記述間違いはダメ、という当然の結果なのです。
直したつもりだったてことかと。
>>792 >メタタグを読んでいるのはブラウザの中の人。
そうでした。
>ヘンなヘッダを吐かれるケースの対策でもあった
メタタグは通用しないことがあるって記述をどこかで見てバシッと
指示できる方法がないものかと思ってたんですが当にこれですね。
メタタグがブラウザ対象ならPHPに通用しないのは当然か。
SQLも文字化けしてたんですけど
mysql_query("SET NAMES utf8");として解決したので
同様の指示方法を探してました。
795 :
nobodyさん :2009/04/24(金) 01:41:32 ID:oXgFhkjs
@header('Content-Type: text/html; charset=UTF-8'); こんなん常識じゃね?
@ はいらんけどな。 Content-Typeだしてねーサイト多すぎだよな。 Safariで見るとソースが化けるからすぐ分かる。
797 :
nobodyさん :2009/04/24(金) 01:45:39 ID:oXgFhkjs
いやいやいあ 配列やオブジェクトを書き出してテストしたりすんべ httpヘッダーくらいでエラーすんのもむかつくので @必修にしてたよ俺orz
798 :
nobodyさん :2009/04/24(金) 01:49:16 ID:oXgFhkjs
しかしhtmlの表示必死でhttpの基本しらない人大杉だよな 自分でサーバ運用したこと無いのかねぇ?
@つけてる人に言われたかないわ
800 :
nobodyさん :2009/04/24(金) 01:52:13 ID:oXgFhkjs
ははは、そりゃ悪かったw 意味わかってしてるんだから許せw
>>777 偶然にも全く同じ問題に直面していたんだが、phpMyAdminで設定した照合順序は
各テーブル、フィールドに個別に設定出来てる?
UTF-8で全部やっているならとりあえず照合順序を全てutf8_general_ciにしてみると良いよ。
>自分でサーバ運用したこと無いのかねぇ? このスレ見てる人間はプログラマーではあってもおそらく鯖屋ではありません Webプログラマーならhttpの知識知ってて当然 ようするに知らないのは初心者 そしてここはそういうスレ
実業務に携わってたら、PHPerにはド素人が多いなんてのは常識(キリッ >797 普通、画面出力は一箇所にまとめるだろjk。 echoが2箇所以上に存在するスクリプトは、構成にそもそも難がある。 あと、適当なテキストファイルに文字列を書き出す関数は常に用意しておいたほうが便利だぞ。
文字コード設定してんのに自動的にcontent-type吐かないPHPが悪い
どんなに小さいプログラム書くときでも 大体、render用の関数作って、変数をextractとかしてアサインするとかしてるんだけど、 あんまりやらないのかな? function render($path, $array){ extract($array, EXTR_SKIP); include "/view/".$path.".html"; } とかといったような。
なんのために?
>806 例えば画面出力を突然Shift_JISにしたくなったとしよう。 お前のコードの場合、全ての出力部にmb_convert_encodingを入れる必要がある。 >850なら、render()の冒頭でob_start()とかやって、出力内容を変数に格納してからShift_JISに変換して出力する、とかいう改変がラクにできる。 同じように、render()を文字列を返す関数にして、ファイルに書き出す事も容易。 また、>805のようなパターンでスクリプトを構成していると、デザイン変更の際にview/*.htmlをいじるだけでよくなる。 逆にロジックだけを変えたい場合、view/*.html(つまり画面デザイン)には一切手をつけなくてよくなる。 最後に、$arrayが正しいかテストするほうが、画面出力結果が正しいかテストするよりも楽な事が多い。 この辺はPHPUnitを使ってみないとピンと来ないポイントかもな。
お前のコードはとか勝手に決め付けてんなよ つかテンプレートエンジンかフレームワーク使わないのはなんで?
横槍スマンが、
>>807 で言われているようなことが必要ないからエコーデバッグという
原始的手法をとってるんだと思うよ。俺もたまにやるし。
あと、出力エンコーディングのごっそりな変換はiniで指定したほうがラクだよ。
個人的にはこのご時世コード的に小さいWebアプリなんてのがまずなくなってるから
FWのロガーとIDEのデバッガを適切に使うのがよいと思う。
ウニットテスト云々言ってるが、アサーションに漏れたらその変数とコールスタックのダンプなどをやってくれるので
初心者にもオススメだ。
エコーが散らばってるのとレンダー関数が散らばってるのは大差ないかも分からんが出力はプリティーなほうが絶対いい
>>809 どうだろう…抑止なると使ってるくらいだしな…
エコー → 自作関数 → FWスタンダード って感じでステップアップしていけばいいんじゃないか?
だいたい皆そうだろ
header()に@貼り付けてるってことはヘッダー送れてないわけじゃんw そうやってエラー無視してバグの元を作ってしまうことが問題だと思うんだが 素のechoだろうが自作フォーマットだろうがそっちは好きにしなさい
PHP_INI_ALLだからスクリプトや.htaccessからでも制御できるね
マジレスするとxhtmlの最新版はmetaタグで文字コードを指定しないでheaderで文字コードを送信するようにしろとなっている
それはXML宣言があるからw
818 :
nobodyさん :2009/04/24(金) 11:46:30 ID:NYw9Sn8U
shift_jisでハングル文字を使う方法を教えてください
その「使う」の真意によって可能かどうか分かれる
820 :
nobodyさん :2009/04/24(金) 11:51:26 ID:NYw9Sn8U
sjisでハングル文字を表示させたいのです
821 :
nobodyさん :2009/04/24(金) 11:52:20 ID:NYw9Sn8U
ユーザーから投稿されたハングル文字をsjisでログに保存して それを表示したいです
色んなソース見てるけど今だに for ($i = 0 ; $i < count($array) ; $i++) みたいな書き方のソース多いな どこのオープンソースもこんなもん?
824 :
nobodyさん :2009/04/24(金) 12:42:53 ID:NYw9Sn8U
あくまでも文字として使用するにはどうしたらいいでしょうか?
E○-○U○Eとか
別に伏字にしなくてもいいんじゃね まあどれかわかるけど
Smartyって便利みたいだけど 余計ややこしいとね^^;
素のほうがややこしいやん
>>829 そうか?
PHP自体がテンプレートエンジンのようなもんだし、わざわざ入れるまでもないと思うが
そういうレベルの人は無理に使わなくて良いよ
>>830 きっと君にはライブラリとかフレームワークは使うだけ無駄だよ
833 :
818 :2009/04/24(金) 13:18:26 ID:NYw9Sn8U
自分で考えてみましたが解決策がみつかりません
google先生に考えてもらえばいいんじゃないでしょうか
まぁいきりは使わなくていいお
>>834 ×google先生に考えてもらえばいいんじゃないでしょうか
○私の知識ではわかりません
for ($i=0;$i<count($a);$i++) $r[] = $a[$i];
for($i = 0, $cnt = count($a); $i < $cnt; $i++) echo $a[$i]; こういう書き方すると怒られる?
誰に?
原則として,検索すれば分かるようなことを「聞くな」
>>839 添字が連続していることを前提にしていいのか不安になるから嫌。
>>839 個人で作るなら問題ないけど
他の人に見せる可能性があるなら可視性も大事
あと適度なコメント表示もお願いねほしみ
846 :
839 :2009/04/24(金) 14:52:01 ID:???
>>841 コーディングの慣習として、どのような感じ方をされるのか気になったので、質問してしまいました。すいません。
君宛じゃなくてその上の連中宛だから気にすんな。 でも君の質問も言葉足らずで良くないけど。 何を問題にしてるの?スペースを空けること?条件部でcount使ってること?1ラインのfor使ってること?
動けば何でもいいんだよ! っていうのが今のゆとり
850 :
nobodyさん :2009/04/24(金) 15:09:50 ID:aAv/eK7t
みなさんIPv6には対応してますか? REMOTE_ADDRの中身とかどうなるのでしょう? 普段見慣れない0000:0000:0000:0000:0000:0000とかになるのでしょうか? DNS逆引きでリモホを得た場合 IPv4のとIPv6のホスト名に大きな差異はあるのでしょうか? PHPの質問とはかけ離れてますがアクセス解析を作りたいのでよろしくお願いします
>>848 後、変数名にも問題あるな
cntとかPerlerにありがち
メールフォーム作成してますが送信内容に 名前<div>名前 といったようにタグを挟んだり ネ申 といったものを入れると\が付加されてメールで飛んできます。 文字コード自体はmb_convert_encodingで変換しているので問題はないと思うのですが どういしたら出ないように出来るのでしょうか。
いまだにっていうかforの中でカウントする習慣は普通 わざわざそんなこと気にしてるのはPHPユーザーぐらいだろ 他の言語板で聞いてみな
countするぐらいなら foreach使うけどな。
>>856 そして他の言語板で聞くとおもれなくお前からのレスが貰えます
>>858 iがほしい場面じゃfor使わざるを得ないけど
使う必要がないならそのとおり
>>859 安心しな
JavaスレとJSスレぐらいしか見てないから
C系の人にきいてみな
>>860 添え字の数値が欲しいなら foreach($array as $key=>$val) 書式使うし、
確実に連続した数値としてほしいなら、これは使えないから、別途カウント用の変数を使う。
慣習とかじゃなくて速度のためにcountをforの外で使うんだろ ベンチマークベンチマーク
863 :
839 :2009/04/24(金) 15:47:56 ID:???
>>848 普通にかくと、
$cnt = count($a);
for(〜
となると思うのですが、
forの中だけで使いたい$cntがforの外に出るのがかっこ悪いかなぁと思ったためです。
foreach($a as $i => $item) echo $a[$i];
のような書き方もあるとおもいますが・・・
上記のような書き方の違いがコーディングスタイルの範囲なのか、プログラムの動き的に
別の問題が発生するのかという疑問を持ったという感じです。長文すいません。
その段階ではまだ細かなチューニングなんか意識しなくていいんじゃね?
>>861 それ特殊だからな
PHPぐらいじゃね?そんな書式使えるのw
>>862 それはわかってるけどそんなの意識するのPHPユーザぐらいじゃね?
劇的にかわるもんでもないでしょ?
もともと高速だし
867 :
850 :2009/04/24(金) 15:56:24 ID:aAv/eK7t
すみませんスレ変えます
868 :
850 :2009/04/24(金) 15:58:40 ID:aAv/eK7t
とおもったけどすみません・・・ やっぱ詳しい方教えてもらえないでしょうか? スレ違いとは承知してますがこのスレならいると思うので IPv6板で聞きなおそうと思ったのですがIPv6でしか書き込めないらしい・・・
>>870 そりゃそうだろ
PHPは猿でもできるからな
>>872 お前はケースバイケースって言葉しらんのか?
ああ、ゆとりか
PHPユーザならもっと他のとこに着眼すべき Webやってんのに全然セキュリティ意識がないのが多いね そっちのほうがよほど問題 かくいう自分も100%安全なプログラムかけてるかというと自信はないけど PHP選択してる時点でセキュリティ意識がないと言われたら終わりだが
>>872 コードが汚いし、
>>839 の書き方じゃ
$a[0] = 'hoge';
$a[100] = 'hogehoge'
ってした時に期待した動きにならんでしょ。
あぶねーよ。
>>876 どっちもネイティブでしょ?
そういうことじゃなくて?
878 :
876 :2009/04/24(金) 17:16:30 ID:???
>>877 javaはlistオブジェクトが持ってるsizeメンバを返してるだけだが、
PHPはのcountはいちいち個数を調べてるってこと。
ていうか
>>839 の書き方はじめてみた
そんな書き方あるのか
for ($i = 0; $i < $cnt = count($a); $i++)
ってのはあるが
これとは意味違うのかね
これじゃ$i < count($a)と変わらない?
>>875 書いてから気づいたけど、
$a[100] = 'hogehoge'
$a[0] = 'hoge';
だと、foreachでも、ある意味、微妙な動きをするな。
それでも PHPの添え字はオフセット値とは扱いが違うんで、forとかは馴染まんなぁ。
>>878 それソースあったら教えて。
>>839 for($i = 0, $cnt = count($a); $i < $cnt; print($a[$i]), $i++);
>>878 静的に値保持してるってことかな?
まぁでもそんなに問題にするほどでもないと思うけど
>>882 本当に数え直してるんだったら、2乗オーダになるから、チト引っかかるけどね。
本当に数え直してるんかなぁ。
884 :
nobodyさん :2009/04/24(金) 17:28:34 ID:8/gQo6Yy
tp://hogehoge.com/dir/exec.php/aaaaa/asdfasdf.txt というURLで、 exec.phpにそれ以降の文字列を渡したいんだけどどうすりゃいいの
>>885 書き方が悪かったです。
exec.phpじゃなくて、asdfasdf.txtで動いちゃうから困ってます
?挟むかhtaccess使うか
ていうかPHPとかんk(ry
多分 AcceptPathInfo じゃないの。PHPとは関係ない。
あんま追い討ちかけてやるなよw まったくひどいスレだwww
892 :
nobodyさん :2009/04/24(金) 17:54:01 ID:8/gQo6Yy
PHPの問題ではない予感はしてたけど、何の問題かも分からず ここに頼ってしまいました 優しい諸兄に感謝。ありがとうございました。
別にいいけど、AcceptPathInfo は見たんかなぁ。
>>879 とりあえず配列を抜きにして考えれば、
for(初期化; ループ条件; ループ毎)なので、
どこが毎回評価されるのか自ずと解るはずだよ。
895 :
878 :2009/04/24(金) 18:50:20 ID:???
>>880 >>883 すいません嘘つきました。
phpのソースを見てみたところ、ハッシュテーブルの要素数を返してるだけでした
(ただ、再帰モードの時は全部足し合わせ)。
なので呼び出すコストはjavaとそんなに変わらないと思います。
phpのソースとかよく見れるな
>>895 ありがとう。
っていうか、いきなりソース読むとか、率直に尊敬する。
いまどきfor文の議論してるとかwww
899 :
nobodyさん :2009/04/24(金) 23:47:51 ID:uCohzQoD
PHPでMYSQL使ってるんですが、わからないことが出てきました limitを使って3行目から5レコードを取り出すには limit 3,5と書きますが 3行目からそれ以降の全部のレコードを出すにはなんと書けばいいのでしょうか?
900 :
nobodyさん :2009/04/25(土) 00:02:30 ID:kxcSc4rc
>>900 のためにどなたかお願いします
俺はちょっと初心者だから答えられませんが
>>899 さんを応援あげ
901 :
nobodyさん :2009/04/25(土) 00:03:35 ID:ZrCQhtA9
>>901 のためにどなたかお願いします
俺はちょっと初心者だから答えられませんが
>>899 さんを応援あげ
>>899 つSELECT * FROM table LIMIT 3, 18446744073709551615
ネタかと思ったらマジだったwww
905 :
nobodyさん :2009/04/25(土) 00:49:38 ID:Be7Ny8gy
なるほど、わかりました 10000くらい入れておきます 皆さんありがとうございました
おまいらこんな基本的なこと知らんのか for($i=0,$max=count($array); $i<$max; $i++){ }
なんだこの流れw
ここ最近forとか一切書いてないな、そういや。foreachばっかりだ。 キーを取れるforeachはPHPが誇れる数少ない便利機能のひとつだと思う。 PHP内部での配列の値の持ち方を考えると、自然な走査法なんだけどな。 >865 珍しい機能ではあるが、foreachでキーも取るのは例えばRubyもできる。 PHPのように挿入順を維持する機能は今はないが、予定に入ってるか議論中だったはず。 {1=>'a', 2=>'b', 3=>'c'}.each do |key, value| p key p value end lua、squirrelとかでもできるけど、マイナーで特殊な言語すぎるので割愛。
アホの晒し合いみたいになってきたな
それがPHPerクオリティです。
911 :
nobodyさん :2009/04/25(土) 15:49:54 ID:aOAtk1JY
1通のメールに複数ファイルが添付されている場合、どうやってそれぞれを取り出せばいいのでしょ。
普通にバウンダリーで切り分けてヘッダのエンコーディング見てデコードすればよくね
913 :
nobodyさん :2009/04/25(土) 18:27:23 ID:BAT3f6Ea
エロサイト業者乙
915 :
913 :2009/04/25(土) 18:35:49 ID:???
エロ業者ではないです コンテンツがあまりないので、右flame部分にリンクを書いているのですが、 相手のサイトの逆アクセスランキングにはそのページが登録されてしまって、 余り意味がないので、ちゃんとしたページにリンクさせたいんです
>>913 bbb.phplのページからaaa.phpを読み込んで表示させればおk
あまりにもひどいのでトリップ付けさせていただきます。
スレタイの意味をよく考えよう。
921 :
nobodyさん :2009/04/25(土) 19:28:44 ID:BAT3f6Ea
922 :
nobodyさん :2009/04/25(土) 19:30:41 ID:BAT3f6Ea
>>916 bbb.phpはflameの一つなので、たぶん其れは無理だと思います
結論から言えば、フレームを使っている限り無理。
フレームのリンクを工夫すれば? 一旦aaa.phpに飛ばしてからジャンプするとか、ime.nuみたいに。
926 :
nobodyさん :2009/04/25(土) 20:13:12 ID:BAT3f6Ea
>>923 そのやり方を教えてください・・・
>>925 aaa.phpはメニュー一覧とリンクが書いてあるflameの一部
このページをジャンプページにすると言うことですか?
よく分かりません・・・
ねずみ?
>>926 擬似フレームはPHPとは関係ない
CSS 擬似フレーム でぐぐれ
930 :
nobodyさん :2009/04/25(土) 22:11:57 ID:PKWkdbE9
巨大な画像(3500×3500)をGDを使ってリサイズしようとすると レスポンスが返ってこなくなるのですが何か対策方法はあるでしょうか?
php.iniでメモリの割り当てふやせや
932 :
nobodyさん :2009/04/25(土) 22:23:27 ID:PKWkdbE9
>>931 memory_limit = 16Mにしたのですが足りないでしょうか?
3500×3500は36MBだ。入らんだろ。 933のいうとおりそんなものをWeb上で処理するのがまちがってんだけど。 共用サーバならやけとけや。
専鯖なので迷惑は掛かってないと思います 128MBに設定したら普通に処理できました お騒がせしてすみません
936 :
nobodyさん :2009/04/26(日) 00:23:18 ID:Cm1KZobT
一般的なWEBサイトにコメント投稿機能を設けたいと思っています。 (コメント投稿はブログでも可能ですが画面がゴチャゴチャしていることや htmlの自由度の観点からブログは候補から外しました) ・スパム投稿を防止するための画像認証機能 ・NGワードの指定 ・特定のホストからの書き込みの禁止機能 ・書き込み時に削除パスを設定でき、書き込み後に削除パスで削除できる機能。 ・書き込みがあったら管理人にメールで通知してくれる機能 ・管理人による投稿はその書き込みが管理人によるものだと分かる機能 ・大量に書き込まれるとサイトの表示速度がおちるから適当に次ページに送ってくれる機能 こういう機能を有すスクリプトは無いでしょうか? あとこれらの機能に加えスパム対策として2ちゃんが採用しているようなBBQ機能も実装 してくれているスクリプトは無いでしょうか?
すれ違い
動物園動物園海
941 :
nobodyさん :2009/04/26(日) 00:53:07 ID:Cm1KZobT
>>940 どうもです、そちらで探して参ります(´・ω・`)ノシ
942 :
nobodyさん :2009/04/26(日) 02:22:48 ID:NR6bqMwg
正規表現の取得で preg_match('/<body>(.*?)<\/body>/is',$html,$array); とすれば、タグの<body>から</body>間を取得できますが、 その中に含まれている特定のタグ(例えば<strong></strong>とか を取得するには、どう書けばいいのでしょうか?
943 :
nobodyさん :2009/04/26(日) 03:18:51 ID:SODrJj0x
select * from news order by time desc limit 0, 20
preg_match('/<body.*?(<strong.+?<\/strong>).*?<\/body>/is',$html,$array); 適当にこんな感じ?
>>942 タグを取得したいの? タグ間を取得したいの?
947 :
nobodyさん :2009/04/26(日) 11:19:37 ID:3+X1AYP5
アクセスしてきたホストにLocationヘッダで飛ばしてるだけ
949 :
nobodyさん :2009/04/26(日) 11:25:43 ID:3+X1AYP5
ということは管理人が愉快犯ってことでしょうか?
知らんがな 管理人に意図聞けばいいんじゃね
951 :
nobodyさん :2009/04/26(日) 12:01:38 ID:3+X1AYP5
ちなみに127.0.0.1の方じゃない方のIPなんですがこれってヘッダでどのように記載するのでしょうか?
なんかの設定ミスだろ HTTP/1.0で取ると普通のページになるな。
$_SERVER["SERVER_ADDR"] と書かないといけないところに $_SERVER["REMOTE_ADDR"] と書いてしまったとか。
955 :
nobodyさん :2009/04/26(日) 17:21:05 ID:v3Zqb192
telnet wiki.poyo.jp 80 して GET / HTTP/1.0 リターン2回 ってやってみればいい
結局このローカルを表示させてしまうURLはどういうこと?
お前には脳ミソが無いのか! つるっつるか!
^^;
>>958 ヘッダーでローカルに飛ばしているのでは?
メモ is_ array is_ bool is_ callable is_ double is_ float is_ int is_ integer is_ long is_ null is_ numeric is_ object is_ real is_ resource is_ scalar is_ string isset
いやん。誤爆 失礼
is_otaku
965 :
nobodyさん :2009/04/27(月) 00:10:42 ID:OUJGurX7
無料でPHPの使えるレンタルサーバ、なんてないものかしら?
星の数ほどあるよ
967 :
nobodyさん :2009/04/27(月) 00:22:23 ID:Mkjlliv0
フォームに入力させるページをPHPで作ってるんだけどその際ページの先頭に session_start(); を記述しておくとブラウザの「リロード」を押したり、一度他のページ移動してから 元のフォームのページに戻ってくると一生懸命入力したフォーム欄が一発で空欄になるんだね(´・ω・`) session_start(); しないページにすれば何回リロードしてもどんだけ他のページとの間をいったりきたりしても 一度入力したフォーム欄は消えないんだけどそれだとPHPプログラムが正常に動いてくれない。 さてどうしたものか(´・ω・`)・・・
>>967 後者はブラウザがよろしくやってくれてるだけ。ひょんなきっかけですぐ消えるよ
逆にセッションを正しく使ってれば消えるなんてありえない
>>967 セッションって何かわかってて使ってるかい?w
ブラウザのキャッシュ制御機能じゃないんだぜ。
くっきーみたいなもん
971 :
nobodyさん :2009/04/27(月) 00:43:08 ID:Mkjlliv0
あら、本当だ。 IEは先頭にsession_start();があっても無くてもリロードするとフォームの内容が消えた。 Firefoxはsession_start();があるとリロード時に消えるけど無いときは何度リロードしても消えなかった。 ちなみにPHPの力を駆使してIEでもFFでもリロード時や他のページの間をいったり来たりしても にフォームに記述した内容を保っておくことってできると思う(´・ω・`)?
972 :
nobodyさん :2009/04/27(月) 00:59:38 ID:Xhu9KGLb
代入しなきゃ保存されないのわかるよな? わかんない??
973 :
nobodyさん :2009/04/27(月) 01:10:29 ID:Mkjlliv0
>>972 にゃるほど、でも訪問者がブラウザの進む・戻るボタンを押す直前のフォームの内容を記憶させることなんてできる?
>>971 思うとか思わないじゃなくてそのための機能だから。
unload時にjsでPHPにデータ投げとけばいけるんじゃね?
976 :
nobodyさん :2009/04/27(月) 01:17:25 ID:Xhu9KGLb
フォーム→POSTからセッションに代入→セッションからデータ書き出し ここまで書いたぞ 感謝して
977 :
nobodyさん :2009/04/27(月) 01:18:58 ID:Xhu9KGLb
やべぇえええええええええええええええええ 答えてる側なのにsage入れてねぇええええええええええ これから入れるね スマン
978 :
nobodyさん :2009/04/27(月) 05:33:47 ID:skcV1wh3
これってどういう意味ですかね $pattern='-{2,}';
正規表現のパターンなら - が2個以上連続することを表してる コード晒すなら肝心なところを晒せw
980 :
nobodyさん :2009/04/27(月) 08:54:04 ID:skcV1wh3
>>979 すいません
これです
function escape_data($data){
$pattern='-{2,}';
$data=eregi_replace($pattern,'',$data);
return $data;
}
>>978 「-{2,}」って文字列を$patternに代入してる、って答えようとしたが
>>979 の優しさに感動したから見逃してやろう
連続するハイフンを削除する処理のようだな。
eregiを使う意味ないと思うけど今はeregよりpreg使っとけばいい -{2,}をもっと短く書くと--+
その処理がエスケープなんだ
何かのフィルタアプリに引数を渡されないための処理だろうか
ファイル指定するとこを標準入出力に切り替えるのを防ぐとかか
ぐぐったらこれが近そうだった
13-Dec-2003 01:12
It appears as though mysql_real_escape_string doesn't get rid of mysql comments, i.e. '--'; I want it to do so, not for security issues but just to keep from having partially inserted data. ...
function escape_data($data){
global $dbc;
$pattern='-{2,}';
$data=eregi_replace($pattern,'',$data);
return mysql_real_escape_string($data,$dbc);
}
で、Mysqlのマニュアルを見てみると
http://dev.mysql.com/doc/refman/5.1/ja/ansi-diff-comments.html SQL中に--があった場合、それ以降がコメントと見なされて欠落する問題が先史時代にはあったようだ
それにしても --+ を丸ごと削除ってのは思い切った処理だな
SQLは -- がコメントなのはどのRDBMSでもそうだが、それ落としてどうすんの、とは思った。
謎だな
990 :
nobodyさん :2009/04/27(月) 15:26:21 ID:3y+KLnhW
CSSファイルの特定のスタイルを取得したいと思います。 $css = 'a:link{background-color:#ffffff;color:#003399;}'; preg_match('/a:link{.*?color:#(.*?);/is',$css,$style); とし、「color:#003399」の「003399」だけ取得したいのですが、 background-colorの方を取得してしまいます。 どういう正規表現を書けばいいのでしょうか?
background-colorが引っかからない正規表現を書けばいいじゃん
>>971 できる。
なんかの教科書に書いてあった。
>>973 できる
キャッシュを残しておいて、それを読みに行くように設定すればいい
ただし、ショッピングカートとかで不具合が出ても責任はとらない
同じクッキー名でset_cookie()を複数回読んだときに、 最後の1回だけを有効にするようなことはできますか。
if($test == 1){$result = 'OK'}を1だけでなく1、2、3のいずれか など3つ以上の複数の場合にTRUEとするにはIFを入れ子にするしか ないのでしょうか? $test == (1,2,3)みたいに簡潔に記述できないものでしょうか
in_arrayで良くね?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。