【PHP】質問スレッド Part15
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/03/07 02:03ID:???上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。
■本家
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-5
0370nobodyさん
04/03/15 13:30ID:LUBZXH8jphpで2chのdatファイルを取得する方法について、どなたかよろしいでしょうか。
ttp://www.monazilla.org/document/や
ttp://age.s22.xrea.com/talk2ch/などの資料があるのですが、
よくわからないながらもできるだけ参考にして以下のようなスクリプトを書きました。
<?
ini_set( 'user_agent', 'Monazilla/1.00' );//これは念のため
$fp = @fsockopen("pc2.2ch.net", 80);
if($fp){
fputs($fp, "GET /php/dat/1078592587.dat HTTP/1.0\r\nUser-Agent: Monazilla/1.00\r\n\r\n");
while (!feof($fp) && $o != "\r\n")
$o = fgets($fp, 512);
while (!feof($fp))
echo fgets($fp, 4096);
fclose($fp);
}
?>
0371nobodyさん
04/03/15 13:31ID:LUBZXH8jリクエストがあるたびに毎回、datファイル全体を読み込みなおせばいいのですが、
それではものすごい負荷がかかってしまうので>>17氏に従いfsockを使う事にしています。
ひとまず差分の事などは置いておくとして、
dat全体をまず読み込めるようにしよう!と思ったのですが、、
>>370のようにすると何も返ってこないのです。
接続先をwww.2ch.netにした場合は人大杉のページが表示されました
HTTPの基本的な事で間違えているような気がします。
どなたか、簡単なフォーマットのようなものでもいいのでご教授お願い致します。m(_ _)m
0372nobodyさん
04/03/15 16:05ID:Di4hYbsQファイルのロックって例えば、1つのログファイルを共有している2つの掲示板スクリプトから
同時に書き込んだ時も大丈夫ですか?
0376nobodyさん
04/03/15 18:28ID:???0380221
04/03/15 19:13ID:???0383376
04/03/15 19:29ID:???決められた時間になったら強制的に関数を起動という意味です
sleepではありませんので念のため・・・
0384376
04/03/15 19:37ID:???set_time_limitとset_error_handlerを設定した上でエラー時にエラー名を調べて
タイムアウトと判断した際に自前のメッセージを出す関数を作れば>>321が可能な事は
わかったんですが、ウチのレンサバがPHPをSafemodeで起動しているせいで
set_time_limitが使えないことが判明し、また振り出しに戻ってしまいました
0385nobodyさん
04/03/15 19:47ID:???なんで*たまにだけ*極端に長くなるのか、何の処理をしてるのかその辺も書いてもらわないと
誰も分からないと思うよ。あと、"質問者の情報の小出し"はやめよう。
あと、実行時間が極端に長くなるような(どれくらいか知らんけど)スクリプトを動かすのは
結局そのレン鯖に迷惑がられるんじゃない?
0386376
04/03/15 19:56ID:???fsockopenでの読み出しで止まっているようです
socket_set_timeoutも使ってるんですが何故か効かない・・・
これ以上はサイトがバレバレなので控えたいです
0387nobodyさん
04/03/15 20:26ID:???session_destroyはセッション変数をクリア(NULLにしたり解放したり)しているわけではない。
session_destroy後もセッション変数に代入された値は生きている。
マニュアルをよく読めば判るが、セッションに登録されているデータを破棄している。
要は、session変数を保存しているファイルそのものを削除してしまう。
session_unsetはsession変数を解放する。session変数を保存しているファイルそのものは
存在するが、中身は空っぽ(に近い状態)になる。
0388362
04/03/15 21:01ID:???$_SESSIONを使うのが一般的だとすると
session_register()は何のためにあるのか
さっぱりわからんし
0389nobodyさん
04/03/15 21:20ID:???話はそれからだ
0390nobodyさん
04/03/15 21:21ID:???それsocket禁止されてんじゃあ・・
ちなみにforで65535ループ2重くらいにすればphpすぐタイムアウトするよな
萎えすぎる
0391nobodyさん
04/03/15 22:15ID:???fsockopen で開いた後の fread か fgets で止まるということかな?
その場合は、非ブロックモードにすれば止まらなくなるはず。
PHP 4.3.0 以上でしか使えないし、扱いが難しいけど。
0392362
04/03/15 22:19ID:???セキュリティとコードの可読性のために$_SESSION (またはPHP 4.0.6以前は$HTTP_SESSION_VARS)の使用 が推奨されます。
これね。そういえばうちは秋刀魚だったよ。
0393nobodyさん
04/03/15 22:54ID:???0394nobodyさん
04/03/15 23:08ID:???0395nobodyさん
04/03/15 23:35ID:???新しいので作ってみた
chm版
http://up.isp.2ch.net/up/031d77c3b544.zip
どうでもいい話だが、本文は別に文字化けしている訳じゃない。
対応フォントを表示できない環境で見ようとしているだけ。
0396nobodyさん
04/03/16 00:03ID:???それを見た側から言うと文字化けというのじゃないだろうか
0397nobodyさん
04/03/16 00:06ID:???乙。まだロダが混んでいていただけてませんが。
で、聞くけど、対応したフォントをインストールしていると
そのままでも読めると言うことかな?
どのフォントを使っているの?
0398nobodyさん
04/03/16 00:13ID:???一つ一つ$array[i]があるかどうかしなきゃならないなんてことはないですよね?
0400nobodyさん
04/03/16 00:19ID:NGiTkHYyThx
0401nobodyさん
04/03/16 01:43ID:???マヂサンクス
いただきました。
これでマニュアル嫁る
0404362
04/03/16 11:04ID:???可読性はともかくセキュリティで何か問題あるの?
0405nobodyさん
04/03/16 11:31ID:NZM27FO2まずpublic_htmlのsessionディレクトリをchmod 755 session
として書き込みを出来るように致しました。
そして、セッションの保存先の記述はsession_start()よりも前に書き、保存先が
変更されるように致しました。
<?php
session_save_path("/home/xxx/public_html/session");
session_start();
?>
しかし、保存先は変更されず、設定を変えているにも関わらず、
書き込みができないというエラーが出てしまいます。
どこか原因があるのでしょうか?
0406nobodyさん
04/03/16 11:40ID:???ない。
>>405
保存先ディレクトリはhttpdが動いているユーザ(一般にはnobody,www,apache等)
の書き込み権限が必要。
0407nobodyさん
04/03/16 12:40ID:NZM27FO2ちょっとおっしゃられていることと違うことをやっていたら
ごめんなさい。
chown:chown /home/xxx/public_html/session
とすべきということでしょうか?
0408nobodyさん
04/03/16 12:54ID:NZM27FO2chown nobody:nobody /home/xxx/public_html/session
0409nobodyさん
04/03/16 13:08ID:???0410nobodyさん
04/03/16 13:11ID:???いいんじゃないのそれで。
ついでにパーミッションも0700に変更しとけ。
chmod 0700 保存先ディレクトリ
#SafeModeでやるとどうなるか知らんが、動くんなら気にするな。
0411nobodyさん
04/03/16 13:41ID:RN6yU9c4GUIの画面で「pkg」拡張子のファイルを指定しろと出るのですが
PHPのパッケージって一体ドコにあるのですか?
ちなみにサーバ自体は触れません。 winのマシンでリモートで
コントロール画面をいじるような環境にいます。
CobaltはRAQ3ってやつです。
散々webを回ったんですが、用語すら難しくてわかりません。
テルネットやLINUXの知識は皆無なんです。
よろしくお願いします。
0412402
04/03/16 14:28ID:???レスありがとうございます、しかしHost:を送ったり、
fputs($fp, "Accept-Encoding: gzip");などとしてみてもだめでした。
一応、Hostを送る場合も送らない場合も「人大杉」の画面は出ました。
でも他の専用ブラウザのようにdatの内容を取得することができなかったです。
phpとあまり関係ないところで間違えてるのでしょうか、、、
もしアドバイス頂ければ、どなたかお願いします。
0414nobodyさん
04/03/16 16:27ID:???Cobaltはパネルを通して管理するスタイルのために
他のUnix系の管理とは異なることも多く、その分 Cobaltの
コミュニティがちゃんと存在するので、そっちいって訊きな。
今のバージョンのPHPのパッケージを作ってる人がいるかもしれん。
純正のやつなら、Cobalt買ったときにメディアが付いて来たろ。
バージョンは古いけど。なけりゃCobaltのサイト(まだあるかな?)
にも置いてあったな。
>散々webを回ったんですが、用語すら難しくてわかりません。
>テルネットやLINUXの知識は皆無なんです。
別にCobaltならtelnetやLINUXの知識はなくてもいいが、
逆にCobalt独自の管理知識しらないとやっていけないぞ。
それを勉強するのに用語が判らないのなら、前提となる
Unixの一般知識も勉強しな。
0415nobodyさん
04/03/16 16:44ID:???「..」と語尾につけたいのですが、どのようなスクリプトを書いたらいいでしょうか?
0416415
04/03/16 16:45ID:???0417nobodyさん
04/03/16 16:58ID:???0419nobodyさん
04/03/16 17:11ID:???正規表現かけるのが定石なんでしょうか?
英語向けサイトで文字化けを防ぎたいのですが。
0421nobodyさん
04/03/16 17:33ID:???0424nobodyさん
04/03/16 18:03ID:6IiWiqvl「この文章でよろしいですか?Y/N」みたいなアラートを出したいのですが
vbでいうmsgboxみたいなもの教えてください。
0425nobodyさん
04/03/16 18:07ID:???ブラウザは何使ってる?
IEならJavaScript使えばいいし
ネットスケープならJavaScript使えばいい
そのほかなら自分で調べるしかないけど
0427nobodyさん
04/03/16 18:08ID:???<?
$fp = @fsockopen("pc2.2ch.net", 80);
if($fp) {
fputs($fp, "GET /php/dat/1078592587.dat HTTP/1.0\r\nHost: pc2.2ch.net\r\nUser-Agent: Monazilla/1.00\r\n\r\n");
while (!feof($fp) && $o != "\r\n") $o = fgets($fp, 512);
while (!feof($fp)) echo fgets($fp, 4096);
fclose($fp);
}
?>
これで読めるけど。
0429nobodyさん
04/03/16 18:21ID:6IiWiqvl確認画面を出したいです。
phpで書いてある掲示板なのでおなじsubmitのところにはjavascriptは無理なのでは?
javascriptの中にphp書くのも不可能じゃないんですか?
たぶん相当バカな事いってると思いますが心を仏にしてお願い致します。
0431nobodyさん
04/03/16 18:47ID:???セッションで値渡したら楽だよ。
んで、確認画面は
<input type="text" name="name" value="<?php echo $_SESSION['name']; ?>">
・
・
・
こんな感じで
0432nobodyさん
04/03/16 18:54ID:???情報の後出しは良くない
JAVASCRIPTならボタンをSUBMITじゃなくて普通のボタンにして、アラート後OKならSUBMITする関数を呼び出せばいい
PHP側はHTMLを吐き出す際にJAVASCRIPT付きで吐き出せばいい
確認画面にしたいなら.>>431
0433nobodyさん
04/03/16 19:05ID:NZM27FO2リンクとしてセッションを継続する場合は、セッションIDは
新しく生成されないが、セッションの開始のページを
開くたびに、セッションIDがどんどん保存されていくことは
正しいですよね?
0434nobodyさん
04/03/16 20:59ID:IotPKUsmwrite.php?target=2
の様な情報って受け取れます?
0435nobodyさん
04/03/16 21:05ID:???ほぅ?
http://jp.php.net/reserved.variables
0437nobodyさん
04/03/16 21:21ID:???文字列から 複数の指定文字 以外 の文字を 置換する
うまい方法ある?
0439437
04/03/16 22:21ID:???preg_replaceだと、正規表現でマッチする分を置換できるけど
マッチ「しない」分を置換する方法がわかんない
正規表現で否定の指定方法がわかればすむ話かなあああ
0440nobodyさん
04/03/16 23:21ID:???指定文字列以外なら無理ぽだが、指定文字以外なら出来る。
ABC以外の文字をZに置換。
ereg_replace("[^ABC]","Z",$str);
0441nobodyさん
04/03/16 23:23ID:???mb_ereg_replaceで条件にマッチするものを削除(mb_ereg_replace("正規表現","",$str);)
してから置換を行えばいいのでは?
0442nobodyさん
04/03/16 23:31ID:???指定文字列もなくなっちまうじゃん。
一旦、指定文字列とその出現位置を覚えておいて削除し、
残った文字を全て置換後、その文字列を元あった位置に戻すとかすりゃ可能だが。
0444nobodyさん
04/03/17 00:08ID:???windowsでやっています。
c:\test.php
と表示させたいので
c:\\test…
と入れると
c: est…
と表示されてしまいました。どうしたらいいのか分かりません。教えてください。
0446nobodyさん
04/03/17 00:23ID:???そういうときはシングルクォートでくくれ
0447nobodyさん
04/03/17 01:28ID:???include_path とかのパス区切りは ; にせんとだめだけど。
0448nobodyさん
04/03/17 04:58ID:???テンプレートセット・マネジャー ≫≫ defaultでこれ( /></td></tr><input type=)を定義している場所がわかりません・・・
具体的に未登録ユーザの表示名が定義されているファイルはどこでしょうか?
変数を入力する( /></td></tr><input type=)のファイルと、代入先が解れば自力で直せそうなんで教えてくれませんか?
多分自分の予想だとここ(変数を入力する( /></td></tr><input type=)のファイル)のどこかの整合性がとれていないと思うのですが・・・
なにかが欠落してるのかもしれません
お力をお貸しください
0449nobodyさん
04/03/17 05:00ID:???スマソ。XOOPSのHPやってます。不具合があるので解る方レスお願いします
0450nobodyさん
04/03/17 05:21ID:???go away.
http://pc2.2ch.net/test/read.cgi/php/1067311026/l50
0451nobodyさん
04/03/17 09:30ID:k72f02s2Header("Content-disposition: attachment; filename=hoge.csv");
Header("Content-type: application/octet-stream; name=hoge.csv");
$str = "hoge,hoge";
print ( "$str" );
現在このようにしてcsv出力を行っていますが、
「ファイルのダウンロード」ダイアログが出てきて、保存をクリックすると
単純にPCに保存ができます。
開くをクリックするとまた「ファイルのダウンロード」ダイアログがでてきて、
もう1度開くをクリックすると今度はテキストエディタでcsvファイルが開きます。
なぜ2度ダイアログが出てくるのでしょうか。
1回で開くを実行できないでしょうか。
0453402
04/03/17 10:48ID:???・・・・?何で動かなかったんだろう・・・(´д`)
とにかく助かりました。
HTTPやネットワークプログラミングについて、もう少し詳しく勉強してみます。
0454nobodyさん
04/03/17 10:48ID:???0455nobodyさん
04/03/17 11:28ID:6/A8lM/E0456nobodyさん
04/03/17 11:49ID:???0460nobodyさん
04/03/17 17:11ID:6/A8lM/Esession.gc_maxlifetimeなどの指定はできますか?
0462nobodyさん
04/03/17 17:24ID:???session.use_trans_sid以外は、PHP_INI_ALLだから可能。
http://www.php.net/manual/ja/ref.session.php
マニュアルも読めんのか?
0463nobodyさん
04/03/17 20:15ID:6/A8lM/Eini_set( 'session.cookie_lifetime' ,3600 );と記述しました。
書き方がおかしいでしょうか?
この書き方では、設定変更は出来ないようです。
0464nobodyさん
04/03/17 20:52ID:dMGK56zpHTMLファイルのセレクトメニューの値を
PHPファイルのセレクトメニューに反映させる方法をどなたかご教授ください。
宜しくお願いします。
0466nobodyさん
04/03/17 20:56ID:???お父ちゃんな、マニュアルも読まん子は好きやないねんけどな。
<?php
ini_set('session.cookie_lifetime', '3600');
// 引数は数値で書いても型変換されるけど、正しくは文字列。
phpinfo();
?>
として鯖に置いて確かめてみ。普通は特に変更不可にはしてない筈。
確認しても駄目なら管理者に問い合わせ。
0467nobodyさん
04/03/17 21:02ID:???hai? って感じだが、<select><option>の特定のoptionを選択状態で表示したいって話なら、
phpに関係なくHTMLの話やね。<option selected>item のようにselectedをつけりゃいい。
どのoptionにselectedを付けるか、つーのはプログラマである君がゴリゴリ書く仕事やね。
0468nobodyさん
04/03/17 21:42ID:???レスどうも。
もちろんserectedはわかるんだけど、
やっぱゴリゴリ書かなきゃなんねえのですか。
ありがと、今からゴリゴリしますわ。
■ このスレッドは過去ログ倉庫に格納されています