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

■PHP板 質問専用スレッド■

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
一応たててみた。
レスは気長に待つのが良い感じかも。

答えられる方、返答よろしくお願いします。

参考リンク
■本家
http://www.php.net/

■Japan PHP Users Group
http://www.php.gr.jp/

■PHP 日本語ページ
http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/index.html

■PHP日本語マニュアル
http://www.asakawa.ne.jp/doc/php/ja/sjis/
0232YO2001/05/23(水) 19:17ID:xghf/r7I
電動さんいつもありがたう。

私がしたいのは>>231でいうところのhogeですね。
PHPでちょっと変数の値が知りたいというときに
ソースにfunc($var)という形で渡せば、'$var=....'と
表示されれば便利だなあ。と思って。
02332222001/05/23(水) 21:07ID:???
>>230さん
> fgets でしょ。

ここを変更するだけで上手くいきました。
ありがとうございました。


#マニュアル読みに逝ってきます。。。
0234松下2001/05/23(水) 21:55ID:TMWYPOj.
function var($var){
global $$var;
echo "$$var=".$$var;
}
var(hoge);

これでどう?僕は$GLOBALS展開しちゃうけどね
0235電動ナナシ2001/05/23(水) 22:27ID:???
<?php
$hoge = "hogehoge";
function varvar($var){
  global $$var;
  echo "$$var=" . $var . "<br>\r";
}
varvar($hoge);
?>
だと、
---------------------------
$hogehoge=hogehoge
---------------------------
となってしまうけど?
>>228 は
---------------------------
$hoge=hogehoge
---------------------------
という出力にしたいんでしょ?
0236初期不良2001/05/24(木) 01:07ID:fHlXXmpc
>>210
ちょっと apache よりの話になるけど、この辺って
解決の可能性あるのかな。apache のコピー自体が
ユーザ権限で動かないと module の実行権限を変える
ってのは無理だよね。
apache 自体の動作に変更が加わらないとだめだと思うから、
apache グループの考え次第ですけど...
0237名無しさん@お腹いっぱい。2001/05/24(木) 04:39ID:GEomzVSs
>>198-205
セキュリティ問題の話題ですけど、php.iniのsafe_modeをonにするのが
良いというのはなんとなくわかったのですが、onにすると、具体的にどうなるんですか?
マニュアル読んでもわからなかったので…

>>電動ナナシさま
>>188の他ユーザのファイルを読むスクリプトで、fseek関数はどう動作してるのですか?
fopen()で指したファイルポインタで事足りるような気がするのですが…
0238電動ナナシ2001/05/24(木) 05:15ID:???
>>safe_mode
exec や system で実行可能なファイル名が safe_mode_exec_dir にある
ものに制限される。exec_dir が /bin だとすると /usr/bin や /sbin と
いった別の場所にあるファイルを実行できなくなる。

>>fseek
fopen では pointer が先頭にくる保証はないと思っていたけど、マニュアル
読んだら
'r' - Open for reading only; place the file pointer at the beginning of the file.
とあるから、先頭に必ず来るんだね。つうことで、勘違いのためこれは不要。
0239電動ナナシ2001/05/24(木) 05:22ID:???
補足すると、http://www.php.net/manual/ja/configuration.php の
「セーフモード設定」を見ればちょっと書いてある
0240237@ナナシファン2号2001/05/24(木) 08:57ID:GEomzVSs
>>電動ナナシさま
すばやい解答ありがとうございます!!
safe_modeの件わかりました!
というか、safe_mode_exec_dirに書いてある文章に説明されてましたね…
「詳細情報についてはセキュリティの章を…」のところを必死に読んでました…
0241名無しさん@お腹いっぱい。2001/05/24(木) 09:37ID:Zsm6s/8w
>>240
ていうか、一度マニュアル全部流し読みでもいいから読む事をおすすめします。
次からは自分である程度トラブル対処出来る程度にはなれるよ。
0242名無しさん@お腹いっぱい。2001/05/24(木) 14:06ID:???
>>232
function ufFunc($param) {
 reset($GLOBALS);
 while (list($key, $value) = each($GLOBALS)) {
  if ($value == $param) {
   echo "$key = $value<br>\r";
  }
 }
}
$var = 123;
// $hoge = 123;
ufFunc($var);

