【PHP】質問スレッドpart22【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/09/16 18:17:37ID:/HV017tY・新規質問の方は上げてください。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:???そのサンプル行が抜けてんな
まあやりたい事はわかるからいいけど
正解は「$data[1]に改行が含まれているから」
$data[1]=rtrim($data[1]);
でもifの直前に入れとけ
0154nobodyさん
04/09/18 17:21:21ID:???そんなときは、本当に $data[1] が 0 かどうか確認してみるといい。
var_dump($data[1]); とやると、153 の言う改行が混入してるのがわかる。
0155150
04/09/18 17:22:58ID:???$data[1]=chop($data[1]);
これは試してみたんですが、
rtrimって言う関数は知りませんでした・・・
ありがとうございました。
0156150
04/09/18 17:27:51ID:???確かに、string(3)になってました。
0158nobodyさん
04/09/18 18:28:52ID:c25lbTAfPerlやRubyも候補として検討する中で質問があります。
コマンドライン(CLI)でのプログラムでPerlやRubyはガンガン
使われている感じですが、PHPは今一見えてきません。
コマンドラインでのPHPの利用はどうでしょうか。
ご意見を聞かせて頂けるとありがたいです。
また、コマンドラインでの利用において参考となるサイトが
ありましたら紹介頂ければありがたいです。
(調べたのですが、設定ぐらいしか掲載しているサイトは
見つけられませんでした。システム管理とかやっているような
もしくはスクリプトサイト等があれば良いのですが。)
よろしくお願いします。
0159nobodyさん
04/09/18 20:03:51ID:???「OSの」システム管理(とくにWin32)なんかは、phpでは困難。
標準で組み込まれている機能は、ストリームのように気合の入ってきた部分もあれば、
エクスペリメンタルでほっとかれているものもある。
c/c++で何でも書けるなら特に障害はないが。
参考になるサイトが少ないのはあえてphpでやろうとする人が少ないからじゃない?
俺も差分バックアップ・ログ管理とかリンク切れ検査に使ってるくらいだなあ。
まあどれくらいの労力でどんなことしたいのかによるよ。
ほかにも言語はあるけど
早く基本部分を抑えたい、コーディングに労力をかけたくない -> php
趣味でちまちまやれればOK -> ruby
それ以外の全てをお引き受け -> perl
0160nobodyさん
04/09/18 20:11:49ID:???winだと、、、なんだろう、DB管理のフロントエンドとか?あまり見ないな
C++みたいなイメージを持っててその手のことがやりたいならRubyかPythonでいいかなと思う
0161nobodyさん
04/09/18 20:22:16ID:???0162nobodyさん
04/09/18 20:40:30ID:???0163nobodyさん
04/09/18 22:03:05ID:???phpのデバッグツールは何を使っておりますか?
先日TruStudioを入れましたが、ステップ実行ができるものの
すぐに固まってしまったり、その他機能が乏しく検討しております。
何かお勧めのものがあったら教えてください。
0164nobodyさん
04/09/18 22:33:42ID:???0167nobodyさん
04/09/19 00:09:59ID:s+sofMwN使いやすい。
0168nobodyさん
04/09/19 00:11:38ID:???0169nobodyさん
04/09/19 09:55:58ID:???php4でもOOPできるよって言われてはじめた者ですが
OOPってめちゃ面白いですね。
自分的に単なる作業に堕していたプログラミングが
物作りの輝きを取り戻した感じです。
0170nobodyさん
04/09/19 11:42:01ID:???0171nobodyさん
04/09/19 13:00:10ID:???0172158
04/09/19 13:12:11ID:iDnOmOi6アドバイスありがとうございます。
非常に参考になりました。
ライブラリの充実度等でPerlに一日の長があるみたいですね。
アドバイス頂いたことを参考に検討してみます。
0173nobodyさん
04/09/19 14:02:36ID:PuBS3YUf検索文字列が文字化けして困ってます。
プログラミングの知識は少ししかないのですが、
どのように修正すれば問題は解決するでしょうか?
0174nobodyさん
04/09/19 14:04:49ID:???文字コードが問題ではないのでしょうか。
0175nobodyさん
04/09/19 14:05:17ID:???まず文字化けの原因を探るべきでしょう。
それが終わってから、原因に応じた対処法を考え実装します。
使ってる人が多いものなら先人が修正してくれてる場合もあるけどね。
0176nobodyさん
04/09/19 15:34:18ID:tUr3B337function 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:???PC -> LAN -> ルータ -> ISP -> IX -> 鯖 etc.
どっかにスニファを仕込めば簡単に見えるね。
他にもプロキシとかあればそこでも仕込めるし。
曖昧な質問には曖昧な答えしか出てこないよ。
PHP言語に関係ないし。
0184nobodyさん
04/09/19 19:47:37ID:???自分で探せばすぐ見つかるのに、エサもらえるまで口開けてまってるのか。
http://www.zend.org/store/
Zend Studio : free evaluationてのがあるじゃん
0185104
04/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:???.NET Framework な PHP はありませんか?
0187176
04/09/19 22:11:00ID:tUr3B337ここを見ると、引数を充分な数増やすことで逃げられるようですが、
可変長参照渡しはやはり出来ないということでしょうか。
0190nobodyさん
04/09/19 23:43:36ID:???何故ドメイン名と言語名が同列で比較できるのか不明なのだが、比較観点はなに?
0191カポコン
04/09/20 01:01:19ID:???0192176
04/09/20 04:25:11ID:???配列を引数にすることで解決しました。
0193nobodyさん
04/09/20 07:49:43ID:ljpqr4Swwhile ( !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:???0199nobodyさん
04/09/20 09:08:59ID:???IDとパスワードが一致すると入室させるのですが
管理ページも数ページに分かれていて
ページ移動するたびにIDとパスワードを入力させるのは面倒なのでどうしたらいいのでしょうか?
パスワードが一致するとAのページを表示させ
そこからBのページを表示させたい場合です。
0201nobodyさん
04/09/20 09:20:49ID:???0202nobodyさん
04/09/20 09:21:28ID:???そこまで考えてるなら、ちょい気張ればブリッと思いつくはずだ。
まあしかしこの際思いつかなくてもApacheのBasic認証使ってしまえばいいが。
0203199
04/09/20 09:26:31ID:???使わないでやれないでしょうか?
0204nobodyさん
04/09/20 09:29:48ID:???ここは丸投げスレでも199サポートセンターでもありませんよ
0205199
04/09/20 09:42:09ID:???ありがとうございました
0206nobodyさん
04/09/20 09:54:26ID:fqefKnLK自分なりに調べてみたんですがさっぱり解らなくて、それで、考え付いたのがセッションでして。。
ヒントだけでも頂けないでしょうか。。
0207nobodyさん
04/09/20 10:06:49ID:???始めの画面でIDとパスワード使ってログインしたら、
セッションに認証用のキーワードを指定してみるといい。
セッションにそのキーワードが無い場合は、「ログインしてください」みたいな
メッセージを出して中身を表示しないようにする。
キーワードは短い言葉だと危険なので、最低でも400文字以上がいいと思う。
俺は好きな曲の歌詞とかをキーワードにしてるよ。
0208nobodyさん
04/09/20 10:09:18ID:???http://pc5.2ch.net/test/read.cgi/php/1064399467/l50
0209nobodyさん
04/09/20 10:20:40ID:???なるほど!
そういう考え方があったんですね。
俺が煽られたわけじゃないけども、199と気持ちは同調してると思ってるんで、いろいろ言われて当然だと思いましたorz
>>208
一通り見ていたつもりなんですが、うまく脳みそに入ってなかったみたいです。
出なおしてきますorz
0211nobodyさん
04/09/20 10:51:28ID:???演歌がセキュアな気がする。
0212193
04/09/20 10:55:12ID:ljpqr4Swaaacafeはセ-フモ-ドではないみたいやけど
newdirしてもパ-ミッションが限定されておったりするから
なんやろ仕掛けられておるやもしらんよ
とりあえずpopenではエラ-もワ-ニングも出らんでよ
まぁのんびり調べてみるやぁねアリガトウやね
0213nobodyさん
04/09/20 10:56:07ID:???セキュリティを重視するなら512文字以内にした方がいい。
400文字というのはちょうど良いんじゃないかな。
0214nobodyさん
04/09/20 12:12:34ID:???too muchなんだよ。
以前、512文字設定で突破されたことがある。
メジャーな曲だったので反省している。
256文字程度でマイナーな曲に限る。
0215199
04/09/20 12:57:42ID:???0216nobodyさん
04/09/20 13:07:24ID:???認証される文字列が256辺りになると、
トラッキング側でノイズ起因のエラーが起こる為に
セキュアであると言えると思う。
0217nobodyさん
04/09/20 13:43:29ID:???そういえば、セッションIDって32文字だよね。
32文字だといつハイジャックされるか不安です。
セッションIDをせめて256文字にすることはできるんでしょうか。
0218199
04/09/20 13:55:50ID:???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:???0223nobodyさん
04/09/20 15:51:58ID:???そこでSSLですよ。
もしくは、セッション開始時にランダムな256文字の文字列生成して、
クッキーとセッション変数両方に保存して、次回のアクセスでこの二つを比べる。
あと、リモートホストをセッション変数に入れとくとか。
0226nobodyさん
04/09/20 16:41:25ID:???キーワード400文字ってのはマジなのでしょうか?
初心者対象スレなんでネタならネタとわかるような書き方にして欲しい。。。
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:???仮託するなよ乞食のくせに。
0233nobodyさん
04/09/20 17:03:19ID:???みんなセキュリティーに対して関心が高いんだね。
0234nobodyさん
04/09/20 17:09:55ID:???素で知らなかった…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:???半年ROMってろはちょくちょく見るけど。
>>230
はげ同。ドキュメントだっていくらでもあるのに・・・。
使い方“だけ”知ってる奴の異様な発想がこわい。
分からないことは誰かが教えてくれると思ってる奴は
phpじゃなくて自分自身がでかい穴になってることに
早く気づいて欲しい。
0238nobodyさん
04/09/20 17:14:50ID:???それは理解してますよー。"は変数を解釈してくれるんですよね?
ただこの場合は、一度文字列としてセッションに格納しなければいかんので
eval使わないとダメかなーと。
0239nobodyさん
04/09/20 17:16:21ID:???なんか下らねーことになってるからしばらく様子見たほうがよさそうだな、このスレ。
0240nobodyさん
04/09/20 17:17:35ID:???0241nobodyさん
04/09/20 17:18:18ID:???0242199
04/09/20 18:34:36ID:???0243nobodyさん
04/09/20 19:42:54ID:???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:???explode()じゃないんだから、\n{3}|(\r\n){3}|\r{3} でいいんじゃないの?
空行2つってのはよく分からん仕様ですな。改行コードの問題も面倒だし。
あと本題と関係ないけど、質問するときに、この書き方するのは絶対止めてね。
>うまく動きません。
0248nobodyさん
04/09/20 23:29:10ID:???0249246
04/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);
0252nobodyさん
04/09/20 23:37:29ID:???漏れも一瞬そう思ったが、どっちがいいかは分からんよ。
$_POSTを書き換えてるし、dat使うとは書かれてないからな。
■ このスレッドは過去ログ倉庫に格納されています