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

【PHP】質問スレッド Part4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/06/02 15:32ID:f3afNVBG
レスは気長に待つのが良い感じかも。


<<参考>>

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

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

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

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


過去スレ, 関連スレは>>2を見よう。
0276nobodyさん02/07/03 02:11ID:+bzS6Uur
http://php.s3.to/bbs/fstyle/read2.php?url=http://pc.2ch.net/php/&key=1022999539&ls=50
0277 02/07/03 12:07ID:???
>>275
何回も繰り返し処理をするものや同じ記述をコード内に繰り返すものを
ファンクションでサブルーチン化、これ便利ね。
ある程度まとまった複雑な処理をする場合、これをクラス化して内部の
関数を取り出したり再利用することができるこれがクラスね。
で、PHPでどこまでのものつくるかしらんがちょっとした程度のもんなら
クラスなんてつかう必要はない。
0278nobodyさん02/07/03 14:10ID:???
>>275
クラス使う場合はオブジェクトな指向を思考してください。
0279nobodyさん02/07/03 14:22ID:???
>>277
(´-`).。oO(それ、クラスの使い方間違ってるような‥‥)
0280nobodyさん02/07/03 20:59ID:govsnHFj
phpにgdを組み入れてインストールしたいんだけど、どうにもうまく
動きません。gdは1.8.4
redhat7.3つかてるんだけどもgdは最初から組み込まれているみたい。
rpm -eしてからmake installとかして--with-gdとかにしてるんだけど
やるとapacheが起動しなくなります。へるぷ
0281nobodyさん02/07/03 21:00ID:???
超しろうとです。。よろしくお願いします。

form.html(下記参照)にてテキストボックスに
文字を入力し、submitボタンで送信しましたが、
display.php(下記参照)に何も表示されません。
原因としては何が考えられるでしょうか???

phpのバージョンは4.2.1です。


form.htmlのソース

<html><body>
<form action="display.php" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>

<html><body>
<?
print $fName;
?>
</body></html>




display.phpのソース

<html><body>
<?
print $fName;
?>
</body></html>
0282nobodyさん02/07/03 21:16ID:R6CLh4kM
print $fName;
でなくて
print $_POST["fName"];
028328102/07/03 21:38ID:???
>>282
どうもありがとうございます!
早速明日会社でやってみます!!
0284nobodyさん02/07/03 22:57ID:???
>>281
スレの頭に原因が書いてあるので嫁。
phpinfo()くらい確認しろ。
0285Power02/07/04 11:27ID:6mswN9rJ
header関数がうまくいきません。

header("Location: http://www.php.net/");
上記を実行すると下記のエラーが発生します。
どして?

Warning: Cannot add header information - headers already sent by
(output started at /test/test.php:7)
0286nobodyさん02/07/04 11:48ID:???
そのままです。
検索すればすぐに解明できそうなものを。。。
0287nobodyさん02/07/04 15:12ID:???
>>285
headers already sent だから
0288nobodyさん02/07/04 18:10ID:???
こんにちは。returnで配列を返す時に、

送る側
return($list);

受け取る側
$list=$this->hoge();
while(list($key, $value) = each($list)) {
処理・・・・
}
と書いてますが、値が全然取れません。送る前に値が入っているのは確認しました。
明確に「配列だよ〜ん」と書く必要がありますか? それはPHPでどうやって・・・?
すみません、よろしくお願いいたします。
0289nobodyさん02/07/04 18:57ID:???
>>285
えっと、header関数が組み込まれる前になんか文字とか出力されてると
そんなエラーでまつ。とゆーわけでheader以前のprint文なんかを確認するとか、もしくは
<?php ?>で囲まれてない部分にスペースとかなんか文字がかかれているとエラーになるので
そんなのも確認してみまSHOW
0290あ02/07/04 19:53ID:bt2uu3Sk
あ
0291nobodyさん02/07/04 20:35ID:???
flockをかけるタイミングでベストなのは?
0292nobodyさん02/07/04 20:36ID:???
すみません、アクセスカウンタでの場合です。
0293nobodyさん02/07/04 23:42ID:dLbCkgI+
JavaScriptみたいに、PHPからブラウザプラグインの環境を知ることは、
できないですかね?できないですよねぇ…
0294nobodyさん02/07/05 00:52ID:???
サーバサイド
0295nobodyさん02/07/05 01:52ID:jFz8E7Y4
>288

whileの前で$listの中身確認してみては?
0296nobodyさん02/07/05 07:14ID:???
http://www.php.net/manual/ja/function.get-browser.php
これはどうなんでしょ
0297nobodyさん02/07/05 10:32ID:C173d5WV
PHPでキーボードイベントや
マウスクリックイベントを取得することはできないのですか?
getkeystate みたいなやつとか・・
0298nobodyさん02/07/05 10:42ID:???
クリップボードの中身を取得することはできますでしょうか
029929302/07/05 12:37ID:bJdk03R6
>>296
お、それFlashもわかるみたいでいいですね。
でも共用レンタルサーバなのでbrowscap.ini がインストールできない。。
0300nobodyさん02/07/05 12:40ID:???
>>298

氏ね
0301nobodyさん02/07/05 13:08ID:???
>>299
んなこたーない。
0302nobodyさん02/07/05 21:28ID:???
なあ、一言だけ言わせてくれ。

SESSIONって便利だねえ!

御清聴ありがとうございますた
0303nobodyさん02/07/05 23:03ID:???
ディレクトリが作りたくてmkdirやってみたはいいですけど、
そのphpファイルと同じディレクトリならディレクトリ作れますが、
セーフモードの場合その下位にも上位にも作れないですよね。

上位は流石にマズいと思われるのでどうでもいいですけど、
一つのphpファイルだけで下位に作れちゃう方法はありますか?
0304nobodyさん02/07/05 23:46ID:6m20wbXX
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// always modified
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=euc-jp">
</head>
<form NAME="output" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
<input type="hidden" NAME="text" value="">
<input type="submit" value="押すな">
</form>
<script language="JScript">
function transferClipboard() {
document.output.text.value = clipboardData.getData("Text");

}
transferClipboard();
</SCRIPT>
<?php
if($_POST["text"]) {
$fp = fopen("/tmp/data.txt","a+");
fwrite($fp,$_POST["text"]."\n");
fclose($fp);
}
?>
0305nobodyさん02/07/06 12:11ID:g7/vswyq
ヽ(´▽`)ノ ユカイダナ-
0306nobodyさん02/07/07 00:37ID:???
うふふ。
0307nobodyさん02/07/08 19:13ID:vmjgMMy4
すいません、質問です。
100分の3とか、確率を設定して、当選するかしないかというプログラムを書いています。
DBから3というデータを取り出して、配列に3個の要素を格納し、一個ずつ、乱数を生成して
(例えば10,100,500とか乱数で出す)、任意の数字とマッチさせて、マッチすれば、当選という
感じにしています。

