【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何回も繰り返し処理をするものや同じ記述をコード内に繰り返すものを
ファンクションでサブルーチン化、これ便利ね。
ある程度まとまった複雑な処理をする場合、これをクラス化して内部の
関数を取り出したり再利用することができるこれがクラスね。
で、PHPでどこまでのものつくるかしらんがちょっとした程度のもんなら
クラスなんてつかう必要はない。
0280nobodyさん
02/07/03 20:59ID:govsnHFj動きません。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 $_POST["fName"];
0285Power
02/07/04 11:27ID:6mswN9rJheader("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:???検索すればすぐに解明できそうなものを。。。
0288nobodyさん
02/07/04 18:10ID:???送る側
return($list);
受け取る側
$list=$this->hoge();
while(list($key, $value) = each($list)) {
処理・・・・
}
と書いてますが、値が全然取れません。送る前に値が入っているのは確認しました。
明確に「配列だよ〜ん」と書く必要がありますか? それはPHPでどうやって・・・?
すみません、よろしくお願いいたします。
0289nobodyさん
02/07/04 18:57ID:???えっと、header関数が組み込まれる前になんか文字とか出力されてると
そんなエラーでまつ。とゆーわけでheader以前のprint文なんかを確認するとか、もしくは
<?php ?>で囲まれてない部分にスペースとかなんか文字がかかれているとエラーになるので
そんなのも確認してみまSHOW
0290あ
02/07/04 19:53ID:bt2uu3Sk0291nobodyさん
02/07/04 20:35ID:???0292nobodyさん
02/07/04 20:36ID:???0293nobodyさん
02/07/04 23:42ID:dLbCkgI+できないですかね?できないですよねぇ…
0294nobodyさん
02/07/05 00:52ID:???0295nobodyさん
02/07/05 01:52ID:jFz8E7Y4whileの前で$listの中身確認してみては?
0296nobodyさん
02/07/05 07:14ID:???これはどうなんでしょ
0297nobodyさん
02/07/05 10:32ID:C173d5WVマウスクリックイベントを取得することはできないのですか?
getkeystate みたいなやつとか・・
0298nobodyさん
02/07/05 10:42ID:???0299293
02/07/05 12:37ID:bJdk03R6お、それFlashもわかるみたいでいいですね。
でも共用レンタルサーバなのでbrowscap.ini がインストールできない。。
0302nobodyさん
02/07/05 21:28ID:???SESSIONって便利だねえ!
御清聴ありがとうございますた
0303nobodyさん
02/07/05 23:03ID:???そのphpファイルと同じディレクトリならディレクトリ作れますが、
セーフモードの場合その下位にも上位にも作れないですよね。
上位は流石にマズいと思われるのでどうでもいいですけど、
一つのphpファイルだけで下位に作れちゃう方法はありますか?
0304nobodyさん
02/07/05 23:46ID:6m20wbXXheader("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/vswyq0306nobodyさん
02/07/07 00:37ID:???0307nobodyさん
02/07/08 19:13ID:vmjgMMy4100分の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・要素数1000の配列を作ってそこに1〜1000の値を順に格納。
・そこからarray_rand()関数で500個抜き取る。
てのは駄目かな?
メモリを無駄に使うけど速度は稼げると思う。
0309307
02/07/09 14:17ID:AVgu1PiIありがとうございます。
解決しました。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呼び出し方を教えてください
0313osage
02/07/10 01:41ID:???0317nobodyさん
02/07/10 02:04ID:+PGQkPhpここらへんだと思うのですが、手当たり次第実行してみても表示されません。
0318nobodyさん
02/07/10 02:08ID:???タグ文字でない {? ?} みたいなのでやりたいのだが
ソースのどこをいじればできるのか教えれや
0319nobodyさん
02/07/10 02:11ID:???PHP-USERS の ML 見てると
「インストール」が3割
「○○について」が2割
「○○が動きません」が2割
マニュアル読めば分かるものばっかり
たまには、マニュアルも読みなさい。
http://www.php.net/manual/ja/
0320316
02/07/10 02:16ID:???316だが、すまんカン違いしてた。
俺は実行結果を加工してるので exec() 使ってる。
加工する必要がないなら system() とか passthru() とかでいいんじゃねーの?
0322nobodyさん
02/07/10 02:29ID:???>318
確かソースをいじる必要はなかったんじゃ・・・
ソース手元にないんでちょっとあれだけど、
ソースいじるならASPモードの方判定しているところとかどうよ?
>317
セーフモードによる制限とかに引っかかっていませんか?
>320
最後の一行しか返らないんじゃなかったっけ?
全部欲しいときは、shell_exec()で
0323nobodyさん
02/07/10 02:37ID:+PGQkPhpコンテンツを作るのに精力を傾けているので、Perlも改造程度しか
出来ないんです(頭の問題もあるけど)、PHPに少しずつ移行した
いのですが、こまごましたスクリプトを書き直すのは時間が掛かり
過ぎるので、今あるPerlベースのスクリプトを活用したいのです、
出来る人から見れば変かもしれませんが...
>>316
それはSSIでPHPを呼び出す方法では?その後の>>320も試したけど
なにも表示されませんでした。
詳しく書くと、xxx.phpからSSIのように部分的にCGIを実行させた
いんです、<? exec("./xxx.cgi"); ?>でいいのですか?
ここがわからないと実行の仕方が悪いのか、呼び出しているCGI
が問題なのかわかりません。
0324osage
02/07/10 02:41ID:???echo exec("hage.cgi");
?>
では?
#セーフモードで、exec()を制限してたりしない?
0325nobodyさん
02/07/10 02:43ID:+PGQkPhpセーフモードって<? phpinfo(); ?>で一覧が出てくる中にある
safe_mode_exec_dirとかですか? 1になってます。
safe_modeはOffでした。
0326osage
02/07/10 02:51ID:???0327nobodyさん
02/07/10 03:12ID:+PGQkPhpありがとうございます、一応は動くことが確認できました。
でも、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:???> printが動いているだけで、Perlとしては動いていないようです。
意味不明。
> 下記をcgiとして動作させると表示はしません。
だろうな。
> PHPとして動いているって事ですか?
ワケワカラン。
エラーメッセージが出なければ動いてるんだろ。
0332nobodyさん
02/07/10 22:29ID:???知らないくせに
0334nobodyさん
02/07/10 22:42ID:???……。(呆
0335nobodyさん
02/07/10 22:51ID:???0336nobodyさん
02/07/10 23:16ID:???0337327
02/07/11 00:24ID:OZ6VhSK5PHP4 + Oracle8i + Windows2000Pro + Apache 3
です。
0341nobodyさん
02/07/11 01:34ID:OZ6VhSK5例えば、下記のhoge.cgiをPHPから呼び出して表示するには、どうし
たらいいでしょうかって事なんですけど。
#!/usr/local/bin/perl
$AGENT=$ENV{'HTTP_USER_AGENT'};
print "$AGENT";
SSIで呼び出すように<!--#exec cmd="hoge.cgi"-->、PHPから
<? echo exec("hoge.cgi");?>を呼び出してもうまくいきません。
0342340
02/07/11 01:41ID:???fopen調べろ
0343nobodyさん
02/07/11 02:09ID:???『知識は自慢するものではなく人に伝えるもの』っていい言葉
があるよ。
0345nobodyさん
02/07/11 02:56ID:???0346高卒童貞無職
02/07/11 09:57ID:???〜〜〜〜〜〜〜〜
<?
$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:???PHPから呼び出した時点でCGIじゃないので、
perlとしては動くが CGIとしては動かないというのが正解だろう。
つまり、CGIとして伝えられるはずの環境変数なんかは伝わらないに10モナー
試してないから責任は取りません。
0350nobodyさん
02/07/11 14:04ID:7dp96S8nうざかったら放置で頼みます。
SQL使用不能・PHP4セーフモードのレンタルスペースにて、
サイト内検索(テキストファイル内からの検索)エンジンを使いたいのです。
フリーのソースを探し回ったところ、どこもSQLを使用しておりまして。
phpdotcomからも見つけられなかったのですが、
どこかにフリーで公開しているところありませんかね?
自分が何か勘違いしている可能性もあるので、そこのレンタルスペースの規約(抜粋)。
Q: PHP は使用できますか?
A: PHP4 がモジュールでインストールされております。ただし、セキュリティの関係上から safemode でのみ動作いたします。拡張子を .php にしてください。また、データベースとの連携は行っておりません。
0351nobodyさん
02/07/11 15:18ID:???0353350
02/07/11 15:55ID:???NamazuはPerlを使えるようになってないといけないようで。
私が世話になっているribbon.to/httpd/faq.htmlではPHPのみ可能らしいです。
自分、何か勘違いしてたら指摘求む。
0354nobodyさん
02/07/11 16:41ID:???0356nobodyさん
02/07/11 19:40ID:???0357nobodyさん
02/07/11 19:41ID:???0359osage
02/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"のお勉強でもしる
0361nobodyさん
02/07/12 00:49ID:???この一言だけで「終わった話題を蒸し返した」&「全てガイシュツなレスを垂れた」罪が赦されると
思っているなら>>359は氏ねよ今すぐに。
0362nobodyさん
02/07/12 02:39ID:???0363osage
02/07/12 03:33ID:???どこら辺が、すべてガイシュツなんだ?
#終わった話だったのは、みとめるけどさ。
0364nobodyさん
02/07/12 14:16ID:???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:???aaa.phpの処理が終わった後に
bbb.php?id=1&html=trueを表示させたいって事?
header("Location: bbb.php?id=1&html=true");exit;
じゃ駄目なんか?
0368osage
02/07/13 00:15ID:???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時刻表検索サイトを作ることは可能なのでしょうか?
0370j
02/07/13 16:14ID:68IOunJU0373nobodyさん
02/07/13 18:39ID:gZEmWErpもう少し高機能な言語を選択したほうがいいと思います。
0374nobodyさん
02/07/13 18:41ID:gZEmWErpin_array とか基本的な関数は _ 区切りだが、
多くのライブラリの書式に従うなら、 inArray でなければいけない
はずだろ。
■ このスレッドは過去ログ倉庫に格納されています