トップページ⇒php
1001コメント289KB

【PHP】質問スレッドpart22【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/09/16 18:17:37ID:/HV017tY
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 http://www.php.net/

■日本 PHP ユーザ会
 http://www.php.gr.jp/

■PHP マニュアル
 http://www.php.net/manual/ja/

■PEAR マニュアル
 http://pear.php.net/manual/ja/

過去スレ, 関連スレ等>>2-4
0153nobodyさん04/09/18 17:12:03ID:???
>>150
そのサンプル行が抜けてんな
まあやりたい事はわかるからいいけど

正解は「$data[1]に改行が含まれているから」
$data[1]=rtrim($data[1]);
でもifの直前に入れとけ
0154nobodyさん04/09/18 17:21:21ID:???
>>150
そんなときは、本当に $data[1] が 0 かどうか確認してみるといい。
var_dump($data[1]); とやると、153 の言う改行が混入してるのがわかる。
015515004/09/18 17:22:58ID:???
解決しました!
$data[1]=chop($data[1]);
これは試してみたんですが、
rtrimって言う関数は知りませんでした・・・

ありがとうございました。
015615004/09/18 17:27:51ID:???
アドバイスありがとうございます。
確かに、string(3)になってました。
0157nobodyさん04/09/18 17:41:55ID:???
>>155
いっしょじゃないの?
0158nobodyさん04/09/18 18:28:52ID:c25lbTAf
これからスクリプト言語としてPHPを学習使用としています。
PerlやRubyも候補として検討する中で質問があります。

コマンドライン(CLI)でのプログラムでPerlやRubyはガンガン
使われている感じですが、PHPは今一見えてきません。

コマンドラインでのPHPの利用はどうでしょうか。
ご意見を聞かせて頂けるとありがたいです。
また、コマンドラインでの利用において参考となるサイトが
ありましたら紹介頂ければありがたいです。
(調べたのですが、設定ぐらいしか掲載しているサイトは
見つけられませんでした。システム管理とかやっているような
もしくはスクリプトサイト等があれば良いのですが。)

よろしくお願いします。
0159nobodyさん04/09/18 20:03:51ID:???
peclのライブラリの顔ぶれやマニュアルの関数一覧を見ればわかると思うが、
「OSの」システム管理(とくにWin32)なんかは、phpでは困難。
標準で組み込まれている機能は、ストリームのように気合の入ってきた部分もあれば、
エクスペリメンタルでほっとかれているものもある。
c/c++で何でも書けるなら特に障害はないが。
参考になるサイトが少ないのはあえてphpでやろうとする人が少ないからじゃない?
俺も差分バックアップ・ログ管理とかリンク切れ検査に使ってるくらいだなあ。
まあどれくらいの労力でどんなことしたいのかによるよ。
ほかにも言語はあるけど

早く基本部分を抑えたい、コーディングに労力をかけたくない -> php
趣味でちまちまやれればOK -> ruby
それ以外の全てをお引き受け -> perl
0160nobodyさん04/09/18 20:11:49ID:???
システム管理つーのがようわからんが、nix系だと管理画面とかphpで動かしてるのもそこそこあるね
winだと、、、なんだろう、DB管理のフロントエンドとか?あまり見ないな
C++みたいなイメージを持っててその手のことがやりたいならRubyかPythonでいいかなと思う
0161nobodyさん04/09/18 20:22:16ID:???
C++は商用ライブラリが多い。
0162nobodyさん04/09/18 20:40:30ID:???
確かにCといえど標準ONLYでは厳しいかもしれないね
0163nobodyさん04/09/18 22:03:05ID:???
phpの未経験者です。
phpのデバッグツールは何を使っておりますか?

先日TruStudioを入れましたが、ステップ実行ができるものの
すぐに固まってしまったり、その他機能が乏しく検討しております。

何かお勧めのものがあったら教えてください。
0164nobodyさん04/09/18 22:33:42ID:???
ツール使ってません。
0165nobodyさん04/09/18 22:55:08ID:???
>>163
PHPエディタとか?
0166nobodyさん04/09/18 23:18:11ID:???
>>163
ZEND様オフィシャルのアレがあるじゃないか。
0167nobodyさん04/09/19 00:09:59ID:s+sofMwN
STUDIOはすげーいいよ。
使いやすい。
0168nobodyさん04/09/19 00:11:38ID:???
糞すぎる
0169nobodyさん04/09/19 09:55:58ID:???
前スレで
php4でもOOPできるよって言われてはじめた者ですが
OOPってめちゃ面白いですね。
自分的に単なる作業に堕していたプログラミングが
物作りの輝きを取り戻した感じです。
0170nobodyさん04/09/19 11:42:01ID:???
OOPしすぎはダメよ!
0171nobodyさん04/09/19 13:00:10ID:???
なんで?
017215804/09/19 13:12:11ID:iDnOmOi6
>>159,160
アドバイスありがとうございます。
非常に参考になりました。

