【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を見よう。
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 でなければいけない
はずだろ。
0376山田
02/07/13 19:30ID:WDQKN29yせっかくネットを立ち上げ、いざ検索の段階でとぎれることもしばしば
ドコモのエリアで調べたらちょうど円の周辺
ドコモに問い合わせても、いつ周辺に発信基地ができるかわからないとのこと
なにかいい方法ないでしょうか?
電波を増幅させる機器も買ってみましたが今ひとつ
それと10分以上使って発熱するととぎれやすいような気もします
よい解決方法ありましたらどなたか教えてください
ちなみに20時間使用で5000円程度のコースに入っています
0378nobodyさん
02/07/13 22:42ID:???ここに書き込む方々はフリーで公開されている既存のものを使うより、
自作マンセーな方々が多いので答えられないのではないかな。
だからいっそのこと自分で作ってみたらどうでしょう。
検索機能がついているBBSのソースから抽出して改造とかしてみたら、
結構簡単に作れましたよ。
ド素人な私でも作れたのですから、きっとあなたも作れるでしょう。
ちなみに私はレッツPHPのpppbbsから取り出しました。
頑張ってくださいね。
0379nobodyさん
02/07/14 09:38ID:vRstB+mQJava とかイイんでない?
0380川田
02/07/14 10:01ID:A1YZ/1/SここはPHSとかそういう類のスレではないので、、、。
ちなみに書籍でもないんです。。。
perlなスレには真珠がどうのって言うヤシは来ないのになぁ。。。
0381nobodyさん
02/07/15 18:28ID:BTTlxQyy{
echo "$key => $val<br>";
}
/////////////////////
// test.php?aaa=bbb&ccc=ddd
全く表示されません。設定の問題は、
php.ini
bariables_order = "EGPCS"
track_vars = On
register_glovals = On
/////////////////////
環境は
PHP Version 4.3.0-dev
FreeBSD server 4.5-RELEASE FreeBSD 4.5-RELEASE
0383381
02/07/15 23:17ID:BTTlxQyyこれ入れてからダメみたい…。
とりあえず、alpha1
でためしてみるぽ…
0384nobodyさん
02/07/16 00:08ID:0ekhabd+ZendOptimizerをインストールしようと、FreeBSD 4用のアーカイブを
落としてきて、install.shを実行したのですが、httpd.confを検出するところで
正しくパスを入力してるにもかかわらず、not foundといわれてしまいます。
解決法をご教授ください。お願いします。
0385nobodyさん
02/07/16 01:04ID:???$str から文字列 aaa と bbb を取り除きたい場合、
一行というか一回の str_replace() で
行うにはどのようにすれば良いでしょうか?
文が分かりにくかったらすみません。
0386nobodyさん
02/07/16 01:20ID:YSc0cfCKなんかのクイズ?
0389nobodyさん
02/07/16 14:41ID:???共用サーバーで検索システムを作る場合、
(1) 検索PHPファイル + 沢山の小さなデータファイルの組み合わせ
(2) データを含めた大きな1つの検索PHPファイル
この二つのどちらがサーバーに負担が少ないのですか?
メンテナンスのやりにくさは除外して考えてくださいませ。
0390nobodyさん
02/07/16 14:50ID:???0391nobodyさん
02/07/16 17:07ID:???(4)カテゴリごとに一覧を作成して、Ctrl+Fで ユーザに検索させる。
0392nobodyさん
02/07/16 18:27ID:OwvUkVFD例えば「ワールドカップまで〇日」の〇の部分を日々カウントしてくような。。
ひょっとしてものすごいかんたんなのかなぁ。
0393nobodyさん
02/07/16 18:37ID:HSUjeezFどうやったら警告消えるのでしょうか???
(PHP4.1.2)
0394nobodyさん
02/07/16 19:04ID:???ttp://www.2ch.net/read.php?board=5&thread=11944823
みたいなURLで、引数も含めて調べたいのです。
$PHP_SELFだと read.php だけしか取得できないですよね?
0395555
02/07/16 21:52ID:???0396nobodyさん
02/07/16 22:14ID:/jKGjeLf0398nobodyさん
02/07/17 00:03ID:???厨房なりに気の向くまま書いてみますた。
コピペでそのまま動くYO!
<html><head></head><body>
<? if(isset($year) && isset($month) && isset($day)){
if(checkdate($month,$day,$year)){
$nowy = date("Y",mktime(getdate()));
$futurey = date("Y",mktime(0,0,0,$month,$day,$year));
$nowm = date("m",mktime(getdate()));
$futurem = date("m",mktime(0,0,0,$month,$day,$year));
$nowd = date("d",mktime(getdate()));
$futured = date("d",mktime(0,0,0,$month,$day,$year));
$nowunix = date("U",mktime(getdate()));
$futureunix = date("U",mktime(0,0,0,$month,$day,$year));
$result = round(($futureunix / 86400),0) - round(($nowunix / 86400),0);
}}?>
<form action="day.php" method="POST">
<input name="year" type="text" value="<?=$year?>">年<br>
<input name="month" type="text" value="<?=$month?>">月<br>
<input name="day" type="text" value="<?=$day?>">日<br>
<input type="submit" value="調べる"><br>
<? if(isset($year) && isset($month) && isset($day)){
if(checkdate($month,$day,$year)){ ?>
今日<?=$nowy?>年<?=$nowm?>月<?=$nowd?>日から<br>
<?=$futurey?>年<?=$futurem?>月<?=$futured?>日まで<br>
あと<?=$result?>日だという罠。<br>
<? }} ?>
</form></body></html>
0399398
02/07/17 00:19ID:???2038年問題にひっかかってますな。
逝きます。
0400398
02/07/17 02:02ID:???roundなんつうハンパなことしてすみません。
しかもUNIX時間って
日本時間だと時差で1970/1/1の00:00:00じゃなくて
1970/1/1の09:00:00からになってしまうとは知らなんだ。
対応版あげときます。
<html><head></head><body>
<? if(isset($year) && isset($month) && isset($day)){
if($year > 1969 && $year < 2038){
if(checkdate($month,$day,$year)){
$nowy = date("Y",mktime(getdate()));
$nowm = date("m",mktime(getdate()));
$nowd = date("d",mktime(getdate()));
$nowh = date("H",mktime(getdate()));
$nowmi = date("i",mktime(getdate()));
$nows = date("s",mktime(getdate()));
$nowunix = date("U",mktime(getdate()));
$futurey = date("Y",mktime(0,0,0,$month,$day,$year));
$futurem = date("m",mktime(0,0,0,$month,$day,$year));
$futured = date("d",mktime(0,0,0,$month,$day,$year));
$futureunix = date("U",mktime($nowh,$nowmi,$nows,$month,$day,$year));
$result = ($futureunix - $nowunix) / 86400;
// $result = floor(($futureunix / 86400)) - floor(($nowunix / 86400));
// $result = round(($futureunix / 86400),0) - round(($nowunix / 86400),0);
}}}?>
<form action="day.php" method="POST">
<input name="year" type="text" size="4" maxlength="4" value="<?=$year?>">年<br>
<input name="month" type="text" size="2" maxlength="2" value="<?=$month?>">月<br>
<input name="day" type="text" size="2" maxlength="2" value="<?=$day?>">日<br>
<input type="submit" value="調べる"><br>
<? if(isset($year) && isset($month) && isset($day)){
if($year > 1969 && $year < 2038){
if(checkdate($month,$day,$year)){ ?>
今日<?=$nowy?>年<?=$nowm?>月<?=$nowd?>日から<br>
<?=$futurey?>年<?=$futurem?>月<?=$futured?>日まで<br>
あと<?=$result?>日だという罠。<br>
<? }}} ?>
</form></body></html>
0401osage
02/07/17 03:02ID:???<?
$diff = mktime ( 23/*時*/, 59/*分*/, 56/*秒*/, 8/*月*/, 16/*日*/, 2002/*年*/) - time();
$dday = intval($diff / ( 60 * 60 * 24 ));
echo "hoge まで あと $dday 日";
?>
で十分でし。
>>400
・・・(苦
■ このスレッドは過去ログ倉庫に格納されています