ところが、1000分の500にしようとして、500個生成したら、その中で同一の数字も出てくる
わけで、その分当選率が下がってしまいます。例えば、500個のうち、100が10回出てきたら、
1000分の490になってしまうのです。

それではいけないので、100が一回出てきたら、もう100が出ないように、すでに出てきた
要素数とマッチさせて、マッチしたらもう一回生成するという感じで組んだのだが、
それで実装すると、恐ろしく時間がかかってしまいます。

その当選するかどうかの処理は、五個あるので、ちょっと使い物になりません。
どうしたものかと頭を悩ませております。助言くださりませ。

連想配列を使えとありますが、どう書いたらいいかわかりません。。。。。
一応、今書いているコードを書いておきます。

$yousosu1 = 500;
for($i=1;$i<=$yousosu1;$i++){
$atari1[$i] = rand(1,1000);

/* これまでに生成された要素を取り出す */
for($ii=1;$ii<$i;$ii++){
/* これまでに生成された要素と同じであれば、その要素を消す */
if($atari1[$ii] == $atari1[$i]){
array_pop($atari1);
}
}
}

0308nobodyさん02/07/09 00:51ID:bUbte1LM
>>307
・要素数1000の配列を作ってそこに1〜1000の値を順に格納。
・そこからarray_rand()関数で500個抜き取る。