ライブラリの充実度等でPerlに一日の長があるみたいですね。
アドバイス頂いたことを参考に検討してみます。
0173nobodyさん04/09/19 14:02:36ID:PuBS3YUf
海外のPHPのアクセス解析使おうとしてるんですが、
検索文字列が文字化けして困ってます。
プログラミングの知識は少ししかないのですが、
どのように修正すれば問題は解決するでしょうか?
0174nobodyさん04/09/19 14:04:49ID:???
>173
文字コードが問題ではないのでしょうか。
0175nobodyさん04/09/19 14:05:17ID:???
>>173
まず文字化けの原因を探るべきでしょう。
それが終わってから、原因に応じた対処法を考え実装します。
使ってる人が多いものなら先人が修正してくれてる場合もあるけどね。
0176nobodyさん04/09/19 15:34:18ID:tUr3B337
func_get_argを介した場合、参照渡しは出来ないのでしょうか?

function hoge(){
$a = func_get_arg(0);
$a++;
}
$a = 0;
hoge(&$a);
echo $a;

で結果は0でした。
またfunc_get_argの前に&を置いてみたりしたのですが
やはり変わらず…。
ということは可変長数の引数は参照渡しできないということでしょうか?
もし解決方法があれば教えてください。
0177nobodyさん04/09/19 17:28:35ID:???
質問させてください。
FORMで送られたデータって他人が見えたりするんですか?
0178nobodyさん04/09/19 17:36:30ID:???
>>177
PC -> LAN -> ルータ -> ISP -> IX -> 鯖 etc.
どっかにスニファを仕込めば簡単に見えるね。
他にもプロキシとかあればそこでも仕込めるし。
曖昧な質問には曖昧な答えしか出てこないよ。
PHP言語に関係ないし。
0179nobodyさん04/09/19 18:05:31ID:???
>>178
PHP言語だってFORMを使っていると思います。
あとスニファって何ですか?
0180nobodyさん04/09/19 18:27:34ID:???
>>179
屁理屈こねる暇あったらググれ!
0181nobodyさん04/09/19 18:33:56ID:???
>>177
データに他人が見えたりするって・・・

心霊現象ですか?w
0182nobodyさん04/09/19 18:50:04ID:???
>>178
仕込まれない限り見られないってことですか?
0183nobodyさん04/09/19 19:27:38ID:???
>>166
ZEND の体験版はないですか?
0184nobodyさん04/09/19 19:47:37ID:???
>>183
自分で探せばすぐ見つかるのに、エサもらえるまで口開けてまってるのか。
http://www.zend.org/store/
Zend Studio : free evaluationてのがあるじゃん
018510404/09/19 20:21:10ID:???
でけた〜
$fp = fsockopen ($host, $port) でソケット接続をオープン
それはストリームでファイルポインタを返す
あとは fputs($fp, $request) でリクエストを送る
POSTの場合は
 POST /test.php HTTP/1.0
 Content-Length: 渡したい文字列の長さ
 (空行)
 hoge=fuga&hoge2=fuga2&....
な感じですね。改行は\r\n
レスポンスはfgets($fp)で拾えばよろし

いやぁ、勉強になりました。学校の実験でサーバクライアントは作ったんですけどすっかり忘れてました
レスしてくださった皆さんありがとうございました
0186nobodyさん04/09/19 21:08:13ID:???
www.php.net ではなく、VB.NET や C#.NET のように
.NET Framework な PHP はありませんか?
018717604/09/19 22:11:00ID:tUr3B337
http://www.matsubarafamily.com/blog/mbemu.php?blogid=2&archive=2004-05

