【PHP】下らねぇ質問はここに書き込みやがれ 41
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/03/06(火) 15:39:46ID:naBsdy1ZPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 40
http://pc11.2ch.net/test/read.cgi/php/1172151461/
◆質問する時の注意
・ 自分の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
0462nobodyさん
2007/03/10(土) 03:53:20ID:???1 $url = "http://www.2ch.net/"
2
3 if(****************) ←【$url】がNot Found(存在しない)だったら
4 {
5 echo "urlが存在しません。" ;
6 }
7 else {
8 include($url);
9 }
0463nobodyさん
2007/03/10(土) 03:54:16ID:???0464nobodyさん
2007/03/10(土) 03:56:17ID:???0465462
2007/03/10(土) 03:57:24ID:???/ ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■■-っ < >>464 んなーこたーない
´∀`/ \__________
__/|Y/\.
Ё|__ | / |
| У.. |
0466nobodyさん
2007/03/10(土) 04:38:32ID:L0CVYQw+この前他人のソースを眺めていたら、
デリミタに#をつかっていたのですが、
最後閉じるときに、#smと書かれていました。
これはどういう意味なのでしょうか?
0469nobodyさん
2007/03/10(土) 05:06:36ID:L0CVYQw+パターン修飾子というんですね。
正直書いてある意味がわかりませんが、
理解できるように勉強してきます。
レスありがとうございました。
0471nobodyさん
2007/03/10(土) 06:41:40ID:???フレームワークのMapleってどうなったんですか?
0472nobodyさん
2007/03/10(土) 06:46:10ID:???0473nobodyさん
2007/03/10(土) 07:27:04ID:???$header_list = @get_headers($url);
if (!isset($header_list[0]) or strpos($header_list[0], "404") !== false)
0474nobodyさん
2007/03/10(土) 10:14:10ID:???みなさん、ファイルを読むときに、fopenとか使ってファイルポインタを操作してますか?
私はtouchとかfileとかfile_put_contentsとか手軽な関数があるのでそれですましがちです。
こういうケースはファイルポインタじゃないとできないよ、とかありますか?
0476nobodyさん
2007/03/10(土) 10:49:55ID:F5cNKsq/flockが必要な場合
0478nobodyさん
2007/03/10(土) 10:51:59ID:F5cNKsq/fileしてからfile_put_contentsだと同じファイルかどうか分からないからな
0479nobodyさん
2007/03/10(土) 12:20:36ID:???仮にスクリプトにXSSの脆弱性があっても、
それがログなどに保存されない場合は問題ないですよね?
たとえば、
<?php
echo $_GET['hoge'];
?>
とかの場合、XSSの被害を受けるのは仕込もうとした本人だけですよね?
0481nobodyさん
2007/03/10(土) 12:59:38ID:???$_GET[ ]をそのまま表示するだけなら
fopen($_GET[ ], "r")とかするやつはいないだろうけど
0483474
2007/03/10(土) 13:49:14ID:???レスサンクス
たしかにファイル読んでチェック&上書きとかならロックしなくちゃいけかったですね。
参考になりました。
0484nobodyさん
2007/03/10(土) 13:59:55ID:???0485nobodyさん
2007/03/10(土) 14:14:03ID:???計算式載ってた
ttp://ja.wikipedia.org/wiki/%E5%81%8F%E5%B7%AE%E5%80%A4
0486nobodyさん
2007/03/10(土) 14:34:49ID:???それ、町の図書館にあった「数学の本」に書いてあったので
この前やってみたぜ。
電卓なしで平方根の計算をするのは大変だったが
Googleが助けてくれたぜよ!
0487nobodyさん
2007/03/10(土) 15:33:15ID:???0488nobodyさん
2007/03/10(土) 17:03:36ID:???プログラムに間違いがあるときブラウザにメッセージが出るけど、
それの種類をphp.iniで設定できますよね? でもその書き方が分かり
ません。
E_ALL | ~E_NOTICE
とか書かれててワケ分かりません。
0489軟式PHP
2007/03/10(土) 17:09:36ID:???結局のところ論理演算だよ。 and、or、xorとか。
10進数…2進数
1…00000001
2…00000010
4…00000100
8…00001000
16…00010000
みたいに被らないような数値をフラグとして使ってるだけ。
E_ALL ^ E_NOTICEとかだと
内部的にはxorしてフラグを0にしてるだけという単純な仕組み。
と、言ってて俺の説明下手さにorzしてきたわ。
0490軟式PHP
2007/03/10(土) 17:24:31ID:???http://www.php.net/manual/ja/function.error-reporting.php
ここを見たら分かるかもしれん。ビット演算とかそのへん分かってないとキツイかも。
0492nobodyさん
2007/03/10(土) 17:45:30ID:???0493nobodyさん
2007/03/10(土) 17:55:11ID:4M3pGGUH外部から書き込みしているのかなぜかホスト規制が効きません。
urlを投稿してくるので、httpを禁止ワードにしたいのですが、
どうすればいいのでしょうか?
0495nobodyさん
2007/03/10(土) 18:27:48ID:???一ヶ月みっちり基礎から覚えれば・・
0497nobodyさん
2007/03/10(土) 20:49:47ID:uq04XWP+0498nobodyさん
2007/03/10(土) 21:03:03ID:???0499nobodyさん
2007/03/10(土) 22:39:16ID:???http://pc11.2ch.net/test/read.cgi/php/1167984858/
0500nobodyさん
2007/03/10(土) 23:46:11ID:VGePLioSループで最後までまわして、packでバッファに入れてファイルに書き出す処理を4回やるとき、
ループを4回まわして個別に処理するのと、
ループは1回でその中で並列処理してバッファに入れるのと、
どっちがいいかな?
日本語分かり難くてスマソ
具体的には掲示板のログ処理で携帯3キャリアとPCの絵文字を相互変換した
表示用キャッシュファイルを作る作業です
上のは1記事分で実際は5記事分処理をします
0502501
2007/03/11(日) 00:05:47ID:???参考までに聞きたいけど
絵文字変換モジュールは自作したのを使ってる?
それとも何か違うものを使ってるなら参考までに教えてほしい。
0503nobodyさん
2007/03/11(日) 00:06:28ID:???俺はPHP等の「Webプログラム」しかやったコト無いから
バイナリ文字列に変換するとかちょっと深い部分はよく分
からないけど、両方そんなに変わらないんじゃないか?
並列処理するにも結局CPUパワーを分けるわけだから
そんなにメリットが無い気がする。
なら個別処理のほうがソースがスッキリしそうかな?
0504500
2007/03/11(日) 00:25:33ID:y0VmsJS4参考にしたのはttp://www.sound-uz.jp/php/tips/mobile.html
のサイトと、今は潰れたサイトから入手したスクリプトと、
ちょっと前の深夜にこのスレの前スレかな?うpした人のスクリプトです
俺は自分なりにアレンジを加えて、3キャリアとも>>500のようにして、
一つ一つマッチするのを見ていくのにしてます
>>503
個別処理だとアホのようにループいっぱい回すはめになります
スッキリなら並列処理で1回ループの方ですね
メモリ節約も気になったけど、俺はソーススッキリ方式にしてみます
0505500
2007/03/11(日) 00:33:05ID:y0VmsJS4実は絵文字変換は4年ほど前に一応作ってあって、
そのときはauの動く絵文字が手に入らなくそのままになってた
んで1年ほど前に偶然動く絵文字画像(PC用gifファイル)を
手に入れて、今度こそは完成させようとしたけど、
自分で書いた処理がワケワカメで嫌になって放置
そしてこの度やっと完成しそうな予感
でも相互変換テーブルがまだ蜜柑orz
0506nobodyさん
2007/03/11(日) 01:29:14ID:???そういや携帯もう2年も変えてないな・・・
>>500
スマン、並列処理ってどういう感じに書いてるの?
よければソース見せてくれ・・・
0507501
2007/03/11(日) 01:32:24ID:???俺がうpった奴だよそれw
0508nobodyさん
2007/03/11(日) 01:32:45ID:???0510500
2007/03/11(日) 02:15:28ID:???>>508
最近やっとオブジェクト指向かじり始めた、見た目指向の日曜プログラマなので
並列処理は謎ということでorz
>>507
家宝にしますw
>>509
プチパレっていう配布サイトのスクリプトに付属してるやつです
(個人サイトっぽいのでURLは略、ググルとでてきます)
0511nobodyさん
2007/03/11(日) 02:38:26ID:???ファイルポインタを取得してロックのことなんですが
$FP=fopen("./hage.txt","r+");
flock($FP,LOCK_EX);
↑よりも↓にしたほうが
flock($FP=fopen("./hage.txt","r+"),LOCK_EX);
ファイルポインタを取得してからロックをかけるまでにタイムラグがないので良いのでしょうか?
前者だと1行目と2行目の間に他からファイルポインタを2重に取られるような気がします。
0512nobodyさん
2007/03/11(日) 05:54:43ID:gT3meA5q「含まれていたら」のプログラムが分かりません。
if($toukou○○http) error("エラーです");
○○になにかいれるんだと思いますが、どうすればいいんでしょうか?
0513nobodyさん
2007/03/11(日) 06:46:47ID:???0514nobodyさん
2007/03/11(日) 06:47:16ID:???0515nobodyさん
2007/03/11(日) 06:50:35ID:???半角英数字のみの文字列をUTF-8に変換してファイル書き込みを行いたいのですが
どうあがいてもSJISのファイルになっていまいます。
例えば1文字でも日本語文字が含まれているとUTF-8のファイルになるのですが・・
utf8_encode($str); とか mb_convert_encoding($str, "UTF-8", "auto");
でも無理でした。一体どうすればいいのでしょうか?
0516nobodyさん
2007/03/11(日) 06:58:41ID:???内部エンコーディングを一時的にUTF-8にすればいんじゃまいか
mb_language('ja');
mb_internal_encoding('UTF-8');
ob_start("mb_output_handler");
こんな感じで。
でファイル書き込んだら元に戻す、みたいな。
(動作未確認)
0517nobodyさん
2007/03/11(日) 07:08:50ID:???Debian + Apache2 + PHP5 で
UTF-8のスクリプトをoutput_handler使って
SJISに自動変換して表示させてるんだけど、
ファイルをアップロードしたときに、なぜかファイル中の
半角「\」が全角の「¥」に自動変換される。
Apache + PHP4 のサーバーだと起こらないから
バグか相性の問題かだと思うけど、なんか腑に落ちない。
0519nobodyさん
2007/03/11(日) 09:40:14ID:???変換後にmb_detect_encodingしてみな。
ASCIIなのにエディタが「SJIS」と表示しただけだろ。
0520nobodyさん
2007/03/11(日) 09:52:52ID:???俺も寄付したいけど1口1万円はちょっと厳しいな。
せいぜい3000円くらいなら出せるけど、それじゃDVDもらえないかな?
http://www.nankinnoshinjitsu.com/
http://youtube.com/watch?v=x7aBGloec0U
(※我が日本人の手でこの情報を広く伝えよう!)
0521nobodyさん
2007/03/11(日) 10:41:42ID:???0522nobodyさん
2007/03/11(日) 10:47:20ID:???ttp://example.com/?hoge=%82%BF%82%F1%82%B1
ってリンクを掲示板とかに張られたら不特定多数に害が及ぶだろうがボケ
PC無害、ょぅι゛ょ有害
0523nobodyさん
2007/03/11(日) 11:01:42ID:???どうも。echoしてもASCIIになってしまいます。もしかして凄い勘違いしてるのかもしれないのですが
$str='aaa';
$str=mb_convert_encoding($str, "UTF-8","◆");
echo mb_detect_encoding($str);
で◆はauto,ASCII,EUC-JPいずれもダメでした
出力されたファイルをメモ帳で名前をつけて保存>UTF-8後に
使用しているエディタで開くとUTF-8になってるのでエディタの問題ではなさそうです
default_charset = "EUC-JP" / mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP / mbstring.http_input = auto
mbstring.http_output = EUC-JP / mbstring.encoding_translation = On
mbstring.detect_order = auto
こんな環境です。
0524523
2007/03/11(日) 11:09:22ID:???超基本的なミスでした。しかもPHPに無関係でした。失礼しました。
0527511
2007/03/11(日) 11:37:37ID:???0528nobodyさん
2007/03/11(日) 11:41:02ID:???文単位だったら他のプロセスに割り込まれないなんていう保証はないので、どっちでもいっしょ。
というかその例なら割り込まれても問題はない。
flockを先に呼び出したプロセスがアクセスを獲得して、後から来たほうはflockのところでブロックされるだけの話だから。
0530526
2007/03/11(日) 11:44:40ID:???$FP=fopen("./hage.txt","r+"); flock($FP,LOCK_EX);
flock($FP=fopen("./hage.txt","r+"),LOCK_EX);
視覚的に違うだけで、結局どっちもfopen()->flock()の順番で呼び出してる
のに変わりはないからタイムラグがないというのも単なる思い込み。
0531nobodyさん
2007/03/11(日) 11:47:35ID:???というレスもスルーしとけ
以下ループに期待
0532nobodyさん
2007/03/11(日) 12:44:28ID:qDb0K5v3urlencodeしたら、空白が+になるのですが、
%20に置き換えして問題ないでしょうか?
0533nobodyさん
2007/03/11(日) 12:46:20ID:???0536nobodyさん
2007/03/11(日) 13:28:25ID:qDb0K5v3どうもありがとうございます。
mailtoでは使わないので、置き換えたいとおもいます。
0537nobodyさん
2007/03/11(日) 13:43:16ID:NCbGkHMP用途としては、差分だけを保存していきたいのですが、そんな便利なライブラリってありませんかね?
0538nobodyさん
2007/03/11(日) 14:01:08ID:Nl0cnT1ehoge foo
hogehgoe foobar
. .
. .
って感じのファイルを読み込んだんだけど
要素の後ろに空白が入ってしまうのが気になります。
どうすればいいんでしょう?
0539nobodyさん
2007/03/11(日) 14:20:30ID:???http://jp2.php.net/file
0542nobodyさん
2007/03/11(日) 18:58:59ID:???UTF-8にBOM付けたいってか?echoすりゃいいだろ。
その前にUTF-8がどういう文字コードかぐらい知っといたほうがいいよ。
つかこの話題デジャヴュ過ぎるんだって。
0543511
2007/03/11(日) 21:12:03ID:c+92i5++それでも質問に答えてくれてありがとう。
代わりに返事してくれていた人もありがとう。
同じ流れのプロセスなら割り込まれても弾かれますね。。。その通りでした。
かわりにちょっと調べてみたことを。
flockも完璧じゃないらしく、ダミーのファイルを用意したり(ttp://www.res-system.com/item/359)
自分でロック関数を作ったり(ttp://www.sakura-pc.jp/php/02060000.shtml)いろいろあるみたいですね。
後者だと、ファイルポインタいらずでfileやfile_put_contentsで操作できるので楽ですね。
0544nobodyさん
2007/03/11(日) 21:28:04ID:wFi+PsRqたとえばDBのデータ。
パッと思いつく手法は、PHPスクリプトをcronで動かして、mysqlのdumpを取る。
ここまではいいんですけど、このままじゃ同じマシン上にバックアップがあるからあまり意味がない。
そこでこのバックアップをどうやって他のマシン(他のレン鯖や自宅のクライアント等)に移すべきか?
バックアップ移動先のマシンでcronでssh接続して取りに行く・・・とか出来るんでしょうか?
やり方が思いつかない。。。orz
0545nobodyさん
2007/03/11(日) 21:43:17ID:QdoSkh/q$a=0 , $b=1 , $c=2 ;
という書き方は無しですか?
0546nobodyさん
2007/03/11(日) 21:51:29ID:???list($a, $b, $c) = array(0, 1, 2);
0548nobodyさん
2007/03/11(日) 22:00:42ID:QdoSkh/qなるほど、勉強になりました。
0551nobodyさん
2007/03/11(日) 23:14:44ID:c+92i5++文字列の"001"を"002"、"003"・・・"010"、"011"・・・"101"、"102"・・・と数値部分を++しつつ3桁固定で出力したいのですが
何か良い方法ありますでしょうか?
PHP5を使っています。
0552nobodyさん
2007/03/11(日) 23:17:30ID:???for($i = 1; $i <= 102; $i ++) echo sprintf("%03d", $i);
0553nobodyさん
2007/03/11(日) 23:18:03ID:???0554nobodyさん
2007/03/11(日) 23:22:54ID:c+92i5++即レスサンクスです。
なるほどフォーマット識別子を使えばよいのですね。
0555nobodyさん
2007/03/11(日) 23:34:19ID:???0556nobodyさん
2007/03/12(月) 00:16:43ID:???dbダンプして、他のレンタル鯖にftpで
アップロードしてその結果をmailする
シェルを書いてcronで動かしてる
0557nobodyさん
2007/03/12(月) 00:18:56ID:???0558nobodyさん
2007/03/12(月) 00:22:06ID:???0559nobodyさん
2007/03/12(月) 00:37:03ID:???なって困っています。(成功すればApache 2.0系と組で使うつもりです。)
php-4.4.6のソースを展開してシェル上で「./configure」と打つと、
checking for egrep... grep -E
checking for a sed that does not truncate output... /usr/bin/sed
expr: syntax error
test: =: unexpected operator
というエラーが(1個)出ます。ここで異常終了はせず、最後まで動作は
するのですが、正常に設定されたか信頼しがたいです。解決策を
ご存知の方はお教えください。
エラーが1個だけなら手で直してもいいのですが、必要なオプションを
./configureに指定していくと、上記エラーが大量に出るようになります。
現在php 4.4.4を正常に運用中ですが、このバージョンでは./configureで
上記のようなエラーは出ません。
0560559
2007/03/12(月) 00:40:06ID:0GAJDCOZ0561544
2007/03/12(月) 00:41:27ID:C8b3Iw+zscpやsftpといえば、Winマシン←→Linuxマシンの間を「WinSCP」を使って手動操作でつないだことしかないのですが、
シェルからもscpやsftpで他のマシンに接続する方法があるのですか!?
>>556
そのシェルスクリプトは、「バックアップ元」のサーバにて動かすように読めますが、そうでしょうか?
つまり「sftpなどで送る」というイメージですよね?
私が考えていたのは、「バックアップ先」のサーバから、「sftpなどで取りに行く」というのをイメージしていたのですが、
どちらがより良い手法なんでしょうね・・・??(あるいはどちらかしか実現不可能?)
■ このスレッドは過去ログ倉庫に格納されています