【PHP】質問スレッドpart26【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/12/21 22:34:55ID:???0153nobodyさん
04/12/28 21:40:18ID:???クッキーで変な値渡されたり妙なPOSTが来たり得体の知れないGETが来たりすると
とんでもないモン include しちまうのがわからんか?
0154nobodyさん
04/12/28 21:47:44ID:???ネットにあるプログラムには驚くほど低レベルな物もあるからね
0155nobodyさん
04/12/29 08:06:36ID:???↑みたいな書き方してるところだとアウトってこと?
0156nobodyさん
04/12/29 10:30:00ID:???ttp://xoops.sourceforge.jp/wiki/xoops2/index?cmd=read&page=TECH%2FAgenda-X%20%A4%CE%C0%C8%BC%E5%C0%AD%CC%E4%C2%EA
0157nobodyさん
04/12/29 13:11:08ID:???0158nobodyさん
04/12/29 13:22:48ID:???は、関係ないかな?
0159nobodyさん
04/12/29 14:10:29ID:???コンマだとデータの中にコンマが入っていた場合、読み出すときうまくいかないので困ってます。
0161159
04/12/29 14:28:33ID:???レスありがとうございます。
たしかにタブならデータから除去してもいいし、スペース4つにおきかえてもいいですね。
参考になります。
0163162
04/12/29 14:36:51ID:???というのも、場合によってはアリ。
0164軟式PHP
04/12/29 15:10:28ID:???0165nobodyさん
04/12/29 15:33:01ID:???データキャッシュつくるときなんかは簡単でいいけど
0166軟式PHP
04/12/29 16:14:45ID:???戻してから指定のフォーマットに再出力みたいなことしてるけど。
0167nobodyさん
04/12/29 16:17:57ID:???0168matz
04/12/29 21:22:50ID:???しかし、しつこいくらい繰り返しているが「PHPの良さ」はどこにあるのだろうか。
0169nobodyさん
04/12/29 21:48:42ID:???0170matz
04/12/29 22:49:21ID:???0171nobodyさん
04/12/29 22:59:36ID:???あとはくだらない質問スレでやったらどう?なんの生産性もない話題だし
言語信者が流れ込んできて荒れるだけ
0172nobodyさん
04/12/29 23:43:21ID:???その穴を突いたワームが出てきたことが新しいんだと思う。
以前は突くツールはあったんだけど、使う相手はクラッカーが探して
手作業で行ってたのが、自動化によって被害の増大が懸念されるから。
0174nobodyさん
04/12/30 00:12:59ID:???0175nobodyさん
04/12/30 00:32:06ID:???0176nobodyさん
04/12/30 02:01:59ID:???バリバリのWebアプリじゃなくてヘッダーとフッターを各ページに入れますとか
そんな些細なことを手軽にできるのがいい。
0178nobodyさん
04/12/30 09:29:41ID:???試す気も起きん
0179nobodyさん
04/12/30 13:11:29ID:???0182nobodyさん
04/12/30 14:41:16ID:???PHPはホスティングサービスでほぼどこでも使えるので覚えようと思うんだけど
Rubyはあまり聞かないから覚えようと思わないんです。
作ったスクリプトはどこでも使えなさそうだから使いまわしできなさそうだし、配布してもRubyスクリプトイラネって言われそうだし
そもそもRuby使える無料ホスティング知らないです。
0183nobodyさん
04/12/30 15:25:10ID:???幾つかあるが、最大の理由は
俺がRubyを初めて知ったとき、既にPHPを覚えてから2年くらい経っていた
ってこと。
結局、Rubyをやってみても2年分のハンデを埋めるほどの魅力は感じなかったし、
それならば無理にRubyに移行する必要もない。
あとはPHPの方が関連書籍も多いし、海外にも浸透してるし、業務でもそこそこ使える。
Rubyの痛いところは、業務で使おうとするとプログラマが集まらないところだ。
言語ってのはシステム要件を満たすための手段に過ぎないんだから
(個人でやるならともかく)広く浸透してる言語のほうが扱い安く感じるのは当然かと。
0184matz
04/12/30 16:09:22ID:???・環境がない
>>183
・すでに覚えたものがあるから
・情報、実績、ユーザが多い
・広く使われているからなんとなく
は理解できます。
「言語ってのはシステム要件を満たすための手段」に関しては、
道具を選ぶ、という視点が抜けていますね。
両者、ありがとうございました。ちなみに私はあの matz ではありません。
0185nobodyさん
04/12/30 20:21:50ID:6yNCCVX00186nobodyさん
04/12/30 20:50:50ID:???0188nobodyさん
04/12/31 12:55:06ID:AnxsV/s9ホスト名を指定するとpg_connect()がうまくいかないのですが、心当たりあるでしょうか。
pg_connect("dbname=test") はうまくいくのですが、
pg_connect("host=localhost dbname=test") がうまくいきません。
localhostでも127.0.0.1でもちゃんとしたホスト名でもだめです。
なぜでしょうか。
それから、pg_connect()で失敗したときのエラーはどこに出るのでしょうか。
Apacheのログには出てないのですが。
0189nobodyさん
04/12/31 13:48:26ID:???単にホスト名で接続(tcp/ip)を拒否してあるんじゃないの?<unixドメインソケット接続のみ
エラーに関しては、マニュアルのPostgreSQL関数 辺りを読めば分かる。
つーか接続の仕方(tcp/ip、unixドメインソケット)の話もそこに載ってるから
全部見てくる事をお勧めする。
0190188
04/12/31 13:49:21ID:???わかりました。PHPマニュアル「LXXXIV. PostgreSQL 関数」の章にヒントが書いてありました。
つまり、PostgreSQLはデフォルトでUNIXドメインでの通信(プロセス間通信)しかできなくて、起動時に-iオプションを与えてやらないとインターネットドメインでの通信(TCP/IP)の通信ができない、
そしてpg_connect("host=$host")と指定すると後者の通信を試みて失敗するということですね。
これはFAQなんだろうなあ。でもこれはわかりにくいぞ。
0192nobodyさん
04/12/31 18:54:26ID:???JDBCとかでは使えるみたいなんですが。
0193nobodyさん
05/01/01 02:21:51ID:2vKgKMWCSQLiteなら、余裕で使えます。
0194nobodyさん
05/01/01 04:15:07ID:xFPnJTv3echo "あけおめ!";
?>
0195nobodyさん
05/01/01 05:11:40ID:???配列になる場合もあるし、配列にならずに1つの場合もある
変数aで foreachして、配列じゃない場合、上記のような
エラーが出ます。
エラーは出ててもスクリプト上は機能してますが、
これはちゃんと配列の場合とそうじゃない場合で
分岐するよう修正した方がいいんでしょうか?
それとも@でエラー表示させないだけでいいでしょうか?
みなさんならどうします?
0196nobodyさん
05/01/01 06:01:05ID:???>配列になる場合もあるし、配列にならずに1つの場合もある
こんなことになる書き方がそもそもの間違い。
分岐とかじゃなく、配列は配列として使え。
要素が一つしかなくたっていいんだから。
0198nobodyさん
05/01/01 07:30:54ID:???うちじゃちゃんと配列になるが?
例え配列にならないとしても、処理の部分でどうこうするんじゃなくて
$name = is_array($_REQUEST['name']) ? $_REQUEST['name'] : array($_REQUEST['name']);
とかフォームデータを取り出す時に何とかすればいいだけだと思うが
0202nobodyさん
05/01/02 23:29:35ID:???バージョンが書いてないので何ともいえないが、
PEAR DBパッケージにはprepareが実装されてるはず。
0203nobodyさん
05/01/03 03:27:16ID:???PostgreSQLはよう知らんけど、見た感じではpg関数としてはない。
PEARにあるとしても、本当の意味(DBMSの持つクエリの効率的な処理機能)での
プリペアは使えないと思う。
0204nobodyさん
05/01/03 05:09:51ID:KLuklu8Eで、出力結果が
"
となって欲しいんですが、文字コードをUTF-8で作成するとエラーになってしまいます。(euc-jpだと平気でした)
UTF-8だとエスケープシークエンスを全般を認識してくれないようなんですが、原因および回避方法を知りたいです。
0205204
05/01/03 05:33:21ID:???Macの場合どうしたらバックスラッシュを入力出来るんでしょうか。コピペしても「¥」になってしまい・・
0207nobodyさん
05/01/03 10:17:56ID:???どうもありがとう。やっぱりPostgreSQL用の関数としてprepared statementがサポートされてないんだから、PEARでもサポートできるわけがないよね。
まあいいや、PEAR DBにはpreparetd statementはなくてもプレースホルダがあるから、それだけでもありがたいと思うことにする。
ところでおれは生のPostgreSQL用関数かPEAR DBしか触ったことないのだが、PEAR DBを超えるようなお勧めのライブラリなんかあったら教えてください。
0208nobodyさん
05/01/03 13:10:58ID:???ことえりOFF(U.Sにする)で、Option + ¥ でバックスラッシュになる。
ただし、エディタによっては文字化けするので注意。
0209nobodyさん
05/01/03 14:26:15ID:1pWPK0qtRDF API for PHP
データベース保存周りがいまいちわからんのです。
0210nobodyさん
05/01/03 15:23:09ID:???〜と言うように本に書いてあったんですが、うまく動きません。
〜したいのですが、〜としてもうまく動きません。
〜で言う○○と同じような動作をさせたいのですが・・・
以上の様な、知ってる人から見ればバカみたいな質問は↓。
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
で、具体的なPHPのコードに対する動作不良、エラーが出てしまうなどはここ。
0211nobodyさん
05/01/03 16:00:35ID:???0212nobodyさん
05/01/03 18:53:13ID:KT+/g2GT特定の社名が出てきたらあらかじめ別ファイルに設定しておいた
リンク先に勝手にリンクを貼ってくれるようなことって出来ないでしょうか?
そうすれば仮にある会社のリンク先が変更になっても
読み込んでいる元ファイルだけを変更すれば全てに反映されると思います。
0214sage
05/01/03 19:42:11ID:KSsMVUlGhttp://pc5.2ch.net/test/read.cgi/php/1099322141/ より飛ばされてまいりました。
php+mysql鯖にて下記のようなソースでUPされたファイルとデーターベースに格納されている
文字列で重複削除をかけるために$ngにmysqlの結果セットを格納していきたいのですが
今のfor文ですと時間がかかりすぎてしまってこまっております。
何か一発で添字配列$ngに格納する方法ありませんでしょうか?
$rs="select id from ng";
$rt=mysql_num_rows($rs);
for($i=0;$i<$rt;$i++){
$ng[$i]=mysql_result($rs,$i,'id');
}
$ok=array_diff($up,$ng);
0215nobodyさん
05/01/03 20:04:43ID:???Web制作板から来た人かねぇ。
「出来る 出来ない」で聞かれたら「出来る」ってことになるけど、
既存のCGIでそういうものがあるかどうかって聞かれると
「どうだろうねぇ。探しても無いなら無いんじゃないの?」ってことになるかなぁ。
内容的にはかなり簡単な部類に入るので自分で作ってみるのもいいかと。
>>214
やりたい事が見えてこないから適当に答えるけど、それはSQLで解決できないような事なの?
0216214
05/01/03 20:49:00ID:???まわすことが非常に効率悪いのではないかと思いまして。
phpの関数で何か非常に効率のいいものがあったら教えていただきたいと思った次第です。
UPするtextファイルが大体10万件程度、ngデータとして
データベースに格納されているデータがおよそ1000万件(ngデータはtxtファイルとして保存もしてあります)。
その二つの間で重複削除をかけてngデータとして所持してない文字列のみを出力したいのですが
下記の形式を試し、あまりに時間がかかりすぎるためngのデータを配列に読み込みarray_diff
により差分配列を作成してからそれをファイルに出力するのがより高速かと思い試してみようと思った次第です。
そんなんよりもっと早い方法ご存知の方いらっしゃいましたらぜひとも教えていただきたいです。
$fl_name=$FILES['fl']['tmp_name']
$array_file=file($fl_name);
for($i=0;$i<count($array_file);$i++) //count($array_file)は10万程度
{
$rs=mysql_query("select *from ng where id='".$array_file[$i]."'");
$rt=mysql_num_rows($rs);
if($rt==0){fwrite($fl,$array_file[$i]);}
}
0217212
05/01/03 21:36:15ID:???> Web制作板から来た人かねぇ。
そうです。web制作板から島流しにあってここに来ました。
> 内容的にはかなり簡単な部類に入るので自分で作ってみるのもいいかと。
は、はぁ(;´Д`)
そうですか・・・
PHPで本格プログラムはしたこと無いのですが
似たようなプログラムを書いた人がいないとあっては
ここは一つ自力で解決せざるを得ないですか・・・・・・
0219nobodyさん
05/01/03 21:50:21ID:???file()、preg_split()、preg_match()、preg_replace()くらいかな使うのは。ガムバッテネ。
0220nobodyさん
05/01/03 21:52:17ID:d8mbNFJzんでapache再起動させたら
「mod_php4.cがねぇよ」
とか言われたんで、add module mod_php4.cコメントアウトしたらエラー吐かなくなって
見たところ正常に動いてるんですわ。
何これ、4.3.10からいらなくなったの?
0221217
05/01/03 21:58:21ID:???> file()、preg_split()、preg_match()、preg_replace()くらいかな
ラ、ラジャー(;´Д`)デス
0222nobodyさん
05/01/03 22:00:05ID:???DBに任した方が速そう。
UPされたデータをテンポラリテーブルに全てぶち込む。
SELECT word FROM TempTable WHERE NOT EXISTS (SELECT * FROM ngTable WHERE ngTable.ng=TempTable.word);
で得たwordをファイルに書き出す。ファイル<->Table間のやり取りが容易(SQLにCOPYなどがある)なら、
DBで直接ファイルを吐き出すのもアリかな。
0225nobodyさん
05/01/04 23:55:41ID:AGCbPn2Cしない場合なにか違いはあるのでしょうか?
0226nobodyさん
05/01/05 00:08:14ID:???ホームページからリンクを貼ってダウンロードできるようにしています。
ところが自鯖は24時間立ち上げっぱなしというわけでは無いので
時間帯によってはリンクが切れているときもあります。
そこでPHPを使ってリンクがアクティブの時はダウンロード可能にし、
自鯖をダウンさせているときはダウンロードできない旨を表示させたいのですが
可能でしょうか?できれば1〜3秒以内にそれらの判定をして表示させたいです。
0227nobodyさん
05/01/05 00:21:18ID:???file_get_contentsとかfsockopenとかでアクセスしてみたら?
タイムアウトとか設定できた希ガス
0228nobodyさん
05/01/05 00:27:11ID:???って一言書けばすむ話では?
0229226
05/01/05 01:18:25ID:???> 「ダウンロードできなかったら鯖落ちてますんで後日どうぞ」
> って一言書けばすむ話では?
まぁそれが一番簡単なんですが小さめのファイルは無料鯖にうpしているので
ダウンロードできるファイルと出来ないファイルが混在しているんですね。
それでとあるリンクはダウンロードできて他のリンクは切れているという状況は
ビジターの方に混乱させてしまうかと思いましてリンクの表示時に判別したいと
思ったわけです。
>>227
> file_get_contentsとかfsockopenとかでアクセスしてみたら?
なるほど。リンクが生きていればそのまま、一定時間以上かかるか
リンクが切れていれば鯖ダウンと判別すればいいんですね。
自鯖にファイルサイズが小さいダミーファイルを置いて、ページを読み込むたびに
そのダミーファイルにアクセスしてできなければ鯖ダウンと判別すればよさそうですね。
自鯖内の各ファイルにアクセスして判別してもいいですがそれをやると
判定時間が異様にかかりそうです。
0230nobodyさん
05/01/05 01:19:17ID:???<img name="image1" src="ttp://自鯖/now_avail.png" onError="image1.src='now_unavail.png';">
0231nobodyさん
05/01/05 01:23:20ID:???〜って出来ますか?
〜と言うように本に書いてあったんですが、うまく動きません。
〜したいのですが、〜としてもうまく動きません。
〜で言う○○と同じような動作をさせたいのですが・・・
以上の様な、知ってる人から見ればバカみたいな質問は↓。
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
で、具体的なPHPのコードに対する動作不良、エラーが出てしまうなどはここ。
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0232226
05/01/05 01:36:07ID:???なるほど。JavaScriptでも可能ですね。
もしかしたらPHPよりJavaScriptで実装した方が動作速度は速いかもしれませんね。
>>231
了解です。以降「くだらねぇ〜」に以降いたします。
0234nobodyさん
05/01/05 08:16:36ID:vMHNCGxM*.html 内に書かれた、{ }って文法的になになんでしょうか?
{ }内がphpプログラムで作られているのはわかったのですが・・
body1.html
---------------
<div>
<span>{KEY}</span>
{DEFN}
</div>
--------------
それとKEYに対して処理したく
body1.html内に例えば
<a href="http://www.******/***?keyword={ mb_convert_encoding(KEY)} ・・・
なんて、記述できないのでしょうか?
0235nobodyさん
05/01/05 08:29:23ID:???0236nobodyさん
05/01/05 09:22:00ID:???0237214
05/01/05 10:21:35ID:???SELECT word FROM TempTable WHERE NOT EXISTS (SELECT * FROM ngTable WHERE ngTable.ng=TempTable.word);
上記のクエリをmysqlにぶち込んでみたところsomething is wrong in your syntax : EXISTS (SELECT * FROM ngTable WHERE ngTable.ng=TempTable.word); 付近と出てしまいました
これはmysqlに対する副問い合わせができていないのでしょうか。解決方法をご教授ください。
ちなみにmysqlは4ver.0.18です。
0238nobodyさん
05/01/05 10:49:25ID:???http://dev.mysql.com/doc/mysql/ja/Rewriting_subqueries.html
0239nobodyさん
05/01/05 11:42:05ID:k/OgHA/yRSS情報をmovabletypeへ投稿できるスクリプトないですか?
SPIDERING HACKSにはあるが、PERLなんだよね・・・
PHPはないかな?
0240nobodyさん
05/01/05 12:14:31ID:???単なる文字。
pearのHTML_Template_Flexyなんかを使うと、
変数の置き換え場所の指定に{}が使われることもある。
どこかのページや本を参考にしてると思うけど、
最初から全部見た方が良いでしょう。
0242nobodyさん
05/01/05 14:21:31ID:pRFKvcsaこのときに、XML のデータの中におそらく文字化けでコントロールコードが入ってしまっているときに
その行で解析をストップしてしまうようなのです。
日本語は正しく通ります。(shift-jis の XML を読んでいます)
何か回避方法はありますでしょうか。
0244nobodyさん
05/01/05 14:26:01ID:pRFKvcsa$p = &new myParser();
$p->setInputFile($url);
$p->parse();
というように、URLから直接読んでいるので
チェックするには読んだデータそのままを扱わないといけないのですが、
それだとクラスの一部を書き換えないといけないのでしょうか
0245226
05/01/05 14:32:22ID:???> fsockopenとかでアクセスしてみたら?
> タイムアウトとか設定できた希ガス
具体的な話なのでまだこのスレの範疇かと思いお聞きします。
fsockopenでリンクが生きているか死んでいるかを判断するとき
タイムアウトの時間はどのくらいに設定するのが現実的でしょうか?
<?php
$fp = fsockopen ("www.yapoo.co.jp", 80, $errno, $errstr, 30);
if(!$fp) {
echo "cannot connect<br>\n";
} else {
echo "connection established<br>\n";
}
?>
最後の”30”という部分がタイムアウトと判断するまでの秒数だそうで
この値が大きくなればなるほどページの読み込みにかかる時間は増えていきます。
逆に小さすぎると読めるページでもその時間内に読み込めないと
判断されてしまうこともあるようです。
ここらへんの現実的な時間設定はどのくらいでしょうか?
0246nobodyさん
05/01/05 15:13:16ID:PjWbP+V8アプリケーションは他に何がありますか?
ご存知の方がいっらっしゃいましたらご教授ください。
0247nobodyさん
05/01/05 15:20:24ID:???てかスレ違いって言われるだろうから、早く帰りな。
0250246
05/01/05 15:46:24ID:PjWbP+V8どこの板にいくのがいいの?
0251nobodyさん
05/01/05 15:50:14ID:???で、fsockopenのtimeoutはコネクト可否の判定に使うんじゃなかったっけ?
ページサイズに関係してくる方は、socket_set_timeout()かと。
■ このスレッドは過去ログ倉庫に格納されています