ここを見ると、引数を充分な数増やすことで逃げられるようですが、
可変長参照渡しはやはり出来ないということでしょうか。
0188nobodyさん04/09/19 23:03:15ID:???
>>185
HTTP/1.1を使えよ。
1.0じゃないと困るような奴はヘタレ。
0189nobodyさん04/09/19 23:40:16ID:???
>>186
誰か作ってた気がするが、実用レベルには達してないと思うよ。
0190nobodyさん04/09/19 23:43:36ID:???
それと「www.php.netではなく、VB.NET や C#.NETのように」
何故ドメイン名と言語名が同列で比較できるのか不明なのだが、比較観点はなに?
0191カポコン04/09/20 01:01:19ID:???
VBはVB、C#はC#、それに.netの概念を加えたからVB.net、C#.net。
019217604/09/20 04:25:11ID:???
ポインタを配列に入れて、
配列を引数にすることで解決しました。
0193nobodyさん04/09/20 07:49:43ID:ljpqr4Sw
$pp = popen("/bin/ls ./", "r");
while ( !feof($pp) ) {
echo fgets($pp) . "<br>";
echo $pp . "<br>";
}
pclose($pp);

↑をaaacafeで実行した結果が「<br>Resource id #3<br>」なのね
なんでファイル名が取れておらんのやろか
0194nobodyさん04/09/20 08:26:15ID:???
パスワードなどの値をセッションで別のページに渡したりする場合って他人に見られたりすることってありますか?
0195nobodyさん04/09/20 08:29:59ID:???
パスをセッションで持ちまわすなんて処理はあり得ないから、
そんな心配をする必要なない。
0196nobodyさん04/09/20 08:33:36ID:???
セッションで渡した値は他人に見られないってことですか?
0197nobodyさん04/09/20 08:40:24ID:???
>>196
httpでどうやってアクセスが一連のセッションとして処理されてるのか、少しは調べてから来いよ
0198nobodyさん04/09/20 08:48:23ID:???
>>193
エラーログ見てる?
AAAはpopen()使えるの?
0199nobodyさん04/09/20 09:08:59ID:???
ええと、例えば管理画面に入室させる際にIDとパスワードを入力させてログインさせます
IDとパスワードが一致すると入室させるのですが
管理ページも数ページに分かれていて
ページ移動するたびにIDとパスワードを入力させるのは面倒なのでどうしたらいいのでしょうか?
パスワードが一致するとAのページを表示させ
そこからBのページを表示させたい場合です。
0200nobodyさん04/09/20 09:18:34ID:???
>>199
何でそんなに頭の回転が悪いの?
それとも考える前に質問しちゃうのかな。
0201nobodyさん04/09/20 09:20:49ID:???
まさか hidden 使い出すんじゃないだろうな……
0202nobodyさん04/09/20 09:21:28ID:???
>>199
そこまで考えてるなら、ちょい気張ればブリッと思いつくはずだ。
まあしかしこの際思いつかなくてもApacheのBasic認証使ってしまえばいいが。
020319904/09/20 09:26:31ID:???
Basic認証使えば簡単なのですが
使わないでやれないでしょうか?
0204nobodyさん04/09/20 09:29:48ID:???
自分で調べたり考えたりする気がさらさらないようなので放置するわ
ここは丸投げスレでも199サポートセンターでもありませんよ
020519904/09/20 09:42:09ID:???
そうですか、一応調べてるんですけどね
ありがとうございました
0206nobodyさん04/09/20 09:54:26ID:fqefKnLK
199じゃないんだけど、俺も解んないんでセッション使い回そうと思ってたんですが、どうすればいいんでしょうか。。
自分なりに調べてみたんですがさっぱり解らなくて、それで、考え付いたのがセッションでして。。

ヒントだけでも頂けないでしょうか。。
0207nobodyさん04/09/20 10:06:49ID:???
>>194>>196>>199>>203>>205-206
始めの画面でIDとパスワード使ってログインしたら、
セッションに認証用のキーワードを指定してみるといい。

セッションにそのキーワードが無い場合は、「ログインしてください」みたいな
メッセージを出して中身を表示しないようにする。

キーワードは短い言葉だと危険なので、最低でも400文字以上がいいと思う。
俺は好きな曲の歌詞とかをキーワードにしてるよ。
0208nobodyさん04/09/20 10:09:18ID:???
【PHP】セッションについて語ろう!【PHP】
http://pc5.2ch.net/test/read.cgi/php/1064399467/l50
0209nobodyさん04/09/20 10:20:40ID:???
>>207
なるほど!
そういう考え方があったんですね。
俺が煽られたわけじゃないけども、199と気持ちは同調してると思ってるんで、いろいろ言われて当然だと思いましたorz

