■【PHP】初心者コーナー 4 Released

このエントリーをはてなブックマークに追加
1前スレ981
PHPに関するアホな質問はここで、マターリやろな。
ファイル MySQL PostgreSQL 正規表現でも なんでもいってみ
でもな、アホな質問であっても詳しく質問しろよ。 ネタはおもしろく書けよ。

前スレ
■【PHP】初心者コーナー 3 Released【スローモード】
 http://pc2.2ch.net/test/read.cgi/php/1055280252/l50
■【PHP】初心者コーナー 2 Released
 http://pc2.2ch.net/php/kako/1048/10484/1048442813.html
■【PHP】初心者コーナー
 http://pc2.2ch.net/php/kako/1011/10115/1011550860.html

その他
■PHPの普通の質問はあっちな、【PHP】質問スレッド Part9
 http://pc2.2ch.net/test/read.cgi/php/1057947512/l50
■PHPへ移行したいPerl信者はあっちな、【待望】PerlユーザのためのPHP入門
 http://pc2.2ch.net/test/read.cgi/php/1046326634/l50
■マニュアル嫁ってうるさいのがいるからちょっとは嫁な、
 http://www.php.net/manual/ja/
■おまえ初心者なら入門本くらいかっとけな、PHP関連の書籍(但しPHP出版系お断り)
 http://pc2.2ch.net/test/read.cgi/php/985315574/l50
■これはなズープスと読むらしいがあっちな、XOOPS
 http://pc2.2ch.net/test/read.cgi/php/1031736248/l50

でもな、ここで書きたかったらここで書き。 あとは関連な、>>2 
2前スレ981:03/08/28 16:00 ID:/GsWsnZj
■ 本家
 http://www.php.net/
■ 日本 PHP ユーザ会
 http://www.php.gr.jp/
■ PHP マニュアル
 http://www.php.net/manual/ja/
■ PEAR マニュアル
 http://pear.php.net/manual/ja/

■【待望】PerlユーザのためのPHP入門
 http://pc2.2ch.net/test/read.cgi/php/1046326634/l50
■PHP-users ML ヲチ
 http://pc2.2ch.net/test/read.cgi/php/1031734100/l50
■【PHP】Smarty【Template】
 http://pc2.2ch.net/test/read.cgi/php/1047225437/l50
■ PHP アップグレード報告スレッド
 http://pc2.2ch.net/test/read.cgi/php/987259309/l50
■ PHP + MySQL
 http://pc2.2ch.net/test/read.cgi/php/983250751/l50
■ PHP + PostgreSQL
 http://pc2.2ch.net/test/read.cgi/php/983128806/l50
■ PHP 関連の書籍 (但し PHP 出版系お断り)
 http://pc2.2ch.net/test/read.cgi/php/985315574/l50
■ perlスクリプト⇒phpスクリプト移植要望スレ
 http://pc2.2ch.net/test/read.cgi/php/1035700861/l50
■ YomiサーチPHP化プロジェクト
 http://pc2.2ch.net/test/read.cgi/php/1044371877/l50
■ せっかくだからPHPで掲示板作ってみませんか?
 http://pc2.2ch.net/test/read.cgi/php/1035700861/l50
3前スレ981:03/08/28 16:01 ID:/GsWsnZj
テンプレのスレはほとんどいきてまつね
41:03/08/28 16:05 ID:/GsWsnZj
んがっ頭に■ついてた。ダメポ
5nobodyさん:03/08/28 16:10 ID:???
>>1
ご苦労さまです
6nobodyさん:03/08/28 17:18 ID:???
次スレでは、

前スレ
■■【PHP】初心者コーナー 4 Released
http://pc2.2ch.net/test/read.cgi/php/1062054002/l50

となるわけだなw
7nobodyさん:03/08/28 17:22 ID:???
>>1

乙です

■ワロタ
8nobodyさん:03/08/28 20:33 ID:zyBDSSoG
echo($_SERVER["REMOTE_HOST"])

とやっても何も表示されないのは何が原因でしょうか?







もしかしてApacheの方の問題かも?
98:03/08/28 20:45 ID:???
わかりました。たわいもないことですた。







回線釣ってきます。
10nobodyさん:03/08/28 21:02 ID:???
どう解決したのかくらい書いていけよ
HostnameLookups onじゃなかったってオチか?

--
☆満員御礼キャンペーン中 無料 レンタルサーバ☆
http://arigato3.net/
11nobodyさん:03/08/28 21:13 ID:eqLOXZF0
phpとデータベース対応してる無料鯖ってレッツPHPに載ってるところ意外に日本ではないですか?
12???:03/08/28 21:19 ID:???
セッション間のデータの受け渡しについて質問です。

$_GET/$POST/$SESSION などがありますが、参考書などを読むと
GET だと URL にデータが連結されて外部に見えてしまい良くないと
書かれています。

それならいっそのこと、セキュリティ上の問題の有無に関わらず、基本的に
POST あるいは SESSION を使うようにしてしまってよいと思うのですが、
どうなんでしょう?
アドバイスいただければありがたいです。





13nobodyさん:03/08/28 21:26 ID:03y9/d4l
printとechoの違いがよく分からないので教えてくれませんか?
14nobodyさん:03/08/28 21:36 ID:???
>>12
php データベース 無料 でググれ

>>13
マニュアルに載っている通りだ。
対して変わらん。値を返すか返さないかくらいだな

--
☆満員御礼キャンペーン中 無料 レンタルサーバ☆
http://arigato3.net/
1512です:03/08/28 21:42 ID:???
>>14
14さん、12です。
ありがとう!
1613:03/08/28 21:55 ID:???
>>14
ありがとうございました。
17剛 ◆V1qpS.dsbM :03/08/28 22:39 ID:P/uKn/BP
掲示板の改造について聞きたいのですがどこで聞けばいいですか?
18nobodyさん:03/08/29 00:23 ID:???
arigato3さん、自作自演はかえって印象が悪くなると思いますよ。
19219.117.222.18.user.rb.il24.net:03/08/29 00:42 ID:BPzH0JOh
>>10>>14

そろそろ騙りは止めていただけませんか?
20nobodyさん:03/08/29 00:51 ID:???
>>12
ニヤニヤ(・∀・)
21nobodyさん:03/08/29 01:00 ID:???
レンタルCGIを目指して修行中なんですが皆さんのポリシー的な事を
お伺いさせてくださいな。
コントロールパネルのログイン方法なんですがどれが良いんでしょうか
SSLは大前提でおながいします。
・BASIC認証
・クッキー認証
・セッション認証
・登録式リモホ認証

22あぼーん:あぼーん
あぼーん
23nobodyさん:03/08/29 07:14 ID:4u48qIRe
そもそもPHPってなんなの?
24nobodyさん:03/08/29 07:25 ID:???
基本ですね。
パーソナルホームページの略です。
25nobodyさん:03/08/29 10:39 ID:???
PHP = Php Hypertext Preprocessor
頭文字をとってPHP
2612です:03/08/29 11:06 ID:???
>>20
なぜ「ニヤニヤ(・∀・)」なの?

おしえて下さい。おながいです!
27nobodyさん:03/08/29 11:06 ID:???
>>25
その最初のPhpは・・・
28nobodyさん:03/08/29 11:16 ID:???
GNU や GOD みたいなもんだなw
29nobodyさん:03/08/29 11:39 ID:???
GOD はわからんが GNU は GNU is Not Unix だっけか
3025:03/08/29 11:46 ID:???
再帰的頭字語ってヤツですね
31nobodyさん:03/08/29 13:35 ID:E3UAHMQu
PHPでは否定はperlと同じですか?
if (!ereg()){;}などのようにやりたいんですが、
単純に関数などの前に!を入れるだけでいいんでしょうか?
3231:03/08/29 14:24 ID:???
実際にやってみれば分かる質問は放置というわけですか!!(怒)
もう二度と聞きませんよ!!(怒)
33モソさん:03/08/29 14:45 ID:pNKV687J
そうですよ!!(怒)
34nobodyさん:03/08/29 15:03 ID:/EvFMyE3
>>31,32
掲示板はチャットじゃねぇ
35nobodyさん:03/08/29 15:31 ID:E3UAHMQu
>32は僕じゃないです。ただし、33さんのお怒りはごもっともです。
すみません。
PHPマニュアルでは該当項目が見つけられませんでした。
演算子の項でしょうか?どこですか?
36nobodyさん:03/08/29 15:41 ID:???
>32のレスの最初から12文字程を100回ほど繰り返して読んでください。
できれば声に出して。
3732です:03/08/29 16:41 ID:???
>>36
やってみました。周囲のスタッフがびっくりしています。
声に出して100回言ってみましたが、最後の方では涙も出てきました。
なぜでしょうか…
38nobodyさん:03/08/29 16:50 ID:???
>>32
自分で言って自分で実践したのかいw
39nobodyさん:03/08/29 17:02 ID:???
40nobodyさん:03/08/29 17:17 ID:???
教えてやろう

int i
if i <> 0 then goto hell


41nobodyさん:03/08/29 17:33 ID:E3UAHMQu
>39
ありがとうございました。いい加減疲れて頭が働かなくなっていた
ようです(というかむしろ元からか?)。

>36でもやったら少しは目が覚めるかと思いますが、37みたく
なるのは嫌です。つーか、なんなの〜?
42nobodyさん:03/08/29 18:06 ID:???
あるテキストファイルを読み込んで、その内容をHTMLの一部として吐くような動作をさせたいと思っています。
今のところ
呼び元で
print func();
として、funcの中身で

while(!feof($fp)){
  $line .= fgets($fp, 2048);
}

return $line;
というようなコードを書きました。
とりあえず期待通りの動作はしてくれていますが、読み込むファイルのサイズが大きいと$lineの中に
ファイルのサイズ分のデータが溜め込まれる形になるので効率が悪いかなと感じます。
もっと良い方法は無いでしょうか?
呼び元にループ書いて1行ずつprintすれば解決ですが、それだと使いまわしが・・・
43nobodyさん:03/08/29 18:14 ID:???
fread()でいいじゃん
44nobodyさん:03/08/29 18:46 ID:???
>>42
includeやrequireってのがあります。
サニタイズが必要ならダメですが。
45nobodyさん:03/08/29 18:52 ID:???
requireするならそのまんま変数名を書き込んでも変数名が表示され
るだけだからめんどくさいけど<?php print $name; ?>みたいにしたら吉
46nobodyさん:03/08/29 20:45 ID:yif1D4PZ
<? echo $_GET[str]; ?>

というソースで、

 test.php?str="

とすると

 \"

と表示されてしまいます。
' や \ も同様に \' \\
何故こうなってしまうのか、また、どうすればそのまま表示させられるのでしょうか。
PHPのバージョンは4.3.2
WindowsXP
Apache 1.3
47nobodyさん:03/08/29 20:52 ID:???
48nobodyさん:03/08/29 21:06 ID:???
ぎゃあ前スレにあったんですねごめんなさいありがとう
49nobodyさん:03/08/29 22:06 ID:???
>>42
そのまま出力するなら include() や require() 以外に、readfile() もあるけど。
解析しない分、readfile() の方が高速。
50nobodyさん:03/08/30 20:23 ID:yJrx/a4c

前スレでカウンタを作ってうpしていた者ですが、ロック処理をしたのを
作ってみたのですが、どなたかご意見下さい。

http://popup3.tok2.com/home/program/cgi-bin/uploader/source/File:0011.txt


# ところでtxtファイルにしても、本文中に<script language="php">って
# 書いてあるとソース開かないと出ないんですがどうすれば普通に表示されますか?
# <?php 〜〜 ?>にしたらtxt直アクセスで普通に表示されるんですが。
51nobodyさん:03/08/30 20:45 ID:???
拡張子 phps にしたら?まあ設定されてないと意味無いが
52nobodyさん:03/08/30 20:46 ID:???
53nobodyさん:03/08/31 00:04 ID:???
XMLをパースするクラスで、要素も属性も取得できるものを探しています。
自分で探したものは
http://phpxmlclasses.sourceforge.net/show_doc.php?class=class_path_parser.html
なのですが、どうも使い勝手が悪いです。
いいのがあったら紹介してもらいたいです。
54nobodyさん:03/08/31 16:30 ID:xLziQJBA
Linux+Apache+MySQL+PHPで
↓作ってみました。
http://cal.spo.to/
55abaqusマン:03/08/31 18:03 ID:???
すごいマニアックなのに
独自ドメインとっててワロタ

>>54
56nobodyさん:03/08/31 20:00 ID:4293Ov9h
append.phpというファイルをまちがって削除したのですが、
それ以後、どのphpを実行させても、基本的には動いているのですが、
Warning: Unknown(/Users/kondo/Sites/append.php): failed to create stream: No such file or directory in Unknown on line 0
のような警告が出てきます。

いったいappend.phpというのは何のためのファイルなんでしょうか?
どこかから入手できるのでしょうか?
57nobodyさん:03/08/31 20:16 ID:???
>>56
php.ini の auto_append_file
何をするファイルなのか知らない。管理者に聞くように。

--
◇おはようからお休みまであなたを見つめるレンタルサーバー◇
http://arigato3.net/
58nobodyさん:03/08/31 20:51 ID:4293Ov9h
>>57
ありがと。appendファイルは空ファイルだったことを思い出し、
ファイル名だけ、append.phpにしたらおさまってくれました。
59nobodyさん:03/08/31 21:44 ID:C/xJu/a4
あのー
redhat8.0でインストール時のパッケージでPHPを選んだのですが
どうも日本語処理系でCall to undefind functionがでます。
なんでー???
60nobodyさん:03/08/31 22:44 ID:???
>>59
phpinfo(); で mb_* が有効になっているか調べる。
redhatのphpのrpmは有効になっていない(していない)って聞いた記憶があるな。
使いたいのなら、ソースからconfigureして入れる。
または、mb_*が有効になっている野良rpmを探してきて入れる。

--
◇おはようからお休みまであなたを見つめるレンタルサーバー◇
http://arigato3.net/
61nobodyさん:03/09/01 08:26 ID:???
PHPで作ってるページのRSSを作成したいのですが、
PHPのRSS生成用のライブラリってありますか?
62nobodyさん:03/09/01 08:34 ID:???
PEARにあったかと。
63nobodyさん:03/09/01 09:07 ID:Ncyv7e5A
標準入力とファイル入力とを両方監視したい
Cでたとえるならselectしたいんだけど
PHP4だとstream_selectでいいんですか?
64nobodyさん:03/09/01 09:58 ID:???
>62
parserはあったのですがgeneratorは無いようです。仕方ない、作るか・・・。
65nobodyさん:03/09/01 10:29 ID:???
凄く初歩的なものかもしれないのですが。

function &hogehoge()
みたいに、関数名の先頭についている「&」ってなんでしょうか?
66nobodyさん:03/09/01 11:10 ID:???
リファレンス
67nobodyさん:03/09/01 12:13 ID:???
>>66
関数のリファレンスってどんなものなのか
よくわからないのですが…
68nobodyさん:03/09/01 12:15 ID:???
リファレンスを返す関数であって、
関数そのものがリファレンスなわけじゃない
69nobodyさん:03/09/01 13:50 ID:???
PHPスクリプト上で、何かをすると、Apacheを動かしてる
ユーザーと同じ権限で色々出来てしまうと聞いたのですが、
誰か知りませんか?知ってたら詳細を教えてください。
70nobodyさん:03/09/01 14:06 ID:???
「何か」と「色々」がわからん
そもそもPHPスクリプトは(モジュールの場合)Apacheの
実行ユーザー(nobodyとかwww)と同じ権限で動いてるわけだが
71nobodyさん:03/09/01 14:33 ID:???
数字の頭に0を補いたいんです。
$hoge = 1 だったら001
$hoge = 98 だったら098
のように

どうすればよいのだろうか?

72nobodyさん:03/09/01 15:00 ID:???
format() か printf(), sprintf() あたりを調べる
73nobodyさん:03/09/01 15:07 ID:???
format()はnumber_format()のミスで、これは前0の機能は無いや、すまん
74nobodyさん:03/09/01 15:17 ID:???
おっ
できたよ
さんくす
printf("%05d",$hoge);
75nobodyさん:03/09/01 16:53 ID:???

書き込み専用モードでファイルをオープンした場合、
ファイルの中身はいったん空になるんでしょうか?
76nobodyさん:03/09/01 16:55 ID:???
なる
7775:03/09/01 17:08 ID:???
ありがとうございました
78nobodyさん:03/09/01 17:12 ID:nf6gij1n
59です。
60さんありがとう。探してやってみます。
79nobodyさん:03/09/01 17:21 ID:???
80nobodyさん:03/09/02 06:14 ID:???
カウント数と表示桁数、カウンタ画像へのパスを引数として
関数join_cntへ渡すと、画像を見せかけ上連結して送り返してくれるものを作っています。
見せ掛け上というのは、単に<img>タグを何個もつないでるだけということです。

function join_cnt($cnt, $figure, $path){
 $cnt = sprintf("%0".$figure."d", $cnt);
 for ($i=0; $i<strlen($cnt); $i++) {
  $number = substr($cnt, $i, 1);
  $cnt_img .= "<IMG src=\"$path$number.gif\">";
 }
 return $cnt_img;
}

これで一応まともに動作はするのですが、少しエラーがでます。そのエラーとは

Notice: Undefined variable: cnt_img in W:\server\counter.php on line 46

というようなものです。エラーの出た変数を以下のようにしたらエラーは解消されました。

$cnt_img = '';

これについてなぜこのようなエラーが起きたのか原因が知りたいのです。
また、変数の初期化の方法は↑のようなやり方でOKですか?
どなたかご教授下さい。
81nobodyさん:03/09/02 08:13 ID:???
>>80
エラーじゃなくて、Notice(注意、警告)。
初期化の仕方はそれでイイヨー
82nobodyさん:03/09/02 10:03 ID:awULgDnZ
PHP3を使っているんですが
strpos関数を使った結果が空白ならA処理、数字ならばB処理というように
したいのですが
$str="ABC";
if(strpos($str,"A")==""){echo "A";}else{echo "B";}
の処理では0が返されてるのにAの処理をしてしまいます。
どうしてなんでしょうか?
8380:03/09/02 10:25 ID:???
>>81

ありがとうございます。

もう少し突っ込んで聞きたいのですが、なぜこの場合は警告されたのでしょうか?
この変数に限り、初期化しないと警告されるのはなぜなのかよく分かりません。

あと、$cnt_img = '';よりもう少し見た目のいい初期化の方法、
それと、複数の変数を同時に初期化したい場合などはどのようにすればいいのでしょうか?

よろしくお願いいたします。
84nobodyさん:03/09/02 10:45 ID:???
>>83
それだけいきなり追加してるからだよん
他は代入(=初期化)だからね
85nobodyさん:03/09/02 10:45 ID:???
>82
どうやら "" が数値(または真理値)に変換されて比較されているようなので
期待した結果を得るには

if((string)strpos($str,"A")==""){echo "A";}else{echo "B";}

のようにキャストしてあげる必要があるみたい
8680:03/09/02 10:49 ID:???

なるほど、代入=初期化になるんですか。ありがとうございます。
8782:03/09/02 10:49 ID:awULgDnZ
>>85
なるほど、そうだったんですか。
どうもありがとうございました^^
88nobodyさん:03/09/02 10:55 ID:???
型まで比較対象にするには ===
strpos($str,"A")===""
とすればよい
89nobodyさん:03/09/02 11:07 ID:???

何個もある変数に同じ値を代入するにはどうすればよいのでしょうか?

list($a, $b, $c) = 10;

このようにしてもうまくいかなかったのですが、

90nobodyさん:03/09/02 11:08 ID:???
あんまり好きじゃないが、、、
$a = $b = $c = 10;
これじゃだめ?
9180:03/09/02 11:13 ID:???
>>90

Perlだと結構いろいろなやり方があったんですが、PHPだとその方法しかないでしょうか?
92nobodyさん:03/09/02 11:29 ID:???
オレにはわからんなあ
いろいろソース見るのがいいかと
93nobodyさん:03/09/02 12:26 ID:+Pxa3UzG
あれ?もう一つのPHP質問スレはどこいった?
9493:03/09/02 12:28 ID:???
スマソ。>>1にリンクがあった。
もうdat落ちしてるのか……。早いな。
敷居を高くして次スレって話はどうなったんだ?
95nobodyさん:03/09/02 12:28 ID:???
>88
それだと strpos の戻り値は元々 int なんだから永久に true にはならない罠
それに質問者の環境は PHP3 だよ。=== は PHP4 以降でつ。

>80
たしか初期化に関しては前スレで話題になった気がするんだけど前スレは
DAT落ちしてるんだよな。

PCに残ってるログをちょっとあたってみるかな。
96nobodyさん:03/09/02 12:40 ID:???
んー見つからない
きのせいだったか

質問スレの方は新しい奴は立ってないみたいだな
97nobodyさん:03/09/02 13:58 ID:3rUGrasl
体験談なのだが、phpを使いたくて
レッツPHP
http://php.s3.to/simple/

−ショートメッセージ−
http://php.s3.to/simple/source.php?short.php
というのを設置しようとしたんだけどどうしてもうまくできない。

サーバーに置いたshort.phpを直に動かすと正常に動くのだが
<? include "short.php";?>
とやっても全然動かない。
なんでだろうと頭をひねっていて、ふと拡張子を
.htmlから.phpに変えたらすんなり動いた。
そんなもんなんだと納得しました。
これからいろいろ勉強してプログラムしていければと思います。
98nobodyさん:03/09/02 14:59 ID:???
>>97
それは鯖設定によってどうとでもなる。
AddType application/x-httpd-php .html
とかね。

お す す め で き な い が
99nobodyさん:03/09/02 15:22 ID:3rUGrasl
>>98
> >>97
> それは鯖設定によってどうとでもなる。
> AddType application/x-httpd-php .html
> とかね。
>
> お す す め で き な い が

57へー
100nobodyさん:03/09/02 15:33 ID:???
echoとprint
負担がかかるのはどっち?
101nobodyさん:03/09/02 16:06 ID:???
>100
たしかこっちで話題になってた

★負荷軽減対策委員会(Perl,PHP)★
http://pc2.2ch.net/test/read.cgi/php/1034645635/l50

ここかどうか忘れたけどたしか内部的にはどっちも同じだけど
print は値を返すってところが違うとかなんとか。

そこから考えると echo の方が負荷は少ない気がするね。
102nobodyさん:03/09/02 16:08 ID:???
>100

http://ns1.php.gr.jp/pipermail/php-users/2001-August/001460.html
あとこの辺にも面白そうなスレがあった。
103nobodyさん:03/09/02 17:32 ID:???
自鯖立てて拡張子(.html)でPHPを動かしてるのですが、
これはやらない方がよいでしょうか?
# 自分しか使ってないので負荷がかかるのは良いですが、
# セキュリティ面ではどうなのでしょう・・

---
FreeBSD 4.8RE + Apache 1.3.27 + PHP 4.3.3
104nobodyさん:03/09/02 18:17 ID:???
>>103
PHP スクリプト以外の HTML も parse の対象になるので、負荷が高くなるというのと、
php.ini で short_open_tag = On になっていると、<?xml で始まる xhtml 文書などは
parser error になるので注意する必要があるくらい。

もし、拡張子 html で PHP を動かすように設定しているのが、サーバに PHP が入って
いることを隠すのが目的なら、php.ini で expose_php = Off にしておかないと、
HTTP ヘッダを見ると、PHP が入っているのが分かってしまうので注意。

サーバで PHP が動いているのを隠すのが目的なら、apache の httpd.conf でもサーバ
情報を出さないように設定しておかないと意味がないけど。
105nobodyさん:03/09/02 18:27 ID:???
ServerTokens OS
106nobodyさん:03/09/02 18:47 ID:JNv1JGve
PHPでPDFを使いたいと思っています。ここを見て→ http://php.planetmirror.com/manual/ja/ref.fdf.php
下記に書いた作業をしましたが、FDFファイルが作成されません。
どうしたら使えるようになるでしょうか?

やったことは、まずサイトから fdftkv5.tar.gz をダウンロードし、
libfdftk.so を/usr/local/lib/に fdftk.h を/usr/local/include/に格納しました。

PHPを下記の引数で再コンパイルしました。
./configure --without-mysql --with-pgsql=/usr/local/pgsql \
--with-apxs=/usr/bin/apxs --with-fdftk --enable-zend-multibyte \
--enable-mbstring --enable-mbstr-enc-trans --enable-mbregex