てのは駄目かな?
メモリを無駄に使うけど速度は稼げると思う。
030930702/07/09 14:17ID:AVgu1PiI
> 308
ありがとうございます。
解決しました。array_rand()関数なんてあったのですね。
勉強になります。

それ以前に連想配列もわかんないといけないのですが・・・・・・
0310nobodyさん02/07/09 19:03ID:+vatuIIk
初歩的な質問で恐縮です。

今まで<!--#exec cmd="./xxx.pl"-->のように、CGIをSSI
で呼び出していたのですが、PHPでCGIを呼び出して結果を
表示させる事は可能でしょうか?
0311.02/07/09 22:17ID:???
勿論。
0312nobodyさん02/07/10 01:02ID:+PGQkPhp
>>311
呼び出し方を教えてください
0313osage02/07/10 01:41ID:???
shell_exec?
0314nobodyさん02/07/10 01:47ID:???
>>312
PHPのマニュアルの言語リファレンス読んできいや。
0315nobodyさん02/07/10 02:02ID:???
>>310
でも、そんな変なことをするよりも、もっとまともな解決方法はあるから、
そういう手法を身につけるべき。
0316nobodyさん02/07/10 02:04ID:???
>>312
<!--#exec cmd="./xxx.php"-->
これでいいんじゃねーの
0317nobodyさん02/07/10 02:04ID:+PGQkPhp
日本語訳を読んでみましたが、http://www.php.net/manual/ja/ref.exec.php
ここらへんだと思うのですが、手当たり次第実行してみても表示されません。
0318nobodyさん02/07/10 02:08ID:???
PHPの呼び出しを、通常の <? ?> ではなく
タグ文字でない {? ?} みたいなのでやりたいのだが
ソースのどこをいじればできるのか教えれや
0319nobodyさん02/07/10 02:11ID:???
あんなに良いマニュアルあっても、ほとんどの人は読んでいないんだろうな。
PHP-USERS の ML 見てると

「インストール」が3割
「○○について」が2割
「○○が動きません」が2割
マニュアル読めば分かるものばっかり

たまには、マニュアルも読みなさい。
http://www.php.net/manual/ja/
032031602/07/10 02:16ID:???
>>312

316だが、すまんカン違いしてた。
俺は実行結果を加工してるので exec() 使ってる。

加工する必要がないなら system() とか passthru() とかでいいんじゃねーの?
0321nobodyさん02/07/10 02:18ID:???
>>319
出来ない人ほどマニュアル見てないからなぁ
口ばっかり達者で人に聞くことしか知らん・・・
0322nobodyさん02/07/10 02:29ID:???
おまいら、設定の所も読んでください。

>318
確かソースをいじる必要はなかったんじゃ・・・
ソース手元にないんでちょっとあれだけど、
ソースいじるならASPモードの方判定しているところとかどうよ?

>317
セーフモードによる制限とかに引っかかっていませんか?

>320
最後の一行しか返らないんじゃなかったっけ?
全部欲しいときは、shell_exec()で
0323nobodyさん02/07/10 02:37ID:+PGQkPhp
>>315
コンテンツを作るのに精力を傾けているので、Perlも改造程度しか
出来ないんです(頭の問題もあるけど)、PHPに少しずつ移行した
いのですが、こまごましたスクリプトを書き直すのは時間が掛かり
過ぎるので、今あるPerlベースのスクリプトを活用したいのです、
出来る人から見れば変かもしれませんが...

>>316
それはSSIでPHPを呼び出す方法では?その後の>>320も試したけど
なにも表示されませんでした。
詳しく書くと、xxx.phpからSSIのように部分的にCGIを実行させた
いんです、<? exec("./xxx.cgi"); ?>でいいのですか?
ここがわからないと実行の仕方が悪いのか、呼び出しているCGI
が問題なのかわかりません。
0324osage02/07/10 02:41ID:???
<?
echo exec("hage.cgi");
?>
では?