でどお?
問題はあるけどとりあえず無視。
0243ナナシファン2号@独り言2001/05/24(木) 14:56ID:GEomzVSs
>>241
精進します(^^;
で、更に新しく気付いたことは。METHOD=POSTのときにURLデコードが不要だということ。
まあ処理自体はrawurldecode()とか使って簡単に行えるから苦労しないけど…
何だかなぁ〜
0244YO2001/05/24(木) 15:57ID:/eASZrZM
>>242
スごい!
$GLOBALSというのは現在宣言されている変数の集合体でしょうか。
変数名 値がペアになってるんですね。
つかわせてもらいます。マンモス盆にはのってなかった。。
0245名無しさん@お腹いっぱい。2001/05/24(木) 16:25ID:Zsm6s/8w
>>244
動作確認してないけど注意しないといけないのは、
$GLOBALS はグローバル変数を指す為のものだから ローカル変数だと
うまく動作しないと思う。 マンモス本には確かどういう物か載ってたと
思うよ。

>>242
これは考えつきませんでした。かっこいいです。
0246電動ナナシ2001/05/24(木) 17:56ID:???
なーるほど、そんなやり方があったんだ・・・。お見事でした。
0247初期不良2001/05/25(金) 01:31ID:???
>>242
まるっきり perl な書き方ですな(笑)
02481692001/05/25(金) 15:21ID:w1zVfjY.
>>242
 同じ値の変数があったら両方表示されてしまうような気がしますが、
デバッグ用だから、こまかいこと気にしないでOK?
 でも別に変数そのものを渡すことにこだわらないで、「変数名」文字列
渡して、値は$GLOBALSからもってくればいいのでは?

function varvarpapa( $varname )
{
echo "$varname = " . $GLOBALS[$varname ] . "<BR>\n";
}

var = 123;
varvarpapa( "var" );
02491692001/05/25(金) 15:55ID:w1zVfjY.
>>236
 PHPのソースを(同じレンタルサーバの)他のユーザーに見られない
ようにする方法としてこういうのは、どうでしょう?

1.前提として現在稼働しているapache(*1)は次の設定で動いている
 例) ポート:80 / グループ: www

2.PHP実行専用apache(*2)を別ポート/グループでもう1つ起動する
 例) ポート:8080 / グループ: phpexec

3.サーバのユーザーは、PHPのソースは、wrxr-----の形式で保存する
 ただしソースのグループは「PHPEXEC」

4.上記ソースは、*1のapacheは、PHPのソースにアクセスできない。(NG)
 反面、そのapacheから呼ばれたCGIからもアクセスできない。(OK)

5.*1のapacheには mod_rewriteをインストールしておく。
 拡張子が「php」か「php3」だったら、ポート8080で動いている
*2のapacheにリダイレクトするよう設定する。

6.「5」の設定により、phpのソースは、*2のapacheのみがアクセス
 できるようになり、他のユーザー/CGIからのアクセスは遮断できる。

 以上の設定と、既出のsafe_mode,open_basedir の設定を組み合わせれば
かなり完璧にできるような気がします。
 まだ、見落としあるかな
0250名無しさん@お腹いっぱい。2001/05/25(金) 16:31ID:???
>>249
PHPってパーミッション600じゃ動かないような。。。
02511692001/05/25(金) 16:48ID:w1zVfjY.
>>250
 おっと、この辺はよくわからないままかいてます。
 パーミッション640でもダメでしたっけ
0252antique = 2502001/05/25(金) 17:07ID:???
一般ユーザのグループをApache実行グループと同じにすれば、
640でも動くが、600ではやはりダメ。
けど640じゃ、CGIからソース覗けてしまうような。
02531692001/05/25(金) 17:16ID:w1zVfjY.
>>252
 CGIから覗かれるのを防ぐために、>>249 の案では、PHPしか実行しない
Apacheを用意(グループはPHP実行専用のグループを作る)してCGIからは
アクセス出来ないようにしてるつもり。でも、だめかな
0254名無しさん@お腹いっぱい。2001/05/25(金) 17:27ID:???
>>253
CGIアップ用 USER:hogehoge GROUP:ftpuser
PHPアップ用 USER:hogehoge2 GROUP:phpuser

ってな感じでアカウント分けるの?
02551692001/05/25(金) 17:49ID:w1zVfjY.
>>254
 だいたいそうです。
 でも、ユーザーわけると面倒なので、GROUPだけphpuserとかにします。
 でも一般ユーザーは、chown hogehoge:phpuser herohero.php なんて
できないので、このchwonの処理だけは、なんか機構を用意します。
 拡張子が、phpのファイルだけグループをphpuserにするスクリプトを
用意しておいて、誰でも実行出来るようにしとけばいいとおもいます。
 phpのソースをアップロードしたのち、最初の一回は、このスクリプト