>>208
一通り見ていたつもりなんですが、うまく脳みそに入ってなかったみたいです。
出なおしてきますorz
0210nobodyさん04/09/20 10:44:42ID:???
>>207
400文字以上もしてんの?多くね?
0211nobodyさん04/09/20 10:51:28ID:???
うちは256もじだよ。
演歌がセキュアな気がする。
021219304/09/20 10:55:12ID:ljpqr4Sw
エラ-ログの見方がワカランヨ
aaacafeはセ-フモ-ドではないみたいやけど
newdirしてもパ-ミッションが限定されておったりするから
なんやろ仕掛けられておるやもしらんよ
とりあえずpopenではエラ-もワ-ニングも出らんでよ
まぁのんびり調べてみるやぁねアリガトウやね
0213nobodyさん04/09/20 10:56:07ID:???
確かに最も効率がいいのは256文字なんだけど、
セキュリティを重視するなら512文字以内にした方がいい。
400文字というのはちょうど良いんじゃないかな。
0214nobodyさん04/09/20 12:12:34ID:???
いや、400文字というのは俺からしてみれば
too muchなんだよ。
以前、512文字設定で突破されたことがある。
メジャーな曲だったので反省している。
256文字程度でマイナーな曲に限る。
021519904/09/20 12:57:42ID:???
どうやって突破したのだろう
0216nobodyさん04/09/20 13:07:24ID:???
認証時にトラッキングされる。
認証される文字列が256辺りになると、
トラッキング側でノイズ起因のエラーが起こる為に
セキュアであると言えると思う。
0217nobodyさん04/09/20 13:43:29ID:???
認証とあわせて、PEAR AUTHを使ってるけど
そういえば、セッションIDって32文字だよね。
32文字だといつハイジャックされるか不安です。
セッションIDをせめて256文字にすることはできるんでしょうか。
021819904/09/20 13:55:50ID:???
セッションIDをハイジャックされても問題ないのでは?
0219nobodyさん04/09/20 14:04:49ID:???
おいおい
0220nobodyさん04/09/20 14:21:00ID:???
ここの人たち大丈夫かい?
0221nobodyさん04/09/20 14:36:32ID:???
なんか、うそばっかし言ってるね
0222nobodyさん04/09/20 15:45:39ID:???
とりあえず、セッションちゃんと勉強しろ。207も含めて。
0223nobodyさん04/09/20 15:51:58ID:???
>>217
そこでSSLですよ。

もしくは、セッション開始時にランダムな256文字の文字列生成して、
クッキーとセッション変数両方に保存して、次回のアクセスでこの二つを比べる。

あと、リモートホストをセッション変数に入れとくとか。
0224nobodyさん04/09/20 16:23:29ID:???
>>205-206
馬鹿すぎるにも程がある
0225nobodyさん04/09/20 16:25:40ID:???
>>222
え、>>207って本気で言ってたの?
0226nobodyさん04/09/20 16:41:25ID:???
初心者で勉強のつもりでヲチしてるんだけど、どこまで本当なのか理解できない。。。
キーワード400文字ってのはマジなのでしょうか?
初心者対象スレなんでネタならネタとわかるような書き方にして欲しい。。。
022720704/09/20 16:43:44ID:???
>>226
スマセン、>>207がターニングポイントですw
0228nobodyさん04/09/20 16:46:43ID:???
> 初心者対象スレなんで

お前基準かよ
0229nobodyさん04/09/20 16:55:07ID:???
まじめな話、一番いいのはセッションにある数式の一部を入れておくこと。
400文字は多すぎ。256文字以内。これ。

んで、認証時にはセッションから取り出した数式を
受け取り側であらかじめ持っていた数式と結合し、計算する。

ex. $_SESSION[key] = '256×12÷5×7000÷…(以下長いので割愛。256文字以内になるようにする事!)';

答えをあらかじめ設定しておき、
$int_a = 6548;

セッションの数式と受け取り側の数式を結合して計算した答えが$int_aになるようにしておく。
もちろんセッションの値はそのままではstrにすぎないので、×や÷で分割して数値をintに変換し、計算すること。
0230nobodyさん04/09/20 16:55:58ID:???
セッション管理調べてわからんはずがない。
0231nobodyさん04/09/20 16:57:38ID:???
嘘かどうか見抜けない「僕に」分かるように書いて欲しい、が正しいな。
仮託するなよ乞食のくせに。
0232nobodyさん04/09/20 17:00:15ID:???
>>229
素直に "256*12/5*5000/...." で eval しようぜ
0233nobodyさん04/09/20 17:03:19ID:???
なんか、盛り上がってきたね。
みんなセキュリティーに対して関心が高いんだね。
0234nobodyさん04/09/20 17:09:55ID:???
>>232
素で知らなかった…orz。
asp->Perl->PHP(先週)なのです。。ありです。。