#セーフモードで、exec()を制限してたりしない?
0325nobodyさん02/07/10 02:43ID:+PGQkPhp
>>322
セーフモードって<? phpinfo(); ?>で一覧が出てくる中にある
safe_mode_exec_dirとかですか? 1になってます。
safe_modeはOffでした。
0326osage02/07/10 02:51ID:???
いや失敬 Off なら OK です。
0327nobodyさん02/07/10 03:12ID:+PGQkPhp
>>324
ありがとうございます、一応は動くことが確認できました。

でも、printが動いているだけで、Perlとしては動いていないようです。
試しに、下記をcgiとして動作させると表示はしません。
#!/usr/local/bin/perl
$AGENT=$ENV{'HTTP_USER_AGENT'};
print "$AGENT";

print '$AGENT'; とすると「$AGENT」、print "hoge";とすると「hoge」
とでます、PHPとして動いているって事ですか?
0328nobodyさん02/07/10 21:23ID:???
>>327
> printが動いているだけで、Perlとしては動いていないようです。

意味不明。


> 下記をcgiとして動作させると表示はしません。

だろうな。


> PHPとして動いているって事ですか?

ワケワカラン。
エラーメッセージが出なければ動いてるんだろ。
0329nobodyさん02/07/10 21:28ID:???
>>323
そんなこといっている&わけのわからん試行錯誤している暇があるんなら、
まともな手法おぼえろよ、バカ。
0330nobodyさん02/07/10 21:51ID:FZyFUyp9
>>328>>329
結局お前もわかんないんだろ?俺も試したがわからん
素朴な疑問としても面白いと思うが、回答求む
0331nobodyさん02/07/10 21:54ID:???
>>330
わかるよ
でも面白くないから答えてやんない
0332nobodyさん02/07/10 22:29ID:???
ウフフって感じだね
知らないくせに
033332802/07/10 22:40ID:???
>>330
漏れは327の言っていること自体よく分からん。


#それにしても、"ID:+PGQkPhp" ってカコイイよな...
0334nobodyさん02/07/10 22:42ID:???
> 素朴な疑問としても面白いと思うが