実行しないといけないので、ちょっと面倒ですけど。許容範囲かなと
0256antique2001/05/25(金) 18:03ID:???
なるほど。可能かもしれません。試さないけど(爆

俺の案。久しぶりに頭使ってみた。

データベースのパスワード等覗かれたくないモノは、別ファイルにPHPで作成&書き出して、
パーミッションは600にする。
PHPで書き出したファイルは nobody ( or www等 ) が所有者なので、suexecでユーザ権限で
CGIを動かす場合、CGIからは覗けない。
他のユーザのPHPからは safe_mode その他の設定で覗けない。

例
setting.php
--------------------------------
<?php
$fp = fopen ("./setting.dat", "w");
fputs ($fp, "password");
fclose ($fp);

chmod ("./setting.dat", 0600);
echo 'make password file';
?>
--------------------------------

dbaccess.php
---------------------------------
<?php
$fp = fopen ("./setting.dat", "r");
$dbpasswd = fgets($fp, 4096);
fclose ($fp);
・
(その他の処理)
・
?>
---------------------------------

もち書き出しが終わったら、setting.phpは削除。これをCGIで覗かれたら元も子もない。

って勢いで書いたけどダメだったらスマソ。ってかこれって前出てたっけ???
# やっぱ究極的にはユーザ側の責任でって事で。
## 初期設定じゃ対処のしようも無いので、対処できるようにして、案を考えるトコまでで私は逃げます(爆
02571692001/05/25(金) 19:44ID:w1zVfjY.
>>256
 antiqueさんの案なら、apache1個ですみますね。なるほどー
 あとはsuExecの使用を徹底してもらえばいいのか。
 うーん、シンプルですばらしい
0258電動ナナシ2001/05/25(金) 23:24ID:???
ユーザーごとに chroot した環境で Apache を動かすって手段もあるみたいだね。
http://penguin.epfl.ch/chroot.html

ただ一般のレンタルサーバー屋ではここまでやってくれないだろうけど。
0259antique2001/05/26(土) 06:24ID:???
>>258
たしかtripodとか先日お亡くなりになった(笑)Datablocksは
chrootしてCGI実行してましたね。
0260初期不良2001/05/26(土) 12:52ID:eKGwZyuI
>>258
perl の path とか sendmail の path とかは
/usr/local とかにリンクを張っておくのか...
/usr/bin も欲しいか。
/usr だと home に入れちゃってだめやね(笑)
あと、良くやってそうなのが docroot のリンクとか。
他にもリンクが無いか気をつけないといけないのか...
0261初期不良2001/05/26(土) 12:54ID:eKGwZyuI
>>256
suEXEC してあれば制限するのは PHP だけで良かったのか。
気づかなかった...
0262名無しさん@お腹いっぱい。2001/05/27(日) 17:47ID:TXkcwEzY
長くてすみません。

以下のスクリプトを試すと

1 1 ほげ ほげ
2 2 ほげほげ ほげほげ

と2重(?)に表示されてしまうのですが、どこが間違っているのでしょうか?
宜しくお願いします。

<?php

$hostname = 'localhost';

if(!$my_con = @mysql_connect($hostname, 'user', 'password')) {
echo "$hostname との接続に失敗しました。。。";
exit;
}

$row = mysql_select_db('mydb', $my_con);

if(!$result = mysql_query('SELECT * FROM mytable')) {
echo '失敗 コード = ' . mysql_errno() . '<br />';
exit;
}

while($row = mysql_fetch_array($result)) {
echo implode($row, "\t") . "\n";
}

mysql_free_result($result);

if(!@mysql_close($my_con)) {
echo "$hostname との接続に失敗しました。。。";
}

?>
0263電動ナナシ2001/05/27(日) 21:46ID:???
while($row = mysql_fetch_array($result)) {
  echo implode($row, "\t") . "\n";
}
のところを
while($row = mysql_fetch_array($result)) {
  while (list($key, $val) = each($row)) {
    echo "\t[" . $key . "]->[" . $val . "]<br>\r";
  }
  echo implode($row, "\t") . "\n";
}
に変えてみれば原因は一目瞭然。
0264名無しさん@お腹いっぱい。2001/05/29(火) 01:29ID:eaIIwdBE
漠然としていますが、PHPで掲示板を作るときにおいて、
セキュリティ的に気おつける事ってありますか?
PHPって自動的に変数に代入してくれるから、
POST専用に作ってもGETで使えちゃいますよね?
0265名無しさん@お腹いっぱい。2001/05/29(火) 02:44ID:9gKnzQrg
if($REQUEST_METHOD != POST) {
echo "エラー";
exit;
}
とか
0266Pマン2001/05/29(火) 12:09ID:Jge7ct1.
$HTTP_POST_VARS しか使わないとか。
後リロードボタンを押した時に2重投稿にならないようにするとか。
PHPの場合文字化けに注意とか。
stripslash 関数参照の事。
0267名無しさん@お腹いっぱい。2001/05/29(火) 13:44ID:kzVptbgo
>$REQUEST_METHOD
この変数って詐称することこできないよね?

>$HTTP_POST_VARS しか使わないとか。
gpc_orderで設定するの??
他のスクリプトでGETとか使うつもりなのでソレは困るなぁ。
あと、PHP自体SAFE MODEで実行すべき?
0268Pマン2001/05/29(火) 14:51ID:Jge7ct1.
>>267
わざわざ gpc_order しなくても直接 $HTTP_ほにゃらら変数読めば
いいわけだし、グローバルに入ってるのが POST か GET かわからない
場合には 直接 $HTTP_ほにゃらら見れば確実って事。

それかいっその事 gpc_order で何も設定しないようにして自前で
$HTTP_ほにゃらら変数から取り込むようにするといいかも。
ついでに勝手にくっついてくる \ 記号を取り除いたり必要であれば
文字コード変換も色々やっといたら後々楽ちんかも。 PHP4では
かなり重要っぽかったりして。
0269名無しさん@お腹いっぱい。2001/05/29(火) 23:07ID:kzVptbgo
$HTTP_POST_VARSって
$HTTP_POST_VARS[〜]みたいにすると
詐称できちゃうわない?
0270Pマン2001/05/29(火) 23:45ID:Jge7ct1.
実験したら出来るっぽいね。
うーん、ちょっと別な手を考えてみよう・・・。

そんじゃクエリ文字列チェックして変数いじってるようなら
スクリプトの実行を停止させるってのはどお?
0271名無しさん@お腹いっぱい。2001/05/30(水) 00:31ID:nB9P6vf6
↓こんなページ見つけたよ。この通りやれば、一応おーけーかな?
http://www.geocities.co.jp/SiliconValley-SanJose/3026/docs/php3015.html
0272Pマン2001/05/30(水) 01:23ID:owRJ.xHA
>>271
なるほど、こんな手がありましたか。
ありがとうございます。
0273名無しさん@お腹いっぱい。2001/05/30(水) 01:30ID:1PS1i.dU
265さんの$REQUEST_METHODはどうだろう??
今、ちょっと試した限りでは詐称はできないみたいだけど。

269の俺の書き込みミスタイプがあるな。鬱だ。
0274PHP初心者2001/05/30(水) 07:01ID:MEv63Gow
Perlのtie関数で作成したデータベースファイル(BSD_DB)を
PHPで読み書きしたいのですが可能でしょうか?

具体的には、Perlで以下の方法でfilenameというファイルを作成しました。

tie %DATA,DB_File,"filename", O_RDWR | O_CREAT, 0644;
$DATA{"key"} = "value";
untie %DATA;

これをPHP上で読み込むにはdbmopenかdba_openを使えば良いのでしょうか?
dbmopenで読み込もうとしたらエラーになり、dba_openは命令そのものが
使えませんでした(トクトクのサーバ上で実験した結果ですが・・・)

うまく引き継ぐ方法があったら教えてください。
0275名無しさん@お腹いっぱい。2001/05/30(水) 11:51ID:???
「引き継ぐ」んだったら、CSVで吐き出すようなコードをperllで書く。
CSVをPHP用のDBにするようなコードをPHPで書く。
移植完了。

で、いいんじゃない?
「共有」だったらいろいろ考えなきゃいけないかもしれないけど。
0276名無しさん@お腹いっぱい。2001/05/30(水) 16:59ID:DHWjkFvM
HTMLでフレームを利用しているのですが、2つのフレームを
同時に変更or更新する方法をご存知の方はいませんでしょうか?

JavaScript使えば可能ですけど、端末の環境がまちまちなので
使いたくありません。
そこで、PHPで何とかできないかずっと考えているのですが・・・
0277名無しさん@お腹いっぱい。2001/05/30(水) 17:00ID:DHWjkFvM
HTMLでフレームを利用しているのですが、2つのフレームを
同時に変更or更新する方法をご存知の方はいませんでしょうか?

JavaScript使えば可能ですけど、端末の環境がまちまちなので
使いたくありません。
そこで、PHPで何とかできないかずっと考えているのですが・・・
0278名無しさん@お腹いっぱい。2001/05/30(水) 17:08ID:???
Frameとかの仕事はブラウザでやることだから、PHPからは無理。
0279名無しさん@お腹いっぱい。2001/05/30(水) 17:17ID:???
ロード毎に再表示してかまわないならframeタグのsrc属性でパスに適当なパラメータをくっつけてしまえ。
0280名無しさん@お腹いっぱい。2001/05/31(木) 17:06ID:Nhe4Mloo
>>279
やっと理解できました。どうも有難うございます。
なんとか出来そうですので、プログラム作成が一段落
したら試してみます。
0281名無しさん@お腹いっぱい。2001/05/31(木) 17:07ID:Nhe4Mloo
>>279
やっと理解できました。どうも有難うございます。
なんとか出来そうですので、プログラム作成が一段落
したら試してみます。
0282ネコ2001/06/01(金) 10:55ID:pu43d4FU
PHP初心者です。質問を一つ書かせていただきます。
ブラウザの種類によって、PHPが動いたり動かなかったり
することはあるのでしょうか?

というのも、現在とあるショッピングサイトの会員登録関係を
PHPで作っているのですが、ネスケ4.0だとエラーが出るのです。
IEや、同じネスケの4.7、4.75などではエラーが出ません。

PHPの動作としては、フォームに入力された文字(IDやパスワード)を
テーブルに問い合わせて、登録があればその内容を書き出すものです。
いわゆる登録内容変更ページというものです。

なにとぞご指南ください。
0283名無しさん@お腹いっぱい。2001/06/01(金) 11:05ID:???
>>282
単に「エラー」だと誰も分からないのでエラーメッセージそのものをあげれば適切なレスが返ってくる
んじゃないかな?
もちろんスクリプトファイル名などの公開がまずいんならそこだけ適当に編集してね。
0284名無しさん@お腹いっぱい。2001/06/01(金) 11:06ID:???
>>282
どのような ERROR が出ますか?
02852842001/06/01(金) 11:12ID:???
被った
02862742001/06/01(金) 11:20ID:???
>>275
CSVにする方法がよくわかりませんでしたが、いったんPerlのDBをTXTで
掃き出させて、PHPのDBに取り込む方法で解決できそうです。
ヒントになりました。ありがとうございました。
02872832001/06/01(金) 11:47ID:???
>>282
とりあえずformを記述しているHTMLをチェックしてみたらどうかな?
0288ネコ2001/06/01(金) 14:42ID:???
早いレスありがとうございます。
こんなに早いとは思いませんでした(^^;

ええと、エラーなんですが、まずうちのプログラマーが作ってる
共通の関数がありまして

********

function oci8_logon($userid="xxx", $password="xxx", $db="xx") {

error_reporting(0);
$conn = OCILogon($userid, $password, $db);
$conn_err = OCIError();
error_reporting(7);

if (is_array($conn_err)) {
oci8_error_conn($conn_err);
return;
}
return $conn;
}

********

これを、フォームのactionで指定したHTMLで

********
$conn = oci8_logon();
if (!$conn) {
error_msg($error_msg);
exit;
}

*********

として呼び出してます。エラーというのは$error_msgで指定した
$error_msg="失敗しました。";
という単なるメッセージだったようです。

これだけで分かりますでしょうか?
HTMLも確認してみたのですが、おかしいところはないみたいなのです。
02892832001/06/01(金) 14:56ID:???
>>288
まず確かめることはデータベースに接続できているのかどうか。
oci8_logon()で使っているIDやパスワード・データベース名が正しいか。

上記が正しいならデータベースが動いているかをチェック。
0290ネコ2001/06/01(金) 15:37ID:???
>>289
ありがとうございます。
データーベースへの接続はできているようですし、
パスワード等も合っているようです。データ−ベースも動いてます。
(他のブラウザでは問題なく動いているので)。

PHPのような言語は、ブラウザに影響されないんですよね・・?普通。
02912832001/06/01(金) 16:31ID:???
他回答者のレスもみたいところだけど…。

同じHTMLでもブラウザによっては解釈(表示結果)が違ってくるのでそこにも注意すべき。
>>287で書いたのはこういう意味。正しいHTMLを書いているなら問題ないだろうけどね。

では「実際に」エラーを出している行は特定できているかな?
>>288ではDBへの接続に失敗していればerror_msg()でエラー文を出力しているようだけど、
接続がちゃんとしているならその部分でエラーになっているわけではないはず。
もしどんなエラーになっても「失敗しました」としか出てこないなら文章を変えてもらったほうがいいね。

残る可能性としては「既にブラウザ判定処理が組み込まれていて」跳ねているとか、かなあ…。
02922832001/06/01(金) 16:31ID:???
他回答者のレスもみたいところだけど…。

同じHTMLでもブラウザによっては解釈(表示結果)が違ってくるのでそこにも注意すべき。
>>287で書いたのはこういう意味。正しいHTMLを書いているなら問題ないだろうけどね。

では「実際に」エラーを出している行は特定できているかな?
>>288ではDBへの接続に失敗していればerror_msg()でエラー文を出力しているようだけど、
接続がちゃんとしているならその部分でエラーになっているわけではないはず。
もしどんなエラーになっても「失敗しました」としか出てこないなら文章を変えてもらったほうがいいね。

残る可能性としては「既にブラウザ判定処理が組み込まれていて」跳ねているとか、かなあ…。
02932832001/06/01(金) 16:33ID:???
うわ、この板でも二重投稿になることがあるのか…とほほ。
0294電動ナナシ2001/06/01(金) 18:04ID:???
本当に $userid, $password に正しい内容が渡っている?
POST の内容を一度確認してみたら?

あと自分が書くなら error_reporting() を使うより、
$conn = @OCILogon($userid, $password, $db);
$conn_err = @OCIError();
とするかも。どうでもいいけど。error_reporting を使うのは、デバッグ
モードかどうかを指定できるようにして、デバッグモード有効時にのみ
エラーメッセージを HTML 中に吐き出すようにするときに使うなあ。
例えばページの先頭で
 $DEBUG_MODE = 2047; // no error report if set 0
 error_reporting($DEBUG_MODE);
みたいな感じで指定する。で、本番に移行するときは 0 にする。
0295PHP初心者2001/06/01(金) 23:06ID:SVe2IKbY
新しく契約しようとしているレンタルWebスペース(PHP4もサポート)で
DBを作成しようと実験してみたところ、エラーとなります。
エラーの内容は「Fatal error: Call to undefined function: dba_open()
in /home/public_html/temp/test.php on line 2」

どこがマズイのでしょうか?このスクリプトの置いてあるフォルダ(temp)は
パーミッション777にしてあります。また、数日前にここのサポートに
質問したところ、dba_open関数はサポートしていると回答されました。

test.phpの内容

<?php
$handle = dba_open("test.db","n","db2");
dba_insert("key","vaule",$handle);
dba_close($handle);
?>

ちなみにdba_openはおろかdbmopenすら動作しない状態でした。
0296電動ナナシ2001/06/01(金) 23:59ID:???
phpinfo() で何が組み込まれているか調べてみれば?
0297名無しさん@お腹いっぱい。2001/06/02(土) 01:49ID:???
質問。CSVファイルなどを使って、擬似的なデータベースをPHPで
生成させて利用なんてことが出来るでしょうか?
最初にCSVファイル群を食わせておいてやると、簡単なSQLを発行して
やることが出来る、みたいな。

たとえ実現したとしても、アクセス数が増えるとサーバーに結構な負荷が
かかるでしょうか??
0298松下くん2001/06/02(土) 02:15ID:wZoIC34o
undefinedなのにサポートしてるってのはおかしいね。どこのサーバだ?

dbmってPHP4からオプショソになったんじゃなかったっけ?(あいまい
0299PHP初心者(295)2001/06/02(土) 12:19ID:sIugQgBE
サポートから返事が来ました。
DB関連のライブラリが入っていないそうで、すぐには直らないそうです。
お試し期間内ですので、解約することにします。(ア●ムレンタルウェブです)
鯖も快適でサポートの回答も早かっただけに残念・・・。

いまのところ調べた限りでは、DB関連のサポートは

・millto、、、PHPver未調査 / dbmはOK、dbaはダメ / 激重でまともに使えない
・トクトク、、PHP3.0.14 / dbmはOK、dbaはダメ / 激重でまともに使えない
・●めいん屋、、、PHP4.03pl1/ dbmはOK、dbaはダメ / テレホでも快適
・ア●ム、、、、、PHP4.05 / dbm、dbaどちらもダメ / テレホでも快適

有料でもよいので、dbm,dbaどちらも使えるレンタル鯖どこかご存じありませんか?
dbaだけでも良いのですが、、、(スレちがいの質問でしょうか)
0300電動ナナシ2001/06/02(土) 17:02ID:???
PHP-4.x のところは jstring 入れているか確認したほうがいいよ
入れてないと面倒かも

レンタルサーバーの話題はそれこそレンタルサーバー板でやったほうが
いいだろうね
0301PHP初心者(295)2001/06/07(木) 09:41ID:sUHW0iBs
>PHP-4.x のところは jstring 入れているか確認したほうがいいよ
>入れてないと面倒かも

jstringが入っているかどうかはphpinfoのどの部分を見れば分かるのでしょうか?

それとイメージ関数でgif画像を表示させてみましたが、画面の左隅に出てきてしまいます。
まん中に表示されるには、どのような方法がありますか?上記画像を表示中は、HTMLタグが
使えないので<CENTER>や<DIV ALIGN=CENTER>などでセンタリングできませんでした。
0302名無しさん@お腹いっぱい。2001/06/07(木) 09:48ID:???
Configure Commandに--enable-jstringがあって
Multibyte (Japanese) Support が enabledになってればOK。

下の方の質問は意味不明。
0303名無しさん2001/06/07(木) 12:03ID:???
PHPでのメール送信ですが、mail関数 mail() を使って送るのと
Perlでよくある sendmail に渡して送るのとでは、どちらが
サーバへの負荷が少ないでしょうか?
今は、mail()で送ってます。1日数百回程度。
0304YO2001/06/07(木) 15:33ID:Og9QEOH2
こんにちは。
質問です。
POSTでデータを送った場合、ブラウザで再読み込みすると、またまた
同じデータが送られてしまうんですが、どうにかなりませんか。
(掲示板、アプローダなど)
0305YO2001/06/07(木) 15:34ID:Og9QEOH2
こんにちは。
質問です。
POSTでデータを送った場合、ブラウザで再読み込みすると、またまた
同じデータが送られてしまうんですが、どうにかなりませんか。
(掲示板、アプローダなど)
0306名無しさん@お腹いっぱい。2001/06/07(木) 15:40ID:???
>>304-305
書き込み処理後 Location で飛ばす。
# 2chはそうなってるけどあなたは二重書き込みしてますが(w
0307名無しさん@お腹いっぱい。2001/06/07(木) 15:58ID:???
なかなかいい質問だね(w
0308YO2001/06/07(木) 16:10ID:???
エヘヘ!
カチューシャ使用なんです。
0309初期不良2001/06/07(木) 17:02ID:v8J6N31c
$str = ereg_replace("\\$([A-Za-z0-9_]+)", "${\\1}", $str);
ってできないの?どんなにいじくり倒してもうまく動いてくれない。
\\1 にはきちんと文字が取り込まれているのに...
0310松下くん2001/06/07(木) 21:15ID:G09eKIiU
>>303
mail関数はsendmailつかってるから同じダヨ
phpinfo()のsendmail_path見てね
0311PHP初心者(295)2001/06/07(木) 21:24ID:sUHW0iBs
>>302

Configure Commandをみたところ、jstringの項目自体ありませんでした。
これがあるかどうかで、日本語表示に影響があるのでしょうか?

【Configure Commandの項目抜粋】
'./configure' '--with-apache=//home/mleber/src.he.net/
apache-1.3.6.work/apache_1.3.6' '--enable-track-vars'
'--enable-magic-quotes' '--with-mysql' '--with-gd'
'--with-ttf' '--enable-ftp' '--with-zlib'

それと、イメージ関数(GD)が説明不足でした。m(_ _)m
以下のようなスクリプトでgif画像をだしてみたのですが、
画像が左隅に寄ってしまうので、まん中にするには
どうしたらよいのか分かりません。(以下、座標は適当です)

header("Content-type: image/gif");

$im = imagecreate ($width ,$height);
$black = imagecolorallocate ($im,0,0,0);
$red = imagecolorallocate ($im,255,0,0);
$green = imagecolorallocate ($im,0,255,0);
$blue = imagecolorallocate ($im,0,0,255);

imageline($im,x1,y1,x2,y2,$red);
imagestring ($im,fontsize,x3,y3,"文字",$red);
imagestring ($im,fontsize,x4,y4,"文字",$green);
imagestring ($im,fontsize,x5,y5,"文字",$blue);

imagegif ($im);
imagedestory ($im);
0312初期不良2001/06/08(金) 04:15ID:yNn8Dm5U
>>309
自己レスだけど、後方参照と変数展開のタイミングの問題か?
後方参照は \\ と二つ打つあたりから見ても文字として
ereg が取り込んだあとに解釈しているっぽい。
それ以前に変数展開しようとするからエラーになる、と。

もしかして perl でこんなことできるのってかなりすごいこと?
%tmp = ("str" => "succeeded.");
$str = '$str succeeded.';
$str =~ s/\$([\w]+)( $tmp{\1})/$tmp{$1}$2/;

$str は "succeeded. succeeded."

どうしたら PHP で後方参照を元に変数展開できるかな。
0313初期不良2001/06/08(金) 04:21ID:yNn8Dm5U
$str = ereg_replace("\\$([A-Za-z0-9_]+)", "${\\1}", $str);
↓
$str = ereg_replace("\\$([A-Za-z0-9_]+)", '${\\1}', $str);

もしかしてあとで変数展開してくれないかなと
期待してこうしてみたけどだめだった。
本格的にだめなのか?
0314名無しさん@お腹いっぱい。2001/06/08(金) 13:45ID:Ec8tYdQk
フォームについて教えて下さい。

複数のチェックボックスがあった場合、foo[]という風に配列
で受け取れますが、複数のテキストフィールドの場合でもbar[]
という風に配列で受け取っても問題無いのでしょうか?

テストした所、一見問題なく動いているようなのですが・・・
0315名無しさん@お腹いっぱい。2001/06/08(金) 16:51ID:Nor6.bTw
<?php phpinfo(); ?>
とだけ書かれたURLにPOSTしてみて、渡される内容を確かめてみるといいぞ。
0316名無しさん@お腹いっぱい。2001/06/09(土) 03:02ID:5/7kfvYw
VC++のデバッガのように、
呼ばれた関数一覧を取得する方法はないのでしょうか?

function Hoge()
{
Mnu();
}
function Mnu()
{
//呼ばれた関数の取得.
Hoge , Mnu と表示.
}
0317名無しさん@お腹いっぱい。2001/06/09(土) 03:19ID:sb0cuGDw
>>316
perldoc -f caller
0318名無しさん@お腹いっぱい。2001/06/09(土) 03:20ID:???
>>317 Perlと間違いたごめんなさい
0319電動ナナシ2001/06/10(日) 03:02ID:???
>>312
ううむ、変数の中に "\\n" を含めるとワーニングが出るなあ。
1 行増えるけど、こういう書き方もあるだろうね。

$base = array('$hoge' => "hage", '$foo' => "bar");
$str = '$foo is bar';
$pattern = "(\\\$[A-Za-z0-9]+)";
ereg($pattern, $str, $match);
$str3 = ereg_replace($pattern, $base[$match[1]], $str);

結果は "bar is bar" になる。
0320電動ナナシ2001/06/10(日) 03:43ID:???
>>311
jstring は別途組み込まないとダメだ。Google とかで php と jstring を
キーに検索してみろ。

なお、jstring がないと EUC 以外の文字コードの扱いに困難をきたすが、
コードの変換をしないとか正規表現を含む文字列関数を使わないなら別に
なくてもいい。
0321電動ナナシ2001/06/10(日) 03:54ID:???
>>316
自分で作りこむしかないと思うぞ。
0322名無しさん@お腹いっぱい。2001/06/10(日) 10:30ID:7GXX5a22
fsockopen で

$fp = fsockopen ($host, 80, $errno, $errstr, 30);

のような書き方をしているのですが、時々タイムアウトして
「Fatal error: Maximum execution time of 30 seconds in hoge.php on line 42」
とエラーメッセージが出てしまいます。
この際、用意された(?)エラーメッセージではなく
独自のエラー処理をしたいのですが、どうすれば良いでしょうか?
よろしくお願いします。
0323名無しさん@お腹いっぱい。2001/06/10(日) 19:16ID:mZEbGQ.k
$fp = @fsockopen ($host, 80, $errno, $errstr, 30);
if(!$fp){ echo __LINE__."行目でえらあ出ちゃった";
}else{
while(!eof.....

@でエラー抑制できます
0324初期不良2001/06/10(日) 23:16ID:1hgwnV2Y
>>319
そんな感じに見つかった数だけ再検索って事になっちゃうのかな...

どーでもいいんだが
warning ってウォーニングって読むんじゃないのか?
なんかワーニングって書く人多いが。
0325PHP初心者(295)2001/06/11(月) 01:27ID:1Tk0xrdc
>>320

>コードの変換をしないとか正規表現を含む文字列関数を使わないなら別に
>なくてもいい。

いまのところ、これが不足することによる弊害はないようですので、
大丈夫だと思います。

ところで、1つのデータベース(ファイル)に多くの人が同時に
アクセスしたら(通常の書込みファイルのように)壊れることは
あるのでしょうか?
汎用ファイルロック(flock)はデータベースには使えませんし・・・。

Perlの場合は、データベースでもダミーファイルでロックできましたが、
PHPの場合、どうやるのかわかりません。

ちなみに、ユーザーが100人くらいいて、1つのデータベースを読み書き
しています。全員が同時にアクセスはしませんが、今後のに備えて
おきたいです。よろしくお願いします。
0326名無しさん@お腹いっぱい。2001/06/11(月) 02:47ID:GHljoYjE
>>323
古・・・・
こっちだろ。
$fp = fsockopen($host, 80, $errno, $errstr, 30) or die('なんたら');
0327あなたも億万長者をめざしませんか?2001/06/11(月) 16:52ID:p/rGLx3E
http://home9.highway.ne.jp/cym10262/
0328名無しさん@お腹いっぱい。2001/06/12(火) 00:22ID:???
PHPで、一定時間ごとに自動で集計させるようなものを動かしたい
のですが、cronはCGI版のPHPでしか使えないのでしょうか?
0329名無しさん@お腹いっぱい。2001/06/12(火) 00:54ID:???
cronで一定時間置きにwgetを動かすとか。
0330PHP初心者(325)2001/06/12(火) 02:17ID:???
データベースのファイルロック、つくれました。
perlのデータをPHPに書き直したら、上手くいきました。
0331名無しさん@お腹いっぱい。2001/06/12(火) 07:22ID:???
>>329
> wget

何を集計するんだよ?
0332名無しさん@お腹いっぱい。2001/06/12(火) 09:29ID:???
>>331
コマンドライン版PHPが嫌ならwgetとかで定期的にHTTP越しで
PHPにアクセスしろってことだろ
■ このスレッドは過去ログ倉庫に格納されています