問題のソース(FDFファイルが作成されません)
<?php
$outfdf = fdf_create();
fdf_set_value($outfdf, "status", $status, 0);
print(fdf_get_file("http:/soc/simple.pdf");
fdf_set_file($outfdf, "http:/soc/simple.pdf");
fdf_save($outfdf, "simple.fdf");
fdf_close($outfdf);
Header("Content-type: application/vnd.fdf");
$fp = fopen("simple.fdf", "r");  //ここでファイルが見つからないとエラーになる。
fpassthru($fp);
unlink("simple.fdf");
?>
環境は下記の通りです。
 Debian 3.0 rev 1 Apache 1.3.26
 PostgreSQL7.3.3 PHP4.3.2
107nobodyさん:03/09/02 18:54 ID:JNv1JGve
106です。長文すみません。
上記、ソース内の2行目はコピペミスです。この行はコメントアウトになってます。
Forms Data Format 関数の情報があまりみつけられなかったので、
詳しいURL等ありましたら、一緒によろしくお願いします。
108103:03/09/02 19:02 ID:???
>>104
レスサンクスです。
勉強になりました。
109nobodyさん:03/09/02 19:41 ID:???
$weekday = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
という配列を作った。
この配列は、この内容のままで変更されることはない。
しかしローカル変数だと毎回設定しなくてはならず、非効率的だ。
そこで、効率よくするためにはどうするか?

案1: 定数にする。
   → PHPでは配列を定数にすることができないので却下。

案2: スーパーグローバル変数にする。
   → やり方がわからん。どうやるの?

いいアイデアあればおしえてくれ。
110nobodyさん:03/09/02 20:03 ID:???
>>101
前にechoとprintの仕様が違うの
で調べたとき、内部的にも違ってた気がする。
で、気になった仕様の違いが...思い出せないので
あるいは全部気のせいだったかもしれぬ。
111あぼーん:あぼーん
あぼーん
112nobodyさん:03/09/02 21:51 ID:unZ7m5QL
環境はphp4 + MySQLです。
質問なのですが、データベース中に該当するレコードがあるかどうかわからないため
あるとき→update
ないとき→insert
したいのです。

無いこと前提でupdateし、失敗したらinsertしようと思ったのですが、
無くてもupdateは成功するみたいで(どのレコードも変更されないが、失敗はしない)
うまくいきません。
単純に
存在するかどうか調べて、分岐させるしかないのでしょうか?
それだとある場合もない場合も2回クエリを発行しなきゃいけないわけで、あまり効率のいいやり方とは思えません。

どなたか、スマートなやり方を教えてください。
113nobodyさん:03/09/02 22:49 ID:???
書き込むテーブルにユニークキーがあるなら先にINSERTしてみるとか
114nobodyさん:03/09/02 22:53 ID:unZ7m5QL
>>113
残念ながらユニークであることが保障されているキーはありません...。
出入りが激しいテーブルなので、ユニークにしても抜けている箇所がある
可能性があります。たまたまそこにinsertしてしまったらアウト。
115nobodyさん:03/09/02 23:24 ID:???
それでUPDATEでピンポイントに1件だけ変更できるの?
そういう目的では無いのか・・・
116nobodyさん:03/09/02 23:38 ID:???
ま、もう寝るから書くだけ書いちゃうけど
UPDATEに複数のフィールドを使って検索してるなら
それらを使って複合キーを作って、INSERT→UPDATEするなあ
目的に全然あってなかったら忘れてくれ
117nobodyさん:03/09/03 00:28 ID:???
>>106
エラーメッセージぐらいコピペ汁

>>109
$GLOBALSは?
118nobodyさん:03/09/03 00:52 ID:???
>UPDATEの人
mysql_affected_rows()は?
119nobodyさん:03/09/03 01:57 ID:7BGOwnnf
>>112
MySQL限定で良いなら、REPLACE文使えば?
http://www.mysql.gr.jp/jpdoc/4.0/manual.ja_Reference.html#REPLACE

>存在するかどうか調べて、分岐させるしかないのでしょうか?
普通そうです。
>それだとある場合もない場合も2回クエリを発行しなきゃいけないわけで、
>あまり効率のいいやり方とは思えません。
ですので、普通そういう設計にしません。
(しかし、そうせざるを得ないシチュエーションもあろう)
120nobodyさん:03/09/03 07:32 ID:???
>>117
$GLOBALS['varname'] = array(...);
でいいのかな?
やってみたけど、スーパーグローバルにならないぞ。

<html><body>
<?php
$GLOBALS['count'] += 1;
echo $GLOBALS['count'], "\n";
?>
</body></html>

このスクリプトを複数回呼び出しても、表示は1でかわらん。
ということは、スーパーグローバルになってないということだよね?

もしかしてCGIになってるのかな?
121nobodyさん:03/09/03 08:04 ID:???
>>109
>>120
いまいち何がやりたいのかワカラン。
ちなみに、auto_append_fileというのもある。
122nobodyさん:03/09/03 09:51 ID:???
>>121
説明が悪かったかな。
PHPのローカル変数って、PHPスクリプトを実行するたびに
初期化されるやん?そうではなくて、いわゆる(他の言語に
おける)グローバル変数のように、そのプロセスで一回だけ
初期化され、あとは(プロセスが同じであれば)PHPスクリ
プトを何度実行してもクリアされない変数が使いたい。
イメージは、Javaのクラス変数、Rubyのグローバル変数。

ここまで書いて思ったのだが、PHPの「グローバル変数」とか
「スーパーグローバル変数」ってのは単にスコープだけの問題で
あって実体はローカル変数とかわんないのかな。
おいらが求めているのは実はstatic変数なのかな。
ちょっと実験してみる。
123106:03/09/03 09:56 ID:9+6DUNbu
>>117
すみません。>>106 でのエラーは下記の通りです。

Warning: fopen(simple.fdf): failed to open stream: No such file or directory in /home/****/public_html/pdf_test.php on line 9
Warning: fpassthru(): supplied argument is not a valid stream resource in /home/****/public_html/pdf_test.php on line 10
Warning: unlink(simple.fdf): No such file or directory in /home/****/public_html/pdf_test.php on line 11

9行目以降でファイルがないといっているのは、その前の段階でfdfファイルが作成されていないからです。
これ以外のエラーは出ていません。

よろしくお願いします。
124nobodyさん:03/09/03 10:09 ID:???
>>122
staticでも無理だろ。
.htaccessでSetEnvで設定して、$_ENVで取り出すのはどうよ。
借鯖と実験鯖ではDBに接続するDSNが違うので、
俺は.htaccessで環境変数としてDSNを設定している。
125nobodyさん:03/09/03 11:45 ID:???
>>123
そのまんま通したら作成されたが
パーミッションは問題ないか?
126106:03/09/03 12:00 ID:9+6DUNbu
>>125さん、テストしてくださってありがとうございます。
ファイルは全てクライアント側からFTPでアップロードしているので
パーミッションは特にいじっていませんでした。
他のPHPソースは問題なく動きます。

ためしに、元のPDFファイルを777に変更してみましたが結果は同じでした。
また
/usr/local/lib/に格納したlibfdftk.so や 
/usr/local/include/に格納したfdftk.h のファイルについても
何か権限の設定が必要でしょうか?
他に格納されている *.soや *.hと同じ権限になっていました。

fdftk.hは/usr/local/include/php/にも格納してみましたが、変わりませんでした。

106やここで記載した以外の設定は何もしていないのですが、
何か間違っていたり、足りなかったりしていませんでしょうか?

よろしくお願いします。
127nobodyさん:03/09/03 12:03 ID:???
元のPDFファイルって何?
ファイルを作成するには、そのファイルを置くディレクトリに
wがついて無いとできないよ。
もしsuEXECとか無いんだったらファイルを作成するディレクトリを
707にしてみたら?
(phpを置くディレクトリにオーナー以外書き込み権入れるのはよろしくないが)
128106:03/09/03 12:36 ID:???
>>127さん、ありがとうございます!!
元のPDFファイルというのは、FDF作成元のPDFファイルと言う意味で書きました。
判りにくくてすみません。

> ファイルを作成するには、そのファイルを置くディレクトリにwがついて無いとできないよ
wというのは、権限の事ですね。カレントディレクトリの中に作成するようにしていた
ので下位ディレクトリを作成して、権限を707にしてみました。

これでPDFにデータが入った形で表示できるようになりました。
感激です。(つД`)
今週冒頭からずうっと悩んでいたのです。
本当にありがとうございました!
129106:03/09/03 12:42 ID:???
ついでに >>106 に掲載したソースが違っていたようなので修正しました。
FDFの情報はあまり多くないので、今後のために整理して掲載しておきます。

■FDFのインストールと設定(詳細はhttp://php.planetmirror.com/manual/ja/ref.fdf.php
・fdftkv5.tar.gz をダウンロードし、libfdftk.so を/usr/local/lib/に 
 fdftk.h を/usr/local/include/に格納
・PHPに--with-fdftkをつけて再コンパイル。
・表示させるPDFを元にデータを格納するFDFファイル作成ディレクトリの権限に
 書き込み権限が必要。
<?php
$outfdf = fdf_create();
fdf_set_encoding($outfdf,"Shift-JIS");

# フィールドの値を設定する
$text = "abc";
$status = "aaa";
fdf_set_value($outfdf, "text", $text, 0);
fdf_set_value($outfdf, "status", $status, 0);

# /F キー(オリジナルPDFファイルとパス)の値を設定する
fdf_set_file($outfdf, "http://www.hogehoge.co.jp/~hoge/soc/simple.pdf");
fdf_save($outfdf, "soc/simple.fdf");
fdf_close($outfdf);

Header("Content-type: application/vnd.fdf");
$fp = fopen("soc/simple.fdf", "r");
fpassthru($fp);
unlink("soc/simple.fdf");
?>
130127:03/09/03 14:35 ID:???
そういや、cgiモードでも無い限りphpでsuEXECを気にする事は無かったな・・・
131nobodyさん:03/09/03 16:11 ID:???
phpでディレクトリ作ると所有者がapacheさんになるのは防げないのですが。
132nobodyさん:03/09/03 16:16 ID:???
か?
133nobodyさん:03/09/03 16:29 ID:cO5L0j/l
00.txt 01.txt 02.txt というファイルの中身を読みとり、
結合させたいと思うのですが、どうやればいいのでしょう?

00.txt
あいうえお
かきくけこ

01.txt
さしすせそ
なにぬねの

02.txt
はひふへほ

all.txt というファイルにして出力したい。
まみむめも
134nobodyさん:03/09/03 16:30 ID:???
もう半日中悩んでおります。
fgets()で読むとスンナリいくんですけど、
file()で読むと二重改行みたいな感じになってしまいます。
$arr = file('text.dat');
$fp = fopen('text.dat', 'w');
fputs($fp, implode('', $arr));
↑これをやると綺麗に並んでたtext.datが一行跳びに並びます。
なんででしょうか?
135nobodyさん:03/09/03 16:41 ID:???
>>134
読むときに改行の扱いをどうするかの違いだな

text.datはどうやって用意した?Winで作ってftpする場合、
バイナリモードだと、crとlfがつくのでそういう状態になる、こともある
136nobodyさん:03/09/03 16:48 ID:???
>>131-132
防げません。モジュールで動作しているものはユーザーの
切り替わるチャンスがありません。
別にディレクトリを作るプログラムを置き、それを
オーナー自分のままsビット立てておいてphpから
system等で実行すれば不可能ではないが・・・
137nobodyさん:03/09/03 16:49 ID:???
>>133
どうやって書くかによるけど、例えば fopen のモードで、'a' を指定すれば追加できます。
138nobodyさん:03/09/03 16:58 ID:???
>>136レスありがとう。
phpでディレクトリ作ってそのパーミッションが777でも、その中にphpでファイルアップロードできないんですけど。
所有者がapacheのディレクトリにapacheがそのディレクトリにファイルを移動させたりするのは無理なんですか?
そもそも、apacheサーバーのphpプログラムはapacheが動かしたことになってるんですか?
そうだったらアップロードできるような・・・。
ん〜?
139133:03/09/03 17:11 ID:cO5L0j/l
しまった、書き方間違えた┐(´д`)┌
00.txt
あいうえお
かきくけこ

01.txt
さしすせそ
なにぬねの

02.txt
はひふへほ
まみむめも

all.txt というファイルにして出力したい。

でした。

>>137
fopenのaを指定するとポインタを最後に持ってこれるというのはわかるのですが
00.txtの内容を変数(配列?)に入れて、っていうのが分からないのです。
一行ずつなら読み込めるのですが…。
140nobodyさん:03/09/03 17:12 ID:???
>>138
そもそも 777 で制限されるものは無いはずだし
できるはずだけどな。ずっとphpで通してるなら700でもいいくらい
141134:03/09/03 17:18 ID:???
>>135
全てwinのローカル環境でやっておりました。
cr+lfで作成したtext.datをこの環境でやるとcrになって一行跳びに表示

unixサーバへftpして実行してみました。
何の問題もなくスンナリ綺麗に並びました。
うぅぅ・・・
何でこうなるのかよくわかってませんががありがとうございました。
142nobodyさん:03/09/03 17:20 ID:???
>>139
1行ずつ読んでもいいし、fileでもいいけど、
行単位で扱う必要がないのであれば
filesize で大きさを調べて、fread で読み込めばいいんでないか
そのままfwriteに持ってけるし
143134:03/09/03 17:35 ID:???
>>139
file()だったら↓こんな感じかな(file()はメモリ喰うから必要なければ・・・)
$arr00 = file('00.txt');
$arr01 = file('01.txt');
$arrall = array_merge($arr00, $arr01);
$fp = fopen('text.dat', 'w');
fputs($fp, implode('', $arrall));
144133 = 139:03/09/03 17:51 ID:???
>>142
ありがとです!出来ました。

>>143
file()の方でも出来るんですね。メモリ食うらしいので、実験のみにしておきます(w
145138:03/09/03 18:13 ID:???
プログラム作ってみました。
パーミッションの関係ないwin鯖(自鯖)ならちゃんと動きましたが。
linux鯖(xrea)ではディレクトリ(パーミッション777)が生成されるだけでアップロードは無理でした。
コピーとムーブで両方で試してみましたがどちらも失敗しました。
これを可能にする方法はないんですか?
そうだと自動生成していくプログラムは作れなくなってしまいますね・・・。
長文失礼しました。
<?php
if ( is_uploaded_file ( $_FILES['file']['tmp_name'] ) ) {
  $tmp = $_FILES['file']['tmp_name'];
  $name = $_FILES['file']['name'];
  $dir = "a";
  $mask = umask();
  mkdir ( $dir, 0777 );
  umask($mask);
  copy ( $tmp, $dir . "/copy_" . $name );
  move_uploaded_file ( $tmp, $dir . "/move_" . $name );
  if ( !is_dir ( $dir ) ) {
    echo "ディレクトリ生成に失敗しています。";
  } else if ( !is_file ( $dir . "/copy_" . $name ) ) {
    echo "ファイルアップロード(copy)に失敗しています。";
  } else if ( !is_file ( $dir . "/move_" . $name ) ) {
    echo "ファイルアップロード(move)に失敗しています。";
  } else {
    echo "無問題";
  }
}
?>
<form method="POST" enctype="multipart/form-data">
<input name="file" type="file">
<input type="submit">
</form>
146nobodyさん:03/09/03 18:21 ID:GgqmqZ94
>>145
safe modeのせいだと思う。
safe modeがonだとスクリプトの所有者とディレクトリの所有者が同じでないとだめじゃなかったかな。
147あぼーん:あぼーん
あぼーん
148nobodyさん:03/09/03 18:26 ID:???
つーか、ディレクトリを作るにもその場所のパーミッションが
きいてくるんだけど、777 で作れたの?
149138:03/09/03 18:35 ID:???
すみません、説明がたりませんでした。
その場所のパーミッションも777です。
150nobodyさん:03/09/03 18:40 ID:???
Solaris9、Apache2.0.47、php4.3.2 で
707 のディレクトリに、>>145のphp置いたら動作した
オーナーがnobody になるんであとで消すのはやっかいだなw
151nobodyさん:03/09/03 18:42 ID:???
すみません間違いがありました。
6行目を「$mask = umask();」から「$mask = umask(0);」に変えてください。
152150:03/09/03 18:45 ID:???
>>151
それはかえた。
まあ最初そのまま動かしたら、ディレクトリが 755 になるだけで
動作に支障はなかったけど。
コマンドからファイル消せなかったけどね
153nobodyさん:03/09/03 18:54 ID:???
>>146
サーバーが無料レンタルサーバーでphp.iniをいじれないのからsafe modeは変えられないんです。
>>152
>>150で言ってた通りにやってみましたが、無理でした。
こちらの環境(xrea)だとプログラムの置かれたディレクトリのパーミッションの最後の数字が7じゃないと、ディレクトリ生成もアップロードもできませんでした。

xreaでは無理なのでしょうか・・・。
154150:03/09/03 19:00 ID:???
safe mode( safe_mode = On 以外デフォルトのまま) にしたら
ディレクトリも作れなかったよ
事前に自分で a を作成して707 にしたら無問題でした
155150:03/09/03 19:08 ID:???
作成するディレクトリの、親ディレクトリとphpファイルの
両方が実行ユーザーと同じだとsafe mode でも成功しました
suEXEC環境でなければ、cgi使って事前に1つディレクトリを
掘っておけば何とかなりそうではあるが
156nobodyさん:03/09/03 19:15 ID:???
ディレクトリのパーミッションをxx7 にする
phpでその下にディレクトリを作成
phpを使ってphpファイルをアップロードする

その最後に送ったphpファイルならphpで作ったディレクトリの下に
ディレクトリ作れそうだな。safe mode をどこまで設定してるかにもよるかな?
157nobodyさん:03/09/03 19:16 ID:???
XREAの掲示板にも同じような質問があるな

●PHPでサイト上から画像をアップロードしたい
http://sb.xrea.com/showthread.php?s=&threadid=4957
●mkdir
http://sb.xrea.com/showthread.php?s=eaff18ea6d3a24d1529170a4995240a0&threadid=5997
158nobodyさん:03/09/03 19:37 ID:???
ファイルの所有者を変更するchown()って関数があるけどroot権限がないと
変更できないっぽいんでmkdirの時点でもうアウトなのかも・・
>>150さんの言うようにCGIで作るか、予め作っておくぐらいしか方法がないかな?
159156=150:03/09/03 19:44 ID:???
んー、phpでphpファイルを送ればそのphpファイルのオーナーはapacheと
同じになるはずなんで、それを使えばいけるんでないか?と思ってるんだけど
160134:03/09/03 20:48 ID:???
自己レス
fopenの時、'w'ではなく'wb'にするとwin環境でもちゃんと並んだ。
知らなかった・・・。そんなこんなで○一日つぶれちゃった。
161138:03/09/03 22:04 ID:???
chown試してみましたけどやっぱり動きませんでした。
cgiつかうのは・・・できるだけphpだけでやっていきたいですね。
phpプログラムでphpプログラム生成して所有者を同じにするんんですよね。
ん〜移動もコピーも受け付けないとなるとどうすればいいんでしょう。
fopenのファイルが無かったらファイルを作ってくれるやつでいけるかな。
また、試してみますね。
162nobodyさん:03/09/03 22:47 ID:???
>>145のやつだけでいけますって
実行するディレクトリをA、145のphoを145.phpとすると、

145.phpはaというディレクトリ作成後ファイルのコピー先を
作ったディレクトリの上(A)にしておく
Aを707にして145.phpを転送し、
145.phpのディレクトリ作成先をaの下にした145-2.phpを作り
サーバの145.phpを使って送信する
あとはAを701に戻し145-2.phpを実行するだけ

うちの環境ではできたけど、他の環境で実行できるかはやってみないとわからん
163599:03/09/03 23:55 ID:Lk+ATmhr
TurboLinux7でphpを使うにゃどーしたらいいんすかねえ。
APATCHは動いてます。
164nobodyさん:03/09/03 23:56 ID:???
>>163
インストールすればいい
165nobodyさん:03/09/04 00:19 ID:???
PHP + mysqlです.というかmysqlです.
最新のレコードX件を残して、それ以外を全部deleteしたいのです。
一応ぐぐってみたのですが、古いものX件を削除するというのはあっても
私が望むようなものは見つかりませんでした。

1.レコードの数が何個あるか取ってくる
2.古い順にソートしてlimit 全体の数-Xで削除

というのは思いつきますが、これではどう考えても効率が悪そうなわけで・・・。
あとdeleteとorder byとlimitってmysqlで併用できますか?
delete from hogehoge where name = '俺' order by カキコ時間 limit 10;
とやってもエラー吐くんですが何か間違えてますか?

どなたか教えてください。
166nobodyさん:03/09/04 00:24 ID:???
DELETEにORDER BY や LIMITは意味を持ちません
もうちょっと別の方法で絞り込まないと無理です
167nobodyさん:03/09/04 00:26 ID:???
>エラー吐くんですが
なぜ教えて君はエラーコピペも出来ないのか、小一時間考えたい…
168nobodyさん:03/09/04 00:30 ID:???
>>166
嘘つけ
169nobodyさん:03/09/04 00:33 ID:???
“古いものX件を削除”←これのやりかたなんてあった?
これができれば最新のX件を残して削除もできるはずだが

おれには簡単にやる方法は思いつかないなあ(何通りかは思いつくけど、簡単ではない)
170599:03/09/04 00:34 ID:l9Hbw8Bd
>164
嘘つけ
171nobodyさん:03/09/04 00:34 ID:???
>>167
そうか、スマンカッタ。
でも
you have an error in your SQL syntax near 'order by カキコ時間 limi' at line 1
としか言ってこないし。こんなんでもいいんかい?
172nobodyさん:03/09/04 00:35 ID:???
>>169
ttp://www.rfs.co.jp/sitebuilder/sql/04/06.html
ここに載ってた。
とりあえず
delete from hogehoge where name = '俺' limit 10;
ができることは確認できたけど、order by混ぜると駄目なのです。
173nobodyさん:03/09/04 00:36 ID:???
>>168
MySQL のDELETE構文のLIMITは、分割削除のためにあるので
SELECTで使うLIMITと同じように考えてるとやけどするよ
174nobodyさん:03/09/04 00:41 ID:???
>>172
手入力じゃなくてphpで消すんだよね?
普通に考えたら、ソートして最新から10件取り出し、
10件目の書き込み時刻より古いものをDELETEってなると思う
175nobodyさん:03/09/04 00:42 ID:???
10件じゃねーや、X件か
176nobodyさん:03/09/04 00:53 ID:???
>>171
limi じゃそりゃsyntax errorだわな
177nobodyさん:03/09/04 00:54 ID:???
>>172
もしそれができるなら、ORDER BY xxx DESC ってやれば順番が逆になるので使える
しかしできるのかこれ
178nobodyさん:03/09/04 00:56 ID:???
>>177
やったことねーなー。なんかうそ臭いな
179nobodyさん:03/09/04 01:05 ID:???
調べてみたが、今まで出てきたやつはバージョン4以上で追加らしい
MySQLのバージョンは?
180nobodyさん:03/09/04 01:11 ID:???
>>174
なるほど・・・。
どうしても無理なら1時間以上前のレコードは問答無用で削除でもいいんですけどね_| ̄|○

>>176
typoです・・・

>>179
3.23でした。調べたら4がもう出てるんですね。
安定しているようならインスコしてさっきの使ってみます。
181nobodyさん:03/09/04 01:46 ID:wD/9gEl4
大きな?PHPスクリプトのソースをじっくり読んでみたいと
思ってるんですが、オススメのものありますか?
PHPBB,XOOPS,e-XOOPSこの中から選ぶとしたらどれが
勉強に最適ですかね?
182nobodyさん:03/09/04 01:52 ID:???
解決しました。4.0.14にバージョンアップしたら
delete from hogehoge where name = '俺' order by カキコ時間 limit 10;
が効きました。
とりあえずありがとうございます。

で、本題?なのですが、新しいのを10個残してそれ以外を全部削除するにはどうすればよいのでしょうか?
183nobodyさん:03/09/04 02:24 ID:???
>>182
カキコする前にもう少し考えてみたら?もう十分情報は集まったでしょ?
184nobodyさん:03/09/04 04:35 ID:tn8/En5p
$con = pg_connect("dbname=hoge") or die ("接続失敗");
$sql = "INSERT INTO diary VALUES('" . $daydate . "','" . $month_num . "','" . $today_day . "','" . $_POST['kind'] . "','" . $_POST['message'] . "')"; //固有ナンバー,月,月日,ジャンル,内容
@$result = pg_query($sql) or die ("書き込み失敗");
pg_free_result($result);
pg_close();

こんな感じで接続してみたんですが、どうしても書き込み失敗してしまいます。
構文がどこか間違っているのでしょうか?
185184:03/09/04 04:45 ID:tn8/En5p
DBがEUC_JPなんですが、EUC_JPのコードで送ってないから書き込めないのかと
思い、色々と検索したんですが、ブラウザのフォーム上からEUC_JPのコードで
送るにはどうすればいいのでしょうか?
とりあえず、フォームが表示されているページには
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=EUC_JP">
と入れたのですが、効果はなかったです。
186184:03/09/04 04:59 ID:???
ごめんなさい。スクリプト自体をEUCで書いていませんでした(´・ω・`)ショボーン
187nobodyさん:03/09/04 05:13 ID:???
perlの~sを模したいのですが

$str = "123421";

$pat[0] = "/12/";
$rep[0] = "21";

$pat[1] = "/21/";
$rep[1] = "44";

#213444 になってほしい

echo preg_replace($pat,$rep,$str);
#443444

になってしまい、置換した値がさらに置換されてしまってこまっています。
何かいい解決法ないですか・・・?
188nobodyさん:03/09/04 05:23 ID:kT0o4tyK
>>184
set names 'SJIS' を送れば解決 フォームからSJISで送ってもOK
ただしエンジンに微量の負荷はかかる

189nobodyさん:03/09/04 10:34 ID:???
>>124
文字列とか数値じゃなくて、2次元配列のような複雑なデータを
使いたいんだ。だから環境変数じゃだめじゃないかな。

例えばエラーメッセージを外部ファイルに書いておき、PHPスク
リプトから読み込んで配列にしまっておくとしよう。
こんな作業をPHPスクリプトを実行するたびにやっていては実行
速度が大幅に低下しちまう。
そこで、ファイルを読み込んで配列を作っちまったら、その
データを(そのプロセスから実行される)PHPスクリプト全体で
共有したいのよ。
Javaならクラス変数、Rubyならグローバル変数に設定すればい
いんだけど、PHPではそういう方法がないようだ。
190nobodyさん:03/09/04 10:41 ID:???
phpは他のライブラリの例にならって
ソース書き換えてコンパイルしてしまえw
191nobodyさん:03/09/04 11:45 ID:???
>189

決定的ではないけど、とりあえず1次元程度であれば
定数名にエラーコードを含めたりすることで

http://www.php.net/manual/ja/language.constants.php

にあるように constant() 関数を使うことで動的にアクセス
することは出来るようだね。
192abaqusマン:03/09/04 11:49 ID:???
>>181
XOOPsはやめ手おいた方がいいよ。
193nobodyさん:03/09/04 12:24 ID:???
osCommerce はどうよ?
194nobodyさん:03/09/04 18:00 ID:???
>>189

$error = array( ... );

function test()
{
    print_r( $GLOBALS['error'] );
}

のような感じ?

$error を別ファイルで定義して、require / include して、
どこかの関数から呼び出すようなことも可能だが。
195nobodyさん:03/09/04 18:12 ID:???
function()とかを使うと、grobalを使わないと、外部の変数を参照できませんよね。
外部変数がたくさんあっても、いちいちgrobalを使わないといけないのですか?
あと、defineのメリットってなんでしょう?変数で事足りる気がするのですが。
196nobodyさん:03/09/04 18:41 ID:???
だから外部変数をたくさん必要とするようなプログラム書くなっつーの
197nobodyさん:03/09/04 18:52 ID:???
>>195
global使わんでも,$GLOBAL['変数名']でアクセスすれば
どっからでも使える。
ローカル変数とグローバル変数を一目で区別出来るように
globalは使わない。
てか、グローバル変数を参照するような関数書いてンじゃねーよ。

定数は、再定義が出来ないので、コーディング上の
ミスを防げる。
(定数として使いたい変数に間違って代入したりとか)

まぁ、bugなしのコードが書けるってんだったら、
あんたには不要かもな。
198nobodyさん:03/09/04 18:59 ID:???
つかglobal使いすぎるとわけわかんなくなるし。
perlに慣れた人には違和感感じるかもしれないけど、変数はきっちり区切っておかないと後で大変なことになる。
3年後にそのプログラムを見て、この変数がどこでどう使われていたか覚えている自信があるか?
漏れは$GLOBALにしてもバージョン情報やプログラム名、ファイルのパスぐらいにしか使わない。
199nobodyさん:03/09/04 19:06 ID:???
$GLOBALってどうやって定義するのん?
200nobodyさん:03/09/04 19:15 ID:???
singletonとかのクラスインスタンス作るときにGLOBAL使わなきゃいけないのが煩雑だ。
なんとかならんのかのう。
201nobodyさん:03/09/04 20:05 ID:???
$GLOBALS ではないのか・・・。

>>200
static では駄目なのか?
202201:03/09/04 20:14 ID:???
>>200

singleton を使うときは参照を返さないとうまくいかないので注意。

詳しくはここ参照。
ttp://www.pat.hi-ho.ne.jp/dimension/sample/sample_class_dp_singleton.shtml
203nobodyさん:03/09/04 20:56 ID:???
スクリプトを1秒に何度も起動されない方法で簡単なものはないでしょうか?
今は、起動のたびにホストと時間を記録するファイルを読んだり書いたりしてます。
もっと良い方法があったら教えてください。
204nobodyさん:03/09/04 21:09 ID:???
>>203
途中でforを10万回ぐらい繰り返す
205nobodyさん:03/09/04 21:35 ID:???
そりゃ本末転倒だべさ
206nobodyさん:03/09/04 22:09 ID:???
$t = floor((microtime()+500)/1000)*1000;
if($t > microtime())
exit;

ってのはどうよ?
207nobodyさん:03/09/04 22:24 ID:???
おいおい、質問者の目的から離れてないか?
208nobodyさん:03/09/04 22:52 ID:???
>>194
ちょっと違うかな。
その例でいえば、配列$errorの生成には結構なコストがかかるんだけど
でも一度生成してしまえば内容を変更することがない、という場面を
想定している。

PHPはCGIではないから、同じプロセスで実行されるPHPスクリプト間で
その配列$errorを共有できるんじゃないかなー、その方法を教えてくれ、
という質問。
今はその方法がわからんから、PHPスクリプトが実行されるたびにその
配列を生成しなければならず、効率が悪いんだ。
(配列$errorを生成するコードを別ファイルにしてrequire_onceとかで
読み込むようにしても、毎回生成される点はかわんないよね?)

Javaならクラス変数に設定すればいいし、Rubyならグローバル変数にすれば
そういうことができるんだけど。
(Rubyでいう「グローバル変数」はPHPと違って、同じプロセスであれば
スクリプト間で共有できるので便利。それが問題になることもあるけど。)
209203:03/09/04 23:48 ID:???
>>206
$tが 0 になって全部止まるんですが。

質問が悪かったらすいません。
プログラムの中にaaa.php?bbb=ccc&ddd=eeeというリンクが何十個かあります。
普通の人は、一つずつリンクを押すのですが、たまにページ内のリンクを一気に
押す奴がいるんです。1秒に10リンクぐらい。それを数十分間やられてアクセス
できなくなるんです。
http://news2.2ch.net/newsplus/subback.html ここにあるリンクを全部一度に
押されるみたいな状態です。
210nobodyさん:03/09/05 00:04 ID:???
>>209
F5アタックは諦めろ
211nobodyさん:03/09/05 00:25 ID:???
>>209
そんな奴はアク金にしてまえ
212203:03/09/05 01:35 ID:???
>>211
早く気付いたらそうしてますけど、毎度ftpもできない高負荷になって
から気付くので無理なんですよ。それにいつも別のプロバイダーです。
色々な板を見ましたけど、自動巡回ソフトだと思います。
ip見たらネイバーのロボットもきてました。

今はこんなので、手動でブラウザいくつも開いてアクセスすると
止まりますけどツールで一度にやられた時がどうなるのか
わからなくて。flockも違うような。

$log="time.txt";
$ip = $REMOTE_ADDR;
$time = time();
$fp = fopen($log, 'r+');
flock($fp, LOCK_EX);
while (!feof($fp)) {
$buf = fgets($fp, 32);
list($ad,$t,) = explode(',', $buf);
if ($ip == $ad && $time - $t < 3) exit;
}
$new = "$ip,$time";
fputs($fp,$new);
flock($fp, LOCK_UN);
fclose($fp);
213nobodyさん:03/09/05 01:53 ID:???
1つ止めたって次から次へとリクエスト来るんだから意味無いんじゃないか?
それより各ページに画像兼用とかCGI呼び出すようにしといて
同一IPが一定時間に一定回数アクセスしてきたら.htaccessのdenyにいれちまうのはどう?
どっかでBerryよけの手段として書いてあった方法
214203:03/09/05 02:29 ID:???
>>213
> 1つ止めたって次から次へとリクエスト来るんだから意味無いんじゃないか?

SQL使ってて負荷高いんです。だからSQL呼ばれる前にスクリプトの先頭で
2回目以降のリクエストが止まれば最後まで動かされるよりは、よいかと思いまして。


> それより各ページに画像兼用とかCGI呼び出すようにしといて
> 同一IPが一定時間に一定回数アクセスしてきたら.htaccessのdenyにいれちまうのはどう?
> どっかでBerryよけの手段として書いてあった方法

それいい!と思って探ました。
http://pc2.2ch.net/mysv/kako/1044/10440/1044092036.htmlですか
難しそう。
215nobodyさん:03/09/05 10:43 ID:???
.htaccess は後始末も必要だけどな
セマフォ、、、つかflockでもいいんでない?
$ip の名前でファイル作ってロックすれば、同一ipの同時アクセスは待たされる
ロックする直前に対象ファイルがあったら問答無用でsleepするとか
216nobodyさん:03/09/05 17:36 ID:lSHCmSpH
今回PHP4.3.2から4.3.3にバージョンを上げたのですが
文字化けするようになってしまいました。

具体的には
Formから入力された項目をmb_send_mailでメール送信するプログラムなのですが
届いたメールが文字化けするようになってしまいました。


インストール時のconfigureオプションはMySQLのオプションを追加しただけで
前バージョンのインストール時と変わらないです。


./configure --enable-mbstring --enable-mbregex --with-gd
--with-apxs=/usr/local/apache/bin/apxs --enable-zend-multibyte --with-zlib-dir=/usr

環境
TurboLinux 6.5Server + Apache1.3.8 + MySQL
217nobodyさん:03/09/05 18:29 ID:???
>>216
php.ini の mb_ 関連の設定の影響が変わっているハズ。 PHP-users に流れていたかもしれん。
明示的に指定しているかどうかを中心にちょっと試行錯誤してみそ。
218217:03/09/05 18:30 ID:???
PHP-users じゃなくて /.J だったかも。色々調べてみれ。
219nobodyさん:03/09/05 18:41 ID:???
Windows でディレクトリ内をパースしてファイル名を取得し、is_dir で判定を行うと失敗するのでつが、、
何が間違っているのか、教えて (´・ω・`) 欲すい
Windows XP, PHP 4.3.2(cli)
再現コード
--
$dir_handle = opendir($dir_name);
while ($obj = readdir($dir_handle))
{
if (is_dir($obj))
{
print "dir: $obj \n";
}
else
{
print "others: $obj \n";
}
}
closedir($dir_handle);
--

結果
--
dir: .
dir: ..
others: class
others: crawl.html
others: img
others: index.html
others: info.php
cf) 実際は class, img はディレクトリ
220nobodyさん:03/09/05 18:52 ID:???
>>216
php.ini で
mbstring.language = Japanese
これを入れたら解決した。同様の報告も数件。
221nobodyさん:03/09/05 18:53 ID:???
>>219
is_dir()の引数に調べてるディレクトリのパスも必要でないんかい?
222219:03/09/05 18:55 ID:???
スマソ、、スクリプトとディレクトリの相対の位置関係を忘れてた、、
is_dir の引数は $obj (パースしたディレクトリの中身) じゃなくて ディレクトリへのパス + $obj

つー事で解決しますた。スレ汚しスマソ。
223nobodyさん:03/09/05 18:56 ID:???
>>221
あう、222 入れてから気が付きますた。回答入れてくれてありがとう。
224nobodyさん:03/09/05 21:12 ID:???
Aというフォルダ内にあるファイルの数を数えて、その数字を表示したい。
ただし、ファイル名の頭に0が付いているファイルだけを集計したい。
こういう場合、どうすればいい?
225nobodyさん:03/09/05 21:16 ID:RcJuiEiX
初心者ですみません。
今日PHPインストールしたのですが
日本語が表示できません。
httpdはApacheです。
OSはwindows2000です。
ご教授お願いします。
226 :03/09/05 21:21 ID:???
>224
フォルダオープンしてwhileでエントリを取得しつつ、
正規表現でで^0.+にマッチしてファイルなら集計用の変数をインクリメントすればいいのでは。

>日本語が表示できません。
アホか。
227nobodyさん:03/09/05 21:22 ID:oaz00CyG
phpのスクリプトでページ内にどのページが人気あるかみたいのを表示できる
スクリプトない?リアルタイムで。
228親切な人:03/09/05 21:23 ID:???
>>225
とりあえず
echo "テスト";
とやってみましょう
229nobodyさん:03/09/05 21:25 ID:???
>>225
本でもサイトでも頑張って調べて、、もしくは http://www.hyuki.com/writing/techask.html 参照しる。

「インターネットにつながりません。助けてください。」と同じ質問レベル。FAQ でもなければ回答なんて無理すぎ。
230nobodyさん:03/09/05 21:39 ID:RcJuiEiX
EUCで保存してないだけでした。
228 229さんありがとうでした!
231nobodyさん:03/09/05 21:46 ID:???
>>208
興味があったので少し調べてみたけど、確かに PHP では無理のような気がする。

include するよりも低いコストで処理できる可能性がありそうだったのは、
セマフォと共有メモリを使うくらいかな。

でも、配列を生成するコストを気にするほどなのであれば、APC などを使って、
スクリプトキャッシュを有効にするとか、他の方法を使って効率を上げた方が
いいと思う。
232224:03/09/05 22:00 ID:???
>>226
ありがとう!
やってみます。
233216:03/09/05 22:59 ID:xPvsDOuD
>>217,220
ありがとう。週明けに作業に入ってみます。
234nobodyさん:03/09/06 05:56 ID:???
Cookieが正しく取得できません。
エンコードもデコードも正常にできているのですが、
いざグローバル変数から取り出そうとすると、
どんな文字(MB文字は含まず)も「i」になってしまいます。
非常に低レベルな質問ですが、ご教授のほどよろしくお願いいたします。

<?php
$hogeuser = $HTTP_COOKIE_VARS["hoge"]; //ヘッダ部
if($hogeuser != ""){
setcookie("hoge", "id=$hogeuser[id]&pass=$hogeuser[pass]", time() + 30 * 24 * 3600);
}
$cookie = $HTTP_POST_VARS["cookie"]; //ログインする時に「自動ログイン」にチェックを入れたら
if($cookie != ""){
$id = $HTTP_POST_VARS["id"];
$pass = $HTTP_POST_VARS["pass"];
setcookie("hoge", "id=$id&pass=$pass", time() + 30 * 24 * 3600);
}
?>
<?php
if($hogeuser != ""){ //読み込み部
$id = $hogeuser[id];
$pass = $hogeuser[pass];
}
if($id != "" && $pass != ""){
print "ようこそ!" . $id . "さん";
}
?>
235nobodyさん:03/09/06 10:28 ID:/pMlcvtg
サーバをapache1.3.28のバージョンでphpを5.0.0b1を使って作業をしてるのですが
HPを見て最初のブラウザー表示をする作業までやってるのですが「ページが表示できません」としかでません
apacheとphpのバージョンについては特に、これとこれじゃないと動かないという事はありませんよね?
具体的な質問はもう少し自分でやって出来なかったらしたいと思いますので
この質問だけご回答お願いします
236nobodyさん:03/09/06 10:38 ID:???
>>235
PHP以前に普通のhtmlは見れてるの。
237nobodyさん:03/09/06 10:42 ID:/pMlcvtg
>>236
それも作成しないといけないのでしょうか?
僕はそれを作成していないのですが、それが原因という可能性も有りだとしたら作らないと駄目ですね?
238nobodyさん:03/09/06 10:43 ID:???
>>234
>$hogeuser = $HTTP_COOKIE_VARS["hoge"];
最初がおかしい。
$hogeuserには"id=xxxxx&pass=xxxxx"が入るだけで連想配列にはならない。
連想配列にしたいなら、
$tmp1=explode("&",$HTTP_COOKIE_VARS["hoge"]);
foreach($tmp1 as $tmp2){
list($tmp3,$tmp4)=explode("=",$tmp2);
$hogeuser[$tmp3]=$tmp4;
}
とかね。
いつまでもcookieが変わらないのは、cookieがあるときにその値を再びcookieに設定してしまうからかと。
239nobodyさん:03/09/06 10:53 ID:???
>>237
せめて
あなたの予想に反して、このページが見えているでしょうか?
ぐらいは表示させろ。
240nobodyさん:03/09/06 10:56 ID:/pMlcvtg
>>239
すいません、前は表示出来ていたのですが
apache phpをいじってしまってそれを表示できなくなってしまったのです
僕が思ってる原因は、モジュール読み込みの作業で追加モジュールの名前がないせいでエラーが起きてると思うのですが
mod4_php.cが無いんですよね、普通にphp解凍したらあるものですよね?
241nobodyさん:03/09/06 11:04 ID:???
>>240
apacheのエラーログ見れ。
> apache1.3.28のバージョンでphpを5.0.0b1
問題無いと思うよ。
242nobodyさん:03/09/06 12:17 ID:???
>>231
なるほど、PHPの言語仕様じゃ無理だから、言語仕様を越えたところで
別の方法を使うということか。なるほどね。
しかし残念だな、PHP単体ではできないのが。
機能としてはわりとあってもよさそうだと思うんだけど。要求がないのかな?
243nobodyさん:03/09/06 12:54 ID:/pMlcvtg
>>241
エラーの内容としては
Syntax error on line 240 of c:/program files/apache group/apache/conf/httpd.conf
:
Cannot add module via name 'mod_php4.c': not in list of loade modules
なんです。
これは、mod_php4.cが見つからないと言うことは分かるのですが、mod_php4が何処を探しても無いのでどうしようか
考えてるんです。
それとも他に間違いがあるのでしょうか?
244nobodyさん:03/09/06 14:03 ID:???
>>243
「mod_php5.c」に変えれ。

正直、開発版であるPHP5に手を出す人間が、マニュアルオンリー
(最近はマニュアルですら怪しいのだが)で、その程度の検索能力なのはどうかと思うが。
Dev-MLの過去ログ探すのが一番だけど、Googleを日本語に限定しても見つかる程度のことよ、それ。
多分このまま色々関数使おうとすると他にも?というところが出てくるので、
今のうちに検索能力磨いといてください。
245nobodyさん:03/09/06 14:22 ID:/pMlcvtg
>>244
それは、前に僕もやりましたが変わらずに、「Cannot add module via name 'mod_php5.c': not in list of loade modules」
となるんです。
説明を見て、ファイルやフォルダは入れる所に入れてやってみたのですが、いっこうに変わりません。
apacheを再起動させる際に、mod_php5.cというモジュールは無いという事を言われるわけですが何故なのでしょう。
その言葉通りに言うと”無い”となるわけですが。
243で言ったエラーで言うと全部を訳すと

240行目の作業をやったけど、エラー発生したよ
mod_php4.cという名前の物が無いから追加出来ないよ。
という意味合いになるのでしょうかね?
246nobodyさん:03/09/06 14:26 ID:???
LoadModule php5_module libexec/httpd/libphp5.so
とかとちがうん?
こっちよりアパッチスレで聞いた方がいいような。
そんでたらい回しになるとか。
247nobodyさん:03/09/06 14:31 ID:/pMlcvtg
そうですか、こっちで聞くよりもアパッチスレの方がもしかしたら僕と同じ症状の人がいるかもしれませんね。
いえ、エラーは最初に述べたエラーでした。
最初の作業が間違っていて凄く見つけにくいエラーとかなのかもしれませんね。
質問に乗ってくれてありがとうございました
248nobodyさん:03/09/06 14:52 ID:???
>>247
httpd.confは、最低2行追加が必要だが、
1ヶ所しかしてないっしょ。
マニュアルのインストールの項を一言一句
違えず写経してみな。
249nobodyさん:03/09/06 15:10 ID:???
>>247
まだいるかな?
モジュール版PHPの場合、libphp5.soを読み込めなかったときに
"mod_php5.cが云々"のエラーが出るのでつよ。
247さんも言ってくれてるけどAddTypeも忘れずにね。
あとマニュアルを音読。黙読じゃなくて、声に出して嫁。
250234:03/09/06 16:01 ID:???
>>238
レスありがとうございます。
無事解決いたしました。

…それにしても、私の持っている3冊のリファレンス本には、
$HTTP_COOKIE_VARSで連想配列に格納されると書かれていたのには困ったもんです。
それとも、私の読解力不足かな?

ともあれ、ご親切にありがとうございました。
251nobodyさん:03/09/06 16:08 ID:lKlaMXu1
現在PHP4.3.2を使用しているのですが、
ページを自動転送する際に
header() 関数を利用しているのですが、
どうもapache(ver1.3.27)にどこから転送されてきたのかのログの履歴が残らないみたいです。
なんとか転送元の履歴を残す方法ってないでしょうか?
252nobodyさん:03/09/06 16:33 ID:???
>>251
apacheスレ池
253nobodyさん:03/09/06 16:49 ID:???
>>250
setcookie()する時にクッキー名を配列で書けば、受信した時に配列にセットされるよ。
例のやつだと、
setcookie("hoge[id]",〜);
setcookie("hoge[pass]",〜);
って感じ。

php.netのマニュアルのクッキーの章のファイル名が、
features.Crackers.php になっとる(w 誰かのいたずらだろうか?
254nobodyさん:03/09/06 18:49 ID:VJAICQgv
MySQLの日付型「2003-09-06 18:50:00」
というのを03/09/06 18:50とか他の形とかに変換したいので
sprintfについて調べていますが、よく分かりません。
どういう形で投げ込んだらいいでしょうか?
255nobodyさん:03/09/06 19:08 ID:???
簡単なPHP配布してるとこないですか?
一度じっくり理解できる範囲で中身を見てみたいので
256254:03/09/06 19:20 ID:???
頑張って自己解決しました。sscanf()がいいようですね。
257nobodyさん:03/09/06 19:36 ID:/+pHJ5vA
>>254
そりゃ、sscanf()でもいいけど、
別解としては
・strtotime()で Unixタイムスタンプを取得して、date()とか
・SQL的にほしい形を指定しておく( SELECT DATE_FORMAT(date, '%y/%m/%d %H:%i:%S') )とか

258nobodyさん:03/09/06 20:08 ID:???
>>255
入門書買った方が良いよ。
俺も少し前まで君みたいな存在でネット中探し回っていくらか勉強できたが、
入門書を買ったら上達速度がかなりアップした。

入門は本で、その後のステップアップやリファレンス的なものはネットが重宝するけどね。
259250:03/09/06 20:18 ID:???
>>253
へぇ〜(16へぇ)なるほど。
そういう手もあるんですね。
勉強になりました、ありがとうございます。
260nobodyさん:03/09/06 23:07 ID:V2JcpQO6
phpのバージョンを、4.2.?(失念)から、4.3.0にし、
$HTTP_GET_VARS⇒$_GET、
$HTTP_POST_VARS⇒$_POST、
$HTTP_SERVER_VARS⇒$_SERVER に置換しました。

すると、あるスクリプトが、
(閲覧環境はWindowsXPです)
IE6.0だと、「サーバーが見つからないか、DNS エラーです。」
ネスケ7.0だと「このドキュメントには、データが含まれていません。」
Opera7.11 だと、そのスクリプトへのリンクをクリックしても、「接続中」のまま、という状態です。

問題がどこにあるのか分からず、問題切り分けをしようとしているのですが、

●<? phpinfo() ;?>とだけ書いた.php拡張子のファイルでは、正常に情報が表示されますので、phpは動いてる。
●<? phpino() ;?>とだけ書いた.php拡張子のファイルは、
 Fatal error: Call to undefined function: phpino() in /(中略)/test.php on line 1
 と、エラーを表示してくれます。
(php.ini では、
error_reporting = E_ALL
display_errors = On
にしてますので)
●でも、問題のスクリプトは、前述のように、phpからはエラーが表示されません。

こういう場合、いったい、どこら辺から疑っていけばいいのでしょうか?

なお、問題のスクリプトは、postgresに接続しています。
その辺も含めて一通りスクリプトを見直しているのですが、手がかりが見つからず・・・

どなたかヒントやポインタだけでもいいので、教えていただければ幸いです。
261258:03/09/06 23:11 ID:V2JcpQO6
なお、共有サーバですが、VPSとかいう仕組みで、httpd.confなどをいじれる、仮想的なルート権限を持っています。
というか、Rapidsite社のVPSプランというやつです⇒ http://vps.rapidsite.jp/
サーバのOSは、FreeBSD 4.4です。
262nobodyさん:03/09/06 23:17 ID:???
>>260
エラーは無いけど、出力がない状態かな?
263260:03/09/06 23:25 ID:V2JcpQO6
(OpenJane上で番号がずれてしまってまして、>>261の名前欄に258と書いてしまいましたが、
>>260 = >>261 = このレス です)

>>262

そうですね。
でも、仮に、
「<? ?>」 とだけ書いたphpファイルを置いたら、
空白ページが表示されるだけなんですよね・・・(これ自体は、当たり前かとは思いますが)
これと、問題のスクリプトとの。挙動の違いが分からず・・・
264nobodyさん:03/09/06 23:47 ID:???
>>263
空白ページと言っても、画面上に表示されるものの他に
サーバからは Content-type: text/htmlとかいろいろ流れてきてます。
>>262が言いたいのは そういうのも一切出力されてないってことかな。

IEの方のエラーが気になるなぁ...
サーバのログや HTTPのステータスコードを見たりできないの?
265nobodyさん:03/09/06 23:50 ID:yF8GU03n
GDがphpinfoに表示されません(;;)
Windows XPでapache1.3.27のサーバでPHP4.3.1を入れています。
「php_gd.dll」をC:/WINDOWS/systemにコピー、「extension=php_gd.dll」の;もはずしています。
他に何かやることってあるんでしょうか?
調べてもこんな事で引っかかってる人なんかいないみたいで、ぜんぜん分かりません。
よろしくお願いします。
266nobodyさん:03/09/07 00:14 ID:???
>>265
うちはphp_gd2.dllをWINDOWSにいれてるが
267nobodyさん:03/09/07 00:54 ID:???
>「php_gd.dll」をC:/WINDOWS/systemにコピー
が変。php.iniのextension_dirディレクティブを適切なものに設定する。
あとPHP4.3系からGDはGD2の方がバンドルされてなかったっけ?
4.3.1は両方だったかもしれんが、GD2で支障がないのなら、
今後のことを考えて2に移行しておいた方が良いと思う。
268260:03/09/07 02:23 ID:NNJKliPY
あ、そりゃそうだ。。。とおもってApacheのエラーログみました。
[Sun Sep 7 02:17:44 2003] [notice] child pid 13634 exit signal Segmentation fault (11)
だそうです。。。
269260:03/09/07 02:27 ID:NNJKliPY
で、このエラーメッセージでぐぐってみたところ、
PHP-MLの過去ログ
http://ns1.php.gr.jp/pipermail/php-users/2001-September/002131.html

などいくつかでてきましたが、言ってる意味がわからず・・・
270nobodyさん:03/09/07 03:24 ID:???
>>269
PHP本体が落ちちゃってるみたいですね。
apacheのエラーの内容は、phpかphpから呼び出されたライブラリの中で
なんかわかんないけどすっごいエラー起きたので実行するのを辞めた、ってことです。
そのせいで何も出力されずにブラウザの画面がエラーになる、っと。

スクリプトの問題じゃないので、$_*に変えただけではでない気もするしなぁ....
後ろ向きな解決法ですが、PHPをバージョンアップしてみてはどうでしょうか?
271nobodyさん:03/09/07 09:30 ID:Ke95mWaO
>>249
そうなんですか、AddTypeは入れてたはずなんですよ、説明に乗ってたから
マニュアルってphpかapacheのやつってことでしょうか?
アパッチ板でも同じ事言われたんですが、これって英語ですよね?
日本語パッチがあるとか、翻訳している所が有るって事ですか?
272 :03/09/07 09:37 ID:???
apache板て。
SunやIBM、CERN、NCSAなどの立場は。
273nobodyさん:03/09/07 15:38 ID:???
ブラウザから
Accept-Encoding: gzip
された時、出力を圧縮するにはどうすればいいのですか?
274nobodyさん:03/09/07 16:00 ID:???
phpで圧縮するの?
マニュアルのどのあたりが飲み込めないとかこうやってもうまくいかなかったとかそういうのは。

>>272
IISの立場は。
275nobodyさん:03/09/07 16:02 ID:???
じゃあ、AN HTTPDの立場は。
276nobodyさん:03/09/07 16:18 ID:Hod360WF
p2(Mac)スレから誘導されてここに来ました。

konfabulatorのTVJPを大変重宝しているんですが、
phpで作った携帯でも見れるTVガイドみたいなもの
はないでしょうか。
放映中、soon、映画、旅行などとジャンルを指定
しておけば、常にそれを呼び出すことができると
いうものなのですが、どなたか既に作られた方は
いらっしゃるでしょうか。
277nobodyさん:03/09/07 18:16 ID:???
>>276
番組表みるだけならここは?
http://www6.tokyonews.co.jp/servlets/ocntvg
自分でソースいじりたいのなら知らんが
278276:03/09/07 21:52 ID:Hod360WF
>>277
私もそこは使っているのですが、TVJPの優れている所は、
好みの俳優や歌手などを設定しておくと、それを検索して
リストアップしてくれるところなんです。
>>http://konfabulator.deskmod.com/core.mod?downloadtw=27365
279nobodyさん:03/09/07 21:54 ID:???
MySQLで
order by name
とやると、'が,より上位にきてしまうのですが、これを,>'>a>b>...
という優先順位に変えたいのですがいい方法はありませんか?
280276:03/09/07 22:00 ID:Hod360WF
278のリンク張り間違えました。こちらを見て下さい。
http://konfabulator.deskmod.com/core.mod?show=profile&skin_id=27365&user=talkinloud&pshow=submissions
281nobodyさん:03/09/08 00:21 ID:BRjxKgTF
こんなの(trim関数のマルチバイト対応版)作ったんだけど、
strに全角スペースだけの文字列や空文字列を渡すと
mb_ereg_replace() が FALSEを返してくるので実用になりません。
どこが間違ってるか分かる方教えて下さい。
環境は Linux + PHP4.3.3 + apache1.3.27です。

function mb_trim($str)
{
return mb_ereg_replace('^[  ]*(.*?)[  ]*$', "\\1", $str);
}
282281:03/09/08 00:22 ID:BRjxKgTF
補足です。
[]の中はどちらも全角スペース1個と半角スペース1個が並んでます。
283これでは?:03/09/08 00:49 ID:???
^[  ]*(.*)[  ]*$
284281:03/09/08 01:03 ID:BRjxKgTF
>>283
サンクス、さっそく試してみました。
mb_ereg_replace('^[  ]*(.*)[  ]*$', "\\1", " あ ");
の結果が
"あ "
になってしまいます。
それ以外の症状("" や " "を渡すとFALSEを返す)は同じでした。
285nobodyさん:03/09/08 01:35 ID:???
条件を小出しにするのやめてくれ
286nobodyさん:03/09/08 01:39 ID:???
>>281
難しく考えすぎ。
最初または最後の空白を '' に置き換えればいい。

mb_ereg_replace('(^[  ]*|[  ]*$)', '', $str);
287281:03/09/08 02:13 ID:BRjxKgTF
>>286
レスどうもです。提示頂いた正規表現の実行結果はこうなりました。
※結果文字列はurlencode()してあります。

mb_ereg_replace('(^[  ]*|[  ]*$)', '', "") → "%00"
mb_ereg_replace('(^[  ]*|[  ]*$)', '', " ") → "%00"
mb_ereg_replace('(^[  ]*|[  ]*$)', '', " あ ") → "%A4%A2%00" (="あ\0")

>>285
条件を小出しにしてるつもりは無いんだけど・・・
288404.HDML ◆StMXML.EXE :03/09/08 04:10 ID:???
>>287
正規表現自体の文字コードと、$strとして渡される文字列との文字コードの
違いとかは関係無いのだろうか?
、、とか思ってみただけですんで気にしないで下さい。独り言です。

<?php

$str="  あ  か さ   ";

die("「".mb_ereg_replace("^( )+|( )+$","",$str)."」");

?>
289404.HDML ◆StMXML.EXE :03/09/08 04:25 ID:???

<?php

function mb_trim($str){
return mb_ereg_replace("^( | )+|( | )+$","",$str);
}

$hoge="  . あ    か さ   ";

echo "変換前:[".$hoge."]";
echo "<br>\r\n";
echo "変換後:[".mb_trim($hoge)."]";
exit();

?>
290404.HDML ◆StMXML.EXE :03/09/08 04:37 ID:???

<?php

function mb_trim($str){
return mb_ereg_replace("^( | |\n|\r|\t|\v|\0)+|( | |\n|\r|\t|\v|\0)+$","",$str);
}

$hoge=" \n  \t . あ    か さ    \r\n";

echo "変換前:[".$hoge."]";
echo "<br>\r\n";
echo "変換後:[".mb_trim($hoge)."]";
exit();

?>
291286:03/09/08 12:04 ID:???
>>287
Linux で EUC-JP の環境で試したけど確かに最後に \0 が付いた。'*' の挙動がおかしいような気がする。
mb_ereg_replace のバグの可能性もあるけど、とりあえず、代替案。

mb_ereg_replace('^[  ]+|[  ]+$', '', $str);
292 :03/09/08 12:08 ID:???
trim($str, ' ');
293 :03/09/08 12:56 ID:???
ミスった。trim($str, ' ');とやっちゃうと\sが消えないっぽい(;´Д`)。
2つ目の引数にリストを作るか、trim(trim($str,' '));もしくは再帰しないと駄目か。
294281(たぶん解決):03/09/08 13:05 ID:BRjxKgTF
レス有り難うございます。1つずつ検証してみました。

>>288
テストスクリプトはEUCで、HTTPのGET,POST等は使ってません。
また、必要最小限と思われる以下の3行を先頭に書いてます。
mb_language("Japanese");
mb_internal_encoding("EUC-JP");
mb_regex_encoding("EUC-JP");

>>289
>>290
どちらも期待した動作をしました。
制御文字も置換したいかどうかで使い分ければ良いですね。
"\a","\b","\f"等を付けといてもいいかもしれません。

>>291
mb_ereg_replace('^[  ]+|[  ]+$', '', $str);
だと、置換後の文字列が常に "" になってしまうようです。

>>292
ちょっと手直しして、
trim( $str, "  " ); //全角と半角のスペース各1個
とすることで、どちらも期待する動作になりました。
295281(たぶん解決):03/09/08 13:06 ID:BRjxKgTF
続きです。

■まとめ■
Linux+PHP4.3.3+Apache1.3.27+文字コードEUCでは、以下の方法で期待する動作をした。
ただし検証は不十分である可能性がある。

・スペースだけ除去したいとき
mb_ereg_replace("^( | )+|( | )+$","",$str);
または
trim($str,"  ");

・コントロールコードも除去したいとき
mb_ereg_replace("^( | |\n|\r|\t|\v|\0)+|( | |\n|\r|\t|\v|\0)+$","",$str);
または
trim($str,"  \n\r\t\v\0");

■備考■
・mb_ereg_replace() のバグの可能性あり。
・trim() は本来マルチバイトに対応していないはずなので、少し様子を見た方が良いかもしれない。
・mb_ereg_replace() のオプション引数および、mb_regex_set_options() に
"p" "m" "s" などを指定してみたが結果は変化なし。

というわけで、レスくれたみなさんに感謝!
296404.HDML ◆StMXML.EXE :03/09/08 15:47 ID:???
正直、trim()関数の第2引数なんて知ランカッタ。いや、常用してなかった。
まぁ個人的には、preg_replace()なのですけどね。
297 :03/09/08 15:54 ID:???
確かにtrimの第二引数は謎だよな。
何のために作られたのやら。
298291:03/09/08 16:01 ID:???
mb_ereg_replace('^[  ]+|[  ]+$', '', $str);

が常に "" になるというのが気になるけど、解決したみたいなのでいいとして、

>>295 の trim はマルチバイト対応していないので使わない方が安全。
いわゆる全角空白の場合、EUC-JP では16進数表現の A1 が削除対象になるので、A1 を
含むマルチバイト文字列の半分だけが削除される可能性がある。

例えば、
trim( ' ◇◆ ', "  " );
とかを試してみると分かると思うけど。
299nob:03/09/08 16:12 ID:Oh6GOO2V
HTTPで外部のサイトを開いてHTTPレスポンスコードを調べるのは、どのような方法が良いのでしょうか。データベースに登録してあるURLのリンク切れを自動検索するスクリプトを作ろうと思っています。
fopen では、HTTP ヘッダの情報は取得できないんですね・・・
300nobodyさん:03/09/08 16:15 ID:???
mbstring.encoding_translation On
mbstring.http_input auto
mbstring.http_output SJIS
mbstring.internal_encoding EUC-JP
mbstring.language Japanese

こんな感じで設定してるんですが、PHPをEUC-JPで記述して
print "ハルクボーガン";
とすると、SJISで出力されるってことですよね?どうもEUC-JP
で出力されてるようなのです。

<meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS">
と指定すると文字化けする。何か勘違いしてますか?
301 :03/09/08 16:27 ID:???
>299
そんなんどっかで見たけど、忘れてしまったな、、。
とりあえずソケット開いて、HEAD /ファイル HTTP/1.1\r\n〜 で帰ってきたメッセージを読むとか。
302 :03/09/08 16:30 ID:???
>300
Shift_JISに変換するためにバッファリングする必要があるんじゃなかったっけ。
スクリプトからだと ob_start('mb_output_handler'); みたいにするけど。
たぶんマニュアルになんか書いてある。
303nob:03/09/08 16:43 ID:Oh6GOO2V
>>301
思い出したら教えて

>>300, >>302
俺は、
mb_internal_encoding('EUC-JP');
mb_http_output('SJIS');
ob_start('mb_output_handler');
としてるけど。ちゃんと動いてるよ 4.3.3
304nobodyさん:03/09/08 16:49 ID:???
mbstring.language は、mbstringで使用される 言語のデフォルト値を定義します。
このオプションは、 mbstring.interanl_encoding のデフォルト値を定義し、php.iniにおいて
mbstring.interanl_encodingは、 mbstring.languageの後に置く必要があることに 注意して下さい。
305nobodyさん:03/09/08 17:01 ID:???
>>302-304
レスどうもです。
ob_start('mb_output_handler');
をスクリプトのほうに追加したらうまく動きました。
これで携帯端末用のページ作れそうです。ありがとう。
306 :03/09/08 17:06 ID:???
>305
まあお目でと。
iniで

output_buffering = On
output_handler = mb_output_handler

みたいな弄り方も出来るので知っておくだけでも。
307cron:03/09/08 17:22 ID:???

Vine2.6 + PHP4.2.3 を使用しています。
PHP のWebアプリケーションがあり、バックアップボタンを
押すと、sqlのバックアップ操作がされるのですが(ヘッダとかつけて)

毎日手でボタン押すのでは、忘れてしまいそうなので、cronとかに登録したいのですが
何かいい手はないでしょうか?

コマンドラインから Web画面から表示されるように php  backup.php?action=backupnow
ってやってみましたけど、エラーは帰ってこないもののやっぱりだめでした。

よろしくお願いします。
308nobodyさん:03/09/08 17:50 ID:???
>>305
おお、これならスクリプト中に
ob_start('mb_output_handler');
を書かなくても成功しました。うまく使い分けていこうと思います。
309nobodyさん:03/09/08 17:50 ID:???
>>307
webアプリって、phpMyAdminか?
310cron:03/09/08 17:59 ID:???

>> 309
コメントありがとうございます。
アプリというのは、phpMyadminではないです。

MySQLと連動したフリーのソフトなのですが・・
やはり画面からできる=コマンドラインからできるというものでは
無いのでしょうか。。

出来上がってくるのはバックアップされたSQLのテキストファイルです。
タイトルがあったり、テーブルが複数あったりで、後でそのソフトが
リストアできるような感じのソースになっています。

よろしくお願いします。
311nobodyさん:03/09/08 18:11 ID:???
>>310
なぜそのアプリの名を明かさないのか。。
まあ、俺なら自分でバックアップアプリ(というほどたいそうではないけど)作る。MySQLのバックアップコマンドもあるし。
312cron:03/09/08 18:27 ID:???

すみません。
oscommerce というモールのソフトです。
ttp://www.oscommerce.com/
雑誌で見かけて、今試しにインストールしてます。
マイナーすぎて出しても意味が無いかと思いまして。。

ソース見たのですが、結構長くて、自分で作るのには
挫折してしまいました。。。
313nob:03/09/08 18:40 ID:Oh6GOO2V
>>301
こんな感じかなぁ

function get_http_response_code ($url) {
$arr_parse_url = parse_url($url);
if (isset($arr_parse_url['port'])) {
$port = $arr_parse_url['port'];
} else {
$port = 80;
}

$host = $arr_parse_url['host'];
$path = $arr_parse_url['path'];

314nob:03/09/08 18:41 ID:Oh6GOO2V
続き

$fp = fsockopen($host, $port, $errno, $errstr, 30);
if ($fp) {
fputs ($fp, "HEAD $path HTTP/1.0\n");
fputs ($fp, "Host: $host\n");
fputs ($fp, "Accept: */*\n");
fputs ($fp, "\n");
$str_fgets = fgets ($fp, 50);
fclose ($fp);
$tmp = spliti (' ', $str_fgets, 3);
$response_code = $tmp[1];
if (is_numeric($response_code)) {
$response_code = intval($response_code);
} else{
return -2;
}
} else {
//echo "$errstr ($errno)<br>\n";
return -1;
}

return $response_code;
}

改善案求む。
315nobodyさん:03/09/08 20:08 ID:???
>>312
管理者のセッションチェックもやってるしあのままじゃ無理だろ
実際にバックアップしてる部分は100行くらいだし
がんばって抜き出すのがいいと思うよ
316 :03/09/08 20:12 ID:???
>314
一応送信ヘッダーにキャッシュコントロールとか入れたほうがいいかも。
pearのHTTPパッケージだと単純に以下のようになってる。参考までに。

if(preg_match("|^HTTP/[^\s]*\s(.*?)\s|", $response, $status)) {
  $headers['response_code'] = $status[1];
}
$headers['response'] = $response;

while ($line = fgets($fp, 4096)) {
  if (!trim($line)) {
   break;
  }
  if (($pos = strpos($line, ':')) !== false) {
   $header = substr($line, 0, $pos);
   $value = trim(substr($line, $pos + 1));
   $headers[$header] = $value;
  }
}

CGIっぽいスクリプトなら、http://pc2.2ch.net/test/read.cgi/php/1049514428/へどうぞ
317cron:03/09/08 20:59 ID:???
>>315
ありがとうございます。
抜き出せば、コマンドラインから実行可能ということでしょうか?
318nobodyさん:03/09/08 22:21 ID:???
>>299
curlが使えるならあれが一番楽だよ
319nobodyさん:03/09/08 22:29 ID:???
>>312
どう抜き出せばいいのか自信がなければ辞めといた方が無難かと。
cron使うなら直接mysqldumpでやっちゃう手もあるし。
あと、osCommerceはマイナーじゃないよ
320nobodyさん:03/09/09 02:32 ID:sx5Ek4Ba
スレ違いかもしれないんですが、どこに書けば良いか分からないんで…。
PHPで画像を表示させているんですが、
右クリック→「画像を保存」する時のファイル名って指定できるのでしょうか?
どうしてもファイル名がスクリプト名になってしまいます。
これは仕方ない事なんでしょうか(^^;
321nobodyさん:03/09/09 03:04 ID:???
>>320
たぶん無理。画像を一旦サーバーに保存するしかないと思う。
322nobodyさん:03/09/09 05:32 ID:???
>>320
HTTPレスポンスで"Content-Disposition"を指定する。

http://www.php.net/manual/ja/function.header.php
ここのPDF出力例と一緒。
323nobodyさん:03/09/09 06:12 ID:???
>>321-322
有難うございます、助かりました〜
324nob:03/09/09 10:05 ID:???
>>316

PEAR って手があったわけですね・・・。すっかり忘れてた。
まぁ、勉強になったからいいか。

しかし、HTTP ヘッダなしでいきなりデータを送ってくるサーバもあるんですね。
325nobodyさん:03/09/09 10:19 ID:???
右クリックだぜ?
ScriptAliasで拡張子無しのcgiにしてPATH_INFOで引数取るように
したら.jpeg とか使えないかね
326325:03/09/09 10:20 ID:???
まあ.cgiついたままでもいいけど
327nobodyさん:03/09/09 12:28 ID:xTi8mDwe
標準関数とPEARで同じ機能がある場合(例えばDBMS接続)はどちらを使うのが推奨なのでしょうか?
328nobodyさん:03/09/09 12:55 ID:A/1KPC9j
>>327
柔軟性はpearの方が良。
「普通に」作るなら、そろそろpearにすべきかなと個人的に思う。
329nobodyさん:03/09/09 13:01 ID:???
>327

どういう意味で推奨を求めているのかわからないけど,結局のところ

標準関数の場合はドキュメントは揃ってるけどDBMS毎に関数群が
異なるため移植性を考慮するなら手間が増える

PEARの場合はドキュメント不足だけどインターフェースが広い範囲で
共通なので移植性が高い

ってことかと思う.将来的な話はわからないけどPEARが安心して
触れるようになるのはまだ時間がかかるんじゃないかと思うけど.
システムが大規模になりそうならPEARを使っておいたほうが後々
楽かもしれないね.
330327:03/09/09 14:57 ID:???
>>328
>>329
PEARのDBMS接続と標準関数で用意されているものは実装から別物だと思っていました。
PEARのソースを見ると、標準関数のラッパーに過ぎないのですね。

現在既に標準関数で開発しているので、このまま標準関数で開発を続けようと思います。
331nobodyさん:03/09/09 17:15 ID:gdEe3pOI
文字列の置き換えを行いたいのですが
$test='カ';
$test=str_replace("J",'1', $test);
echo $test;
とすると・が表示されてしまうのですがどうしたらいいのでしょうか?
332 :03/09/09 17:29 ID:???
>331
文字コードを何とかしたらいいんじゃないか。
333nobodyさん:03/09/09 17:48 ID:NcFJCxK6
配列のソート方法がわからないのですが、教えて下さい。
名前,住所,年齢,身長,体重のような配列を作っています。例えば
太郎,東京,13,150,42
一郎,大阪,12,156,48
次郎,京都,12,152,43
というファイルがあって、それを$adoresuという変数に読み込み、
for($bango=0; $bango<sizeof($adoresu); $bango++){
list($namae,$juusho,$nenrei,$sincho,$taiju) = split(",",$adoresu[$bango]);
print 省略します。
}
こんな感じで一覧表示してるのですが、これを体重の軽い順に表示するには
どうすればいいのでしょうか?
sort文など調べたのですがよくわからなかったです。
334nobodyさん:03/09/09 17:53 ID:???
>>331
シフトJISの場合、'カ'の2バイト目が'J'と同じ(0x4a)なので
mb_internal_encoding('SJIS');
mb_regex_encoding('SJIS');
と、内部エンコーディングをちゃんと設定した上で
$test = mb_ereg_replace('J','1', $test);
とすればいい。

それかUTF-8に変換して
$test = preg_replace('/J/u', '1', $test);
としてからSJISに戻すか。

正しく日本語の検索置換をするなら上記のどちらかしかないけど、
そこまで要求しないのならEUCでstr_replaceでも十分かも。
#コマセの臭いがするのは気のせい?
335331:03/09/09 18:12 ID:gdEe3pOI
ありがとうございます。
しかしphp3なのでmb関数は使えないんです;;
変換方法を調べたほうがよいのでしょうか・・
str_replaceでも化けてしまうんです〜
336nobodyさん:03/09/09 18:24 ID:???
>>335
それならjcode.phpsを使って
require_once('jcode.phps');
$test = SJIStoEUC($test);
$test = str_replace('J', '1', $test);
$test = EUCtoSJIS($test);
しか手がないね。
337nobodyさん:03/09/09 18:30 ID:???
補足。
PHPのコードは全部EUCで書いた方がいいよ。
GETやPOSTの入力もEUCに。
header()関数とmetaタグの両方で文字コードを明示するのも忘れずに。
携帯に出力するときだけ最終的にSJISに変換。
338 :03/09/09 18:49 ID:???
>333
色々やり方はあると思うが、、。
こんなんでどうよ。

usort ( $address, 'weight_sort' ) ; //第二引数はコールバック関数名。比較結果を-1, 0, 1で返すもの。

function weight_sort( $aaa = 0, $bbb = 0 ) //コールバック関数
{
  $weight_a = explode ( ',' , $aaa ) ;
  $weight_b = explode ( ',' , $bbb ) ;
  return gmp_cmp ( $weight_a[4], $wieght_b[4] ) ;
          //配列の5つ目の要素だけを取り出して比較。文字列比較ならstrcmp();
}

foreach ( $address as $key => $value) {
  lsit(・・・) = explode ( $value ) ;
  print
}
#これってバブルソートって奴?
339nobodyさん:03/09/09 21:09 ID:???
>>337
コードはshift_jisでもいいんだけどな。
EUCでないと困る事は稀。
340333:03/09/09 21:56 ID:NcFJCxK6
338さん丁寧にありがとうございます。
やってみたのですがエラーがでました。
Parse error: parse error, unexpected '@' in D:\home・・・・
と、関数のところでエラーになったみたいです。
( $aaa = 0, $bbb = 0 )この$aaaなどは変えなくてこのまま使っても
いいのでしょうか?
341333:03/09/09 22:07 ID:NcFJCxK6
338さん、ごめんなさい。
わたしの記述ミスでした。
やり直しますので上の書き込みは気にしないでください。
342nobodyさん:03/09/10 01:50 ID:GlMeQ4Oy
ファイルのアップローダでアップロードしたファイルの日付を元のファイルの
日付と同じにしたいのですが、やり方が分かりません。
GETで取得できる属性には入っていないように思えるのですが。
もしできるのならば、やり方を教えてもらえないでしょうか?
343nobodyさん:03/09/10 01:57 ID:???
123456 のような秒数の数字を、*時間*分*秒 のように時間
に変換してくれる都合のよい関数って無いですかね…。
割って、余り割って…というぐらいしか思いつかないんですが、
もっと効率の良い方法はありますか?
344●のテストカキコ中:03/09/10 02:21 ID:???
345nobodyさん:03/09/10 02:34 ID:???
>>343
localtime
346nobodyさん:03/09/10 03:15 ID:???
>>343
>>345
この場合gmdate()だよ。localtime()は9時間ずれちゃうもん。
347 :03/09/10 04:01 ID:???
>343
そうするしかないんじゃないの。
別に効率悪くない。
348345:03/09/10 05:17 ID:???
ああ、10000を2時間46分40秒にしたいということか。
それなら割るしかないだろ。

てっきりtime()が返したものから時間を得たいのかと思った。
349nobodyさん:03/09/10 08:09 ID:YceGzrXM
350●のテストカキコ中:03/09/10 09:11 ID:???
http://ula2ch.muvc.net/ (このカキコは削除しても良いです)
351nobodyさん:03/09/11 04:01 ID:wSWG2otQ
PerlのClass::DBIみたいなのはPHPにはあるのでしょうか。
352nobodyさん:03/09/11 04:29 ID:???
>>351
Pearにあったやうな
353ジョニー:03/09/11 09:10 ID:???
現在のファイル名と行番号に置換される予約語はありますか?
gccでいうところの__FILE__や__LINE__に相当するような。
デバッグに使いたいんですけど。
354nobodyさん:03/09/11 09:24 ID:???
>353

http://www.php.net/manual/ja/language.constants.predefined.php
このあたりに載ってる

つーかセガって・・・(笑
355nobodyさん:03/09/11 09:40 ID:???
> gccでいうところの

ワラタ
356nobodyさん:03/09/11 09:46 ID:???
おれには>>355が何でわらったのかわからない
357nobodyさん:03/09/11 11:46 ID:???
>>356
まるでgcc独自の機能・・・というかマクロみたいだろ。
あれはANSIの標準規格に含まれるマクロだ。
358nobodyさん:03/09/11 13:42 ID:???
XXで言うところの、からはそういう感じは受けないけどなあ
gccにもプリプロセッサは入っているんだし
359nobodyさん:03/09/11 15:24 ID:???
http://www.sra.co.jp/wingnut/gcc/cpp-j.html
この辺にのってるね

ま,初心者スレなんですからお気楽に :-)
360nobodyさん:03/09/11 18:59 ID:???
漏れにはここの内容でさえさっぱりなんだが。
こういうのは初心者じゃなくて無知って言うんだろうな。
361nobodyさん:03/09/11 19:46 ID:???
 メールの送信をしようと思い、mb_stringがonなRPMを↓でGet。
ttp://ftp.sanguine.jp/pub/sahughes/rhl/

んが、mb_mail_sendが何も値を返さない、おかしい。
mail関数を使ってみると↓
Warning: mail() is not supported in this PHP build in ...
と出る。っちゅーことは、mb_send_mail自体が動かないかな
って思い悩んでたら、

ぐぐって見ると↓
http://www.nishimoto-site.net/archiver/ML/php-ML/200307/msg00564.html

ヘッダ依存なんですか?( ;´_ゝ`;)
sendmailは動きまくってます。
どなたかへろぷみぃ〜
362nobodyさん:03/09/11 22:58 ID:???
情けないことなんですけど、わからないんで教えてください。

PHPのソース見てると、よく、 ->  って文字を見かけますけど、
これの役割はなんなんでしょうか?どういうわけか、今手元にある入門書二冊とも載ってなくて
よくわかりません。役割がわからないんで調べづらくて…

手元にあるPHPファイルのソースに
echo $d->show_head();
だとか、
$fp = fopen($this->logfile, "w");
とかで使われてるんですが…
363nobodyさん:03/09/11 23:47 ID:???
>>362
入門書二冊に載ってない?
どんな入門書だよ、それ。入門書で、クラスとかオブジェクトとかが載ってるページを熟読しる
364nobodyさん:03/09/11 23:55 ID:???
>>362
入門書なんで、記述を端折ってるんだね。(「基礎PHP」には出てたけど)
それはオブジェクトのメソッド/プロパティに対するアクセス。
PHPのマニュアルに出てるので、まずそちらをあたってみれ
#あと「::」とか


365nobodyさん:03/09/12 00:17 ID:???
>>362
お前はマニュアルを読んだことがないのかと、
http://www.php.net/manual/ja/language.oop.php
366nobodyさん:03/09/12 02:07 ID:???
私も->の意味を知らなかった時、どう調べて良いかわからなかったよ。
検索しても->じゃ出てこんし。
>>362
がんばって(≧▽≦)/
OOPには不可欠だから、覚えておいても損は無いと思う。
367nobodyさん:03/09/12 08:14 ID:???
$xx = array( 'a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D' );
のような配列の中で、例えばキーが'a'と'c'の要素を抽出したいのですが
array_filterだと、キーが受け取れないので使えませんでした。
スマートな方法あったら教えてください・・
ちなみに、$xxの内容は変動します。
368nobodyさん:03/09/12 10:22 ID:???
>367

質問の意図がいまいちはっきりしない

> $xx = array( 'a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D' );
> のような配列の中で、例えばキーが'a'と'c'の要素を抽出したいのですが

Array
(
[a] => 'A'
[c] => 'C'
)

を得たいということ?

> array_filterだと、キーが受け取れないので使えませんでした。

キーが受け取れないとは何を指している?
マニュアル http://www.php.net/manual/ja/function.array-filter.php
を参照したところ第二引数はコールバック関数になってるから
キーはコールバック関数が参照できる形で用意しておけば
いいと思うが(グローバル変数とか,引数を得るための関数を用意しておくとか)。


> スマートな方法あったら教えてください・・
> ちなみに、$xxの内容は変動します。

もう少し具体的にどういう結果が欲しいのか提示してもらえると
色々考えられると思うけど。
369368:03/09/12 10:23 ID:???
引数を得るための → キーを得るための
370368:03/09/12 10:30 ID:???
>367

すまんようやく理解できたよ(笑)
例からすると array_filter にかけられるコールバック関数の引数には
「値」しかないから「キー」を判断できないじゃないかというわけだね
371368:03/09/12 10:59 ID:???
>367

とりあえずこんなものしか思いつかないな・・・
キーが絡むとスマートにはいかない気がする
PEARに何か便利なものがあるかもしれない。

function hoge($ar, $keys, &$result) {
$result = false;
foreach($keys as $key) {
$result[$key] = $ar[$key];
}
}

$array1 = array( 'a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D' );

$array2 = false;
hoge($array1, array('c', 'a'), $array2);

if (false !== $array2) {
print_r(array_filter($array2));
} else {
print "empty";
}
372nobodyさん:03/09/12 11:28 ID:NNIPffqh
>>367
俺的にはこう書く

<?php
function choose_data_by_keys(&$item, $key, $choosed)
{
 if(!in_array($key, $choosed)) $item = null;
}
function drop_null_data($var)
{
 return $var;
}

$a = array('a' => 'A', 'b' => 'B', 'c' => 'C', 'd' => 'D');
$b = $a;
array_walk($b, 'choose_data_by_keys', array('a', 'c'));
$b = array_filter($b, 'drop_null_data');

print_r($a);
print_r($b);
?>
373nobodyさん:03/09/12 13:02 ID:???
元の配列の大きさと,実際に取り出したい要素の数によって
変わってくるだろうね.
374nobodyさん:03/09/12 14:06 ID:qZIVPFa2
多次元配列内を検索する関数はありますでしょうか?
例えば、下記のような多次元配列があり
----------
$ar = array( array("aa", "ああ", "アア"), array("ii", "いい", "イイ"),
array("uu", "うう", "ウウ"), array("ee", "ええ", "エエ"),
array("oo", "おお", "オオ") );
----------
 $ar[n][0] にあると思われる文字列を検索したいのです。

上記配列の例の場合に当てはめると、アルファべトの箇所に指定した値が
存在するかを確認したいのです。

下記のような式の場合、両方ともFalseが返ってきます。
----------
if (in_array ("uu",$ar)) { echo "is_array = True"; }
else { echo "is_array = False"; }

if (array_key_exists ("uu",$ar)) { echo "array_key_exists = True"; }
else { echo "array_key_exists = False";}
----------
条件式に、$ar[2] のようにキーを指定すれば、
 is_array = True array_key_exists = False
が返ってきますが、キーを指定せずに、多次元配列を検索したいのです。
ループを使って関数を作るしかないでしょうか?よろしくお願いします。
375nobodyさん:03/09/12 14:10 ID:???
あの・・・
あるフォームがあってそれに例えばAと入れると
a.datファイルを新規作成してもしbと入れたらb.datを新規に作成したいのですが
やり方がいまいちよくわかりません・・・。
でそのdatファイルをphp?db=aというように読み込ませるにはどうすればいいのでしょうか?
376nobodyさん:03/09/12 14:24 ID:???
>375
ファイルの操作関連はここにかいてアル。
http://www.php.net/manual/ja/ref.filesystem.php
もうちょっと試してから、判らない所を切り分けてから質問しましょう。
377 :03/09/12 14:26 ID:???
>375
textフォームのname属性の値がfnameだった場合、Aと書いてポストすれば、$_POST['fname']にAが入るだろ。
小文字のaにしたけれstrtolower();を使えばいい。次に不正な文字列を排除するして、末尾に .dat、頭に
パスをつけて 、ファイルを作るだけなら、touch();、操作したいならwb+モードのfopen();に渡せばいい。
Getからの値を取得するには、$_GET['db']、これを使ってファイルを読み書きする。

テキストは何使ってんの?
サンプルに書いてあるでしょ。

http://jp.php.net/manual/ja/language.variables.external.php
378nobodyさん:03/09/12 14:30 ID:???
>374

基本的に配列を再帰的に扱う関数は無いみたい。

とりあえず例のような2次元配列に限定して
検索値があるかないかだけ調べられれば良いなら
こんな方法は叩き台としてどうだろう

<?php
function test_array($var) {
return (in_array('aa', $var));
}

$ar = array( array("aa", "ああ", "アア"), array("ii", "いい", "イイ"),
array("uu", "うう", "ウウ"), array("ee", "ええ", "エエ"),
array("oo", "おお", "オオ") );

if(count(array_filter($ar, "test_array")) > 0){
print "YES";
}
?>
379nobodyさん:03/09/12 14:47 ID:???
>>367
スマートかどうかは知らないけど。

<?php
$a = array('a' => 'A', 'b' => 'B', 'c' => 'C', 'd' => 'D');
$b = array('a','c');

$c = array_flip($b);
array_walk($c, create_function('&$v,$k,$arr','$v = $arr[$k];'), $a);

print_r($c);
?>
380nobodyさん:03/09/12 15:20 ID:???
>>374
<?php
function search( $str, $n, $ar )
{
foreach ( $ar as $key => $arr ) {
if ( $arr[$n] === $str ) return $key;
}
return FALSE;
}

$ar = array( array("aa", "ああ", "アア"),
array("ii", "いい", "イイ"), array("uu", "うう", "ウウ"),
array("ee", "ええ", "エエ"), array("oo", "おお", "オオ") );

$key = search( "aa", 0, $ar );

echo ( $key !== FALSE ) ? "True:$key\n" : "False\n";
?>
381374:03/09/12 15:25 ID:???
>378さん 
回答ありがとうございます。
その上、サンプルまでつけてくれてありがとうございます!
array_filterって使った事がなかったので、とても参考になりました!

やはりこういった関数は無いんですね。
おっしゃるとおり2次元配列で、存在するかどうかのチェックがしたいだけです。。
ちなみに、私が考えてたのはこんなのです↓
------
for ($i=0; $i<count($ar); $i++) {
if (in_array ("ua",$ar[$i])) {
$a = $a | 1;
} else {
$a = $a | 0;
}
}
print $a;
------
378さんのものの方が応用が利きそうですね。

…(´・ω・`) ショウジンシマス
382374:03/09/12 15:28 ID:???
おお!書き込んでいるうちにレスが!

>380さん ありがとうございます。
===を使っても確認ができるんですね。
試してみます。
色んなやり方がありますね。とても参考になります。

ありがとうございました!
383nobodyさん:03/09/12 16:30 ID:x0AjWmKy
parse errorが消えません・・・。どなたか原因をご教授いただけないでしょうか。

エラー
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\apache\htdocs\chap3\download.php on line 5

ソース
<?php

$con = mysql_connect("localhost","user","pass");
mysql_select_db("db");
$sql = "select * from members limit $_GET['st'],$_GET['n']";
$rs = mysql_query($sql);


?>
php ver.4.3.3です。
384nobodyさん:03/09/12 16:33 ID:???
$sql = "select * from members limit {$_GET['st']},{$_GET['n']}";
385nobodyさん:03/09/12 16:43 ID:gs4DWdC1
このカウンタに同一IPが連続カウントされるのを抑えたいんですが・・・どうすれば?
$file = fopen("/home/virtual/eqjp.net/public_html/modules/news/count.txt","r+")
or die("count.txtが開けません");
$counter = fread($file, filesize("/home/virtual/eqjp.net/public_html/modules/news/count.txt"));
fclose($file);
$counter +=1;
$file = fopen("/home/virtual/eqjp.net/public_html/modules/news/count.txt","w+");
fputs($file, $counter);
fclose($file);
echo $counter ;
386383:03/09/12 16:43 ID:???
>>384
ありがとうございます!ずっと悩んでいたので本当に助かりました!
387nobodyさん:03/09/12 17:04 ID:???
>>385
IP を記録しておいて、一致したらカウントしない。一致しなければカウントして、IPを記録。
388nobodyさん:03/09/12 17:09 ID:dkNyBOYs
perl使ってる時は、内部コードをeucにして文字化けを防いでいたのですが、
php使うようになってからは、文字化けしなくなったような気がします。
phpって文字化けしにくいのでしょか?
389nobodyさん:03/09/12 18:03 ID:???
>>388
eucパススルーな部分はさほどperlと変わらないと思うよ。
もちろんコードにsjisが使えるようにビルドされてるphpもあるけど、
それの話じゃなければ、http出力時の「自動」エンコード変換がうまく動いてる
ケースだからじゃないのかな。

どっちにせよそういう「運」にたよるようなプログラムの作り方しちゃ駄目(笑
390367:03/09/12 18:39 ID:???
>>368,372,379
みなさん有難うございます。きちんと動きましたし、とても満足しています。
恥ずかしながら、array_flipと言う関数を始めて知りました(^^;
391nobodyさん:03/09/12 18:56 ID:???
お尋ねです。
PHPって うpしたファイルの MIME タイプを教えてくれますが
ファイルがバイナリだった場合ってどの位の正確さで MIME Type 合ってます?
で、テキストの場合は拡張子を見ているようですが そうなんですか?
392nobodyさん:03/09/12 22:25 ID:tS0e0mKE
今時系列の掲示板(新しいカキコが上に追加されていくふつーの)をMySQLを使って作っています。
次/前ページの移動の仕組みは
$sql = "SELECT * FROM `$db_table` ORDER BY `id` DESC LIMIT $start, $entries_per_page;";
で、ソートで新しい番号を上にして、LIMIT使ってできたのですが、

はじめID〜終わりIDを指定して、表示するためのSQL構文が分かりません。

bbs.php?beginid=40&endid=60

と指定して、idが40から60の書き込みを表示させたいのです。
最近データベースに手をつけはじめたため、もしかしたらすごいチューボー発言かもしれませんが、
分かる方いらっしゃいましたら、教えてください。
393nobodyさん:03/09/12 22:36 ID:???
>>392
ちょっとした発想の転換で、
if (isset($_GET['beginid']) && isset($_GET['endid']) && intval($_GET['beginid']) < intval($_GET['endid'])) {
 $start = $_GET['beginid'];
 $entries_per_page = $_GET['endid'] - $_GET['beginid'] + 1;
}
〜同じSQL文〜
てな感じでいいと思うんだけど、どうでしょ?
394393:03/09/12 23:00 ID:???
ごめん嘘書いてた。
上の方法だと、ORDER ASC にしないとダメだった。
つーか同じ構文を使い回せないのなら
WHERE id >= $_GET['beginid'] AND id <= $_GET['endid'] のほうがいいとオモタ。
#間違ってたら修正お願いします。<偉い人
395nobodyさん:03/09/13 04:10 ID:U7nicQF5
クッキーについて質問です
php4.3 register_globals=onです。
クッキーって言うのは、セットしたページ内でしか
有効じゃないんでしょうか。
掲示板で、ユーザー情報や1ページあたりのレス数を設定するための
ページを別に作って、そこでした設定をクッキーに保存して
掲示板ではその保存されたクッキーを読み込もうとしても
読み込んでくれません。
396nobodyさん:03/09/13 06:32 ID:???
>>395
??????イ
何のためのクッキーなのかと
397nobodyさん:03/09/13 07:03 ID:???
MySQLでテーブルを連結させて検索する場合、
二乗になるので、データ数が多いと遅くなると思うんですが
大体データ数どの程度まで速度や負荷など気にしなくても平気なんでしょう?
スペックやフィールド数、バイト数にもよると思うんですけど…
398nobodyさん:03/09/13 09:46 ID:U7nicQF5
>>396
ですよねぇ・・
あーわがんね。
399nobodyさん:03/09/13 10:02 ID:9EKNju5Z
1.10項目ぐらいのフォームに入力してpostする。
2.フォームの変数をチェックする。(文字数とか不適切な入力とか)
3.その変数を使って「この内容でいいですか?」ページを表示。
4.OKだったらもう一回変数のチェックをして、データファイルに入れる。

この時、3から4への変数の持ち回りはフォームのhiddenに全部書き出す
他に何か適切な方法はありますか?
パスワードとか平文でhiddenに書き出してもいいんでしょうか?
400399:03/09/13 10:06 ID:9EKNju5Z
なんかPHPと関係ない感じになってしまいましたがPHPで作ってます。
sessionに登録するとか、hiddenにserializeして入れておくとか、
一般的なのはどんな方法なんでしょうか?
401nobodyさん:03/09/13 11:13 ID:???
>>399
重要な情報扱うわけじゃなければhiddenでも問題ないと思うが。
(個人情報やクレカとか)
個人で使う掲示板や日記程度のなら一般的にはhiddenが一番多いと思う。
402nobodyさん:03/09/13 11:40 ID:???
>>398
何について聞きたいのかはっきりさせろ
そもそも質問じゃねーし・・・

違うページで読めないのか?→読めます
で終わっちゃうだろ

cookie の pathとdomainをどういう設定にしてる?
403nobodyさん:03/09/13 14:01 ID:U7nicQF5
>>402
pathとドメインは設定してません。
具体的なコードはこんな感じです。
$subはフォームからPOSTで渡されます。

<?

if($sub=="on")
{
   $cookiename = "on";
}else {
   $cookiename = "off";
}

$expire = time()+365*24*86400;
$cookie = "scolor";
setcookie($cookie, $cookiename ,$expire);

echo "設定を変更しました。<p>";
?>
404nobodyさん:03/09/13 14:08 ID:U7nicQF5
ああああああ
pathを変えたらうまくいきました。
ありがとうございます!!!!!!!
405nobodyさん:03/09/13 15:37 ID:???
>>403
問題ってほどでも無いんだが、
> $expire = time()+365*24*86400;
てのは如何なものかと。
406399:03/09/13 16:14 ID:???
>>401
IDとパスが一致したら詳細が見れるって程度の事をする
簡単な会員登録システムなんでhiddenで渡す事にしました。
407nobodyさん:03/09/13 20:53 ID:BbpX/FZ2
$lines = file("log.log");//いままでのログを配列に読み込む
$fp = fopen("log.log","w");//ログをオープン(空になる)
fputs($fp,$dat);//データを書き込む(先頭に)
for($i = 0; $i < 99; $i++)//いままでの分を追記
fputs($fp, $lines[$i]);//(配列0-98→現ログ1-99行目)
fclose ($fp);

これってファイルロックしなくても大丈夫?
これにファイルロックするにはどうすればいいのでしょう?
408nobodyさん:03/09/13 21:04 ID:U7nicQF5
ログを配列に読み込んだ後にロック
409407:03/09/13 21:29 ID:???
$lines = file("log.log");//いままでのログを配列に読み込む
flock($fp, LOCK_EX);
$fp = fopen("log.log","w");//ログをオープン(空になる)
fputs($fp,$dat);//データを書き込む(先頭に)
for($i = 0; $i < 99; $i++)//いままでの分を追記
fputs($fp, $lines[$i]);//(配列0-98→現ログ1-99行目)
fclose ($fp);
flock($fp, LOCK_UN);

こんな感じですか?
410nobodyさん:03/09/13 22:06 ID:???
phpプログラム内にて、あるディレクトリ直下のディレクトリ数
をカウントしたいのですが、何かよい方法はございますか?

例えば、サーバ上

〜/2ch/giko/index.html
〜/2ch/mona/index.html
〜/2ch/shiy/index.html

というディレクトリ構成があった場合、
「〜/2ch/」直下のディレクトリ数「3」をカウントしたいのです。
「giko」や「mona」の下にあるディレクトリはカウントしなくてよいです。

何かよい方法がございましたら、ご教示願います。
厨な質問だったらごめんなさい。
411nobodyさん:03/09/13 22:28 ID:???
>>409
flockの$fpは、オープンされたファイルポインタでないと駄目だから、
$fp = fopen(); flock($fp); の順にやらないと。

でも、file()はflockしてないと思うから、意味無いような気もしたり。

>>410
素直に readdir()とis_dir()は駄目でしょうか?
412nobodyさん:03/09/13 23:25 ID:???
>>411
while文でまわしながら、readdir()で直下の情報を読み込んで、
is_dir()でtrueのモノのみカウントしていくということですね。
なるほど、うまくいきそうです。

ありがとうございました。
413nobodyさん:03/09/13 23:54 ID:???
>>412
「.」と「.」.ははぶいとけ
414392:03/09/14 00:54 ID:SxMgLT7D
>>393さん2つめのWHERE使ったやつで無事実装できました!!!
まじ感謝です!
415412:03/09/14 08:33 ID:???
>>413
カレントと親ディレクトリですね。
ありがとうございます。
416nobodyさん:03/09/14 09:06 ID:???
PHPってCGIとして使うと処理がとぎれとぎれになりますよね。
クラスを使ったプログラムに挑戦してみようと思ったんです
けど、PHPを呼び出す度にクラスを定義してインスタンスを
作るって動作は処理が重くなりそうな気がするんですが。実際
はどうなんでしょうか。変数と関数を毎回includeするのと別に
負化はたいして変わらないですか?
417nobodyさん:03/09/14 17:55 ID:NJT0IDp2
$donadona = array(1,2);
$ref = "donadona";
print $$ref[0];
としても何も表示されません。もちろん
print $donadona[0];
ならOK。こういう使い方は出来ないのでつか?
418nobodyさん:03/09/14 17:58 ID:???
cgi+binってファイルはどうすれば使えるようになりますか?
419nobodyさん:03/09/14 18:02 ID:???
OSによる
420nobodyさん:03/09/14 18:03 ID:???
ウインドウズのMeなんですが
421nobodyさん:03/09/14 18:08 ID:???
>>420
どういうコードから使えないの?
422nobodyさん:03/09/14 18:13 ID:???
ダウンロードしたエロ動画です。コードとか言われると知識がないので
何について聞かれているかわかりませんがこの答えであっているでしょうか?
ていうか今見直したらbin+cueと見間違えていました。
鬱だ
423nobodyさん:03/09/14 18:19 ID:???
>>418が次にどこのスレに現れるのかが非常に気になる
424nobodyさん:03/09/14 18:28 ID:???
むしろどこにいけばいいか教えてくれw
具具ったらそれらしいとこはでてきたが
425nobodyさん:03/09/14 18:32 ID:???
ん?PHP関係ないの?
426nobodyさん:03/09/14 18:42 ID:???
phpってもの自体よくワカランし(w
cdrwinをダウンロードすればよさげなのはわかったが
427 :03/09/14 19:08 ID:???
>422
それはROMディスクを仮想ドライブに読み込んだものだ。
daemon toolsをダウンロードして、マウントすると再生できる。
PHPとは無関係だ。
428nobodyさん:03/09/14 21:53 ID:???
なんだ割れ厨か
429nobodyさん:03/09/14 22:34 ID:???
>>417
$$ref[0] だと、 $ref[0] が先に解釈されるので、この場合だと、
$ref[0] == 'd'
になってしまって、$d という変数を呼び出そうとするので $d が定義されていないと 失敗する。

以下のようにすれば大丈夫。

$donadona = array(1,2);
$ref = "donadona";
print ${$ref}[0];
430nobodyさん:03/09/14 23:12 ID:???
>>427さん ありがとうございます。
無事できました
>>428さん
エロゲーのおかげで明日一日暇で家で過ごさずに住むことになりそうなんです
(どっちにしろ家でエロゲーですが)
どうか許してやってください
431nobodyさん:03/09/15 00:00 ID:???
そんな自分勝手で個人的な理由が言い訳になるわけないだろ
432nobodyさん:03/09/15 00:16 ID:???
お尋ねしたいのですが、
一枚のWEBページに複数のファイルを読み込ませたい場合どのようにしたら良いでしょうか。
不躾な質問でございますが、何卒ご教授下さい。
433nobodyさん:03/09/15 00:17 ID:9NFnem5D
複数回ファイルを読み込んでください。
434nobodyさん:03/09/15 00:27 ID:???
>>433
即レスありがとうございました。
includeを利用することでどうにかなりそうです。
それでは失礼しました。
435nobodyさん:03/09/15 00:29 ID:???
include?
複数回読み込みたいって、そういうことだったのか。
436nobodyさん:03/09/15 00:38 ID:???
>>435
1ページ分のHTMLを分割ファイル化して、
ヘッダ・フッタ・内部テーブルみたいな感じにしたかったのじゃないかな?
まぁあんまり気にしない
437nobodyさん:03/09/15 01:00 ID:0DSPDdIF

 彩です。

ココのサイトっ良いんですか?

誰か知っていらっしゃる方いらっしゃいましたら

教えて下さい。

http://www.webranking.net/ranking.cgi?id=92741
438nobodyさん:03/09/15 01:33 ID:???
>>437
氏んじゃえ
439nobodyさん:03/09/15 02:18 ID:???
ジンジャエール
440nobodyさん:03/09/15 04:16 ID:???
>>429
おおー、なるほど。
こいつは勉強になりました。もしかしてちゃんとマニュアルに
書いてあるのかな?とにかくサンキュー!
441nobodyさん:03/09/15 10:39 ID:???
LINEを渡さなくても、ユーザー関数の呼び出しもとのクラス名・行番号を得る事は出来ますか?
442 :03/09/15 13:13 ID:7THLasrG
http://kano.feena.jp/erial/clrea/
↑のPHPが設置できない。
パーミッションなど合ってるのだが・・・
鯖はAAAです。
443nobodyさん:03/09/15 13:39 ID:HzcwV9T4
PHPで継承したクラスのメソッドの中で親クラスのメソッドを呼び出すことはできますか?
Javaで言うところのsuper.xxx()見たいな感じです。
444nobodyさん:03/09/15 15:11 ID:???
>>443
$this->xxx()
または、
parent::xxx()
445恵子:03/09/15 17:12 ID:ruRRzX5l
446nobodyさん:03/09/15 21:00 ID:???
>>441
デバッグ用途で使いたいんだろうけど、たぶんできない。
フレームスタックを調べる方法があればできるだろうけど。
447nobodyさん:03/09/16 00:10 ID:1fX3DuqB
エラーが出て困っています。

Warning: file("./count.dat") - そのようなファイルやディレクトリはありません in /home/service/public_html/cgi/counter/counter.php on line 34
Warning: fopen("./count.dat", "w") - 許可がありません in /home/service/public_html/cgi/counter/counter.php on line 58
Warning: flock(): supplied argument is not a valid File-Handle resource in /home/service/public_html/cgi/counter/counter.php on line 59
Warning: fputs(): supplied argument is not a valid File-Handle resource in /home/service/public_html/cgi/counter/counter.php on line 60
Warning: flock(): supplied argument is not a valid File-Handle resource in /home/service/public_html/cgi/counter/counter.php on line 61
Warning: fclose(): supplied argument is not a valid File-Handle resource in /home/service/public_html/cgi/counter/counter.php on line 62

58:$fp = fopen("$data","w");// 書きモードでオープン
59:flock($fp, LOCK_EX);// ファイルロック
60:fputs($fp, $new_data);// 書き込み
61:flock($fp, LOCK_UN);// ロック解除
62:fclose($fp);// ファイルを閉じる

こんな感じです。count.datはちゃんと存在していて、パーミッションは
644、counter.phpのパーミッションも644です。

エラーの原因が何か分からず困っています。ご教授お願いします。
448 :03/09/16 00:19 ID:???
debug-backtrace();を仕込んどけばいいんでないの。
449nobodyさん:03/09/16 01:49 ID:???
> Warning: file("./count.dat") - そのようなファイルやディレクトリはありません
エラー内容からすると、count.datはあるかもしれんが場所が違うかパラメータの与え方が違うんだろ

> Warning: fopen("./count.dat", "w") - 許可がありません
644で許可がありませんといってるんだから606にしてみようとは考えないのか
450nobodyさん:03/09/16 02:01 ID:???
> fopen("./count.dat", "w")
はファイルが無い時に新規作成しようとするから、
ディレクトリのパーミッションで出てるんじゃないかな?
451nobodyさん:03/09/16 02:24 ID:ZJ9fbVpQ
PHPのライブラリとかは、一般的に何処に置けばよいでしょうか?

RedHat Linux 9をつかっています。
452447:03/09/16 07:25 ID:1fX3DuqB

count.datを606にしたのですがエラーは変わりません・・
他にどこを直せばよいのでしょうか?
ANHTTPDで試したときは問題なく動作したんですが、
サーバーにアップしたらエラーがでました。
453 :03/09/16 07:28 ID:???
スルーされたな(笑
454447:03/09/16 07:29 ID:1fX3DuqB
あ、なんか新しくやり直したらできました^^
ありがとうございました。
455nobodyさん:03/09/16 09:39 ID:???
すいません、PHPの関数で、
接続するDBがPostgresだろうが、MySQLだろうが、
同じ書き方で接続できる関数があったと思うのですが、
何でしたっけ?

リファレンスをひととおり見回したものの、見あたらない・・・
見過ごしたか、あるいは、関数ではないのだろうか・・・
456nobodyさん:03/09/16 11:02 ID:???
>>455
DBIのことか?
457nobodyさん:03/09/16 11:12 ID:???
あ、PHPか
458456:03/09/16 11:14 ID:???
オンラインマニュアル見たら dbx というのがあるが
これのことか?
459nobodyさん:03/09/16 11:32 ID:???
>>416
おれもしりたい。
たぶん、毎回クラス定義しなきゃいけなくて、そのオーバーヘッドは減らせないと思う。
460nobodyさん:03/09/16 12:12 ID:???
>>416, 459

bcompiler使えば、パースにかかる時間は
短縮できる。
461nobodyさん:03/09/16 16:30 ID:???
>>455
PEAR::DBか?
DSNの書き方や、接続に関しては同様に扱えるようになってたと思うが
462nobodyさん:03/09/16 18:57 ID:uqtMJgrk
みなさんOOPってどうやって勉強しました?
参考にした書籍やサイトがあれば教えて頂きたいのですが。
463nobodyさん:03/09/16 19:15 ID:???
関数を学ぶときあなたはどうしましたか?
関数とはなんなのかについて先に勉強したりしましたか?
464nobodyさん:03/09/16 19:31 ID:X1KHAMi2
>>462
オブジェクト指向に関する本を読んだ方がいいよ。
465 :03/09/16 19:32 ID:???
>462
板とスレ違い。

>463
関数ではなく手続き型な。サブクラスに関数プログラミング。
http://www.sampou.org/haskell/article/whyfp.html
466nobodyさん:03/09/16 19:36 ID:???
関数という言葉からは、f(x)のようなものを想像したし
そこから入って困る事は無かったなあ
467nobodyさん:03/09/16 19:39 ID:???
お前もいいかげんにしろっつーの
468462:03/09/16 19:56 ID:uqtMJgrk
すれ違いな事聞いてすいません。。
PHPのOOPの書籍が見つからなかったもので。。
OOPの書籍はあってもたいていJAVA中心に書かれてたりしてて、
みなさんどうやって勉強したのかと思った次第でして。。
すいませんでした。。
469447:03/09/16 19:56 ID:???

やっぱりうまくいきません。。

一回、index.phpと同じ階層にcounter.phpとcount.datを持ってきて
それぞれパーミッションを644、606にすると問題なく動作したのですが、
cgiというフォルダに入れたとたん警告エラーが出てしまいます。
フォルダから出すと問題ないのですが、これはどうすればよいのでしょうか?
470nobodyさん:03/09/16 20:31 ID:X1KHAMi2
>>468
憂鬱なプログラマのための〜

って本いいですよ。
phpに特化してはいないですけど。
ていうか、phpに特化した本はないです。
471nobodyさん:03/09/16 20:40 ID:???
他の鯖にあるファイルへアクセスする時にincludeとかを使うと、
zipファイルとかのときダウンロードダイアログが表示されずに、
そのままテキストで表示されてしまいます。

MIMETYPEの指定などをするっぽいですがよろしければ簡単なサンプルをお願いします。
472nobodyさん:03/09/16 20:54 ID:X1KHAMi2
ダウンロードしたいなら
javascriptつかったほうが
いいんじゃない?
includeはそもそも
目的が違うよ。
473nobodyさん:03/09/16 20:56 ID:rcFmQiNN
>>447
>>469
もう一回パスやパーミッションを確認してみる。
ディレクトリのパーミッションも。
cgiって名前のディレクトリ以外にしてみる。
それでだめなら、鯖屋の名前から使ってるスクリプトから
全部晒して誰かに検証してもらう。
474nobody:03/09/16 20:58 ID:FDXLG/uk
勉強不足  【発言・行動】 2001/05/25更新    http://www.geocities.co.jp/SiliconValley/5634/t82D6_0002.html#2525

・真に無知な連中が、自分以外の他人に突っ込まれ、自分が嫌な思いをする前に、自ら「勉強不足ですいません」と、
一見すると謙ったかのような態度を以って自らの非を認めてしまう事で、相手が突っ込む機会を奪い、悶えさせる為に使うキーワード。

・多くの人が心のどこかではそう思っているかもしれないが、それを自らの努力により改善しようとする気などはさらさら無く、
「他人を利用すれば良いや」と自分本位な考えを押し押し通し、実際に他人を利用してやろうと企んだ際に好んで使うもの。
475471:03/09/16 21:07 ID:ijo1Fg8O
>>472
リダイレクトとかの挙動をさせずにZIPやテキストを
ダウンロードダイアログを表示させてダウンロードさせたいのです。

socket関数を使うのかな?
476nobodyさん:03/09/16 21:46 ID:???
>>475
Content-Type: application/zip とかを吐けばいいみたいよ。
header("Content-type: application/zip");
include 'http://localhost/test.zip';
当然のことながら、他に何も出力しちゃいけません。
477462:03/09/16 21:49 ID:???
>>470
レスありがとうございます。
明日早速買ってこようかと思います。
スレ汚してすみません。
そしてありがとうございました。
478471:03/09/16 22:08 ID:ijo1Fg8O
>>476
ありがd。header関数についてもう少し勉強しておきますm(_ _)m
479nobodyさん:03/09/16 23:45 ID:X1KHAMi2
phpでクラス変数は使えるんでしょうか。
480nobodyさん:03/09/16 23:51 ID:???
>>479
使えます。
481nobodyさん:03/09/16 23:53 ID:X1KHAMi2
どうやったら、使えるんでしょうか。
サンプルコードとか、ほしいです。
482nobodyさん:03/09/17 00:12 ID:???
>>481
私はぷーなので仕事ほしいです。
483nobodyさん:03/09/17 00:35 ID:???
私は毒男なので彼j(ry
484nobodyさん:03/09/17 03:11 ID:???
強力にファイルロックする方法ってあります ?
最近ログが飛びまくるんですが・・・
485nobodyさん:03/09/17 04:13 ID:???
>>484
そもそもロックの掛け方が悪い場合も。自作でっか?
ロック箇所のソース抜き出して晒してみ?
486nobodyさん:03/09/17 04:39 ID:???
ログならPEARのLogをつかいなはれ。
487447:03/09/17 07:13 ID:???

っシャーーーーーーーーーーーーーーーーやっと分かった。
index.phpからcount.phpをincludeしたからcount.datのパスも
index.phpから相対的に指定するのか。
普通にcount.phpから相対指定してた。
488nobodyさん:03/09/17 08:04 ID:IlBHCtzA
sessionって携帯でも使えますか?っていうかクライアントは関係ないんですか?
489nobodyさん:03/09/17 08:20 ID:nZo3lUrS
結局クラス変数は使えないのかな。
490nobodyさん:03/09/17 08:35 ID:???
>>489
お前なぁ…
マニュアルくらい読めよ。
お前がいくらスキル無しでも、Googleで検索することくらい出来るだろ?
491nobodyさん:03/09/17 08:46 ID:nZo3lUrS
検索してもでてこないよ。
492nobodyさん:03/09/17 08:56 ID:???
>488
使えるっしょ。
Cookieが通らない環境ではURLにセッションIDを埋め込む必要があるけど。
493 :03/09/17 09:25 ID:???
$hogeって変数に$_SERVER["REMOTE_ADDR"]なんかの連想配列を含んだ言葉を入れたい場合ってどうやるんですか?
$ip = $_SERVER["REMOTE_ADDR"];
$hoge = あなたのIPアドレスは$ipです。
みたいにすればできるんですが・・。
494nobodyさん:03/09/17 09:27 ID:???
>>492
ありがとうございます。
cookieが使えない環境って言うのはどういう事でしょうか?
携帯は基本的にcookieは使えないですよね?
495nobodyさん:03/09/17 09:44 ID:???
>493
よく分からんが、エスケープするなり、連結演算子使うなりすればいい。

>494
cookieが使えない環境って言うの言葉どおりの意味。
しかしphp4ではセッションにCookieが使えるか勝手に判定、だめなら定数SIDに「セッション名=セッションID」が入る。
スクリプトを呼び出すGETクエリにこれをくっつければセッションが使えるというお手軽さ。
http://jp.php.net/session
496493:03/09/17 10:09 ID:???
あ、連結すればいいんでした。失礼しました。
497nobodyさん:03/09/17 10:55 ID:???
$hoge = "あなたの IP は {$_SERVER['REMOTE_ADDR']} です";
498nobodyさん:03/09/17 11:02 ID:???
あなたのIPはfusianasanです
499nobodyさん:03/09/17 11:28 ID:???
こっちでも
$hoge = "あなたの IP は ${_SERVER["REMOTE_ADDR"]} です";
そして禁じ手
$hoge = "あなたの IP は $_SERVER[REMOTE_ADDR] です";
500nobodyさん:03/09/17 17:26 ID:VsGth0S0
リンクをフォームのボタンの代わりに使おうとしています。
リンクで値を取得したい時は、url/***.php?aaa=bbb とか指定すれば
$_REQUEST で値が取得できるのと同じような事がしたいです。

フォームのボタンの代わりに使う場合には、
 1. どうやったらJavaScriptから値が渡せるのか
 2. 渡された値をどうしたらPHPで取得できるのか
両方判りませんでした。
上記1のHTML側は下記のように考えて見ました。
---
<SCRIPT language="javascript">
<!--
function mySubmit(formName,i){
formName.submit();
document.formName.dt.value=i;
}
// -->
</SCRIOPT>
---
<FORM method="post" action="test.php" name="test">
 <A href="javascript:mySubmit(fnctest,1)">リンク1</A>
 <A href="javascript:mySubmit(fnctest,2)">リンク2</A>
 <A href="javascript:mySubmit(fnctest,3)">リンク3</A>
</FORM>
---
hrefで指定した数値をPHPファイルの方で取得したいのです。
PHP4.3.2 で Smarty使ってます。よろしくお願いします。
501nobodyさん:03/09/17 17:55 ID:???
>500

そこまでできてるんならあとは form 中に hidden で箱つくっておいて
mySubmit で submit する前に値をセットしろ
502nobodyさん:03/09/17 18:03 ID:???
>>500
うむ、>>501 のもいいし、どうにでもなると思う

どーしても***.php?aaa=bbb にしたければ
submit()する前に、action プロパティを変えてやればいいし
503nobodyさん:03/09/17 18:24 ID:NPScx1nS
自分自身のフルパスを取得するのに
$URL = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'];
でバッチしでしょうか?
定石があれば教えてくだたい。
504500:03/09/17 18:42 ID:VsGth0S0
>501-502
ご返事ありがとうございます。
やはりJavaScriptで処理しておかないとダメなんですね。
--------
<HTML><HEAD>
<TITLE>テスト</TITLE>
<SCRIPT language="javascript">
<!--
function mySubmit(formName,i){
document.formName.dtt.value=i;
document.formName.submit();
}
// -->
</SCRIPT>
</HEAD><BODY>
<FORM method="post" action="/~bndb/test.php" name="fnctest">
<A href="javascript:mySubmit(fnctest,2)">リンク</A>
<INPUT type="text" name="dt" value="10">
</FORM>
</BODY></HTML>
--------
こんな風にして見たんですが、エラーになります。
何処がおかしいのでしょうか。

引き続きなのでここで質問しましたが、スレチガイが問題でしたら
移動します。。。
てか、、JavaScriptが全然できない事に気づきました。(;´Д`) ハァ〜
505500:03/09/17 18:44 ID:VsGth0S0
上記JavaScriptは以下に修正です。
function mySubmit(formName,i){
document.formName.dt.value=i;
document.formName.submit();
}
コピペ時のミスです。すみません。
506nobodyさん:03/09/17 19:01 ID:???
>>504
いやいや、JavaScriptを使うと言う指定は>>500であったんじゃないか
LINKの時に、href="***.php?aaa=bbb&ccc=ddd " とか
ずらずらつなげてやればそのままhtmlだけで使えない事も無いよ
507500:03/09/17 19:10 ID:VsGth0S0
>506
判りにくくてすみません。

リンクをクリックした時に、複数の操作をPHP側で処理したいのです。
他のフォームに入ったデータの送信もしたいのです。
そういう場合は、SubmitするためにJavaScriptじゃないとダメかなと思った次第です。
JavaScript使わなくて済む方法を知らないのです。

それに、URLの後ろにずらずらつけるのだと色々問題がありそうで、できることなら
POSTで処理したいです。

よろしくお願いします。
508nobodyさん:03/09/17 20:14 ID:???
PHPってCSVのファイルを読み込んで
表が作れるって書いてあったんですけど
サンプルにあるようなすべてを表示するような表ではなくて

No,Name,Info,Prise
1,てすと,てすとです,100
2,TEST,This is test,200



$name<br>
$info<br>
$prise円<br>

に入れることはできますか?
最初のNoのとばし方がわからないんです。

よろしくお願いします
509404.HDML ◆StMXML.EXE :03/09/17 20:41 ID:???
>>508
array_shift()
510503:03/09/17 21:30 ID:???
>>503 も、おながいしまつ。
511nobodyさん:03/09/17 22:18 ID:???
イインジャネーノ?
GETガアルトダメダケド
512404.HDML ◆StMXML.EXE :03/09/17 22:35 ID:???
>>510
$_SERVER['PHP_SELF'] だと、環境変数PATH_INFOが存在した場合にその
値まで反映してしまうので、もしやるんだったら、

$url = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'];
513503:03/09/17 23:48 ID:???
なるほど。
ありがとデス。
514nobodyさん:03/09/18 01:11 ID:???
>508
最初にヘッダー行のみ読んで、fpを進めてから処理すればいいだけ。

$header = fgetcsv( $fp, 1025, ',' ) ;
while( list($name, $info, $prise) = fgetcsv( $fp, 1025, ',' )) ; ;
515nobodyさん:03/09/18 09:20 ID:???
>514
とばしたいのは列のようだよ.
516nobodyさん:03/09/18 09:27 ID:???
>504

document.formName.dt.value=i;
document.formName.submit();

ここのところは

formName.dt.value=i;
formName.submit();

こうかな.
formName は変数だから document の下にくっつけたらおかしい.
517500:03/09/18 09:39 ID:2lD9YT1s
>516サン
をを!ありがとうございます!挑戦して見ます!
これで何とか思った通りの事ができそうです。
どうもありがとうございました!
できたらまたご報告します。
518500:03/09/18 10:47 ID:???
下記の方法で、リンクをフォームのボタンの代わりに使って、
POSTで値を受け取る事ができました。ありがとうございました。
---
<HTML><HEAD>
<TITLE>テスト</TITLE>
<SCRIPT language="javascript">
<!--
function mySubmit(formName,i){
  formName.dt.value=i;
  formName.submit();
}
// -->
</SCRIPT>
</HEAD><BODY>
<FORM method="post" action="test.php" name="test">
  <A href="javascript:mySubmit(test,1)">リンク1</A>
  <A href="javascript:mySubmit(test,2)">リンク2</A>
  <A href="javascript:mySubmit(test,3)">リンク3</A>
  <INPUT type="hidden" name="dt" value="0">
</FORM>
</BODY></HTML>
519nobodyさん:03/09/18 17:08 ID:???
他のphpファイルで使っている変数を 変数の値ごともう片方のphpファイルで
使用する場合どうすればいいでつか?

a.phpで使用している$a=1をb.phpで$aとして使いたい。
実際の値はその都度かわりますがとりあえず$a=1を使用したいのです。
520nobodyさん:03/09/18 17:19 ID:???
>519

変数を global 宣言するか,あるいはグローバル変数 $GLOBALS を使ってはどうですか?

◇$GLOBALS の説明
 http://www.php.net/manual/ja/reserved.variables.php#reserved.variables.globals
521519:03/09/18 17:55 ID:???
>>520

言い忘れましたが正確には
a.phpのファイルには $a=$_GET['c'];で$aに値がはいるようになっています。
でこの$aの中身をb.phpで使用したい場合ですが
b.phpで$a=$_GET['c'];と書いても$aの中身は空だったので
a.phpから持っていこうと思ったのですが・・・。
ちなみに$aの中身はバッチファイルです。
522nobodyさん:03/09/18 18:47 ID:MKHYTQCq
100以上あるHP内のファイルをそれぞれ全部require_onceを使って
同じ構文を読み込む形にしてるんだけど、こんなことして問題ない?
523nobodyさん:03/09/18 21:27 ID:???
小数点以下の切捨て
ってどうするんですか?
524nobodyさん:03/09/18 21:41 ID:???
マニュアル嫁
525nobodyさん:03/09/18 22:16 ID:???
>>521
b.phpの中でinclude("a.php"); のようにするの?
それとも、
b.php -> ブラウザに表示、ボタンクリック -> b.php なの?

>>522
読み込めない場合があるんじゃないか?って話なら、問題無いよ。
526522:03/09/18 22:32 ID:WxQfQBwo
>>525
ありがとう。
どちらかというと、メモリ消費の方を心配してたんだけど
こっちも問題ないのかな。ちなみに512メガです。
527nobodyさん:03/09/18 22:53 ID:???
ファイル1つあたり512MB??
そりゃやばいかも
528nobodyさん:03/09/19 00:06 ID:???
>>527
PHPのスクリプトで512M分B書いてたら、すごい。つか神。
(PHP自身のソースでもそんなに、にゃーよ)

実装メモリで512MBあれば問題ないと思うけど。メモリの使い方にもよるけど
529nobodyさん:03/09/19 11:13 ID:???
>>525

>b.php -> ブラウザに表示、ボタンクリック -> b.php なの?

こちらのほうです・・・。
リンクには  ○○○.php?c= ここまでしかでません。
530nobodyさん:03/09/19 11:43 ID:???
>529
a.php -> ブラウザに表示、ボタンクリック -> b.php じゃないんすか。
ソース出すのが早そう。

PostないしGetで値が受け取れてるかどうかチェック。
受け取れていたらどの処理で消失しているかチェック。
未定義エラーが出てないようなのでvar_dump();で。
531nobodyさん:03/09/19 12:53 ID:???
>519

a.php から b.php へどういう風に遷移するのかわからなければ
どうやって $a の中身を伝播させるかアドバイスのしようもないよ.
とりあえず前提条件無い場合の回答としては session を使うことかな.
532519:03/09/19 14:31 ID:???
私も説明しにくく、申し訳ないのですが
変数の中身がバッチファイルなのは前回に言いましたが

私がやりたいのはa.php?c=○○.batからb.phpにまずとぶことはできますが
それからb.phpからa.php?c=○○.datに戻ることができません・・・。
エラーメッセージはWarning: file("") - Inappropriate ioctl for device in /var/www/html/sr/goods4.php on line 200
と出ますが戻るリンクのソースを見るとa.php?c= しか表示されてません。
コードは'a.php?c='.$aとしています。
結果として$aにバッチファイルが入ってないからなのですがa.phpでは
最初にリンクとしてa.php?c=○○.datと指定してあるので$aに値は入るようになってます。
$aをb.phpで使用する方法がわかりません。
533nobodyさん:03/09/19 14:46 ID:???
>>532が、何もかもメチャクチャだと思うのは俺だけ?
534nobodyさん:03/09/19 14:49 ID:???
>519

b.php に飛ぶときにどうやってるんだ?
アンカーつかってるなら b.php?c=hoge って書いておかなきゃ
b.php の中で $_GET['c'] の中身は空になるのは当然だが?

フォーム使ってるなら method=get で hidden で値をセット
しておくとかなしなきゃだし.

説明しにくいのならやはりソースを晒すべきだろう.
(固有名詞やセキュリティに関する定数などは適宜置換してな)
535nobodyさん:03/09/19 15:57 ID:???
>>533
差し控えて頂きたい。!^^!
536nobodyさん:03/09/19 15:59 ID:fjORpedQ
php-4.3.2 を使っています。php.ini で allow_url_fopen をon にし、
HTTP/1.1 を使用しているサーバーに対して
$fp = fopen ("http://hogehoge.net/foober/", "r");
while(!feof($fp)){
  $line = fgets($fp, 4096);
  print $line;
}
などとすると、
failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
となってしまいました。

HTTP/1.0 を返すサーバーにたいしては、文字化けするものの、
読み込んで表示することができました。

HTTP/1.1 を返すサーバーに対して、上記相当のことをしたい場合、
どういう手段をとれば良いのでしょうか? アドバイスをお願いします。
537nobodyさん:03/09/19 15:59 ID:???
飛んだら変数はそのまま渡せんがな
538nobodyさん:03/09/19 16:15 ID:???
>536

fopen 使った方法はちょっとわからないけど過去スレにあった
fsockopen を使った参考ページを載せておく

ttp://www.spencernetwork.org/memo/tips-3.php
539nobodyさん:03/09/19 16:26 ID:???
>>536
「HTTP/1.1 403 Forbidden」ってなぁに?
540nobodyさん:03/09/19 16:56 ID:???
>>539
「お前にはやらん」
541nobodyさん:03/09/19 17:31 ID:???
>532Todoです。

a.phpとb.phpの関係をはっきりしろ。
値の渡し方をはっきりしろ。
Echoデバッグしたのかはっきりしろ。
.datか.batかはっきりしろ。
$a, $_GET['c']がファイル名なのか内容データなのかはっきりしろ。
$a = $_GET['c'] という無駄な処理をどっちのファイルでやってるのかはっきりしろ。
$aに値が入ってるのかどうかはっきりしろ。
b.phpに値をどうやって転送したのかはっきりしろ。
http://jp.php.net/manual/ja/language.variables.external.phpを試したのかはっきりしろ
542あぼーん:あぼーん
あぼーん
543nobodyさん:03/09/19 18:29 ID:???
あちゃー やっちゃいましたねー 
544nobodyさん:03/09/19 18:30 ID:???
>>542

通報しますた
545nobodyさん:03/09/19 19:12 ID:???
542のカキコまじでやばくない??
546nobodyさん:03/09/19 19:18 ID:???
<?php
//kinen.php

die('>>542');

?>
547nobodyさん:03/09/19 19:21 ID:???
548519:03/09/19 19:32 ID:???
>>542
はい、すいません・・・。
そもそもこのスクリプトはショッピングカートでフリースクリプトを改造してます。
>a.phpとb.phpの関係をはっきりしろ。
a.phpは商品のページであり、ここから買い物かごにいれるとb.phpに飛んで
合計金額、発注できるようになっています。
この中でまた商品を選びたいときにa.phpに戻りたいわけですが
フリースクリプトではカテゴリがひとつしかないので
$_GET['c']でdatファイルわけで複数のカテゴリを作ってます
>値の渡し方をはっきりしろ。
設定のページを新たに作ってフォームに入力すると新規datファイルを作成します
それをa.php?c=○○.batでリンクを張っています。
a.phpには$a=$_GET['c']と書いてあるので$aにはdatファイルが入ってます。
echoで確認済み。
>Echoデバッグしたのかはっきりしろ。
上記の通りです。
>.datか.batかはっきりしろ。
.datです。
>$a, $_GET['c']がファイル名なのか内容データなのかはっきりしろ。
ファイル名です。中にはデータが入ってます。
>$a = $_GET['c'] という無駄な処理をどっちのファイルでやってるのかはっきりしろ。
a.datファイルでやっています。
>$aに値が入ってるのかどうかはっきりしろ。
a.phpでは値が入ってます。
>b.phpに値をどうやって転送したのかはっきりしろ。
転送できてません・・・。
http://jp.php.net/manual/ja/language.variables.external.phpを試したのかはっきりしろ
初心者なので試し方がわかりません・・・。
549nobodyさん:03/09/19 20:01 ID:???
>>548
おお、相変わらず謎ですね。
ショッピンカートなら>531のいうとおりセッション変数に放り込んでしまえばいいと思う。

リンクアンカーで渡すなら、b.phpを呼び出すときにクエリをつけるだけ。>534に書いてあるが、
要するに <a href="b.php?a=xxx"> を踏ませれば、bが呼び出されるときに値がセットされる。

b.phpにPostするならなら、フォーム内に <input type="hidden" name="a" value="xxx"> か何かを
創れば、ポチっと逝ったときにb側の $_POST に値が入る。

Htmlから、b.phpを呼ぶときにPOSTかGETで値を渡す、もしくはセッション変数に $_GET['c'] を
放り込んでページ越境するのいずれかの方法を。
550nobodyさん:03/09/19 22:18 ID:???
DBから「ユーザー名」・「パスワード」・「カテゴリ」を参照したいのですが、
「カテゴリ」の取得だけ、どうしても上手くできません。
自分なりにいろいろ調べてみたのですが、どうしてもわからないので、
ご教授願いたくカキコします。よろしくお願いします。

$master = @mysql_connect("ぬるぽ", "hoge", "hogehoge") or die("サーバに<br>接続できません。");
@mysql_select_db("master", $master) or die("データベースに<br>アクセスできません。");
$users = @mysql_query("SELECT * FROM users", $master) or die("テーブルに<br>アクセスできません。");
$user = @mysql_fetch_array($users) or die("値を取得できません。");
foreach($user as $key => $value){
if($user[id] == $_SESSION["id"] && $user[pass] == $_SESSION["pass"]){
$_SESSION["category"] = $user[category];
break;
}elseif($user[id] == $_SESSION["id"] && $user[pass] != $_SESSION["pass"]){
$case = 1;
}
}
…いくつかの処理が続く

当然ですがSessionはすでにスタート済みで、
$_SESSION["id"]と$_SESSION["pass"]は
ユーザが入力したのを$_POSTまたはCookieから代入しています。
DBより、「ユーザー名」と「パスワード」が一致したら、
「カテゴリ」を$_SESSION["category"]に代入し、
表示できるページをコントロールできるようにしたいと考えています。

低レベルな質問かとは存じますが、お力添えいただければ幸いです。
551nobodyさん:03/09/19 22:28 ID:???
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>550
 (_フ彡        /

"select id, pass, category from users where id = '".addslashes($_SESSION['id'])."' and pass = '".addslashes($_SESSION['pass'])."'";

ってSQL流した方がいいんでない?
552nobodyさん:03/09/19 23:58 ID:???
せんせー!動きません!!
エラーすらでません!
どこが悪いのか教えてください!(頭以外。

<?php
$data = file("http://slashdot.jp/");
$i = 0;
foreach ($data as $v) {
if (ereg("dispStory;misc;default -->", $v))
break;
$i ++;
}
for (; $data[$i]; $i ++) {
$v = trim($data[$i]);
if (ereg("<font size=\"4\" color=\"#FFFFFF\"><strong>", $v)) {
$topic = ereg_replace("<[^<]+>", "", $v);
} elseif (ereg("もっと読む", $v)) {
$v = strip_tags($v, "<a>");
$v = ereg_replace("\( |\|.*", "", $v);
$v = ereg_replace("もっと読む…", $topic, $v);
echo "<li>$v</li>\n";
} elseif (ereg("fancybox;misc;default", $v)) {
break;
}
}
?>
553nobodyさん:03/09/20 01:25 ID:???
>>552
エラーが出ないってことは動作してるんだよ
ブラウザの漢字コード変えたりしてブラウザからソース確認できる?
554nobodyさん:03/09/20 01:34 ID:???
errorなしでブラウザ上のソースも空ですね。。。
何も出力されてませんね。
555nobodyさん:03/09/20 01:37 ID:???
555、と。
556nobodyさん:03/09/20 02:45 ID:???
初心者です。配布CGIの設置(主にBBSやチャット、自動リンク)はしたことがあるのですが、
scriptをいじったことはありません(パスワードや色の設定、アクセス制限くらい)

で、サイトにきてくれる人の自己紹介名簿を設置しようと思い、検索したところ
ttp://www.avion.co.jp/kamui/main_f_ent.html
というのを見つけました。どうやらPHPを使っているようです。
機能もかなり充実しているのですが、それを検索しても出てきません。
かれこれ1年くらい検索しているのですが、やはり配布していないのでしょうか?

このような自己紹介名簿(みんなのプロフィールSPは有料・・・)を配布している
ところは存在しないのでしょうか?

全くの初心者がこのような専門板に書いて申し訳御座いません。
ほんとよろしくお願いします。長文ごめんなさい・・・
557nobodyさん:03/09/20 03:10 ID:???
>>556
そうか、1年くらい検索してたのか。
その間にPHP勉強して自作できてたね。
558nobodyさん:03/09/20 03:14 ID:???
>>556
おもしれぇなぁ。
これネタだったら、座布団1枚ってところだね。
1年間何してたの?
1年あれば、十分自作するだけの勉強はできたね。
でも、1年経っても検索スキルが上がらないようなら、自作も無理かw
559nobodyさん:03/09/20 03:33 ID:???
1年間ぶっとうしで探していたわけじゃないんです。
PHPて私にとって敷居が高すぎるというイメージがあって
PHPやXOOPSの解説サイト見てもちんぷんかんぷんなんですよ。

煽るだけで、その実わからないんじゃないの?
560nobodyさん:03/09/20 03:38 ID:???
で、私が聞きたいのは、
ttp://www.avion.co.jp/kamui/main_f_ent.html
のようなのが配布してあるかどうかってことなんです。
色々自己紹介名簿の配布CGI見つけたけど、
それっぽいのはみんなのプロフィールSPというのでした。有料だけど。
確かにヘボサイト5年近くやってるけど、CSSもわからないし。
検索に関しては、WEB板のPRスレ、ロボットエンジンスレ系を初代から
見てますよ。

敷居が高い板は、初心者には不親切ですね。
561nobodyさん:03/09/20 03:47 ID:???
>>560
ただのCGI探しはこの板じゃないの
こっちへ行ってね

【CGI】こんなCGI探してますver.10【素材】
http://pc2.2ch.net/test/read.cgi/hp/1059878840/
562nobodyさん:03/09/20 03:52 ID:???
>>561
ttp://www.avion.co.jp/kamui/main_f_ent.html
は、PHP使ってるんで、こちらのスレがいいと思ったんですが。
WEB板に帰ったほうがいいのかな。
563nobodyさん:03/09/20 04:36 ID:???
>>562
です。ここは一応Webプログラミング板なんで。
プログラムの話じゃなくても、要件(こういう機能があって、こうした時はどうのこうの)が
きちんと出せるならここでも良いと思うけど、多分漠然としたものしか出せないでしょ。
564550:03/09/20 05:54 ID:???
>>551
レスサンクスです。

$_SESSION["category"] = @mysql_query("SELECT id, pass, category FROM users WHERE id = '" . $_SESSION["id"] . "' and pass = '" . $_SESSION["pass"]) . "'";

ってことでいいんですよね?もちろん、addslashes付きでも試してみたのですが。
ダメです。echoデバッグしてもなんの値も帰ってきませんでした。
せっかくレスいただいたのにすいません。出直してきます。
565nobodyさん:03/09/20 06:24 ID:???
>>564
新しい知識の量に溺れてしまってる気がする。以下PHPのマニュアルからの抜粋。

mysql_queryはクエリーが成功したかどうかを 表すためにTRUE(非ゼロ)またはFALSEを返します。
またSELECT文の場合は、クエリーが成功してれば新規の結果IDを返します。
このIDは、mysql_result()の引数とすることができます。
参照:http://www.php.net/manual/ja/function.mysql-result.php

実際には、mysql_resultの説明の下の方にある記述のとおり、
別の関数(mysql_fetch_*)を使うことが殆ど。具体的な値の取り出し方は
googleでその別の関数を探せば多数の例が見つかると思うので、
焦らずに、もちょっと腰落ち着けて読んでみるのがいいよ。
566565:03/09/20 06:32 ID:???
550見てみたら、判ってるような判っていないような...
変数の使いまわし(and違和感のある命名)してるようなんで、判りづらいッス。
567nobodyさん:03/09/20 08:31 ID:???
>>564
関数の前に @ を付けていたらエラーが出ないのは当然では?
@ を外してエラーを表示させてみたら分かるかも。

もし、Web ブラウザにエラーを表示させたいのであれば、先に
ini_set('display_errors', 1);
を実行するのを忘れずに。

php.ini で display_errors が Off になっている可能性があるので。
568nobodyさん:03/09/20 12:00 ID:???
>>554
そのソース、まんまコピペして動かしたらちゃんと動作したぞ
別の理由じゃないか?
そもそもphpなんだから前後にHTML書いておけば少なくとも
何もでないってことは無いだろ?
569nobodyさん:03/09/20 12:22 ID:???
>>554
私も自鯖(DDNS使用)で動かそうとしたら白紙でした・・・
568さんがいうようにソースに問題がないとしたら、何が問題なのでしょう・・・
570nobodyさん:03/09/20 12:40 ID:???
>>569=554
571nobodyさん:03/09/20 12:41 ID:???
>>569
必要なRequet headerを全て付けてページを要求しる

なにが必要かは知らんが、IE6.0が送るもんと
同じものをおくってみな。

572564:03/09/20 12:42 ID:???
レスありがとうございます。

>>565
ええ、溺れているどころか思いっきり見ず飲み込んで心配停止、脳酸素欠乏状態です。
PHPはおろかWEBProgというかプログラミングを組む事自体が初めてなんです(;^_^A アセアセ…
つい2〜3週間前に勉強を始めたばかりでして、検索スキルもまだ身に付いてないのかもしれません。
mysql_fetch_assoc,object等も試したのですが、やはり同様の結果しか得られませんでした。
変数の使い回しはしてない(ハズ)と思います。しかし、仰るとおり見にくいソースかもしれません。
個人の趣味ページなのでまぁいいか…的な考えではここに書きこする権利ありませんね…
いろいろと調べていただいたのに申し訳ないです。

>>567
@無しでもやってみました。
ローカルテストサーバ、リモートサーバ両方ともなんのエラーも出ません…
ちなみにローカルのphp.iniの設定は確認済みです。
573 :03/09/20 16:21 ID:???
配列をグローバルとして扱いたい場合どうやるんですか?
$GLOBALを使いたいんですがどうしても上手くいきません。
574nobodyさん:03/09/20 16:35 ID:???
なんで上手くいかないの
575nobodyさん:03/09/20 16:40 ID:+4uOTOE1
PHPのクラス構造について手を伸ばしました。

<?php
class test{
function test(){
$this->old = $old;
}

function makestr($name){
$rec = $name."の年齢は".$this->old."才です";
return($rec);
}

}
$c = new test();
$c->old = 24;
$sd = $c->makestr("私");
print $sd;
exit;
?>

メンバ変数$oldに年齢をいれてメンバ関数makestrに名前文字列を格納し
た引数を渡して戻り値に結合を文字列指定してやり結果として

私は24才です

と表示されるように意図しています。
結果は意図した通りに得られましたが構文や用法としてこれは正しい
のでしょうか?
おながいします。
576nobodyさん:03/09/20 16:42 ID:???
$this->old = $old;

イラネ
577575:03/09/20 16:43 ID:+4uOTOE1
$this->old = $old; が初期値を設定するつもりは無いので
$this->old = "";
が正しいのかとか思うんですがどうでしょうか?
他にもアフォな部分あればおながいします。
578 :03/09/20 16:44 ID:???
$GLOBALって配列ですよね?だから多次元配列の容量で参照すればいいのかなと思ったんだけど、$GLOBAL[hoge][0][0]とかってできないんですよ。
連想配列と配列って一緒には使えないんですか?
579nobodyさん:03/09/20 16:51 ID:???
>>577
それでいい。
でも
var $old = "";
の方が正しいのかな。
varについては、現段階ではあんま意味無い絵k度
580nobodyさん:03/09/20 16:53 ID:???
<?php
$GLOBAL['hoge'][0][0] = 'hoge';
echo $GLOBAL['hoge'][0][0];
?>

何の問題もないが。
581575:03/09/20 16:54 ID:+4uOTOE1
>>576
さっそくありがとうございます。
こういうのは初期値を設定してメンバ変数を初期化したい場合に
用いるんでしょうか?
プロトタイプ宣言っていう類ですよね。
582nobodyさん:03/09/20 17:08 ID:c49yCwnt
>>575
何のためにクラスを書くんだよ?

普通はこんなもんだろ。

<?php
class person {
 var $age = '年齢不詳';
 var $name = '名無しさん';
 var $sex = 'お釜かお鍋';

 function person($age = null, $name = null, $sex = null) {
  $this->age = isset($age) ? "{$age}歳" : $this->age;
  $this->name = isset($name) ? $name : $this->name;
  $this->sex = ($sex == '男') ? '男性' : (($sex == '女') ? '女性' : $this->sex';
 }

 function show_info() {
  return "{$this->name}は、{$this->age}の{$this->sex}です。";
 }
}

$man = new person(15, 'ギコ猫', '男');
echo $man->show_info();

?>
583nobodyさん:03/09/20 17:36 ID:???
変数の引渡しができません、助けて下さい。
----------------------------------------------
値をフォームに入力するファイル( test1.html )

<html><body>
<form action="test4.php">
<input type=text name=yyyy>
<input type=submit value="送信">
</form></body></html>



test1.htmlより渡された値を受け取るファイル( test1.php )

<HTML><BODY>
<? $hensuu = $yyyy - 1000;
print "$hensuu "; ?>
</BODY></HTML>

-1000 という結果が表示されます( test1.htmlのフォームに0をいれない場合 )
584575:03/09/20 17:37 ID:+4uOTOE1
>>582
用法として参考になります。
でも私の環境(Apache2.0.47+PHP4.3.3)ではerrorなるのは仕様の違いでしょうか
585nobodyさん:03/09/20 17:44 ID:???
>>584
誤 $this->sex = ($sex == '男') ? '男性' : (($sex == '女') ? '女性' : $this->sex';
正 $this->sex = ($sex == '男') ? '男性' : (($sex == '女') ? '女性' : $this->sex');

閉じ括弧がぬけてた、スマソ。
あとは全角スペースは適当に置き換えれ
586585:03/09/20 17:47 ID:???
間抜けだ >もれ
正 $this->sex = ($sex == '男') ? '男性' : (($sex == '女') ? '女性' : $this->sex);
587nobodyさん:03/09/20 17:49 ID:???
register_globalsがらみのヤシは何時のサンプル、マニュアル、参考書見て勉強してるんだろ。
588575:03/09/20 17:54 ID:+4uOTOE1
>>586
ありがとうございます。

 var $age = '年齢不詳';
 var $name = '名無しさん';
 var $sex = 'お釜かお鍋';

 function person($age = null, $name = null, $sex = null) {
のnull値が有効でないんですがこれはどうすればよいんでしょうか
589nobodyさん:03/09/20 19:07 ID:???
>583
何もかも駄目。マニュアル行き。

>588
あれ、仮引数つかえないの?
590nobodyさん:03/09/20 19:12 ID:???
違った。仮引数 -> デフォルト値
591583:03/09/20 19:44 ID:???
逝ってくるのれす (´▽`)
はじめてのプログラミングなのれす
592nobodyさん:03/09/20 19:46 ID:???
基本的には、プロパティの宣言と初期化は同時にやったら駄目。
宣言だけして、初期化はコンストラクタ内で。
593nobodyさん:03/09/20 19:49 ID:???
>591
マニュアルの「U.7章、PHPの外部から来る変数」んとこです。
594583:03/09/20 20:00 ID:???
>>589
できたのれす! $_post[]を利用したのれす!
小一時間小躍りしてくるのれす!(´▽`)
595575:03/09/20 21:00 ID:+4uOTOE1
Delphiのクラス慣れてたんですが勝手が結構違いますね。
好みの差ですが。お手軽さではPHPが分があるかも
596nobodyさん:03/09/21 05:20 ID:???
PHP、DB関連でのお勧め書籍を教えて下さいペモ
597nobodyさん:03/09/21 06:18 ID:???
http://www.1kara.net/php/basic/install.php

ここの真ん中下辺りの、
Apacheの設定ファイルを変更と言うのが分かりません。
PHP.iniはPHPの設定ファイルだから、Apache.iniと言うファイルがあるのでしょうか?
598nobodyさん:03/09/21 06:33 ID:???
掲示板を作るにはDBの知識は必要ですか?
規模の小さい簡単な物だったら必要無いのでしょうか。
(DBに対する知識は全くありません。PHPも同様です。)
599nobodyさん:03/09/21 06:49 ID:???
>597
httpd.confに決まってる。

>598
不必要。

>DBに対する知識は全くありません。PHPも同様です。
意味不明。
600nobodyさん:03/09/21 07:18 ID:???
>>599
レスありがとうございます。
でもそのアドレス(?)入れてみても何も出ませんでした。
apache起動後にやってみたのですがダメでした。
ごめんなさいバカで。
601nobodyさん:03/09/21 07:26 ID:???
>>600
Cドライブからhttpd.confというファイルを検索しる。

>>598
自分のしたいことを相手に正確に伝えるスキルが必要かと。
602nobodyさん:03/09/21 07:36 ID:kPJ/tg2Z
>>600
httpd.confも知らないで何故apacheがインストール出来ているのか
不思議でしょうがないんだが。

windowsならapacheをインストールしたフォルダにあるhttpd.confを
そのおまいさんが参考にしてるページの通りに書き換えなさいって事だべ?
603nobodyさん:03/09/21 07:48 ID:???
レスありがとう

httpd.confは書きかえれましたが、最後のアドレスを入力すると、
ページが表示されずにファイルのダウンロードが始まってしまいます。
これは別の所の設定が違ってるのかな。

>>602
インストーラが勝手にやってくれました>apache
604nobodyさん:03/09/21 09:30 ID:???
【PHP】質問スレッド Part10
http://pc2.2ch.net/test/read.cgi/php/1064104114/
605nobodyさん:03/09/21 12:22 ID:YodxgvUG
Apache2ならここにある
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
で173行目あたりに

LoadModule php4_module c:/php/sapi/php4apache2.dll
AddType application/x-httpd-php .php

を追記して再起動

意味を簡単に説明すると
Apacheは本体以外にオマケがいっぱいあってそれらが各種機能を
実装してる。Windows機においてPHPを追加するなら「php4apache2.dll
も抱き合わせで起動しろ」と指定する事でApacheがPHPを自分の一部
に取り込んでくれる。これは本来なら外部アプリのはずのPHPを
Apacheと合体できるようにする接点として機能する。
で、.phpファイルがPHPを記述したファイルだよと教えてあげれば完了。
ビックワン・ガムと同じでオマケも重要な要素になる。
606nobodyさん:03/09/21 19:12 ID:???

フレームチャットを作っています。
URLから変数を受け取り、どのモードで動作するか決定しているのですが
入室前はchat.phpで入ります。

もし$modeがformならform画面を表示、logならログを表示
という感じにしているのですが、$modeが無い場合、つまり
chat.phpでアクセスしたときは、フレームを作成する(上下二分割)ようにしています。

その場合、 if ( !$_GET['mode'] ) { MakeFrame(); }
とすると、ちゃんと動作はするのですがエラーがでます。
@マークをつければエラーは消えるのですが、
つけずに処理を行いたいのです。どなたかご教授下さい。
607nobodyさん:03/09/21 19:29 ID:2Z6bD5eu
正規表現なんですが、

perlの~ /\W/
はphpでは何になるか教えてください。
eregでは使えないと書いてあったのですが、本当でしょうか?

躓いています。
608nobodyさん:03/09/21 19:32 ID:???
isset($_GET['mode']) || MakeFlame();
609608:03/09/21 19:33 ID:???
うっわ、恥ずかしいスペルミスしてるよ。LANケーブルで吊ってくる
610nobodyさん:03/09/21 20:07 ID:???
配列内の文字列の置換を行いたいのですが

$test="リンゴ","200";
$data = "リンゴ", "赤いリンゴ","熟したリンゴ","青いリンゴ";

と定義した配列を
test[0]と全く同じの$data[0]のみ$test[1]に置換するには
どうしたらよいでしょうか?
611nobodyさん:03/09/21 20:12 ID:???
X個のデータがデータベース内にあるとして
<tr><td>$row[url] $row[name]</td><td>$row[url] $row[name]</td>・・・</tr>
<tr>・・・</tr>
といった出力を得たい場合にどのようにすれば良いのでしょうか。
ご指導頂ければと思い書き込ませてもらいます。

$query ="select name,url from links where types = 'aboon'";
$result = mysql_query($query);
while($row = mysql_fetch_array ($result)){
echo "<td>$row[url] $row[name]</td>";
}

PHP4.3+mysql
612nobodyさん:03/09/21 20:14 ID:???
$data[0]=$test[1];

またはarray_searchかin_arrayを使って痴漢する
613nobodyさん:03/09/21 20:15 ID:???
echo "<td>{$row[url]} {$row[name]}</td>";

にしても、この質問やたら多いな
614612:03/09/21 20:15 ID:???
>>610へのレスね
615611:03/09/21 21:05 ID:???
説明が不足しておりました。<(_ _)>
<tr>
<td>$row[url] $row[name]</td> ←これを4度繰り返す
</tr>
<tr>
<td>$row[url] $row[name]</td> ←そして、まだデータがある場合は2行目を生成する
</tr>
・・・以下、3行、5行とデータがある限り続行する。

よろしくご指導のほどお願いいたします;
616nobodyさん:03/09/21 22:43 ID:???
>605
パターナリズムは駄目初心者を増やすだけだぞ。
617nobodyさん:03/09/21 22:44 ID:???
>>607
[^[:alnum:]_]

最近だとPCRE(preg_???関数)は標準で有効だから、
ターゲットでphpinfo()なりしてほんとに使えないのか確認したほうがいいよ。
eregは互換のためだけでメリットないから。
618nobodyさん:03/09/22 00:49 ID:???
>>615
説明不足しすぎ。
4列で改行させたいのであれば、while{}中で$c=1,$c=2.....とカウントしていき、$c=4となったら
echo "</tr><tr>";
を挟み込んではどうだろう
619611:03/09/22 03:37 ID:???
for($t = 1; $t <= 8; $t++){
echo "<tr>";
for($i = 1; $i <= 4; $i++){
$row = mysql_fetch_array ($result);
echo "<td>$row[url] $row[name]</td>";
}
echo "</tr>";
}

まったく不備だらけで申し訳ございませんです。
自分なりにやってみましたが・・・
・・・これじゃ、セルが埋まるたびにfor($t = 1; $t <= 8; $t++){をいじらないといけないですよね(汗

>>613 >>618
説明不足でしたすみません。
whileの中でカウントをする方法がわかりま(ry

逝ってきます・・・
620nobodyさん:03/09/22 04:39 ID:???
UN*XのShell上から使える日本語のオンラインマニュアルってないのでしょうか?
621606:03/09/22 07:02 ID:???
>>608

ありがとうございます。無事にエラーがでませんでしたm(_ _)m
622nobodyさん:03/09/22 07:39 ID:???
掲示板を作っているのですが、壁にぶつかりました。
ログを新しい順に表示するにはどうすれば良いのでしょうか。
以下の手順をやってみましたが、どうも効率が悪い気がします。

1)$aaa=file("aaa.txt"); ログの内容を全て読み出す。
2)$fp=fopen("aaa.txt","w"); ログを消去。
3)fwriteで今投稿された内容を書きこむ。
4)読み出しておいた元のログを続けて全て書き込み直す。

こうする事で表示方法を変えずにログの中身を新しい物から順に並べられると思ったのですが、
一々ログを読み出すと言うのがちょっと・・・効率が悪そうです。
何か良い方法はありませんか?
623nobodyさん:03/09/22 08:20 ID:???
>>622
悪いったって新しいものを前に書くとなるとどんなやりかたでもそんなふうになるだろ
ファイル自身には古い順に書き足していって、表示するときにひっくりかえす、とか?
624nobodyさん:03/09/22 09:03 ID:???

http://***.***.com/test.php?word=abc&page=1

このような「?」以降のクエリデータをまるごと取得するにはどのようにすればよいのでしょうか?
625nobodyさん:03/09/22 09:14 ID:???

$_SERVER['QUERY_STRING']でできました。すいません。
626nobodyさん:03/09/22 11:07 ID:???
>>623
レスありがとう。
その方法で解決しました。
whileとarray_popを使って表示方法を変更し、
ログの上書き等をせずに新しい物から順に表示する事に成功しました。
これなら鯖負荷も小さそう(?)です。

PHPは楽しいですね。
627nobodyさん:03/09/22 11:26 ID:???
応募フォームで応募してきた人に返信メールを送りたいのですが
それに受付番号などを自動的に割り振ることは可能でしょうか?
またどうやってやればいいでしょうか?
628nobodyさん:03/09/22 12:18 ID:???
>>627
ただの連番でいいならカウンタの仕組み使ったら?
629nobodyさん:03/09/22 13:17 ID:???
掲示板で現行ログの最大保持数を超えたら、
現行ログを過去ログへ移動させたいんだけど、
その時の過去ログのファイル名を、
log + 今ある過去ログのファイル数プラス1 + .txt
としたい。(例:log1.txt log2.txt log3.txt .......)

これを実現する為に、ログとは別にkanri.txtと言うファイルを新たに作って、
そこに現行ログの投稿数と過去ログのファイル数を記録するようにしたんだが、
どうも上手く行かない。

考え方がすでに悪いのだろうか?
自分でもかなりややこしいキモイ事してる希ガス。
とりあえず実装したいのは、「現行ログの最大保持数を超えたら過去ログへ移動」
そして後から過去ログを観覧しやすいようにする事、です。
630nobodyさん:03/09/22 13:21 ID:+PAcu5+e
負荷かかるけどファイル数を調べて+1するとか。
一番無難なのは現行と過去ログの管理ファイルを分ける事。
631nobodyさん:03/09/22 13:25 ID:+PAcu5+e
>>626
漏れは他の言語で応用が利くようにする為にもそういうPHPにしかないような
マイナーな関数は自分で作ってしまう。
値渡しの引数が理解できればすぐに実装できるはず。
632nobodyさん:03/09/22 14:23 ID:???
>>629
log生成年月日.txt とかはどうだろうか。一日でログが一杯になることはないし、
もしもそういうことが考えられるのなら時間も足すってことで。
633nobodyさん:03/09/22 14:24 ID:???
>629 >630

ログファイルがかならず揃ってる保証は無いので
ファイル数を見るのはあてにならないと思われ
漏れならファイル名に日時を含めるようにするね

掲示板のログファイルなら日時がかぶるほど
更新頻度は上がらないだろうし
634nobodyさん:03/09/22 14:27 ID:???
ケコーンしてしまった

補足情報としてログファイルにはヘッダ情報を含めると
後々活用できていいと思うよ

特にログファイルのバージョン情報を持たせておけば
データ移行時も楽だ
635nobodyさん:03/09/22 14:29 ID:???
新しく新規で作ったページを他のページに自動リンクさせる方法はありますか?
636nobodyさん:03/09/22 14:34 ID:???
htmlを書き換える。以上。
637nobodyさん:03/09/22 14:36 ID:???
638635:03/09/22 14:36 ID:???
訂正

設定ファイルというものを作ってフォームに名前を入れると
そのページが自動作成。
そのページをTOPページからいけるようにTOPに自動リンクを張りたい。
・・・・教えれ。
639635:03/09/22 14:37 ID:???
>>636
自動でっつってんだろ
640nobodyさん:03/09/22 14:38 ID:???
トップページを書き換える。以上。
641nobodyさん:03/09/22 14:43 ID:???
>>639
ページ自動作成PHPにトップページ書き換えのルーチン入れりゃいいだろ。
642nobodyさん:03/09/22 14:44 ID:???
自動でhtmlを書き換えればいいだろうが
643nobodyさん:03/09/22 14:44 ID:???
<!-- DATA_IN -->
<!-- DATA_OUT -->
というタグを入れておいて、その間を書き換えるようにする。
こうすりゃ自動だ。文句言う前に少しは考えろよ。
644nobodyさん:03/09/22 14:44 ID:???
2重婚
645nobodyさん:03/09/22 14:45 ID:???
この馬鹿はプログラムの丸投げしたいだけか?
646635:03/09/22 14:47 ID:???
言うのは簡単なんだよ

初心者の俺にわかりやすくおまいらサンプルコードぐらい書けや
647nobodyさん:03/09/22 14:49 ID:???
なんだ、釣りか。
648635:03/09/22 14:52 ID:???
釣りじゃねー
649nobodyさん:03/09/22 15:08 ID:???
こいつは釣り師じゃないな
本気で言ってる
やばい
650nobodyさん:03/09/22 15:19 ID:???
こいつ口調からして他の初心者系スレで暴れまわってるやつだろ。
あんまりいじめると逆切れして執拗なコピペ荒らしを始めるから、
完全スルーするがよろし。
651nobodyさん:03/09/22 15:22 ID:???
そうしよう
652635:03/09/22 15:38 ID:???
おまいらほんとはわからんのだろ?
初心者板だしな、馬鹿ばっかだな・・・。
653nobodyさん:03/09/22 15:40 ID:???
スルーだな。
654nobodyさん:03/09/22 15:59 ID:???
ああ、スルーだ。
655nobodyさん:03/09/22 16:01 ID:+PAcu5+e
>>635
これを徹底的に改造汁。

http://org.s38.xrea.com/autolink.php
656nobodyさん:03/09/22 16:02 ID:???
非望中傷は、ダメ・ヨ!
657nobodyさん:03/09/22 16:03 ID:???
作ってやるから金くれ
658nobodyさん:03/09/22 16:03 ID:???
本7死ね
659nobodyさん:03/09/22 16:14 ID:???
× 非望中傷
○ 誹謗中傷
660nobodyさん:03/09/22 16:15 ID:???
>635

スレ違いだし板違いなんじゃないの?
Web制作あたりにいってみれば?この辺か?
【CGI】こんなCGI探してますver.10【素材】
http://pc2.2ch.net/test/read.cgi/hp/1059878840/l50
661nobodyさん:03/09/22 16:16 ID:+PAcu5+e
ガキはアメやりゃ泣き止む
662nobodyさん:03/09/22 16:55 ID:???
とりあえず、教えて貰う奴は謙虚な姿勢で臨めよな
そっちの態度一つで答えられる物も答えたくなくなるから
663nobodyさん:03/09/22 17:27 ID:qbVE7obs
データベースから表示させたデータのリストを
検索したり検索解除(=全件表示)したりする物を作りたいと思ってます。
こんな感じです↓
<FROM action="test.php" method="post" name="test">
 <INPUT type="text" name="txtfil">
 <INPUT type="submit" value="検索" name="btnfil">
 <INPUT type="submit" value="解除" name="btnclr">
</FROM>

表示データを検索する物はできたのですが、ここで疑問があります。
HTMLの <INPUT type="submit"〜> は、一つのFROMに対して
一つしか使えないのでしょうか?

一応<INPUT type="submit"〜> にもname属性があるので、どのボタンを
押されたのかの判別ができるのではと考えました。
PHPでは、一つのFROM内のどのsubmitボタンが押されたかを
判別するにはどうしたら良いのでしょうか?
それとも、そのような事はできないのでしょうか?

PHP4.3.2 で Smarty使ってます。よろしくお願いします。
664nobodyさん:03/09/22 17:42 ID:+PAcu5+e
>>663
少しは自分で試せやヴォケ

http://org.s38.xrea.com/unko.php
665nobodyさん:03/09/22 17:48 ID:???
FROMか・・・
666nobodyさん:03/09/22 17:51 ID:???
>>662
謙虚かどうかよりも、

1.こういうことがしたい(具体的に)
2.で、こういうことを試してみた(ここ大事)
3.でも、こういうエラー(現象)がでてダメだった
4.特に分からない部分を具体的に

が揃ってるかどうかだな。
特に2が抜けてて「xxがやりたいんで作ってください」みたいな
ヴァカが多すぎる。
667nobodyさん:03/09/22 17:59 ID:???
FROMはオレもよくやるんだよなぁ
単語として普通だからタイプミスに気がつかないw
668nobodyさん:03/09/22 18:17 ID:???
そういや、技術評論社のPHPポケットリファレンスはTRUEの誤植が凄く多かったな。
TUREって書いてあった。
669nobodyさん:03/09/22 18:43 ID:0NQ8na7X
初心者でPHPを勉強してるのですが、うまくいきません。どうかご教授ください。
PHPのバージョンは4.3.3です。
sample.php

<FORM>
<INPUT TYPE="TEXT" NAME="aaa" VALUE="">
<INPUT TYPE="SUBMIT">
</FORM>

<?php
echo $aaa;
?>
これだと Undefined variable: aaa が出ます。
かといって、次のようにaaaを定義しても、サブミットの度にクリアされしまいます。
どのようにaaaを定義すればよいのでしょうか?
<?php
(string) $aaa="";
?>

<FORM>
<INPUT TYPE="TEXT" NAME="aaa" VALUE="">
<INPUT TYPE="SUBMIT">
</FORM>

<?php
echo $aaa;
?>
670663:03/09/22 19:04 ID:???
>664 ウホッ! スバラスィ〜サンプル、アリガトウ!! (´ε`)-♪

大変良く判りました。unko.phpファイルは宝にします。
ちなみに、下記フォームを
----
<form method="POST">
<p><input type="submit" name="B1" value="送信"><input
type="submit" name="B2" value="送信"><input type="submit"
name="B3" value="送信"></p>
</form>
----
こんな風に受け取るサンプルでした。
----
foreach($_POST as $a => $b){
if($b == "submit"){
print $a;
}
----

>665-668
失礼ししました。
671663:03/09/22 19:06 ID:???
>670 訂正
----
foreach($_POST as $a => $b){
if($b == "送信"){
print $a;
}
----

>669 こんな感じかな。
<FORM action="sample.php" method="post">
<INPUT TYPE="TEXT" NAME="aaa" VALUE="abc">
<INPUT TYPE="SUBMIT">
</FORM>

<?php
echo $_POST["aaa"];
?>
672nobodyさん:03/09/22 19:29 ID:0NQ8na7X
>663 様、ありがとうございます。
sample.php
-----
<FORM action="sample.php" method="post">
<INPUT TYPE="TEXT" NAME="aaa" VALUE="">
<INPUT TYPE="SUBMIT">
</FORM>

<?php
echo $_POST["aaa"];
?>
試しましたが、やはり
Undefined variable: aaa が出てしまうのですが・・・。
673nobodyさん:03/09/22 19:32 ID:???
>>672
じゃあ、これで
$aaa = $_POST["aaa"];
674nobodyさん:03/09/22 19:42 ID:0NQ8na7X
>>673
こんどは
Undefined index: aaa が出てしまいました。

バージョン4.3.3がよくないんでしょうか。
4.2.x と 4.3.xはかなり違うという話もありますし。
675nobodyさん:03/09/22 19:50 ID:???
んじゃあんましお勧めしないが

import_request_variables('gp', '');

これをなるべく上の方に置いて、echo $aaa; してみて
676nobodyさん:03/09/22 19:57 ID:0NQ8na7X
今、こんな感じなのですが、やはり駄目です。
<?php
import_request_variables('gp', '');
?>
<FORM action="sample.php" method="post">
<INPUT TYPE="TEXT" NAME="aaa" VALUE="">
<INPUT TYPE="SUBMIT">
</FORM>
<?php
echo $_POST['aaa'];
?>

import_request_variables(): No prefix specified - possible security hazard
と Undefined index: aaa が出てしまいます。
677nobodyさん:03/09/22 20:09 ID:???
単純に safe_mode というだけじゃなさそう?
エラー出力が最大になってるんだろう、submitする前のエラーなのか?
かまわずsubmitできないかね?
678nobodyさん:03/09/22 20:11 ID:???
POST受け取れてないっぽいな
POSTが受け取れない状況なんてあるっけ
679676:03/09/22 20:15 ID:0NQ8na7X
submit はできますが、
最初に表示させた時点で、エラーメッセージが表示されて
しまうのです。
680nobodyさん:03/09/22 20:21 ID:fh6K5MyE
<?php
if (isset($_POST['aaa'])) { echo $_POST['aaa']; }
?>
681676:03/09/22 20:22 ID:0NQ8na7X
二つのファイルの分けたら、エラー出ませんでした。
でも、1ファイルだとうまくできないんですかねぇ・・・。
どうも、ありがとうございました。
sam1.php

<FORM action="sam2.php" method="post">
<INPUT TYPE="TEXT" NAME="aaa" VALUE="">
<INPUT TYPE="SUBMIT">
</FORM>

<?php
(string)$aaa="";
?>

sam2.php
<?php
echo $_POST['aaa'];
?>
682nobodyさん:03/09/22 21:43 ID:xOLiE8Dr
すみません。Javaプログラム初心者なんですが
1.シンボルを解決できません
2.<identifier>がありません
の意味をご教授ください
683nobodyさん:03/09/22 21:46 ID:???
ここはPHPスレですが…
684nobodyさん:03/09/22 21:48 ID:xOLiE8Dr
あ!すいません
685nobodyさん:03/09/23 01:21 ID:6Mk4vLXQ
1,title,Q,A1,,A3,,2003:09:23 00:48:20
2,title,Q,A1,A2,A3,A4,2003:09:23 00:52:29
3,title,Q,A1,A2,,,2003:09:23 00:53:26
4,title,Q,,A2,A3,global,2003:09:23 00:54:48

この様な内容のファイルから
4,title,Q,,A2,A3,global,2003:09:23 00:54:48
↑この4(最終行の最初の番号)を取得したいのですが
逆ソートする方法しか思いつかないのですが他に何か無いでしょうか?
686nobodyさん:03/09/23 01:47 ID:???
とりあえずDB使うとか。
687nobodyさん:03/09/23 01:50 ID:???
>>685
普通に最終行の最初の番号取得すればいいじゃん。ソートとかせずに。
,で分割して最初の要素をとるとか。
688nobodyさん:03/09/23 02:46 ID:6Mk4vLXQ
>>687
詳しくキボンヌ、いや教えてください
689nobodyさん:03/09/23 03:06 ID:2l0WTZfM
今似たような事やってるとこ。
一行一行読みながら(file()でもいいけど)
ファイルポインタの位置を見て、最後までいったら
前の行からその番号を取得するでいいんでない?

#自分のはループのネストが3つ、その中で2つのファイルを読み書きで
#ファイルポインタ移動したりでもう死にそう。
690nobodyさん:03/09/23 03:37 ID:???
パーミッションってなんですか。
691nobodyさん:03/09/23 03:42 ID:???
検索しろ
692nobodyさん:03/09/23 03:51 ID:???
スレッド型の掲示板を作ろうと思うのですが、
各スレッドの1番目の投稿(タイトル)を記録したファイルと、
その他のレスのファイルは別々にすれば良いのでしょうか?
どう作れば良いのかいまいち分からないです。
DBを使うべきでしょうか?
693nobodyさん:03/09/23 05:25 ID:???
>>692
スレッド型の掲示板とだけいわれてもピンキリあるが。
694nobodyさん:03/09/23 06:03 ID:???
>>693
2ch掲示板の上から3つ目の緑枠(スレ一覧)のみの形にしたいんです。
ここからスレッドをクリックすると、下の部分にレスを表示と言う機能もつけようと思ってます。
695nobodyさん:03/09/23 08:32 ID:/wROj+xt
>>692

まだバグフィクスの段階だが2ch型の基本的な部分を踏襲してる。
穴が開くほど読むべし

http://s37.1000gex.net/1000gex_4_1.zip
696nobodyさん:03/09/23 11:39 ID:???
>>695
インデントがめちゃくちゃで気持ち悪いよ。
697nobodyさん:03/09/23 11:42 ID:/wROj+xt
その程度のコメントしかできないか
698nobodyさん:03/09/23 11:47 ID:???
まだバグフィクスって、今までにフィックスできたことあったっけ?www
699nobodyさん:03/09/23 11:53 ID:???
>本7
まともな指摘は素直に受け取れよ。
タブ・スペース2個・スペース4個・インデント無しが入り混じりだぞ。
読む前に突っぱねたくなる。

閉じ括弧がインデント無しで↓みたいに連続してるのはさすがに目を疑った。
}

}

}
700nobodyさん:03/09/23 12:17 ID:???
>>695
醜い
701nobodyさん:03/09/23 12:29 ID:???
>>669
<FORM>
<INPUT TYPE="TEXT" NAME="aaa" VALUE="">
<INPUT TYPE="SUBMIT">
</FORM>

<?php
if (!empty($aaa)) echo $aaa;
?>

でいいんじゃないの?
702nobodyさん:03/09/23 14:26 ID:AVDEDK0L
notfound.phpってphp使う意味がわからん
703nobodyさん:03/09/23 14:27 ID:/wROj+xt
>>699
ほとんどメモ帳で書いたから許せ。
そのうちに前面改修すると思う。
704nobodyさん:03/09/23 14:30 ID:AVDEDK0L
if(file_exists("うんこc:/afolistlog/$brd.log")){
$lls = file($fpath.$brd."/lastmes.dat");
$cn = count($lls);
if($cn < 10){
$cr = 0;
}else{
$cr = $cn -10;
}

てめえプログラマをなめてんのか?
705nobodyさん:03/09/23 14:37 ID:/wROj+xt
>>704
作りかけの規制ロジックを無効にしてるだけだよ。
公開バージョンと1000GEX実装でずいぶん差が開いてきたんで
そろそろ更新しようかとも思うが時間がない。
全部クラスに取り込んで構造を明確化したいんだが
706nobodyさん:03/09/23 14:39 ID:???
>>703
メモ帳で書くな

【本7鯖】arigato3.net P5【DQN鯖管】
http://pc2.2ch.net/test/read.cgi/hosting/1063527962/
707nobodyさん:03/09/23 14:49 ID:AVDEDK0L
//************ スレスト
if(ereg("★",$name) && ($mes == "****")){
$name = "停止しました";
$mail = "停止";
$mes = "真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ";
$suresuto = 1;
}
//************ スレスト

if(ereg("★",$name) && ($mes == "fukki")){
$name = "スレスト解除しました";
$mail = "解除";
$mes = "真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ";
chmod($fpath."$brd/dat/$sid.dat", 0777);
}


chmodの意味無いし、キャップで****って書いたらスレストか。
708nobodyさん:03/09/23 15:07 ID:/wROj+xt
>>707
勘違いしてる
709 :03/09/23 15:28 ID:???
弄るなよ喋りたがり供が
710nobodyさん:03/09/23 15:28 ID:???
本7死ね
711nobodyさん:03/09/23 15:33 ID:???
>>710
お前が死ねよ
712nobodyさん:03/09/23 16:44 ID:???
もう、本7は徹底放置でやってくれ。
みんなが構うから本7が質問しまくってスレが荒れる。
頼むよ・・・(;´д`)
713セッション仮面:03/09/23 17:36 ID:???
セッション管理について質問です。
クッキーの使えない状況下ではセッションIDをURLにつけますが、
このときのセッションIDを一過性というか、毎回ランダムにしたいです。
どうしたらいいでしょうか?

session_name(uniqid(""));
などを実行して毎回ユニークなセッションIDに改名しようと思ったのですが
どうもこれではセッションID名が変わらないみたいです。
714nobodyさん:03/09/23 17:57 ID:???
本7死ね
715nobodyさん:03/09/23 19:48 ID:3LvyB+ux
GetImageSize関数を使っているのですがご教授下さい。
1つのサーバの中に仮想サイトAとBとCを作っていて、
AとBそれぞれにある画像のサイズを、Cのサイトで取得したいのです。

今まで下記のようにしてうまく取得出来ていました。
$size = getimagesize("http://www.AAA.co.jp/image1.jpg");
ところがAのサイトから突然サイズを取得出来なくなってしまいました。
Bのサイトからは普通に取得出来ています。
両方のサイトは同じような設定で、画像ファイルやフォルダのパーミッションや
所有者も確認して、同じような設定になっているのを確認しました。
$size = getimagesize("http://IPアドレス/~ユーザ名/image1.jpg"); にしてみても変わりません。
$sizeに何も入ってこない状態です。(エラーやwarningは出てません)

なぜAのサイトだけからサイズの取得が出来なくなったのか、、何か考えられる、
チェックするべきところありましたらアドバイス下さい。
716nobodyさん:03/09/23 19:50 ID:cxgYlhLB
加藤○いの温泉ビデオがあります。
期間限定いつまで見れるかわからない。
お早めにチェックを。
無料でみれるよ。
http://38.114.137.83/index.html
717nobodyさん:03/09/23 19:52 ID:???
同じ鯖のファイルだったらHTTP介するよりも
$size = getimagesize("/virtual/username/siteA/image1.jpg");
みたいにフルパスで指定した方が速いしトラブルが少ないと思うんだけど。
718715:03/09/23 20:09 ID:3LvyB+ux
>>717 ありがとうございます。
試してみたところ下記のwarningがでました。
SAFE MODE Restriction in effect. The script whose uid is 3014 is not allowed to
access /home/省略/image1.jpg owned by uid 80
これは所有権によるエラーですかね?
719nobodyさん:03/09/23 20:18 ID:???
>>718
同じサーバーに複数のアカウントを持ってるのね。
で、PHPがセーフモードで動いていると。
その場合はパーミッションが読み書きOKでも他のアカウントの
ファイル/ディレクトリを操作できないので(うろ覚えだけど)
やっぱりHTTP経由で取得するしかなさそう。

そして役に立てなくて悪いけど俺には>>715の原因はわからない。
他の人のヘルプを待ちましょう。
720nobodyさん:03/09/23 20:24 ID:V0eyRyS0
>>713
セッション一からやり直せ
session_nameを何か勘違いしてる

>>718
SAFE MODE言うとるがな
721nobodyさん:03/09/23 20:29 ID:???
sendmailが使えないと
メールの送信はできませんか?
722nobodyさん:03/09/23 20:38 ID:???
>>721
できる
723715:03/09/23 20:49 ID:3LvyB+ux
>>719-720 ありがとうございます。同じサーバに複数のアカウント、です。
>>717のwarningはセーフモードによってユーザIDが違う為読めないというように
解釈しました。

>>715の件なのですが、サーバ上からはサイトAの画像サイズGETは出来ないのですが、
自宅ローカル環境からはgetimagesizeで普通に取得出来ました。(httpからの指定です)
724721:03/09/23 20:53 ID:zsX51j5/
>>722
どうやるんですか?
725nobodyさん:03/09/23 20:56 ID:???
>>724
SMTP鯖を立てろ
726nobodyさん:03/09/23 21:02 ID:/wROj+xt
>>724
まだまだ調整段階だが自分の持ってるメール垢で送信できるライブラリ。

http://s2.arigato3.net/~hon7/1000gex/pmail/

内容に合わせて多少の調整が必要だがとりあえず自動メール発信できる。
SMTP_AUTH(LOGIN)対応だぞ
727nobodyさん:03/09/23 21:03 ID:???
>>725
そないなことせんでもphpにSMTP喋らせればええやんか。
728713:03/09/23 22:17 ID:???
>>720
ありがとうございます。 結局、セッションを一度破棄したあとに
適当なセッションIDに替えてセッション変数は全て再登録しました。

最新のならセッションIDのリネームが出来たのですが
最新ではないので出来ませんでした。 残念です。
729nobodyさん:03/09/23 22:41 ID:???
>>713
session_nameとsession_idは違うよ。

それとuniqid("")だと予測がつきやすいので、
マニュアルにもあるとおりmd5()で再処理した方がよい。
730nobodyさん:03/09/24 12:13 ID:aJnK3rxv
質問させていただきます。
WindowsXP上で、PHP4.3.3+AN HTTPDAEMONを使っています。
phpファイルの記述はUTF-8にしています。

データを外部アプリケーションに受け渡すため、XMLの形式に
構造体を変換しようとしています。
そこで、xmlrpc_encode()を使ってみたのですが、
全角文字が文字コードや、得体の知れない文字に置き換えられてしまいます。

例)
<?php
 $myDog = array ( "color"=>"茶色");
 $theString= xmlrpc_encode ($myDog);
 print $theString;
?>
 ……このとき「茶色」が「??¶??」となる

この状況を解決したいのですが、どなたかご教授頂ければ幸いです。
宜しくお願い致します。
731730:03/09/24 12:16 ID:aJnK3rxv
すみません、投稿した文章じたいが文字化けしてしまいました。
上の「茶色」が置き換わる文字は
「&#232;&#140;¶&#232;&#137;2」(&#は半角)
です。
732nobodyさん:03/09/24 13:40 ID:???
>730

解答ではないのですが,現象としては"茶色"(UTF-8)という文字列が
1バイトずつ変換されているようですね.

当方に XMLRPC 関数を使用できる環境が無いので実験も出来かねる
状況ですが,UTF-8 の仕様から考えてもバグのような気がします.

XML RPC を利用したいということではなく,単純に XML のデータを
作成したいということであれば DOM XML 関数を使うとか PEAR の
XML コンポーネントを使った方が楽かもしれませんね.
733730:03/09/24 13:54 ID:???
>732
早速のご回答、有り難うございます。
やはり現状では、XMLRPCの使用は避けた方が
無難かも知れないようですね。

> DOM XML 関数を使うとか PEAR の
> XML コンポーネントを使った方が

それでは、こちらからのアプローチを検討してみます
お忙しい中、有り難うございました。
734nobodyさん:03/09/24 14:55 ID:???
4.3.3はphp.iniのmb_xx も効いてくる。まあ他の関数で問題なければいいか
735732:03/09/24 16:20 ID:???
>734

mbstring.internal_encoding を明示的に UTF-8 に設定しないと
誤動作の原因になるってことかな?

初期状態では NULL (no value)になってるみたいだけど
このままだとどうなんだろう・・・
736nobodyさん:03/09/24 16:29 ID:???
>>735
とりあえず、↓の設定入れて違いを比べてみて
mbstring.language = Japanese
737nobodyさん:03/09/24 16:44 ID:???
RedHat8.0
PHP4.3.3をインストールしました。
ですが、
Fatal error: Call to undefined function: 状態で
マルチバイト関数が使えません。
おそらくコンパイル時に
--enable-zend-multibyte
--enable-mbstring
--enable-mbregex
あたりを指定してなかったからだと思うのですが・・
再コンパイルせずにマルチバイト関数を使えるようにするには
どうすればよいでしょうか?
738nobodyさん:03/09/24 16:52 ID:vH3BvScd
configureとかmakefileに記述されてるmbstring関係を手動でやればできるかも。
ヤマカンだが
739nobodyさん:03/09/24 17:07 ID:???
ここで聞いて回答を待つよりコンパイルし直した方が早いと思う。
740nobodyさん:03/09/24 17:16 ID:vH3BvScd
こんな感じでどうだろ

./configure ¥
--with-apxs2=/usr/local/apache2/bin/apxs ¥
--enable-mbstring ¥
--enable-mbstr-enc-trans ¥
--enable-gd-native-ttf ¥
--with-gd ¥
--with-freetype-dir=/usr ¥
--with-jpeg-dir ¥
--with-zlib=/usr ¥
--with-png-dir
741732:03/09/24 17:25 ID:???
気持ち悪いのでローカルにApacheとPHP入れてみた
これから試してみます(逃避)
742732:03/09/24 18:11 ID:???
XMLRPC について

結論から言うと今回のケースで PHP の値を XML に変換したい場合
xmlrpc_encode を使うと日本語は化けてしまうみたいです。
おそらく XMLRPC の内部で設定されるオプションが
日本語にやさしくないのだとおもいます.
(ソースを確認したわけではないのではずしているかもしれませんが)

とにかく化けてなくて XML の形になってればいいということであれば
次のようにすることで実現できました.

<?php
 $output_options = array(
  "escaping" => array(""),
  "encoding" => "utf-8"
 );

 $myDog = array ( "color"=>"茶色");
 $theString = xmlrpc_encode_request ("TEST_METHOD", $myDog, $output_options);

 print $theString;
?>

参考にしたURL

■xmlrpc-epi-php
 http://xmlrpc-epi.sourceforge.net/main.php?t=php_api

やはり XMLRPC 関数群は XMLRPC のサーバー及びクライアントを記述
するためのものなので用途外の使用は自己責任でってことですね
743nobodyさん:03/09/24 18:34 ID:P03itb4/
バイナリーファイルのデータを表示したいのですが、
以下のプログラムではうまくいきません。(すべて0で表示されてしまう)
どのようにすれば良いのでしょうか?
test.datは4byte単位でintegerデータが格納されています。

<html>
<?php
$fname="/home/test/test.dat";
$fd=fopen($fname,"rb");
$o=0;
for($i=0;$i<10;$i++){
$ans=fseek($fd,$o);
$o=$o+4;
$a=fread($fd,4);
settype($a,integer);
printf ("%d<br>",$a);
}
fclose($fd);
?>
</html>
744nobodyさん:03/09/24 19:28 ID:???
>>743
settype($a,integer);
printf ("%d<br>",$a);

$a = unpack("l1int",$a);
printf ("%d<br>",$a["int"]);

にするとか
745744:03/09/24 19:32 ID:???
つーか、unpack 覚えればそのループいらなくなる
phpのunpackが一番わかりにくいが、いろいろ試せ
746nobodyさん:03/09/24 19:39 ID:Sr+L93eT
サーバに置いてある画像のサイズを変更(縮小ではなくカットで)するにはどんな方法があるでしょうか

やりたいことは
ttp://php.s3.to/bbs/bbs7.php このスクリプトでアップされたファイルを

ttp://techside.net/i_shot_p/vi.cgi こんな感じに並べたいんで
受信時に同じサイズに揃えたいのです
よろしくお願いします
747nobodyさん:03/09/24 19:45 ID:???
>>746
GD入ってる?
748746:03/09/24 19:49 ID:???
>>747
入っています
749nobodyさん:03/09/24 20:02 ID:???
元ページ見にいったらサムネイル版てのがあるじゃん
これの ImageCopy の最後の4つが、コピー先の縦横サイズ、コピー元の縦横サイズ
だから、コピー元をコピー先と同じにすればカットになるよ
750746:03/09/24 20:06 ID:???
情報ありがとうございます
さっそく試してみます
751nobodyさん:03/09/24 20:11 ID:???
つーか、元のはImageCopyResampled か。
ImageCopyにして引数2つ外せば同じことになる、、ね
752nobodyさん:03/09/24 20:34 ID:EOude8h6
DBの接続について教えてください
現在PHP3でDBを介したWebシステムを作っているのですが
DBの接続に関してmysql_connect()を使った方がいいのか
mysql_pconnect()を使った方がいいのかいまいちわかりません。
持続するかしないかの違いはわかるのですが
どっちの方が効率的なのか教えていだだけないでしょうか?
よろしくお願いします。
またエラー等に関しても教えていただければ幸いです。
753nobodyさん:03/09/24 21:54 ID:vH3BvScd
とりあえずPHP4にするべきだな
754nobodyさん:03/09/24 22:07 ID:???
質問させてください。

php-4.3.2を使用しているのですが、
ダブルクォートなどのデータをフォームからPOSTで送信したときに
文字の前にエスケープ文字「¥」がついてしまいます。

これの原因はphp.iniの
magic_quotes_gpc = On
になっているからというのは分かるのですが、サーバーの設定ができないため
設定を変更することができません。


正規表現でエスケープ文字を排除したいのですが、
以下のように書くとWarningが出てしまいます。
どのように書けばよいでしょうか。
$data = ereg_replace('\\','',$data);
//自分でもなんとなくダメっぽいのはわかるのですが・・

こんなメッセージが出ます。
Warning: ereg_replace(): REG_EESCAPE in ...

よろしくお願いします。
755nobodyさん:03/09/24 22:19 ID:???
>>754
$data = ereg_replace('\\\\','',$data);
または
stripslashes($data);
756nobodyさん:03/09/24 22:25 ID:???
シングルクオートかダブルクオートかろくに見ないで
コピペしちまった。適当に読み替えてちょ
757nobodyさん:03/09/24 23:09 ID:bmeLGGxY
>>744
>>745
ありがとうございます。見事表示されました。
unpackをしっかり勉強いたします。
758nobodyさん:03/09/25 01:22 ID:???
>>755
ありがとうございます。
明日やってみます。
759nobodyさん:03/09/25 08:36 ID:d6wIetxr
2packも勉強汁
760730:03/09/25 10:17 ID:cH0TouD3
昨日質問させていただいた730です。
あれから732様をはじめ、多数のフォローを受け
感激しております。ありがとうございました。
さて、お勧めいただいた方法のひとつDOM XML関数を
用いて挑戦しているのですが、やはりマルチバイト文字が
コードに置き換わってしまいます。
(今回は前回と違い、化けのない正しいコードになっています)
例)
<?php
 $documents = domxml_new_doc("1.0");
 $pet = $documents->create_element("pet");
 $pet = $documents->append_child($pet);
 $dog = $documents->create_element("myDog");
 $dog = $pet->append_child($dog);
 $color = $documents->create_element("color");
 $color = $dog->append_child($color);
 $text = $documents->create_text_node("茶色");
 $text = $color->append_child($text);
 print $documents->dump_mem(true);
?>
これで生成されるXMLが
<?xml version="1.0"?>
<pet>
 <myDog>
  <color>&#x8336;&#x8272;</color>
 </myDog>
</pet>
php.iniのマルチバイト関連をあれこれいじっているのですが
どうにも結果が変わりません。また、print "茶色";は、ソースでも
「茶色」と、正しい表示がされます。
どなたかご教授いただければ幸いです。宜しくお願い致します。
761nobodyさん:03/09/25 11:59 ID:???
$documents = domxml_new_doc("1.0");

$documents = domxml_open_mem('<?xml version="1.0" encoding="EUC-JP"?><dummy />');
$documents->remove_child($documents->document_element());

とかにしたらどうなる?
762730:03/09/25 12:19 ID:???
>761
早速のお返事、ありがとうございます。
お伝え頂いた方法(文字コードはUTF-8にしました)を
試したところ、問題なくマルチバイト文字が処理されました。
大変助かりました。

なぜこの方法でうまくいったのかが、勉強不足で分からないため
今からdomxml_open_memについて調べてみようと思います。
お忙しいところをご教授いただき、ありがとうございました。
763nobodyさん:03/09/25 15:53 ID:d6wIetxr
Apache2.0.47+PHP4.3.3RC1で成功

<?php
$documents = domxml_new_doc("1.0");
$pet = $documents->create_element("pet");
$pet = $documents->append_child($pet);
$dog = $documents->create_element("myDog");
$dog = $pet->append_child($dog);
$color = $documents->create_element("color");
$color = $dog->append_child($color);
$text = $documents->create_text_node(mb_convert_encoding("茶色","UTF-8"));
$text = $color->append_child($text);
print $documents->dump_mem(true);
?>
764nobodyさん:03/09/25 15:56 ID:d6wIetxr
<?php
$documents = domxml_open_mem('<?xml version="1.0" encoding="SJIS"?><dummy />');
$documents->remove_child($documents->document_element());
$pet = $documents->create_element("pet");
$pet = $documents->append_child($pet);
$dog = $documents->create_element("myDog");
$dog = $pet->append_child($dog);
$color = $documents->create_element("color");
$color = $dog->append_child($color);
$text = $documents->create_text_node(mb_convert_encoding("茶色","UTF-8"));
$text = $color->append_child($text);
print $documents->dump_mem(true);
?>

の間違い。失礼
765nobodyさん:03/09/25 17:38 ID:gVK7vwAH
phpのマニュアル読んでも日付・時刻に関する関数の種類が
少ない気がするんですが、よくある使い方としてある日付を
基点とする日数分の過去・経過日付を求めるのって
どうすればいいんでしょうか?
766nobodyさん:03/09/25 17:44 ID:???
date('y/m/d', time() ± n * 86400)
767nobodyさん:03/09/25 17:45 ID:???
juliantojd()とか使うんじゃないか
って、オプションつけてコンパイルが必要か・・・
768nobodyさん:03/09/25 18:07 ID:???
単純に、元時間が秒でできているから、それから計算してるけど。
769nobodyさん:03/09/25 18:08 ID:???
1970以前とか、2038以降が無いんだったらそれでもいいんじゃないか
770nobodyさん:03/09/25 18:14 ID:???
PHPってintは32bitなん?

まあオレは2038年には生きて無いわけだが
771nobodyさん:03/09/25 18:15 ID:???
>>769
で、34歳以降の人だけ計算がfailするスクリプトのできあがり。
772nobodyさん:03/09/25 18:16 ID:???
>>769
「以」の使い方を間違ってる。
773nobodyさん:03/09/25 18:29 ID:d6wIetxr
mod_phpで実行権限を実行ファイルの所有者で利用する方法(suExec)を
ご存知の方おられませんか?
774nobodyさん:03/09/25 18:30 ID:???
無理
775nobodyさん:03/09/25 18:31 ID:???
>>773
PHP-usersで出てたことがある。
結論は、出来ない。だったような。
776nobodyさん:03/09/25 19:12 ID:???
PHPの将来性に危機感を抱いているのですがPHPのシェアが破綻したら皆さんは
どの言語に乗り換えられますか?
やはりJSPなんでしょうか。
777nobodyさん:03/09/25 19:31 ID:???
>>776
乗り換えつうか、PHPも出来てJSPも含むJavaも出来るというパターンでは?
将来性...個人的にはソフト産業(構造)自体に疑問が。
まあ出来てからそんなに経ってない産業だからかもしれぬか。
778nobodyさん:03/09/25 19:41 ID:???
PHPなんか覚えても無駄。

無駄無駄無駄。
779nobodyさん:03/09/25 19:47 ID:NEF9q2qx
黙れ!
780nobodyさん:03/09/25 19:53 ID:NEF9q2qx
>>773
>>775
773ではないけど、
それってapacheやPHP自体のソースをいじくっても
できないものなの?
つまり原理的に無理ってこと?
781404.HDML ◆StMXML.EXE :03/09/25 20:26 ID:???
>>780
mod_phpはApacheの一部として動作させてる訳だから、
実行権限はApacheそのものになるって事じゃ?
782nobodyさん:03/09/25 20:47 ID:???
MLかどこか失念したけどApache2系だと
それに近いことができるモジュールがあるってのを見たことがある。
1.3.xでは無理。
783nobodyさん:03/09/25 21:15 ID:???
>>765-766
mktime(0, 0, 0, 9, 25 + $n, 2003);

の方が確実じゃねえか?
784nobodyさん:03/09/25 21:17 ID:d6wIetxr
>>780
それなんですよ。
WebDAVのMLでDAV上から生成したファイルの所有者をディレクトリに
なるような事に成功しているようなんでPHPでも可能性はあるかと思った
んですが私はCがよく分かっていないので他の情報をアテにしちゃってるんですが。
785nobodyさん:03/09/25 21:18 ID:d6wIetxr
訂正

ファイルの所有者をディレクトリになるような事 ×

ファイルの所有者をディレクトリ所有者に同期するような事
786sage:03/09/26 03:59 ID:???
あのう、クッキーでディレクトリに関わらず、
ドメイン内で使いたいんですが、pathのところにはなんていれればいいのでしょうか?
教えてくださいお願いします。
787 :03/09/26 04:03 ID:RaZMqe21
>>786
/
788sage:03/09/26 04:45 ID:???
>>787さま
それだと、オペラで表示できないとか・・・
どうなんでしょ?
789787:03/09/26 06:30 ID:RaZMqe21
>>788
空文字列だとどうかな
790nobodyさん:03/09/26 09:57 ID:???
微妙なところはブラウザによって挙動が変わる
あきらめるかブラウザによって変えるか・・・
791nobodyさん:03/09/26 10:00 ID:???
>>784
それ見たわけじゃないけど、ファイル生成部分を別プロセスに
することで実現しているような気がしないでもない
phpでプロセスを別にするってことはcgiとかわらない罠
792nobodyさん:03/09/26 11:01 ID:???
>>780
そりゃapacheやphpを変えれば可能にはなる

とっさに思いつくのは、Apacheをrootで動かし、
php実行時にユーザーを切り替える、という仕組み

Apacheをrootで動かすというリスクがあるのが難点
793792:03/09/26 11:02 ID:???
って、終了時に元に戻れないから別プロセス起動すんのと
あんまかわんないか、、、今のは無し…
794nobodyさん:03/09/26 11:12 ID:???
すいません、質問なんですが。

クッキーを使用しないセッションをテストしているのですが、
有効期限を設定したいと思いまして、

session_cache_limiter('private');
session_cache_expire(1);

としています。
一方、出力するHTMLのヘッダでは

<!-- disable cache for HTTP/1.1 -->
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
<!-- disable cache for HTTP/1.0 -->
<meta http-equiv="Pragma" content="no-cache">

としています。
これらは同じ物を設定しようとしているのでしょうか?
もし同じなら統一しないとマズイことになりそうで・・・
厨なこと言ってすいません。
795nobodyさん:03/09/26 11:23 ID:???
>>794
キャッシュの設定は、ブラウザやそのバージョンによって違う
(古いものはCache-Controlを認識しない、とか)
そのために両方設定してるのだと思いますが
796nobodyさん:03/09/26 11:45 ID:???
>>795
ということは同じ物を2通りの方法で設定しているということですね。
今、telnetでテストしてみましたところ、

session_cache_limiter('private'); は

Cache-Control: private, max-age=10800, pre-check=10800
と帰ってきて、効いているようなのですが、

session_cache_expire(1); は

Date: Fri, 26 Sep 2003 02:32:58 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
と帰ってきて、効いてないように見えます。
他にはそれらしいものはヘッダ内に見当たりません。
(しかしなぜ、過去の値がデフォで設定されているのか・・・アパッチノ設定カナ)

ということは
session_cache_limiter ---> ヘッダのCache-Control
session_cache_expire ---> どこかヘッダ以外のところ?

ということなんでしょうか。
ほんじゃ、session_cache_expire っていったいどこに効いてるんでしょうか?

しかし、session_cache_expireはsession_cache_limiter('no-cache'以外)にしなければ有効にならないとなっているのに、この2つの関数が別々のところを操作してるなんて・・・フクザツ杉


797nobodyさん:03/09/26 11:46 ID:GW+buTSd
ある年月日がその月の第何週に当たるのかを求めたいのですが、
便利な関数はないでしょうか?
$firstdate = strtotime("2003-9-1");
$date = strtotime("2003-9-25");
echo strftime("%U", $date) - strftime("%U", $firstdate)."<BR>";
これだと1日と同じ週だとバグっちゃうし。。
798nobodyさん:03/09/26 11:53 ID:???
>>796
禿げしく間違っておりました。もう一度テストしてみたところ、

session_cache_limiter('private');
session_cache_expire(1);


Cache-Control: private, max-age=60, pre-check=60
と帰ってきてて
session_cache_expireは
max-age, pre-checkを設定してるということがわかりました。

お騒がせしますた。
799nobodyさん:03/09/26 12:11 ID:???
>>797
未確認だけど
date('w')をループで回して日曜か月曜をカウントするってのは?
800nobodyさん:03/09/26 12:14 ID:???
>>799
ありがと。これでうまくいったYO!
799タンと同じ考えだったね。

function get_week($yy, $mm, $dd)
{
$firstdate = strtotime($yy."-".$mm."-01");
$date = strtotime($yy."-".$mm."-".$dd);

$dateU = strftime("%U", $date);
$firstdateU = strftime("%U", $firstdate);

$datew = strftime("%w", $date);
$firstdatew = strftime("%w", $firstdate);

if ($datew < $firstdatew)
$ret = $dateU - $firstdateU;
else
$ret = $dateU - $firstdateU + 1;

return $ret;
}
801nobodyさん:03/09/26 12:15 ID:???
(1日の曜日[0 = 日曜,6 = 土曜] + 日にち[1-31] - 1) / 7
で出ると思うが
802nobodyさん:03/09/26 12:51 ID:???
もしかして第X何曜日って知りたいの?
だったら、(日付 - 1) / 7 なんだけど・・・
803797:03/09/26 13:10 ID:???
>>802
マジっすか!!!
ショボーン。
でも、ありがd。
804学生:03/09/26 19:12 ID:inh4HiXw
データベースから表に出力する時に、
下記のサイトのように奇数行目と偶数行目のセルのを違う色にしたいのですが、
どの様に書けばよいのか教えて下さい。

http://careers.employment.yahoo.co.jp/bin/list?jb=01010
805nobodyさん:03/09/26 19:27 ID:???
教えてくださーい!
max_execution_timeが設定されているレンタルサーバで
ブラウザにファイルを保存させる処理を作ってるのですが
ダイアログでファイル名を選択している間に、
max_execution_timeを消費してしまい
全てのデータが保存されない場合があります。
しかも困ったときに途中までのデータのファイルが作成され
エラーになりません。
これをエラーにすることって可能でしょうか?
806nobodyさん:03/09/26 19:30 ID:???
>>805
2ステップに分ければ?
・一時ファイルを保存
・ファイル名を選択した後、一時ファイルをリネーム or 削除
807732:03/09/26 19:36 ID:???
>804

トグル変数を用意してスタイルのクラスを切り替えましょう
808nobodyさん:03/09/26 19:43 ID:???
>>806
ありがとうございます。じつは
レンタルサーバで容量も限られてるので
できればサーバ上に保存はしたくないんです。すみません。
一時ファイルの削除処理がうまくつくれればいいのですが、
どうしてもcronのようなもので削除する方法しか思い浮かばなくて
タイムラグが気になります。
headerでlength出力してもブラウザは無視するようですし、
なにかいい方法はないでしょうか?
809nobodyさん:03/09/26 20:27 ID:???
>>808
gzipとかで動的ファイルを整理するフローを覚えたら役に立つと思う。
810nobodyさん:03/09/26 21:03 ID:???
>>808
ファイルの内容をセッションに書き出すとか・・・
内容が巨大だと無理だけど。つか、そのファイルの大きさってどのくらいよ?

もっと具体的に何をしたいか言ってくれないとどうしようもないのだが。
811nobodyさん:03/09/26 21:53 ID:???
>>810
10Mくらい
812nobodyさん:03/09/26 23:39 ID:???
>>808
/varディレクトリが開放されていないかな?
safe_modeに引っかかるかもしれないが
813808:03/09/27 00:33 ID:???
>>808
されてないっすー
shellもcronも使えないレンタルサーバ(WebARENA)です

max_execution_time のエラー?を検地するのは難しそうですね。
素直にダウンロード用のファイルを作るなど、
別の仕組みを考えてみます
ありがとうございましたーー
814nobodyさん:03/09/27 01:21 ID:7nql3/tO
質問です。

mb_send_mailを使おうと思うのですが
送付先、サブジェクト、本文はいいとして、
ほかのヘッダーはどう記入すればよいのでしょうか?

$sendto="[email protected]";
$subject="ヌルポ!";
$text="ヌルポ";
$from="From: [email protected]";
$bcc="Bcc: [email protected]";
$reply="Reply-to: [email protected]";

mb_send_mail($sendto,$subject,$text,$from,$bcc,$reply);

これでいいでしょうか?
よろしくお願いします。
815nobodyさん:03/09/27 01:36 ID:efY9iLPN
>>814
思いっきりマニュアルに出ているんだが。
816nobodyさん:03/09/27 01:38 ID:???
>>813
新しいアクセスが来たら前のアクセスの一時ファイルを消すような感じ
じゃだめなん?複数の順番を記録して削除スケジュール作ってもいいと思うし。
817nobodyさん:03/09/27 09:10 ID:???
>>816
そんな簡単なもんじゃない
いいかげんなこというなよなー
818nobodyさん:03/09/27 09:49 ID:???
>>817 帰れ
819学生:03/09/27 09:55 ID:61F6YpQx
>>807
ありがとです。
あとは自分で調べて考えてみます。
820nobodyさん:03/09/27 10:15 ID:braCVDna
ずばり、PHP3で文字コードをEUCにするにはどうすればよろしいのでしょうか?
821404.HDML ◆StMXML.EXE :03/09/27 10:58 ID:???
>>820
jcode.phps
822nobodyさん:03/09/27 15:24 ID:???

うんこが主食
823nobodyさん:03/09/27 15:54 ID:???
imap_open("{".$server.":110/pop3}INBOX",$account,$pass))
でアクセスしようとすると、Couldn't open streamと表示され通信が
行なえない様です。Web検索すると数件ヒットするものの解決したものみつける
事が出来なかったので質問させて頂きます。
メールソフトからIMAPサーバーへのアクセスは行なえるのでIMAPサーバー
の問題ではないと想われます。またphpinfo()では、
IMAP c-Client Version2001
SSL Supportenabled
Kerberos Supportenabled
となっております。
PHPは4.2.2であり、imap.soも存在します。

原因と解決策を御存じの方は教えて頂けないでしょうか?
824814:03/09/27 16:14 ID:???
>>815
すいません。
見たけど意味がわかりません
825nobodyさん:03/09/27 16:37 ID:???
>>823
IMAPサーバって言うことは、IMAP使えるんだよね?
110でpop3を使ってるのはどういった理由?
826nobodyさん:03/09/27 16:42 ID:???
>>824
おいおい・・・
mb_send_mail()の項目
http://jp.php.net/manual/ja/function.mb-send-mail.php
を見ると、詳細はmail()を見ろと書いてあるよな

http://jp.php.net/manual/ja/function.mail.php
を見るとそのものずばり出てるんだが・・・
827nobodyさん:03/09/27 16:43 ID:???
>>824

例 2追加ヘッダを付加してメールを送信する

mail("[email protected]", "the subject", $message,
"From: webmaster@$SERVER_NAME\r\n"
."Reply-To: webmaster@$SERVER_NAME\r\n"
."X-Mailer: PHP/" . phpversion());
828814:03/09/27 18:36 ID:???
>>826
>>827
ありがとうございます。
829814:03/09/27 18:37 ID:???
少し休んだのでわかるようになりました。
830nobodyさん:03/09/27 18:41 ID:z1Qwr1Ct
apache2.x + php4.x で <?include http://hoge.checker/?> (IPアドレスとかみれる確認ページ)を
表示させるとIPがサーバ側になってアクセスできてしまうんですが、これを
IPがクライアント、またはアクセスさせないようにすることは可能でしょうか?
include自体無効にしようにも、includeで内部ファイル指定してたりするので、
includeそのものを無効にはできないのです。

これを応用されてproxyとかに使われそうで....。
831ポルノクウラ:03/09/27 19:11 ID:PgFm1LtN
チンドー
832nobodyさん:03/09/27 19:48 ID:???
>>830
もちっと初めて聞いた人に判るようにしゃべれ。
クライアント、includeされるスクリプトの動作しているサーバ、
includeしているサーバの相関が判りづらい。

http://hoge.checkerのスクリプトの動作を
includeしている側のIPだけに許可すれば良いんでは?
#文意を取り違えてなければ。
833830:03/09/27 21:26 ID:z1Qwr1Ct
>>832
すいません。
クライアント=192.168.1.1
includeするサーバ=192.168.1.2
includeされるサーバ=hoge.checker (この、hoge.checkerは外部のサーバです。)
と仮定して、

192.168.1.1で192.168.1.2にある<?include http://hoge.checker/ ?>と記述されたphpをよみこんで、
その中に表示されてるIPアドレスが192.168.1.2になってしまうんです。

やりたいことは192.168.1.2ではなくクライアントの192.168.1.1が表示されるか、または、
http://hoge.checker/というような外部URLにアクセスできなくしたいわけなんです
834nobodyさん:03/09/27 21:31 ID:???
includeされるサーバにとってはincludeするサーバがクライアントになるからでは。
835 :03/09/27 21:31 ID:???
ハァ・・・
836nobodyさん:03/09/27 21:34 ID:???
>>835
なに?
837nobodyさん:03/09/27 21:55 ID:???
>>833
サーバAのphpでサーバBのファイルをincludeすると、
AがBにアクセスしてその結果を出力する。

プロキシの心配をしているってことは、
includeの引数をユーザが設定できるようになっているのか?
838830:03/09/28 00:14 ID:SGKixdue
>>834
そうですね。

>>837
そんな感じです。

<?include http://* ?>は無効で
<?include /home/* ?>とかは可能なようにphp.iniなどで設定できればいいんですが...。
839nobodyさん:03/09/28 00:29 ID:???
>>838
--enable-url-fopen-wrapper 無しでコンパイル。または、
php.iniの allow_url_fopenで設定。
840nobodyさん:03/09/28 01:27 ID:3KKnzsrV
サーバーにアクセスがあったけどファイルが存在しなかった場合に
404.phpというファイルを表示させるように.htaccessで設定しています。

で、この404.phpが呼び出された時、訪問者がどんなURLにアクセスしているのか
取得する方法はないでしょうか?
過去ログを見たところ、自分自身のURLを取得する方法はあったのですが、
今回の場合はそれだと常にhttp://〜〜〜/404.phpとしかならないので。

よろしくお願いします。
841715:03/09/28 01:56 ID:tGfRKpu1
>>715で質問したものです。
>>717 >>718 >>719 >>723と自宅ローカルでは出来たのですがサーバ上では
取得出来ません。どなたかお気づきの点あればお願いします。
842830:03/09/28 01:57 ID:SGKixdue
>>839
いけました、ありがとうございました。
843nobodyさん:03/09/28 02:07 ID:???
>>841
http://jp.php.net/manual/ja/function.getimagesize.php
上記マニュアルのページを見るとURLサポートはPHP 4.0.6からとなっているけど
サーバーのPHPのバージョンは?
もしかしてPHP3しか使えない?
鯖缶にお願いして4.3.3にしてもらうといいかも。
844404.HDML ◆StMXML.EXE :03/09/28 05:37 ID:???
>>840
$_SERVER['REQUEST_URI']
845nobodyさん:03/09/28 07:27 ID:???
>>838
インクルードするファイルをユーザが指定できるようにするのはものすごく危険だと思うんだが。
制限しなければ開くことのできるあらゆるファイルを見られてしまうぞ。
制限するなら839のような設定をせずともhttp://から始まるものも一緒に禁止すればいいんだし
846nobodyさん:03/09/28 09:22 ID:???
>>845
同意。
ホントにいろんなコーディングする人がいるな。
847nobodyさん:03/09/28 10:56 ID:???

うんこが主食
848nobodyさん:03/09/28 11:55 ID:R65WBK9G
phpでポップアップウインドウを出して、
そしてurl転送するにはどうすればいいんでしょうか?
849nobodyさん:03/09/28 11:57 ID:???
phpはハイパーテキストプリプロセッサーだって言ってるだろ。
850nobodyさん:03/09/28 12:19 ID:2wjusCgF
うう
851nobodyさん:03/09/28 12:31 ID:???
>>849
プリプロセッサと言うことは本ちゃんのプロセッサがどこかにいるって事だな。
852nobodyさん:03/09/28 12:44 ID:???
Webサーバか?
853nobodyさん:03/09/28 14:54 ID:???
ZEBDエンジンだろ
854nobodyさん:03/09/28 15:38 ID:???
それZOPEとごっちゃになってる
855nobodyさん:03/09/28 15:48 ID:???
教えていただきたいことがあります。

下記のサイト
http://www.belizecountry.com/modules/mylinks/

で例えば[xoops]となっているところ
http://www.belizecountry.com/modules/mylinks/visit.php?lid=5
をクリックすると上にフレームで自サイトのメニューが表示されます。

xoopsは依然使っていたのですが、これをxoopsではなく
普通のサイトに使うことは出来ないのでしょうか?
自分のサイトにはフレームは設けないという条件+
リンク先は新しい窓でリンク先の上部に自サイトのナビげージョン
を持ってこれるようにする。

リンク集のサイトを運営しているのですが、
こういう機能への要望が結構あったので実装したいと思っています。

xoops使っていたときはこれと同じ事をやっていたので
そのときのソースを書きに書いておきます。

どのようにソースを変更したら言いか教えていただければうれしいです。
856nobodyさん:03/09/28 15:49 ID:???
あと、相対リンクには聞かないで絶対リンク
(外部へのリンクだけ)にこのように働きかけるように
してもらいたいとも思っています。

わかる方レスお願いします


以下ソースの転載
857nobodyさん:03/09/28 15:50 ID:???
<?php
/////////////////////////////////////////////////////////////
// Title : Frame Branding Hack for Xoops Mylinks //
// Author : Freeop //
// Email : [email protected] //
// Website : http://www.Belizecountry.com //
// System : Xoops RC 3.0.4 / 3.0.5 10-14-02 //
// Filename : myheader.php //
// Type : Module Hack for MyLinks //
/////////////////////////////////////////////////////////////

// Code below uses users current selected theme style //

include("../../mainfile.php");
$currenttheme = getTheme();
print("<html><link rel='stylesheet' type='text/css' media='all' //HREF='".XOOPS_URL."/themes/".$currenttheme."/style/style.css'></style><BODY>");

// Add your Regular html Below, Banner, Logo Below.
// The Php < echo $url > passes the link url to this
// page the target _top just destroys the frame reloading
// the $url
?>
858nobodyさん:03/09/28 15:50 ID:???

<html><head></head><body>
<center><table class=bg3 width=90% border=0><td>
<a href="http://www.google.co.jp/" target="blank">
Google  に戻る</a>
</td><td align=right valign=bottom>
<small><a target='_top' href="<? echo $url ?>">閉じる</a></small>
</td></center></table></body></html>
859nobodyさん:03/09/28 18:34 ID:01sfCu9G
保守
860nobodyさん:03/09/28 21:53 ID:???
んー、、どこから始めればいいのか・・・
861nobodyさん:03/09/28 22:59 ID:???
>>848
> phpでポップアップウインドウを出して、
> そしてurl転送するにはどうすればいいんでしょうか?

「url転送」ってなんだ。俗語だなぁ。

なんらかのポップアップ窓を出した後、元窓が、「転送先URL」の「ページ」にかわるということだとすれば、難しくないけど、それでいいのか?

もう少し解説してくれ。
862nobodyさん:03/09/29 01:51 ID:???
関数の戻り値に array を使用することができますが、このとき
配列の要素に オブジェクト を入れることが出来ません。

function hoge() {
 $a = new nannka;
 return array( $a );
}
$b = hoge();

$bは中身が空になります。
863nobodyさん:03/09/29 02:16 ID:6bLJhInk
初心者丸出しですみませんが、教えて下さい。
二つの条件A,Bがあって、さらにAに二つの条件分岐a,bがあったとします。
bとBの処理を同じにしたい場合通常はどのように記述しますか?

if (A)
{
if (a)
{
hoge
}
else //bの処理
{
geho
}
}
else //Bの処理
{
geho
}

というスマートじゃない記述かswitch構文くらいしか思いつかんのです。。
864nobodyさん:03/09/29 02:31 ID:???
>>863
if(A and a){
 hoge;
}else{
 geho;
}

何かが間違っている気も・・・
865nobodyさん:03/09/29 02:37 ID:6bLJhInk
>>864さん
有り難うございました、解決しました。。
866nobodyさん:03/09/29 05:22 ID:???
>>855-858
とりあえず、もうちょっとわかりやすくやりたいことを書いてくれないか
サイトの運営をしてるし、xoopsを使っていたとか実装とかいうセリフからも
経験があってけっこう知識があるのかと思ったんだが、
貼り付けたソースを見て、もしかしてphpもhtmlもよくわかってないのか?
と思ってしまったよ。

例に出しているサイトでは単にフレームを使って上下分割してるけど
そのやり方でいいのかな?
ほとんどHTML上での工夫になると思うので、まず出力したいページを
HTMLだけで作ってみることから始めることをお勧めします
867nobodyさん:03/09/29 07:34 ID:zBADduAt
ところで.cgiよりログファイルを覗かれにくい拡張子だれか
知りませんか?
あと

拡張子を.phpにして
<?php/*

ここは覗かれないポ。

*/?>
こうしたら覗けないと思ってるんですが、どうなんでしょう?
覗かれますか?
868nobodyさん:03/09/29 07:49 ID:???
.htaccessでアクセス禁止にした方がいいんでね?
869nobodyさん:03/09/29 07:49 ID:???
>>867
Webサーバの指定するディレクトリの外を使うわけにはいかないの?
どうしても無理なら .htaccess で制限できるか検討
それもだめなら、、.cgiでも.phpでもいいじゃん。
でもその文字列、扱いにくくない?スクリプトで読み書きするんでしょ?
870nobodyさん:03/09/29 07:53 ID:???
>>869
ケコーン。
漏れもドキュメントルート外にファイルが置ける鯖ではそうしてます。
そうでないときは、.htaccessをこんな感じにしてる。
<FilesMatch "\.(bak|conf|csv|dat|inc|ini|log|sql|tpl)$">
 Order Allow,Deny
 Deny from all
 Satisfy All
</FilesMatch>
871nobodyさん:03/09/29 08:43 ID:???
SSIのincludeをPHPでやろうとして、

<?php
$fp=fopen("a.txt","r");
print $fp;
?>

としたのですが、出来ませんでした。
どこが間違っているのでしょうか?
872nobodyさん:03/09/29 09:13 ID:???
>871

include はこう使います

http://www.php.net/manual/ja/function.include.php

fopen を使いたければ

<?php
$fp=fopen("a.txt","r");
if ($fp) {
 print fgets($fp, filesize("a.txt"));
 fclose($fp);
}
?>

こんな感じ?
873nobodyさん:03/09/29 12:41 ID:???
>>867
拡張子を.cgiにして実行権を与えなければ500が帰るわな。
ただ、昔のバグありNSCAサーバーだとちょっとしたことでソースが読めちゃう罠。
もはやそんなん使ってる人いないと思うが。

そんなんよりも、ログディレクトリを作ってそこの.htaccessに
deny from all
とでも書いておけ。
874867:03/09/29 13:22 ID:zBADduAt
どうも、みなさんありがとう。
.htaccessを使うのが良いんですね。
.htaccess新しいの覚えんのメンドクサソーだから避けてたけど、
今、調べてやってみたら簡単でした。
875nobodyさん:03/09/29 14:39 ID:GVFmm1O8
php3でページへのリンク元を取得する関数って何か
有りましたでしょうか?
876nobodyさん:03/09/29 15:48 ID:???
あの熱い戦いをもう一度!つどえ戦士たち!言葉は武器だ!
「罵声でぶちのめせ」
http://www.minnadenet.com/battler/basei/basei.cgi

877nobodyさん:03/09/29 16:39 ID:hkBZ43UF
cronでphpを実行させようとして
$a = exec("/bin/ping -c 4 hogehoge.com",$b,$c);
としても
sh: line 1: 1/ping: No such file or directory
と返されます。どうしてでしょうか?
878nobodyさん:03/09/29 16:48 ID:???
>>877
コマンドラインからは実行できてるの?
879nobodyさん:03/09/29 16:53 ID:hkBZ43UF
>>878
shシェルを起動して実行してみましたが正常な動作でした。
safe_modeはoffです。
/bin上のコマンドをいくつかexecで呼び出してみましたがエラーでした。
880nobodyさん:03/09/29 17:00 ID:???
>>879
正常なのかエラーなのかどっちよ
phpのスクリプトそのものはどうやって動かしてるの?

1行目に#!/..../bin/php 入れて実行のパーミッション?
それともphpコマンドの引数にスクリプト名?
881nobodyさん:03/09/29 17:19 ID:hkBZ43UF
>>880
スクリプトはcronからphp -q **.phpで実行しています。
exec("〜のコマンドを/bin/ping以外のコマンドも入れてみて試しましたが
sh: line 1: 1/ping: No such file or directoryや
sh: line 1: 1/ls: No such file or directory
といったエラーになりました。
882nobodyさん:03/09/29 17:34 ID:???
>>881
cron 使わないで $ php -q **.php とかやった場合は動くのね?
cron では /usr/local/bin/php -q **.php とかフルパスで指定してる?
そもそもなんでshがエラー出してるんだろ、、
スクリプト貼り付けられる?
883nobodyさん:03/09/29 17:49 ID:hkBZ43UF
<?php
$a = exec('/bin/ping -c 4 hogehoge.com',$c,$c0);
if(!$a){
print "error open \"ping\" command\n\n";
exit;
}
$dt = ereg_replace("rtt min/avg/max/mdev = ([0-9\./]*) ms","\\1",$c[8]);
$dat = split("/",$dt);
$ctd = file("/home/***/public_html/ct.dat");
$ct = $ctd[0]+1;
$fp = fopen("/home/***/public_html/ct.dat","w");
flock($fp,2);
fwrite($fp,$ct,strlen($ct));
flock($fp,3);
fclose($fp);
$times = time();
print "{$ct}:{$times}:{$dat[1]}\n\n";
884nobodyさん:03/09/29 17:50 ID:hkBZ43UF
$sql = "insert into pingdb(no,time,ping) values({$ct},{$times},{$dat[1]})";
$con = connect();
$result = mysql_query($sql,$con);
mysql_close($con);

function connect() {
$con = mysql_connect("localhost","user","pass");
$selectdb = mysql_select_db("pingdb",$con);
if ($con == false) {
print "can not connect database\n\n";
exit;
}
return $con;
}
?>
ってな感じです。
/usr/bin/php -q /home/**/ping.php で実行してましたが
/usr/local/bin/php -q /home/**/ping.phpにしたら正常に動作しました。
ありがとうございました。激しく鬱なオチですみません
885nobodyさん:03/09/29 19:25 ID:???
UNIQUEキーに複数登録したいのですが、可能でしょうか
たとえば
CREATE TABLE t ( c INT NOT NULL, d INT NOT NULL, UNIQUE k ( c,d ) );
として、cとdのフィールドが両方とも一致したレコードを許さないようにする、とか
(cかdどちらかだけならッ重複を許す)
886nobodyさん:03/09/29 20:09 ID:rmYj7GYl
質問です!

works.xrea.jp:8080/accessories/
ここにある、携帯にメールを送るPHPを使いたいのですが、
UPしてテスト送信してみたところ

Fatal error: Call to undefined function: mb_language() in ***/mobile_url/mobile_url.php on line 42

と出てしまいます。ダウンロードしたものをそのままUPしてみても同じエラーが出ました。。
41、42の所はこう書いてあります。
41 require_once 'htmltemplate.inc';
42 mb_language("Japanese");

他のPHPはちゃんと動いています。どうしたら良いでしょうか。。
887nobodyさん:03/09/29 20:33 ID:???
>>886
$ php -m
か、
<?php print phpinfo();?>
で、mbstring が組み込まれてるか確認

なかったら、、、自分でインストールしたなら
--enable-mbstring --enable-mbregex つけてリコンパイル
888nobodyさん:03/09/29 20:38 ID:???
>>885
環境がわからないが、MySQLでも複合キーは対応している
889nobodyさん:03/09/29 21:00 ID:rmYj7GYl
>>887
ありがとうございます!!
確認してみましたら、なかったです。。

「mbstring インストール」でググってみたのですが・・・(汗)
これはサーバーの管理者ではなくて、
私がインストールすれば使えるようになるものなのでしょうか?
890nobodyさん:03/09/29 22:32 ID:DoZHjQz8
>866

レスありがとうございます。

>例に出しているサイトでは単にフレームを使って上下分割してるけど
>そのやり方でいいのかな?

全くそのとおりです。
自分が行いたいのは相対リンク、自分のサイトのドメイン以外
へのリンクで先にあげたサイトのように上部にナビゲーション用の
フレームを自動で追加するものです。
やりたいのはひとつのphpですべてのページに
上記のような効果を持たせることです。

そのようなphpは可能なのでしょうか?
シンプルでいいんです。もし可能なら書いて頂きたい。
設置方法も・・・

階層が深いサイトで、そうファイル数数千あるのでどうしたもんかなぁー
と思っています。


スキルに関しては正直自身ありません。
他の方が書いたソースを試行錯誤しながら
不十分に理解できる程度です・・・。



レスよろしくお願いします
891nobodyさん:03/09/29 23:01 ID:???
>>889
使えない。
jcobe.phpsでやろう
892nobodyさん:03/09/30 00:22 ID:lSvF6W/o
>>891
教えてもらったのを入れてみたらmb_send_mailでエラーが出ました。。
サーバ管理者に頼んでみます。
どもありがとうございましたー。
893nobodyさん:03/09/30 00:36 ID:tYOqlmUU
掲示板を作ってるんですが、もしコメントが改行だけの場合
コメントを空としたいんですが下記の部分が分かりません。
どう書けばいいんでしょうか?

$value = ereg_replace( "\r\n|\r|\n", "<BR>", $value);
$value = ereg_replace("(<BR>){4,}", "<BR>", $value); //4回以上の連続した改行を1回に。
if($value == '(この部分が分かりません)')$value = '';
894nobodyさん:03/09/30 01:20 ID:xL/W3CDM
ログのフォーマットで処理が変わるな。
895nobodyさん:03/09/30 01:31 ID:xL/W3CDM
簡単にするなら
文字列処理の先頭に持ってきて
if(ereg_replace("\r\n|\r|\n","",$value) == "")$value = '';

ちょっと考え甘いかな?
896nobodyさん:03/09/30 01:39 ID:MVWjnIdx
レッツPHP!様で配布されている
「IndexUpdater」という更新履歴等を表示するスクリプトについてなのですが・・・
書き込み毎に一行分の空白が生成されるのですが、これを無くしたいのです。
サンプルを御覧頂ければお判り頂けると思います。

自分でも色々と弄ってみたのですが、全く見当が付きませんでした。
どなたかご教授の程、宜しくお願い致します。

サンプル ttp://php.s3.to/
ソース ttp://php.s3.to/simple/source.php?update.php
897nobodyさん:03/09/30 01:46 ID:xL/W3CDM
適当にいろんな所の\nを削ってみたらいずれ目的の箇所にヒッするだろう。
そういう無駄な努力がスキル向上になる。
めんどくさがらずに手当たり次第にやるべし
898nobodyさん:03/09/30 01:47 ID:tYOqlmUU
>>897
895のやり方でうまく行きました。どうもありがとうございます。
899nobodyさん:03/09/30 01:56 ID:xL/W3CDM
>>898
オメ。がんがれよ
900nobodyさん:03/09/30 09:45 ID:???
HTMLのナビゲーション部分を外部ファイルとして参照したいのですが、
includeでやるよりもinclude_onceでやる方が負荷は小さくなるのでしょうか?
また、SSIと比較してPHPの方が負荷は小さいのでしょうか?
(SSIにもinclude等がある為どちらを使おうか迷っています)

自分の知識ではこの辺りの判断がつかない為、
どなたかご教授お願いします。
901nobodyさん:03/09/30 09:58 ID:xL/W3CDM
プログラムが動き出す事=プロセスと言ってSSIはクライアントが要求する
度にSSIプロセスが起動する。多くの場合はサーバが毎回perlを呼び出す訳ね。
対してPHPは多くの場合はサーバが常にPHPを起動させていてクライアント
の要求があればすかさず動作する。常にプロセスが立ち上がっていて
1つのプロセスで処理する。
したがってクライアントがアクセスした瞬間ではPHPに起動する手間がないので
動作が軽い。
だがPerlとPHPの処理速度を比較したらほとんどの場合でPerlの方が
優れた処理速度を持っているといわれている。
複雑な関数を処理しファイルI/Oがいくつも発生するスクリプトならPerlを
用いたSSIの方が処理が早くなる可能性がある。
掲示板等の比較的処理内容が少ない物はPHPが大きく優勢なんじゃないだろうか。
902794:03/09/30 12:09 ID:???
すいません、
>>794でsessionの有効期限について厨なこと言ってたnewbieです。

クッキー不可のサイトなのですが、

session_cache_limiter('private');
session_cache_expire(1);

が、HTTPヘッダのCache-Controlを変更するというのは分かったんですが、
こうすると、当然ながらページ自体のキャッシュを無効にできません。

ページのキャッシュを無効にしつつ、かつセッションの有効期限を設定するこ
とはできるんでしょうか?

まさか、セッションの有効期限とページの有効期限が同じなんてことはないと
思いまして…
903nobodyさん:03/09/30 12:12 ID:xL/W3CDM
クライアント環境に依存する構造は避けるべきだと思うよ
904nobodyさん:03/09/30 12:16 ID:???
>>900
ベンチとってみれ。結果あげてね。

>>901
ssi execの話ではないような気がするが。
905794:03/09/30 12:17 ID:???
>>900
手軽にやるには、

ttp://cutie.dip.jp/pc/php/b4.php

あたりが参考になるんではないでしょうか。
SSIでも同じようなことはできるでしょうから、両方やって比べてみるとか。
厳密なことを言わなければですが。
906nobodyさん:03/09/30 12:17 ID:gEtB7FNl
perlのuntilはPHPでは何ですか?
907nobodyさん:03/09/30 12:24 ID:???
while の判定を ! で反対にすればいいんじゃないかな?
908nobodyさん:03/09/30 16:07 ID:j7/d6sL8
特殊な事情により、GDのイメージ型をシリアル化したいと考えております。
リソース型をシリアル化することは可能なのでしょうか?
試しに、
$img = @ImageCreate (50, 100);
$s = serialize($img);
とやりましたが、うまくシリアル化できていませんでした。

よろしくお願いいたします。
909nobodyさん:03/09/30 19:36 ID:gEtB7FNl
rand(0,100)ってさ、0〜100整数だけだよな。
少数点以下4桁までだしたいなら
$test = rand(10000,1000000)/10000;
って感じにするしかないの?
910nobodyさん:03/09/30 21:31 ID:???
>>909
まあそうだろうね
911nobodyさん:03/09/30 21:54 ID:???
あいうえお
かきくけこ
(略)
やいゆえよ
わいうえを

上の文章のかきくけこから
やいゆえよだけを、使用したいのですが、
どうすればいいんでしょうか?
912nobodyさん:03/09/30 22:00 ID:???
>911
ドラッグで反転選択してコピー。必要なところにペースト。
913nobodyさん:03/09/30 22:01 ID:???
>>911
まず、“使用”とは何か、から説明してくれないか

かきくけこからやいゆえよだけ、というのもわからん
2行目から最後の手前2行目まで、なのか
文字のか行からや行まで、なのか
それ以外なのか
914911:03/09/30 22:17 ID:???
説明不足ですまそ

例が悪かったか・・・

<html>
<body>

Welcome To My Home Page<br>

内容

<br>
<a href="home.html">HOME</a>

</body>
</html>

内容だけ取り出したいってこと
915nobodyさん:03/09/30 22:21 ID:???
>>911 の説明で、
>>914 を推測せよってそら無理デシ(w

916nobodyさん:03/09/30 22:25 ID:???
>>914
<br>をカウントってのはどうせダメなんだろ。

で、Welcome To ... も変化するし、内容の行数も可変なんだろ。
そら無理。

なんか固定なもんを示せ。
917nobodyさん:03/09/30 22:26 ID:???
スミマセン
Welcome To My Home Page<br>

<br>
<a href="home.html">HOME</a>

固定です。
918nobodyさん:03/09/30 22:38 ID:xL/W3CDM
識別フラグのタグを埋めてやるかキーワードになる文字を入れる。
<html>
<body>
Welcome To My Home Page<br>
<!--ここから-->
内容
<!--ここまで-->
<br>
<a href="home.html">HOME</a>
</body>
</html>

$file_data = file("index.htm");
$line_num = count($file_data);
for($i=0;$i<$line_num;$i++){

if(ereg("<!-ここから-->",$file_data[$i])){
$start=$i;
}
if(ereg("<!-ここから-->",$file_data[$i]))
$end=$i;
break;
}
}
for($i=start;$i<$end+1;$i++){

switch $i{
case $start:$new_data .= substr($file_data[$i],strpos("<!-ここから-->",$file_data[$i]));break;
case $end:$new_data .= substr($file_data[$i],strpos("<!-ここまで-->",$file_data[$i])-14);break;
default:$new_data .= $file_data[$i];break;
}
試してないけどこんな感じじゃない?
919nobodyさん:03/09/30 22:39 ID:xL/W3CDM
訂正

$file_data = file("index.htm");
$line_num = count($file_data);
for($i=0;$i<$line_num;$i++){

if(ereg("<!-ここから-->",$file_data[$i])){
$start=$i;
}
if(ereg("<!-ここから-->",$file_data[$i]))
$end=$i;
break;
}
}
for($i=start;$i<$end+1;$i++){

switch ($i){
case $start:$new_data .= substr($file_data[$i],strpos("<!-ここから-->",$file_data[$i]));break;
case $end:$new_data .= substr($file_data[$i],strpos("<!-ここまで-->",$file_data[$i])-14);break;
default:$new_data .= $file_data[$i];break;
}

}
920nobodyさん:03/09/30 22:45 ID:uGvhdsmS
includeでファイルを呼び出すカンジのweb pageを作ってるんですが、
cgiをincludeで呼ぶとソースがそのままでてしまいます。
コレを直接cgiを実行した時のような出力をincludeすることってできるのでしょうか?
921nobodyさん:03/09/30 23:48 ID:???
>>909

ImageCreateで生成される「画像ID」は、リソース型。
リソース型は、serializeで生成できないってマニュアルに書いてるだろ。
http://search.net-newbie.com/php/function.serialize.html

リソース型は、
http://search.net-newbie.com/php/resource.html
ここらへんを見たらいい。

922nobodyさん:03/09/30 23:51 ID:???
>921
すまん
>>909

>>908
だった
923nobodyさん:03/10/01 01:18 ID:???
>>920
phpからcgiを呼び出して表示したい、とかいうこと?
「cgiを実行した時のような出力」ってそら実行しないと出ないし、、
fopen で http:// からURI指定で呼び出して結果をprintしたら?
924923:03/10/01 01:23 ID:???
ああ、fopenと書いたけど、file()でもreadfile()でもすきなの使って

httpサーバ使わずに単独で実行した結果でいいんだったら
passthru()とかも使えるか
925nobodyさん:03/10/01 01:23 ID:yG0+We25
>>920

$flag = exec("/usr/local/bin/perl hogehoge.cgi",$feedback,$tmp);
foreach($feedback as $var){
print $var;
}
926920:03/10/01 03:36 ID:ZIP8qpPv
>>923 >>924
URI指定だとエラーになってしまいます。
readfile()ではソースがそのままでてしまい、file()やpassthru()は真っ白ですた。

>>925
真っ白になりまつ。
927nobodyさん:03/10/01 03:51 ID:6+Aao+hS
教えてください。

フォームで「+」が入力されてきた場合、「+」の文字が半角スペースに勝ってに変更されてしまうのです。
どうすれば、「+」がプラスのまま、下記例のTEST2.PHPで表示されるようになるのでしょうか?

助けてください。 検索エンジンで調べたつもりなのですが、判らないのです。

test1.php
<form method=post action=test2.php>
<input type=text name=teststring>
<input type=submit>
</form>

test2.php
<?
$teststring = $_REQUEST[teststring];
print "##".$teststring."##";
?>
928404.HDML ◆StMXML.EXE :03/10/01 06:31 ID:???
>>927

test2.php
<?= "## ".urlencode(@$_REQUEST['teststring'])." ##" ?>
929404.HDML ◆StMXML.EXE :03/10/01 06:58 ID:???
>>920
fsockopen()関数版

<?php

$host="localhost";
$port=80;
$path="/hoge/hoge.cgi?hoge=hoge";

$fh=fsockopen($host,$port,$errno,$errstr,10) or die($errno.$errstr);

fputs($fh,"GET ".$path." HTTP/1.0\n\n");

while($a=fgets($fh,1024)) if(preg_match("/^(\r?\n)$/",$a)) break;
while($a=fgets($fh,1024)) echo $a;

fclose($fh);
exit;

?>
930404.HDML ◆StMXML.EXE :03/10/01 07:03 ID:???
>>920
popen()関数版

<?php

$pp=popen("perl /usr/local/apache2/htdocs/hoge/hoge.cgi","r");

while($a=fgets($pp,1024)) if(preg_match("/^(\r?\n)$/",$a)) break;
while($a=fgets($pp,1024)) echo $a;

pclose($pp);
exit;

?>
931404.HDML ◆StMXML.EXE :03/10/01 07:32 ID:???
>>911
対象ファイル中に有る、抽出したい箇所を<!-- befor -->と<!-- after -->で
囲んで下さい。その箇所を抽出します。

<?php

$file=file("./hoge.htm");
$flag=false;

while(list(,$value) = each($file)){

if(preg_match("/<!-- befor -->/",$value)) $flag=true;
if($flag) echo $value;
if(preg_match("/<!-- after -->/",$value)) break;

}

exit;

?>
932nobodyさん:03/10/01 07:43 ID:???
>>926
パーミッションで実行属性ついてないんだろ・・・
933nobodyさん:03/10/01 10:10 ID:yG0+We25
perlのパスも環境に合わせてないだろうな。
934nobodyさん:03/10/01 10:46 ID:yQq1d4Yr
log.logファイルの内容
ああああ
いいいい
うううう

それで、
$log=file("log.log")
$search=array_search("いいいい",$log)
print"$search";
で、$searchがNULLになります。
なぜ1と出ないんですか?
935nobodyさん:03/10/01 10:58 ID:???
>>934
ファイルの2行目($log[1])は、"いいいい\n" だから
936nobodyさん:03/10/01 11:06 ID:yG0+We25
>>934
好みの問題もあるけど読み出したデータ等はそのまま処理にかけずに
別の変数へ渡し、その際に必要に応じて加工してやったほうが安全だよ。
このパターンがデータ消失の原因で一番多いんじゃないかな。
937nobodyさん:03/10/01 11:34 ID:yQq1d4Yr
>>935
NULLのままだよ。
>>936
別の変数に渡すって、どうやるんですか?
938nobodyさん:03/10/01 11:44 ID:???
>>937
おまえわかってないだろ
回答の意味がわからんのならそう書け

何が「NULLのままだよ」だ
939nobodyさん:03/10/01 11:56 ID:yQq1d4Yr
>>938
$search=array_search("いいいい\n",$log)
こう書けってことではないのか?
940nobodyさん:03/10/01 12:00 ID:???
file()関数は改行ごと配列に格納するってことだろ
ちなみに、>>939ので1が表示されたぞ、うちでは
941開店準備中:03/10/01 12:01 ID:L9ZAlkPa
>>939
それ、やってみたけどダメっぽいね。
私んとこはfalseが返ってきた。
配列まわして改行を取り除いたらokだったけど。
942開店準備中:03/10/01 12:02 ID:L9ZAlkPa
内部エンコ-ディングとかそういうもんが関係してるのかな?
(よく分かってない^^;)
943nobodyさん:03/10/01 12:08 ID:yQq1d4Yr
>>941
おおっ。お仲間が。
944nobodyさん:03/10/01 12:10 ID:yG0+We25
$log=file("log.log")
foreach($log as $var){
$newdata = ereg_replace("\r\n|\r|\n","",$var);
}
945908:03/10/01 12:14 ID:bpdfKdyc
>>921
いや、リソース型をserializeでシリアル化はできないのは
理解していたのですが、その他の方法でもできないのかという疑問です。
裏技的な方法もないですかね?どうにかして保存したいのですが。
946nobodyさん:03/10/01 12:23 ID:???
searchがうまくいかなかったら
var_dump とかprintf で何が入ってるのか調べるのが先でしょう
947nobodyさん:03/10/01 12:37 ID:yQq1d4Yr
>>941
ありがとう。
trimつかたらイケタヨ。
948nobodyさん:03/10/01 14:46 ID:???
eval();
949920:03/10/01 15:22 ID:ZIP8qpPv
>>929
真っ白ですた

>>930
Error 400がでてきますた...。

>>932
もちろん755になってます。
直接URLから行けば動きます。

>>933
perlもあわせてます。
950nobodyさん:03/10/01 15:26 ID:yG0+We25
>>949
こっちのローカルでは成功してるが。
環境を教えれ
951920:03/10/01 15:37 ID:ZIP8qpPv
>>950
Redhat9(kernel2.4.20-19.9) + apache2.0.40-21.5 + php-4.2.2 でつ
952nobodyさん:03/10/01 15:45 ID:???
>>920
指定したPATHが違ってると思われる
953nobodyさん:03/10/01 15:52 ID:yG0+We25
>>920
当該CGIスクリプトの所在を確認して正しいパスで実行してみそ
954920:03/10/01 16:34 ID:ZIP8qpPv
>>952
あってまつ。

>>953
cgiを確認し、そのとおりそこまでの絶対パスを入力してまつ。
相対でも絶対でも動きませんですた。
955nobodyさん:03/10/01 16:39 ID:???
>>954 の環境ってどうなってんの?
php.ini で全部実行できなくしてんじゃねーの?
書かないから自宅機でテストしてるんだと思ってたが・・・
956nobodyさん:03/10/01 16:53 ID:yG0+We25
>>920
関係ないかも知れんが試しにスクリプトを置いてるディレクトリのパーミッション
を755にして、ディレクトリとスクリプトとの所有者をApacheと同じにしてみて?
957nobodyさん:03/10/01 16:54 ID:yG0+We25
訂正
Apacheと同じにしてみて

Apacheの実行ユーザと同じにしてみて
958nobodyさん:03/10/01 16:58 ID:???
<?php print phpinfo();?> の出力から
safe_mode で始まる項目全てとallow_url_fopen がどうなってるかみてみるといい
959911:03/10/01 21:05 ID:???
動かない
真っ白のままだ

仮にhttp://www.yahoo.co.jp/
のbodyの中身(<body>〜</body>)を抽出するコードで書いてみてくれませんか?
960nobodyさん:03/10/01 21:17 ID:???
いくらで?
961nobodyさん:03/10/01 21:49 ID:???
ここっていつからコード書いてもらうスレになったの?
962nobodyさん:03/10/01 22:17 ID:???
>>945

> いや、リソース型をserializeでシリアル化はできないのは
> 理解していたのですが、その他の方法でもできないのかという疑問です。

理解してたら、>>908みたいな書き方はしないと思うが、まぁ・・いい。

> 裏技的な方法もないですかね?どうにかして保存したいのですが。

コネクションまたぎたいというだろうけど、それは、出来ませんって。
なにをしたいのかわからないので、説明要。

#imagecreate用の値を、serializeでもそのまんまでもいいから、sessionなり、
#なんなりに保存しておいてやればいいと思うのだがね。
963nobodyさん:03/10/01 22:23 ID:S6/LMUEu
すごくあほな質問ですが
PHPをMacOS9で制作したいのですが
可能でしょうか?
調べてもOS9用の記述が全くないので;
ソフトウェアなども無い?のかも。。
964nobodyさん:03/10/01 22:48 ID:???
>>963
オフィシャル、セミオフィシャル(オフィシャルからのリンク)では
Mac OS9用は無かった筈。ユーザレベルで作ってる人がいるのかも知れませんが、
Macユーザってこれまでunix系のポーティグに関心が薄かったから、いないかも
965963:03/10/01 22:59 ID:???
>>964
そうですか、OSの特徴考えると無いのも納得できてしまいます。
参考書もMacは度外視されてますね、さらなる情報を希望します。
964さんありがとうございました。
966nobodyさん:03/10/01 23:18 ID:???
>>965
蛇足とは思いますがテキストエディタのmiにはPHPモードもあるし、
チェック用サーバを用意できるのならOS9での開発も可能ですよね。
ただレンタルサーバでの動作確認はすべきでないのでローカルで
PHPが動作するサーバを立てられないのであれば止めた方が良いです。
(PerlのCGIでも同じことですが)

OSXなら自前でコンパイルすればOKですしentropy.chのパッケージも利用できます。
#僕はOSXでPHPの開発を行っています。
#HTMLレンダリング確認用にWindows機を用意できればベターですね。
967nobodyさん:03/10/01 23:25 ID:yG0+We25
>>963
OS/9用になら製作してみたいな
968920:03/10/01 23:26 ID:ZIP8qpPv
>>955
知人のサーバ借りてやってます。

>>956-957
元々そうなってまつ。

>>958
safe_mode On On
safe_mode_exec_dir no value no value
safe_mode_gid Off Off
safe_mode_include_dir no value no value
safe_mode_allowed_env_vars PHP_ PHP_
safe_mode_protected_env_vars LD_LIBRARY_PATH LD_LIBRARY_PATH

allow_url_fopen no value no value
になってまつ。
969nobodyさん:03/10/01 23:42 ID:wpMUMwLJ
ある日時になったら
指定したアドレスに自動的にメールが送られるようにする
にはするにはどうすれば良いでしょうか?

「時間になったら勝手にプログラムが動く」ようにするにはどうすればいいのか?
という所を教えてください、お願いします。
970nobodyさん:03/10/01 23:49 ID:???
>>969
cron
971404.HDML ◆StMXML.EXE :03/10/01 23:55 ID:???
>>968
( ゚д゚)。。。
972nobodyさん:03/10/02 00:00 ID:SD/hM9rJ
>>968
execに制限かかってるね
973963:03/10/02 00:02 ID:???
>>967
難しく無いのであればお願いしたいです。
と、軽く頼んでみたり..
974nobodyさん:03/10/02 00:07 ID:SD/hM9rJ
>>973
あくまでOS/9用だからMacOS9では動きません。
ごめん。マジレス貰うと胸が痛い
975963:03/10/02 00:17 ID:???
>>974
浮かれてました( -_-)σσフィニッシュデス
976nobodyさん:03/10/02 02:38 ID:???
>966
Mac OS-Xはunixベースだから、それ以前とは全然違うので。
Mac OS9ってcygwinみたいなのないんだっけ?
無ければVirtual-PCとか使ってエミュレータ上でPHPを動かすかな。
977ジジイ:03/10/02 11:00 ID:???
>>974
わしもOS/9のことかと思って、ちょっと胸が躍った。
そうすればX68が現役に復帰できるかもとか。

今の子らはOS9といえば、Mac OS9のことを指すんですな。
ジジイは会話にも入れてもらえんか。
978nobodyさん:03/10/02 11:27 ID:???
>>968
その設定だと、今までにでた実行方法は無理
もしそのディレクトリでSSIが許可されているなら、
virtual("hoge.cgi"); が使えるかもしれない。
それが無理なら、自力でhttp通信してcgiの結果を引っ張ってくるか、
php.ini の書き換えが必要
実行可能にすると共有サーバだとセキュリティに問題出るので
allow_url_fopen を On にして、"http://〜/xx.cgi"をreadfileするのがいいかも
979890:03/10/02 22:38 ID:lLLhgFxm
どなたかわかる方いめせんか?
色々調べても判らない・・・

phpじゃなくてcgiでもいいです
そのようなスクリプトは無いのでしょうか?
980nobodyさん:03/10/02 23:04 ID:???
次スレはここ使おう。どっちのスレタイにしたって初心者がくるんだから。

【PHP】質問スレッド Part10
http://pc2.2ch.net/test/read.cgi/php/1064104114/
981nobodyさん:03/10/03 00:00 ID:bJULOZa9
>>977
24歳ですが昔中古のX68000エキスパート買いました。
あの広大さはいまだ心に残っています。
なつかしいなぁ
982969:03/10/03 00:06 ID:???
>>970
ありがとです。
983nobodyさん:03/10/03 00:19 ID:???
PHPで関連をつかうにはどうしたらいいんでしょう?
ポインタないですよね?
984nobodyさん:03/10/03 00:19 ID:???
>>983
言葉足りなかったですが
オブジェクト指向プログラミングの時の話です。
985nobodyさん:03/10/03 01:18 ID:???
>>983
関連ってなぁに?
ポインタは無くて、似たような感じのだとリファレンスかな。
986nobodyさん:03/10/03 01:31 ID:???
他のポインタのハンドラです。
Cだと、メンバ変数にポインタを持たせるのですが
phpだとどうするのかなぁ。
987nobodyさん:03/10/03 01:32 ID:???
×他のポインタ
○他のクラス
988nobodyさん
クラスのプロパティにオブジェクト持たせりゃいいんでないのかい