ということは、>>229を改造して
$_SESSION[key] = '$int_key_a*$int_key_b+$int_key_c/$int_key_d-$int_key_e';

$int_a = 6578;

$int_key_a = 2;
$int_key_b = 500;
〜
if ($int_a <> eval($_SESSION[key])) {
 echo '帰れ';
}

って事も出来たりするんですかね?w
今度から認証はこっちでやろうかな!w
0235nobodyさん04/09/20 17:11:24ID:???
' と " の動作の違いを調べよ
0236nobodyさん04/09/20 17:13:08ID:???
嘘かどうか見抜けない人には(ry、って久々に聞いたなこれ。
半年ROMってろはちょくちょく見るけど。

>>230
はげ同。ドキュメントだっていくらでもあるのに・・・。
使い方“だけ”知ってる奴の異様な発想がこわい。
分からないことは誰かが教えてくれると思ってる奴は
phpじゃなくて自分自身がでかい穴になってることに
早く気づいて欲しい。
0237nobodyさん04/09/20 17:14:14ID:???
>>235 それだけじゃネタかただの馬鹿か区別つかんつーの
0238nobodyさん04/09/20 17:14:50ID:???
>>235
それは理解してますよー。"は変数を解釈してくれるんですよね?
ただこの場合は、一度文字列としてセッションに格納しなければいかんので
eval使わないとダメかなーと。
0239nobodyさん04/09/20 17:16:21ID:???
ただの馬鹿だろ。
なんか下らねーことになってるからしばらく様子見たほうがよさそうだな、このスレ。
0240nobodyさん04/09/20 17:17:35ID:???
あっそ
0241nobodyさん04/09/20 17:18:18ID:???
普通の質問者が現れれば終わると思われ。
024219904/09/20 18:34:36ID:???
evalは負荷が大きすぎるのでやめましょう
0243nobodyさん04/09/20 19:42:54ID:???
http://www.users-side.co.jp/common/syosin_logo_mid.gif
0244nobodyさん04/09/20 22:55:47ID:???
<>使えるんか?
0245nobodyさん04/09/20 23:02:23ID:???
質問です。
PHP で掲示板を作っているのですが、
文章中に空行2つがでてきた場合、そこを境に違う記事として処理できるようにしたいと考えています。
そこで $mes = preg_split('/\n\n\n/', $_POST['mes1'], -1, PREG_SPLIT_NO_EMPTY); としたのですが、うまく動きません。
Unix と Mac と Win の改行文字の違いは聞いたことがあったので、この行の前に
 $_POST['mes'] = preg_replace("/\r\n/", "\n", $_POST['mes']);
 $_POST['mes'] = preg_replace("/\r/", "\n", $_POST['mes']);
を入れました。一応 Win では動作することに成功したのですが、力技になっているようで気が引けます。
皆さんはどうやって改行文字を処理しているのでしょうか?
0246nobodyさん04/09/20 23:26:04ID:???
>>245
explode()じゃないんだから、\n{3}|(\r\n){3}|\r{3} でいいんじゃないの?
空行2つってのはよく分からん仕様ですな。改行コードの問題も面倒だし。

あと本題と関係ないけど、質問するときに、この書き方するのは絶対止めてね。

>うまく動きません。
0247nobodyさん04/09/20 23:28:03ID:???
>>244 おまえのような奴はー 10年ROMってろ
0248nobodyさん04/09/20 23:29:10ID:???
「空行2つ」に何か小宇宙を感じたんだろ。
024924604/09/20 23:31:45ID:???
すまん。
保存時に \r\n{3}|\r{3} -> \n\n\n にしておいて、
内部的に explode() 使うほうが合理的か。
0250nobodyさん04/09/20 23:33:28ID:???
本人より早く修正!!
$msg = preg_replace('/(\r\n){3}|\r{3}/', "\n\n\n", $msg);
025124604/09/20 23:34:50ID:???
>>250
こらどうも。

>>248
俺はそのセンスにコスモを感じたよ。
0252nobodyさん04/09/20 23:37:29ID:???
>>249
漏れも一瞬そう思ったが、どっちがいいかは分からんよ。
$_POSTを書き換えてるし、dat使うとは書かれてないからな。
■ このスレッドは過去ログ倉庫に格納されています