……。(呆
0335nobodyさん02/07/10 22:51ID:???
スキルのない煽り君だらけって事で終了〜
0336nobodyさん02/07/10 23:16ID:???
スキル以前のことを質問しているってことすら認識できていないバカ発見。
033732702/07/11 00:24ID:OZ6VhSK5
どなたかわかる方いませんか?(^^;
0338 ◆IEXmM1Rw 02/07/11 00:51ID:???
Oracle DB に接続できない!

PHP4 + Oracle8i + Windows2000Pro + Apache 3
です。
0339nobodyさん02/07/11 00:56ID:???
>>337
だから、お前がなにやっているのかすらも意味不明なんだよ…。
0340nobodyさん02/07/11 01:10ID:???
>>327
いや、あんたはまずPerlをお勉強するべきです。
ちゃんとCGIを動かせるようになってからもう一度きて欲しい。
0341nobodyさん02/07/11 01:34ID:OZ6VhSK5
>>339
例えば、下記のhoge.cgiをPHPから呼び出して表示するには、どうし
たらいいでしょうかって事なんですけど。
#!/usr/local/bin/perl
$AGENT=$ENV{'HTTP_USER_AGENT'};
print "$AGENT";

SSIで呼び出すように<!--#exec cmd="hoge.cgi"-->、PHPから
<? echo exec("hoge.cgi");?>を呼び出してもうまくいきません。
034234002/07/11 01:41ID:???
いい加減うぜーつーの
fopen調べろ
0343nobodyさん02/07/11 02:09ID:???
俺も答えられないんだけど、ここにはまともな奴はいないのか?
『知識は自慢するものではなく人に伝えるもの』っていい言葉
があるよ。
0344nobodyさん02/07/11 02:14ID:???
>>343
またこの手のバカが出てきたかよ…。ったくバカが口出すな。
0345nobodyさん02/07/11 02:56ID:???
馬鹿がバカに向かって「バカ」と言えるスレはここですか?
0346高卒童貞無職02/07/11 09:57ID:???
--- hoge.php ---
〜〜〜〜〜〜〜〜
<?
$mstrng = shell_exec('./cgi-bin/env.cgi');
$mstrng = ereg_replace( "Content-type: text/html", "",
$mstrng );
echo $mstrng;
?>
〜〜〜〜〜〜〜〜

--- env.cgi ---
#!/usr/local/bin/perl
print <<END_OF_HTML;
Content-type: text/html
<div align=center><table border=1>
<tr><th>Environment variable name<th>value</tr>
END_OF_HTML

while (($key,$value) = each %ENV) {
print "<tr><td><font color=blue>$key</font><td>$value</tr>\n";
}
print "</table></div>"

---
今すぐ回線切って柿の木残して首吊って死ね。
0347nobodyさん02/07/11 10:44ID:???
何か変……。
0348nicebodyさん02/07/11 13:23ID:???
>>341

PHPから呼び出した時点でCGIじゃないので、
perlとしては動くが CGIとしては動かないというのが正解だろう。

つまり、CGIとして伝えられるはずの環境変数なんかは伝わらないに10モナー 

試してないから責任は取りません。
0349nobodyさん02/07/11 13:27ID:???
>>343

ちゃんと教えてもらうなら、有料になりますね。


只がよければ煽りにも耐えて待つしかねーだろと思われ
0350nobodyさん02/07/11 14:04ID:7dp96S8n
肉
うざかったら放置で頼みます。
SQL使用不能・PHP4セーフモードのレンタルスペースにて、
サイト内検索(テキストファイル内からの検索)エンジンを使いたいのです。
フリーのソースを探し回ったところ、どこもSQLを使用しておりまして。
phpdotcomからも見つけられなかったのですが、
どこかにフリーで公開しているところありませんかね?

自分が何か勘違いしている可能性もあるので、そこのレンタルスペースの規約(抜粋)。
Q: PHP は使用できますか?
A: PHP4 がモジュールでインストールされております。ただし、セキュリティの関係上から safemode でのみ動作いたします。拡張子を .php にしてください。また、データベースとの連携は行っておりません。
0351nobodyさん02/07/11 15:18ID:???
(´-`).。oO(どこの鯖か一発で判っちまった‥‥)
0352nobodyさん02/07/11 15:41ID:???
>>350

Namazu れ。


> 肉

???
035335002/07/11 15:55ID:???
>>352
NamazuはPerlを使えるようになってないといけないようで。
私が世話になっているribbon.to/httpd/faq.htmlではPHPのみ可能らしいです。

自分、何か勘違いしてたら指摘求む。
0354nobodyさん02/07/11 16:41ID:???
(´-`).。oO(共用サーバで全文検索スクリプトはやめてホスィ(゜д゜)
       
035535002/07/11 18:39ID:???
>>354
それを言われると痛い.....
いや、Googleのサイト内検索も効かないもんで。
0356nobodyさん02/07/11 19:40ID:???
ribbon.2
0357nobodyさん02/07/11 19:41ID:???
教えて君に対抗する、教えてやらない君が出現し始めたような気がする…。
0358nobodyさん02/07/11 21:19ID:???
>>357
で、質問は何ですか?
0359osage02/07/11 22:13ID:Rp1Mey72
遅レススマソ

>>347
『何か』どころか全然だめでしょ?
shell_exec した時点で、ENV 引き継げなくのは当たり前。
少し考えてからコードかけ。

>>342
fopen なんてしたら、php が動いているところ(WebServer)の ENV が入って来ちゃうでしょ?

>>330
面白いもなにも、最初に提示された条件だけなら、
<?echo shell_exec('/hoge.cgi')?>
だけで、十分だろ

>>329
最初の質問者がアホだから仕方がない

よって
>>341 は、
・php 側で ENV 全部入れ直す。
・全部 php に直す。
のいずれか以外に道はない


全員、php でもなく、perl でもなく、"CGI"のお勉強でもしる
0360nobodyさん02/07/11 23:07ID:???
>>359
> 全員

って何さ?
0361nobodyさん02/07/12 00:49ID:???
>遅レススマソ
この一言だけで「終わった話題を蒸し返した」&「全てガイシュツなレスを垂れた」罪が赦されると
思っているなら>>359は氏ねよ今すぐに。
0362nobodyさん02/07/12 02:39ID:???
遅レスでもレスつけれないやつよりはマシかと
0363osage02/07/12 03:33ID:???
>「全てガイシュツなレスを垂れた」
どこら辺が、すべてガイシュツなんだ?

#終わった話だったのは、みとめるけどさ。
0364nobodyさん02/07/12 14:16ID:???
キタイ(・∀・)age.
036535002/07/12 15:23ID:???
>>364
あがっていませんよage
0366nobodyさん02/07/12 20:50ID:GVODDFli
すみません、質問です!

あるスクリプトaaa.phpからbbb.phpを呼び出して実行したいと考えています。
が、このbbb.phpは現在↓のようなかたちで

bbb.php?id=1&html=ture

呼び出されています。
idはこれをキーとしてDBを読み、関連データを持ってくる。
htmlはtureであればHTMLファイルを生成し、
指定されていなければそのままブラウザに出力する。

現在bbb.phpは一覧表のような所からリンク形式で呼び出されているのですが
データ登録時(←aaa.php)にHTMLファイルを自動生成する必要性が出てきてしまいました。

readfile("bbb.php?id=1&html=true");

とやってみましたが、「んなディレクトリやファイルはねぇぞ、(゚Д゚)ゴルァ!!」とエラーが。
まぁ、当たり前ですね。実際のファイル名は?以降が無いのですから。
?以降を付けなければ動きますが、idが無い為データも読まずHTMLファイルも作られず…。
こういう時はどうしたらいいのでしょうか???
?以降もくっつけて呼べる関数などあるのでしょうか。
それとも別のPHPファイルでも変数を引き渡せる方法があるのでしょうか…。

長い上に分かりづらくて申し訳ありません。
どなたか、分かる方。よろしくお願いしますぅうう。゜(゜´Д`゜)゜
0367nobodyさん02/07/12 23:30ID:???
>>366
aaa.phpの処理が終わった後に
bbb.php?id=1&html=trueを表示させたいって事?

header("Location: bbb.php?id=1&html=true");exit;
じゃ駄目なんか?
0368osage02/07/13 00:15ID:???
META タグの refresh とか JavaScript でも何とかなりそうですね。
HTTP の Location も含めてクライアント側が対応していないとだめですが。

META タグも JavaScript もブラウザの設定によっては×
Location は Netscape4.x(バージョン忘れた) でバグっていてうまく動かなかったはず。

これだけだとPHPに関係ないので、もう一つネタ。

$_GET['id']=1;
$_GET['html']=true;
include_once("bbb.php");

保守性悪そうだけど。
0369nobodyさん 02/07/13 16:07ID:DKHlRt3C
 初心者な質問ですみませんが、PHPで路線バスの
時刻表検索サイトを作ることは可能なのでしょうか?
0370j02/07/13 16:14ID:68IOunJU
http://js-web.cside.com/
0371nobodyさん02/07/13 17:49ID:???
>>369
禿 げ し く ア バ ウ ト だ な 。
0372nobodyさん02/07/13 18:25ID:???
>>369
そりゃ作れるが‥‥‥
0373nobodyさん02/07/13 18:39ID:gZEmWErp
>>372

もう少し高機能な言語を選択したほうがいいと思います。
0374nobodyさん02/07/13 18:41ID:gZEmWErp
PHP の変数、関数のコーディング標準っていったいどうなってんの?

in_array とか基本的な関数は _ 区切りだが、
多くのライブラリの書式に従うなら、 inArray でなければいけない
はずだろ。
0375nobodyさん02/07/13 19:21ID:???
>>373
> もう少し高機能な言語

例えば?
■ このスレッドは過去ログ倉庫に格納されています