5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

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

【PHP】質問スレッド Part5

1 :nobodyさん:02/09/11 14:15 ID:FWA0CpdU
レスは気長に待つのが良い感じかも。


■本家
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-10あたりにきっと誰かが……。

2 :nobodyさん:02/09/11 14:15 ID:???
■【PHP】質問スレッド Part1
http://ebi.2ch.net/php/kako/982/982687820.html

■【PHP】質問スレッド Part2
http://pc.2ch.net/php/kako/1003/10032/1003283567.html

■【PHP】質問スレッド Part3
http://pc.2ch.net/php/kako/1013/10139/1013919792.html

■【PHP】質問スレッド Part4
http://pc.2ch.net/test/read.cgi/php/1022999539/l50

3 :nobodyさん:02/09/11 14:16 ID:???
■PHP アップグレード報告スレッド
http://pc.2ch.net/test/read.cgi/php/987259309/l50

■PHP + MySQL
http://pc.2ch.net/test/read.cgi/php/983250751/l50

■PHP + PostgreSQL
http://pc.2ch.net/test/read.cgi/php/983128806/l50

■PHP 関連の書籍 (但し PHP 出版系お断り)
http://pc.2ch.net/test/read.cgi/php/985315574/l50

4 :nobodyさん:02/09/11 14:16 ID:???
※注意1

4.2.0以降はデフォルトでregister_globalsがoffになっています。
POST, GET等で渡される値には
グローバル連想配列
$HTTP_ENV_VARS
$HTTP_GET_VARS
$HTTP_POST_VARS
$HTTP_COOKIE_VARS
$HTTP_SERVER_VARS
でアクセスしてください。

つーか、マニュアルとか読んでください。おながいします。

5 :nobodyさん:02/09/11 14:16 ID:???
※注意2

header()でContent-Typeを出力すると、mb_output_handlerが無効になります。
ini_set('default_mimetype', 'text/html');
とすることで回避できます。

6 :nobodyさん:02/09/11 15:31 ID:QhkFV/a2
phpのチャットでブラウザを閉じると自動的に
退室するような実現方法はありませんか?

7 :nobodyさん:02/09/11 15:50 ID:sK5vsN8l
>>6
(´-`).。oO(javascriptと組み合わせれば出来るんじゃないかな)

8 :b:02/09/11 16:05 ID:U9pI6n49
http://yahooo.s2.x-beat.com/

9 :nobodyさん:02/09/11 17:16 ID:b0Mn6bwO
>>6
あるよ。
応答が数分なかったら、退室したと見なして処理するチャット。


10 :nobodyさん:02/09/11 17:32 ID:T52IxXqS
>>11のようにソースを組んだのですが、
受け取った値が文字化けしてしまいます。
なんとか直す方法があったら教えてください。

11 :nobodyさん:02/09/11 17:34 ID:T52IxXqS
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
</head>
<?
$test = $_POST["test"];

if($test == "あいうえお"){
echo"<body bgcolor=\"red\">
test - [$test]<br>
<form action=\"1_color_test.php\" method=\"post\" enctype=\"multipart/form-data\">
<input type=\"submit\" name=\"test\" value=\"亜伊宇江尾\">
</form>";
}else{
echo"<body bgcolor=\"blue\">
test - [$test]<br>
<form action=\"1_color_test.php\" method=\"post\" enctype=\"multipart/form-data\">
<input type=\"submit\" name=\"test\" value=\"あいうえお\">
</form>";
}
?>
</body></html>

12 :nobodyさん:02/09/11 17:41 ID:???
>>11
EUC-JP 以外で保存してない?

13 :10:02/09/11 17:48 ID:T52IxXqS
>>12
保存する際は、EUCでやってます。

ちなみに、mb_convert_encodingとかいろいろやっても
だめでした。


14 :nobodyさん:02/09/11 18:19 ID:???
<?php header("Content-Type: text/html; charset=EUC-JP"); ?>

最初の行に入れてみて。

15 :10:02/09/11 18:41 ID:T52IxXqS
>>14
直りました。
すげえ!
thx!


16 :nobodyさん:02/09/11 19:22 ID:???
>>15
こういうばかはどうしたらいいのでしょうか。

17 :nobodyさん:02/09/11 19:32 ID:???
   λ_λ    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( `ー´) < 別にいいんじゃネーノ?
   /   ノつ  \__________
  (人_つ_つ

18 :あっふぉ:02/09/11 19:36 ID:???
>>14
56Kモデムからやり直せ。

19 :PHP::help():02/09/11 19:51 ID:K4qVzGr/
MS Accessに、PHP(PEAR DBパッケージ)から 日付/時間型(yyyy/mm/dd hh:nn:ss) にデータを挿入する方法を教えて。
以下のコードでうまくいきません。日付/時間型以外ならうまくいくのに。。。
function insert($id,$name)
{
 $dsn = "odbc://user:pass@demo";
 // DB接続
 $db = DB::connect( $dsn );
 // SQL文
 $sql = "INSERT INTO user (id,name,date) VALUES (?,?,?)";
 // Statement取得
 $stmt = $db->prepare( $sql );
 // 現在時刻を取得
 $nowdate = date("'Y-m-d H:i:s'")
 print "nowdate=" . $nowdate . "\n"; // こういうのが出力 -> '2002/09/11 19:23:29'
 // SQL発行
 $db->execute($stmt, array($id,$name,$nowdate ));
 // DB切断
 $this->db->disconnect();
}
よろしく

20 :PHP::help():02/09/11 19:57 ID:K4qVzGr/
間違えがありました。>>19
function insert($id,$name)
{
 $dsn = "odbc://user:pass@demo";
 // DB接続
 $db = DB::connect( $dsn );
 // SQL文
 $sql = "INSERT INTO user (id,name,date) VALUES (?,?,?)";
 // Statement取得
 $stmt = $db->prepare( $sql );
 // 現在時刻を取得
 $nowdate = date("'Y/m/d H:i:s'")
 print "nowdate=" . $nowdate . "\n"; // こういうのが出力 -> nowdate='2002/09/11 19:23:29'
 // SQL発行
 $db->execute($stmt, array($id,$name,$nowdate ));
 // DB切断
 $db->disconnect();
}
すいません。

21 :nobodyさん:02/09/11 20:23 ID:???
>>20
円とだけ言っておくよ・・・(ワラ

22 :PHP::HELP():02/09/11 21:41 ID:HTt8fx02
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\ >>21                       \
\ 「円」って何ですか?             \
\ 「\ 」ってことかな?              \
\ どっかにそれを入れなさいということか? \
\ nowdate='2002\09\11 19:23:29'      \
\ ↑これでいいのか!?            \
\ 金を出せということか?            \
\ 違う、違う、違うなーーー。          \
\ わからん。わからん。             \
\ 21さん、もっと教えて。             \
\ お願い、教えてくれたら、            \
\ 自分の体差し上げます             \
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


23 :nobodyさん:02/09/11 23:09 ID:b0Mn6bwO
>>22
・・・・21がせっかくヒント出してるのにそれでも分からんのか?
円だよ、円。
PHP初心者の俺でも一発で分かったぞ。


24 :nobodyさん:02/09/12 00:17 ID:???
>>19
ネタですか?

25 :nobodyさん:02/09/12 01:34 ID:vPpnzRr3
変な質問でしょうが、教えてくださると嬉しいです。

PHPとFLASHを連携させたコンテンツを作りたいと思っています。
FLASHには外部から「変数名=値&変数名=値&...」
という形の文字列でデータを渡す必要があります。
それだけなら、echoを使えばいいと思ったのですが、
最新版のFLASHだと、外部から渡される変数は、
文字コードがunicode、改行コードがCRじゃないとダメみたいです。

PHP側で変換する処理などが必要なんでしょうか?
必要な場合、どのようなコードを記述すればいいのでしょうか?

26 :nobodyさん:02/09/12 01:40 ID:???
>>25
>>1

27 :nobodyさん:02/09/12 03:13 ID:???
mb_convert_encoding               ?

28 :nobodyさん:02/09/12 19:33 ID:bOdtzCg9
domxml_open_fileで指定するファイルは、
相対パスで指定できないのでしょうか?
絶対パスだとうまくいくんだけど。

29 :nobodyさん:02/09/12 22:57 ID:???
if(!$dom = domxml_open_file("example.xml")) {
echo "Error while parsing the document\n";
exit;
}

?

30 :nobodyさん:02/09/13 02:00 ID:5ec6wOjE
"をエスケープするととても見にくくなるので
perlのようなprint qq|<a herf="hoge.html"|;
のような書式はPHPではないでしょうか?

31 :nobodyさん:02/09/13 02:12 ID:yb1hcccZ
$aaaaa = "aaaaa.html";

function bbbbb(){
echo <<<EOF
ここにHTML、関数、ユーザー定義関数とか
EOF;
}

$fp = fopen ($aaaaa,"w");
$ccccc = bbbbb();
fputs($fp,$ccccc);
fclose($fp);


PHP始めて3日目です。(プログラミングは初めて)
こういう風には出来ないですか?
投稿があった時にPHPで受け取ってaaaaa.htmlを更新したいんですが。

32 :nobodyさん:02/09/13 02:57 ID:???
>>31の質問が>>30の質問の答えになってそうな罠

>>31
普通にできるんじゃない?
処理の最後にaaaaa.htmlにフォワードする必要がありそうだけど。



33 :nobodyさん:02/09/13 03:19 ID:???
>>32
省略された部分読むまで、
>>31>>30に答えたのかと思ってた...。

34 :31:02/09/13 13:04 ID:yb1hcccZ
>>32
俺がやったら、$ccccc = bbbbb(); の部分がダメみたいです。
しょうがないんで、function bbbbb()を$bbbbbにしたらOKでした。

フォワードとはaaaaa.htmlに戻る事でしょうか??
それはロケーションで書きました。header()です。

35 :nobodyさん:02/09/13 13:22 ID:q9zrWrda
Content-Disposition: inline; と Content-Disposition: attachment;
ってどうちがうんですか?
どこをさがしても親切に説明しているサイトがないんですけど。

36 :nobodyさん:02/09/13 13:26 ID:???
親切に説明が欲しいなら金払え

37 :RFC厨:02/09/13 14:14 ID:???
RFC読めよ
http://www.asahi-net.or.jp/~bd9y-ktu/dtd_f/rfc_f/rfc2183j.html

38 :nobodyさん:02/09/13 16:00 ID:???
Content-Disposition: inline; はすぐ表示
Content-Disposition: attachment; は添付

39 :b:02/09/13 16:00 ID:V08A06LP
http://profiles.yahoo.co.jp/tengaiten2002

40 :nobodyさん:02/09/14 01:02 ID:???
業務用アプリなどで客先に収める場合、PHPファイルを渡すことになるかと思います。
当然のことながら客先がソースを閲覧することが可能な状態になりますが
皆様はその対応をどうなされているのでしょうか?
あらかじめ、ソースを含めての金額請求をしているのでしょうか。
二次販売される可能性などの問題もあり、どのようにするか悩んでおります。

41 :nobodyさん:02/09/14 01:07 ID:mEUyxyDj
>>40
そうゆうあなたに打ってつけなのがZend


42 :nobodyさん:02/09/14 01:38 ID:HPVv0rIO
>>41
Zend Encoder だな。

The Zend Encoder allows developers to encode their PHP script before distributing it.

http://www.zend.com/store/products/zend-encoder.php


43 :40:02/09/14 10:39 ID:???
情報ありがとうございました。
上司にライセンス料なども含めて相談してみたところ
駄目だし食らいました。 ・゚・(ノД`)・゚・

Zend Encoder の日本語版
http://www.zend.co.jp/products/encoder/

44 :nobodyさん:02/09/14 14:30 ID:TjmGHZ9+
とある関数の実行結果をメモリに保存しておいて、
必要なタイミングで更新、みたいなことやりたいんだけど
PHP じゃどうやるの?

mod_php + apache + unix ( linux ) つかっとります

45 :nobodyさん:02/09/14 14:39 ID:???
>>44

Java使え

46 :nobodyさん:02/09/14 17:47 ID:???
>>43
う〜、厳しいですなぁ。。M$のASPエンコーダは無料なんだけどなぁ。。



47 :40:02/09/14 18:02 ID:???
NIA Encoder
http://sourceforge.net/projects/niaencoder/

PHTML Encoder
http://www.rssoftlab.com/phpenc.php4

Zend Encoder以外を探してみました。う〜ん。

48 :nobodyさん:02/09/15 19:55 ID:3qYFNGnZ
PHPのインデックス作成型検索エンジンって誰か知らないか?

49 :b:02/09/15 20:02 ID:l/2nwin0
http://profiles.yahoo.co.jp/tengaiten2002

50 :nobodyさん:02/09/15 21:30 ID:l3W9MFXW
特定のディレクトリ内のファイルを検索して
表示させようとしています。

<?php
$dir=opendir('.');
while(($file=readdir($dir))){
if(is_file($file)){
print "$file\n";
}
}
closedir($dir);
?>

readdirを使ってディレクトリの内容を読み取って
printで表示させたところ、ちゃんとディレクトリ
内のファイルが表示されました。

この$fileに入っているファイル名を検索し、実行
する方法はあるのでしょうか?$file[0]をprintで
表示させたら各ファイルの一番初めの文字が表示
されちゃいました。

51 :nobodyさん:02/09/15 22:39 ID:mdW8Tcgk
http://www.php.net/manual/ja/function.system.php

52 :nobodyさん:02/09/16 01:46 ID:???
質問 windowsのデスクトップにある index.php ファイルを開いた時、
phpが実行させる方法はありますでしょうか?
(localhost動作可能環境)




53 :nobodyさん:02/09/16 08:45 ID:???
フォーム生成とvalidationチェックしてくれるクラスって色々あるけど、
使ってる人いる?


54 :nobodyさん:02/09/16 12:00 ID:???
ローカルにhttpサーバ立てて http://localhost/index.php
アクセスすりゃいいじゃないの?



55 :nobodyさん:02/09/16 14:27 ID:9M1lvPAp
メインページはレンタル鯖でチャットページ部分だけ自宅鯖を使ってます
自宅鯖のチャットページは、自分がネットに繋げている間だけ公開されるように

$fp = fsockopen("*********",80);
で、falseにならない場合表示されるようにしているのですが。。。

これだと自宅鯖を立ち上げていない場合に10秒くらい時間がたってから
falseの処理が行われるんですが。逆の場合には一瞬です。

webサーバーが稼動しているのを確認したり、
外部のファイルが存在するか確認する方法ありますか?

56 :b:02/09/16 15:15 ID:oqHfjXJ7
http://profiles.yahoo.co.jp/tengaiten2002

57 :廃品回収:02/09/16 18:35 ID:Bzg7QZDj
漏れは外部URLの”サゲ.htm”ファイルを自サイトのスクリプトに
取り込んで読ませるのに
<?php
$ホゲ = join ('', file ('http://ホゲ/アゲ/サゲ.htm'));
echo "$ホゲ\n";
?>
って書いてるんだけど、これでアクセスさせて帰ってきたHTTPエラーを
処理するルーティン書けばいいんでないのかな。
役立たずでスマソ。

58 :nobodyさん:02/09/16 19:51 ID:???
fsockopenのタイムアウト時間を短く設定すれば良いのでは?

59 :nobodyさん:02/09/16 22:49 ID:Lcc+HyZz
>>55
つーか、鯖の方にスクリプト置いて、httpdが起動したら、レンタル鯖に置いてるスクリプトを呼び出して
ページを書き換えたらいいんでないかの。
この方が合理的。


60 :nobodyさん:02/09/17 00:47 ID:???
>>54 どうも。
apache php は http://localhost/index.phpに置けば動く環境なんです。
ソフトのスクリプトにphpを使えないものかなと思って
phpの呼び出し方があればレスくれる人がいるかなと思いまして。

改めてphpは外部スクリプトして使えますか?無理ですか?

61 :nobodyさん:02/09/17 02:01 ID:RwZGe/HC
任意のHTMLファイルから<TITLE><TITLE>の中身だけを
取り出して表示させるにはどう書いたらよいのでしょうか。
たとえば、Yahoo!のトップページのタイトルを表示させたいとき。

62 :nobodyさん:02/09/17 02:02 ID:???
他人が分かるように書いて下さい。

63 :61:02/09/17 02:07 ID:???
すみません。

たとえばhttp://www.yahoo.co.jp/の<TITLE>の中身は
'Yahoo! JAPAN'なのですが、それを自サイトに表示させたいような場合です。

64 :nobodyさん:02/09/17 11:55 ID:???
>>62
わかるだろ。
>>61
ニュースのタイトル取りだよね?
単に<TITLE>の行を抜き出していらない物をカットして表示させてみ。

65 :nobodyさん:02/09/17 12:20 ID:0b8dNIC8
レンタルサーバのmbstring.http_inputの設定を変更するのはどうすればいいですか?

66 :61:02/09/17 12:54 ID:???
>>64ありがとうございます。

$fileurl = file ('http://www.yahoo.co.jp/');
$titleline = strip_tags($fileurl[6]);
echo $titleline;

これで表示できましたが、
これだとYahoo!が<TITLE>の位置を7行目からずらした場合に対応できません。
正規表現でファイルを最初から検索して<TITLE>に挟まれた部分を
抜き出すのがいいのかもとは思うのですが、その方法がわかりません。

67 :nobodyさん:02/09/17 12:57 ID:ALvqH0Hv
>>64
それだと
<title>
 ほげほげ
</title>
みたいになってると取得できないから正規表現で<title>から</title>までを抜き出したほうがいいのでは。
まあ、取得先の書き方が全部一行って決まってるなら>>64のやり方のほうが楽だけど。

68 :nobodyさん:02/09/17 13:04 ID:ALvqH0Hv
>>66
あ、俺が書いてる間に・・・
俺も初心者なので合ってるかどうかは微妙だけど、
http://www.php.net/manual/ja/function.eregi.php
あたりでいいのでは。
正規表現の書き方自体はそのへんにいくらでもあるので検索するのが良いかと。

69 :61:02/09/17 14:39 ID:???
>>67さんありがとうございます。
以下ようなものだとうまく動きました。

$fileurl= 'あいうえお<title>タイトル抜きだし</title>かきくけこ';
$title1= strpos($fileurl,'<title>') + 7;
$title2= strrpos($fileurl,'</title>');
$length= $title2 - $title1;
$title= substr($fileurl,$title1,$length);
echo $title;

しかし、これはたぶんスマートなやり方じゃないと思います。
しかも、>>67さんの言うように複数行になっているとうまくいきません。
つまり、$fileurlを以下のように変えるともうダメです。
$fileurl= file ('http://www.yahoo.co.jp/');
file関数では複数行は行指定しないとダメなのですね…。

file関数をほかの何かに変えればよいのでしょうか、
それともこのスクリプト全体がアホなのでしょうか。

70 ::02/09/17 14:48 ID:WWJg+78y
join()がいいと思ふ

71 :61:02/09/17 15:21 ID:???
ありがとうございます。
複数行の問題についてはjoin()で解決しました。
が、どうも次の行がうまく機能していないようです。
$title2= strrpos($fileurl,'</title>');
# echo title2; にしてみると、3万いくら文字目とかになってます。
Yahoo!は</TITLE>が大文字なので大文字に変えてもダメでした。
'/'の文字を'\/'でエスケープしてみてもダメでした。

ていうかそもそもこのやり方ってスマートじゃない気がするのですが、
どうなのでしょうか。

72 :nobodyさん:02/09/17 15:49 ID:???
PHP4で、MPEGを操作することはできないでしょうか?

長さを取得したり、特定のコマをJPEGで取り出したりできれば、
最高なんですが。

73 :nobodyさん:02/09/17 15:53 ID:???
>>72
(´ー`)y-~~ できるわけないでしょ

74 :nobodyさん:02/09/17 16:03 ID:m1Ma5obA
>>71
試してないけどこんなんでどうだろ。
$url = "http://www.yahoo.co.jp";
$source_array = file($url);
$source = join("", $source_array);
eregi("\\<title\\>(*.)\\<\/title\\>", $source, $title);
ereg_replace("\n", "", $title);
$title = strip_tags($title);
echo $title;

間違ってるとこあったら誰かフォローよろしく。

75 :nobodyさん:02/09/17 16:24 ID:???
>>74
(*.) -> (.*)
ereg_replace("\n", "", $title); -> $title[1] = ereg_replace("\n", "", $title[1]);

76 :nobodyさん:02/09/17 16:48 ID:jNW2u3Fw
すいません、ごめんなさい、フリーのデータベースPHPスクリプトないですか…?

77 :75:02/09/17 16:48 ID:jNW2u3Fw
>>76
ちなみにCSVでデータベース出来るスクリプトです。
MySQLやPostgreSQLはサーバが対応してないので・・・

78 :72:02/09/17 16:51 ID:???
mpegの件、ImageMagickで簡単にできそうです。
お騒がせしました。

79 :nobodyさん:02/09/17 17:25 ID:???
データーベースとPHPを接続するんじゃなくて、
PHPをデータベースにしたいの?(我ながら不自由な日本語だが
探すだけ無駄な気がするが…この辺つかっとけば?↓

http://www.freesql.org/
データベース専用鯖。
MySQL PostgreSQL に対応。無料。

80 :75:02/09/17 17:53 ID:jNW2u3Fw
>>78
無いですか・・・
SQLのこと全然分からないので・・・
項目作れて簡単に追加編集削除出来るようなのがあればよかったのですが・・・
すいません、ごめんなさい

81 :75:02/09/17 17:54 ID:jNW2u3Fw
>>80
>>78じゃなくて>>79だったスマソ

82 :nobodyさん:02/09/17 18:34 ID:???
PHPMyadminなら日本語だし簡単に操作できるけどナー

83 :75:02/09/18 11:23 ID:0kRbPetK
そもそもSQLが分からないんです・・・
逝ってきます・・・

84 :62:02/09/18 15:10 ID:???
>>61, >>64

亀レスで申し訳ないんだが...
>>62>>60へのレスのつもりだった。

85 :nobodyさん:02/09/19 23:36 ID:???
実は最近PHP

86 :nobodyさん:02/09/19 23:42 ID:eFcguJsf
すいません、途中で送信しちゃいました。

実は最近PHP仕事でも趣味でも使ってないので(というかもともとウェブデザイナーなので)
最近の事情を知らないのですが、
最近PHPつかったサイトって、セキュリティ甘過ぎないですか・・・?

たとえば、
(1)directory の indexが丸見えなために、あるいは
(2)適当なquery stringぶちこむと簡単にphpのエラーメッセージが見れて、そのエラーメッセージから

・・で、インクルードされるファイルが見えて、それ見ると、
変数のエラーチェックをまともにやってないから、
query stringに適当なSQL文(をエンコードすると)入れるとDB操作ができちゃいそうで・・・

(実際にはやってないですが)

こんなもんなんですか?
最近、それなりに有名なサイトとか、go.jpなサイトでそういうの見つけちゃったんですが。。。

87 :86:02/09/19 23:44 ID:???
あ、もちろんすべてブラウザからやってます。侵入とかはしてないです。
htdocsの下に*.incを置いちゃうのって、ふつーなんですか?最近のphp使いさんは

88 :nobodyさん:02/09/19 23:47 ID:???
実は最近GHQ

89 :nobodyさん:02/09/20 00:03 ID:OVVAotJ0
>>86
って、実際にそこでdeleteとかselectとかすると、
法にふれるの?

90 :nobodyさん:02/09/20 00:05 ID:7xmF8XK6
民事であぼーん

91 :nobodyさん:02/09/20 00:09 ID:iViTLDSZ
PHPのせいにするな

人を憎んでPHPを憎まず

92 :89:02/09/20 00:12 ID:OVVAotJ0
不正アクセス禁止法
http://www.npa.go.jp/hightech/fusei_ac1/main.htm
にも抵触するのかな・・・?

93 :nobodyさん:02/09/20 08:49 ID:???
アクセス制御されている訳ではないので,
不正アクセス禁止法には引っかからないよ.

94 :名無しさん:02/09/20 15:44 ID:???
電子情報の破壊がどうこうっていう法律があったようななかったような。

95 :nobodyさん:02/09/20 16:33 ID:???
クラスのメンバーに可変でアクセスしたいんですけど、
$this->member にアクセスするのに、
$home='member';
$this->$hoge みたいなことできませんか??
for($i=0;$i<10;$i++){
$mem="number_$i";
$this->$mem;
}なんてことができると嬉しいのですが

96 :nobodyさん:02/09/20 16:37 ID:DpSJVmH1
>>95
そんなんじゃだめだろ。

97 :86:02/09/20 21:35 ID:???
なにげに質問がすりかえられてるような気がするんですが、
>>86
って、どうなんでしょう?今時のセキュリティなんてそんなもんですか?

98 :nobodyさん:02/09/20 21:39 ID:???
ちょっと質問させてください。。
PHPで埋め込み掲示板を作ってるんですが、
途中何らかのエラーが発生したときに
error関数などで

function error {
  print "Error!";
  exit;
}

というふうにexitを使ってしまうと、
埋め込み掲示板より下に表示したいタグ等まで
出力されなくなってしまい困っています。。

感じとしては

<HTML>
<BODY>
...
...
<?
  埋め込み掲示板処理
?>
...
...
</BODY>
</HTML>

という感じです。エラーが発生したとき、
エラー出力とともにexitで終了せず<?...?>を抜ける方法は
無いんでしょうか?
よろしくお願いします。

99 :nobodyさん:02/09/20 22:04 ID:???
>>98
exit使わなければいいのでは。
return で何か返してやって
if文で{

}
else

とかやってやればどうよ。

100 :nobodyさん:02/09/20 22:29 ID:???
>>99
レスありがとうございます。
例えば

function error {
  print "Error!";
  return($err_flag=1);
}

で戻って、各処理を

if (!$err_flag) {
  処理続行
}
else {
  処理終了
}
という感じにするということですか?
これだとすべての処理においてifで判別しながら
処理するという形になっちゃいますね。。
私の考えが間違ってるのかもしれませんが。。

101 :99:02/09/21 00:37 ID:???
>>100
っと当方もここで聞きまくってるPHP厨なのでよくわからずレスしてます(w
if文でやる他には、次のどうでしょ。

?>
...
...
</BODY>
</HTML>

の?>以降の部分をヒアドキュメント?だっけ?よく知らないんだけど、
function error {
print "Error";
include "footer.dat";//(footer.datは... ... </BODY></HTML>が書かれてるファイル)
exit();
}
とかにしてやったらどうっしょ。
それかincludeじゃなくて
echo "... ... </BODY></HTML>";にしちゃうとか。
どっかに $footer="</BODY></HTML>";として
echo $footer;としてもイイヨネ。

102 :98:02/09/21 01:30 ID:???
>>101
たびたびありがとうございます。
それと少し説明不足な点がありました。
私の作っている埋め込み型掲示板はユーザビリティ(?)重視として
掲示板周辺のデザインも自由にいじれるようにしたいんです。
例としてはこんな感じです

<HTML>
<BODY>
...
(サイトの全体的なデザイン開始 <TABLE>..とか)
...
<?
ここに埋め込み掲示板を表示
HTMLは<TABLE>で始まり</TABLE>で終了
?>
...
(サイトデザインの終了 ..</TABLE>とか)
...
</BODY>
</HTML>

includeを使うと後半のタグも表示できますね!
とりあえずそれでがんばってみます。

ありがとうございました。

103 :nobodyさん:02/09/21 01:48 ID:???
>86
どう答えて欲しいの?
私もデザイナーだけど、言語に関係なくプログラマのスキルが関係してると思うけど?
確かに、言語が理解しやすい分初心者でも作りやすいから
セキュリティホールの多いものも確か。

>最近の事情を知らないのですが、
>最近PHPつかったサイトって、セキュリティ甘過ぎないですか・・・?
あなたのように事情を知らない人が作っていると思いますよ。

>それなりに有名なサイトとか、go.jpなサイトでそういうの見つけちゃった
はい。当たり前にあります。特にXSSとか・・。
それに、あなたのスキルでは見つけられないセキュリティホールは死ぬほどあります。

>ふつーなんですか?最近のphp使いさんは
普通かどうかはその人の知識による。

同じデザイナーとして、恥ずかしい質問はやめてください。

104 :nobodyさん:02/09/21 02:24 ID:???
>>86
しつこいので>>103さんに加えてさらに追い討ち。

>>(1)directory の indexが丸見えなために、あるいは
PHPに限らない。Apacheの問題。

>>(2)適当なquery stringぶちこむと簡単にphpのエラーメッセージが見れて、そのエラーメッセージから
PHPの設定の問題。が、JSP等でもエラーメッセージ(printStackTrace)が出ることもある。

>>・・で、インクルードされるファイルが見えて、それ見ると、
見えるのはおかしい。Apacheの設定の問題。

>>変数のエラーチェックをまともにやってないから、
>>query stringに適当なSQL文(をエンコードすると)入れるとDB操作ができちゃいそうで・・・
もちろんPHPに限らない。
チェックをしないでも安全な言語なんてどこにもない。

まぁPHPは敷居が低いのでセキュリティ知識のない人が存在する割合が
他の言語と比べて高くなっているのは認めるところだが。

105 :nobodyさん:02/09/21 02:34 ID:???
クロスサイトスクリプティング脆弱性とか?

106 :nobodyさん:02/09/21 09:39 ID:ZZHp0IbF
外注に回したいんですが、PHPを使ったデータベースシステムって
普通どれくらいお金払えば作ってもらえますか?
CSV、MySQL、PostgreSQL、でそれぞれ大体の制作費を
教えて欲しいんですが、、。

107 :nobodyさん:02/09/21 11:03 ID:???
MySQL,PostgreSQL \800,000/人月
CSV \1,200,000/人月(メンドイから)

108 :nobodyさん:02/09/21 11:10 ID:ZZHp0IbF
>>107
そんなにかかるんですか??

109 :nobodyさん:02/09/21 12:00 ID:8ExCK0V+
>>108
あんまり製作を外注したことないでしょ?
それは結構安い方だと思うよ。
まあ、単価だけじゃわからんけどさ。

110 :nobodyさん:02/09/21 14:17 ID:???
fwriteで書きこむと改行コードが付加されます?
fgetsで取りこむと改行コードが消えます??
なぜかデータに妙な改行コードが出たり消えたりするのですが

111 :tora:02/09/21 15:55 ID:???
<?php
/* クッキー名(任意) */
$cookie = "COOKIE_VISIT";
/* クライアントからクッキーが送信されているか判断 */
if (isset($HTTP_COOKIE_VARS[$cookie])) {
$value = (int)$HTTP_COOKIE_VARS[$cookie];
} else {
$value = 0;
}
/* 訪問回数のインクリメント */
$value++;
/* 有効期限(1年) */
//60秒
$expire = time() + 60;
/* クッキー発行 */
setcookie($cookie, $value, $expire);
session_start();
print("<BR> $value 回<BR>");
?>
これで、何回このサイトに来たのか確認するプログラムを組んでいます。
このプログラムネットスケープでは上手くいくのですが、IEでは上手くいきません。
どうしたらよいのか教えてもらえないでしょうか?
PHP4,register_globals=offです。
よろしくお願いします。

112 :tora:02/09/21 16:06 ID:???
すいません。
エラー内容を書くのを忘れてました。
IEでのエラー内容ですが、
読み込むたびにsessionIDが更新されているみたいなのです。
よろしくお願いします。

113 :nobodyさん:02/09/21 17:20 ID:7B0wr+QP
インストールに関しての質問です。

環境は、FreeBSD 4.6 です。
いつも、configureをする時にFreeBSD用に、
./configure --prefix=/usr/local --sysconfdir=/usr/local/etc --datadir=/usr/local/share/php --mandir=/usr/local/man --with-pgsql=/usr/local/bin --enable-mbstring --enable-mbstr-enc-trans

をしていたのですが、
build/bsd_makefile
があるのを知りました。どのようにして使ってセットアップすれば良いのでしょうか。

114 :nobodyさん:02/09/21 18:22 ID:???
http://www.php.gr.jp/images/logo1t.gif
PHP4はないの?

115 :nobodyさん:02/09/21 21:38 ID:???
http://www.php.net/download-logos.php
これでいいか?

116 :nobodyさん:02/09/21 22:50 ID:???
>>115
ありがとー!
4はないみたいね?

117 :nobodyさん:02/09/22 02:18 ID:???
ないよ。

118 :nobodyさん:02/09/22 02:46 ID:PyH4t/bU
>>113
buildconf なんてスクリプトを見ると

case "`uname`" in
*BSD/OS*)
./build/bsd_makefile;;
esac

なんて書いてあるから、FreeBSD では使わないのが吉では?
FreeBSD 使ってるならビルドは、

cd /usr/ports/www/mod_php4
make
make install

の方がお手軽で確実でせう。

%% せっかくの port ノウハウなんで利用しないともったいない。
---
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/

119 :Disca ◆NAfP6znE :02/09/22 19:52 ID:frQAcJLs
>>113 です
>>118 サンクスです。
私の場合は、stand/sysinstall でPackageをインストールしているのですが、
無いです、WWW、Japaneseのディレクトリも探したのですが無いです。
変ですよね。


120 :nobodyさん:02/09/23 01:21 ID:UbulpwL5
ん、ports を入れてないの?セキュリティを重視するなら、ports のファイルを
展開しておいて cvsup で更新かけると良いでしょう。下手に新しいソースコード
を導入するより、ports/packages の方が管理情報が残るし手順の再現ができて
楽だと思う。

121 :nobodyさん:02/09/23 05:53 ID:g72U2pu2
質問です。
PHPで、変数に何も入ってないかどうか調べる関数ってなんでしたっけ?

122 :99:02/09/23 07:42 ID:???
>>121
http://search.net-newbie.com/php/ref.variables.html
このあたり参照どぞ

123 :99:02/09/23 07:45 ID:???
あの、、、
素人な俺が素人向けにページ立てようと思うんだけど、やめたほうがいいかな?

124 :nobodyさん:02/09/23 11:10 ID:Py8drUeO
is_null

125 :nobodyさん:02/09/23 12:19 ID:???
>>123
素人物をストリーミング配信せよ!

126 :nobodyさん:02/09/23 12:27 ID:???
>>123
どうせならここでURL晒せば?

127 :nobodyさん:02/09/23 13:10 ID:???
>>123
立てたらURL晒していいよ。

128 :99:02/09/23 13:36 ID:???
じゃ、張り切って次スレまでには立てます!
よろしくおながいします!

129 :nobodyさん:02/09/23 21:10 ID:???
>>128
がんばれよ。

130 :nobodyさん:02/09/23 21:22 ID:mnhekBpn
Apache + PHP + MySQLの構成なんですけど
全部インストールしたんですけど

httpd.confの設定できません
LoadModule php4_module lib/apache/libphp4.so
ライブラリがないんです

Apacheで./configureのオプション
PHPで./configureのオプション

みんなの設定教えてほしいです

っていう質問ここでしていいですか?

131 :nobodyさん:02/09/24 00:01 ID:???
>>105
公開串とパッケットキャプチャで日々情報収集...

132 :nobodyさん:02/09/24 00:41 ID:???
>>130
googleより早く解決できると思うのならいいよ

133 :nobodyさん:02/09/24 00:42 ID:/r2x96gq
現状でphp4をインストールするならどれを入れればいいんでしょうか?
日本PHPユーザ会に書いてある
"日本語関係の処理にバグがあります。patch が出るまでしばらくお待ち下さい。"
というphp4.2.3のパッチってもう出てるんですか?


134 :nobodyさん:02/09/24 03:49 ID:6xTHY1PU
今までPHPファイルをftpソフトがバイナリ転送してたんだけど、
問題なく動いてます。
別にアスキー転送じゃなきゃダメって訳じゃないのかな?


135 :nobodyさん:02/09/24 08:57 ID:???
>>133
MLに流れているけど、暫定パッチぽい。
で、わいはいまのところ4.2.2のまま。

136 :nobodyさん:02/09/24 17:50 ID:clJNObLG
PHP4つかって請求書とかを印刷しようとするとやっぱPDF出力しかないのかなぁ
どなたかこういうので使ってるよって人アドバイスおながいします

137 :nobodyさん:02/09/24 18:29 ID:???
ブラウザを限定すればJavaScriptとCSSでできるよ、
つーかオレそうしてるし。

138 :nobodyさん:02/09/24 20:32 ID:nF3wJ6pk
SQL→PHP→XMLTで

139 :nobodyさん:02/09/24 21:07 ID:uxYEF9Jg
PerlもPHPも難しい!
しかも、PHPにいたっては普及してるのだろうか?
パールと違ってPHPで
作られた掲示板や検索エンジン(自動リンク)は
まともなものが見つからない!誰かphpとMYsql
を使った検索エンジンを配布しているところ知らない?
プログラマーーってすごすぎる!尊敬してしまうよ
俺は今、おみくじスクリプトが限界だ。

140 :nobodyさん:02/09/24 21:09 ID:nF3wJ6pk
XSLTだった。スマン。

141 :nobodyさん:02/09/24 23:44 ID:eG+qA3Bk
Linux(コバルト)使っているのですが
一年くらい稼働しているのですが、そのうち2日間だけ
/tmp/フォルダに、
phpcSCFMZ
のような、php+ランダムな文字列のファイルが
数百個できてました。サイズは0。ファイルオーナーはhttpd。
これは何なのでしょうか?
削除してもいいのでしょうか?

セッションとは別だと思います。session_ランダムな文字列で
一定期間だけ作成されていますので。

どなたか教えてください。

142 :nobodyさん:02/09/24 23:58 ID:???
>>139
XoopsとかのNuke系のやつ使えば?
一応リンク集のモジュールもあるし検索も出来る


143 :nobodyさん:02/09/25 00:17 ID:???
>>141
マルチウザ

144 :nobodyさん:02/09/25 00:43 ID:???
>>139
俺が思うにPHPのフリースクリプトはPerlほどは出てこないんじゃないかな?
だってPerlの奴が腐るほどあるからね。
PHPで作ろうと思っても新しいアイデアもそう簡単には思い浮かばないし。
作っても結局、PHPでわざわざ配布する必要あんのか?って感じ。

145 :nobodyさん:02/09/25 01:47 ID:???
PHPは実行環境を選ぶしね。
Perl CGIはほとんどの鯖ですぐ使えるが。

フリースクリプトの設置に苦しむレベルの人だと、
PHP+DBのシステムを作るのは敷居が高いでしょう。

146 :nobodyさん:02/09/25 08:38 ID:???
http://www.hotscripts.com/PHP/Scripts_and_Programs/
ここにはイパーイ

147 :nobodyさん:02/09/25 17:12 ID:sj/HLJpa
>>146 英語だらけできついよ。
   説明書も英語だろうし。
   やっぱ、スクリプトから勉強しなきゃダメか・・・。
   日本が作った奴ってないのか?
   日本人は遅れてるな。実は日本人が作った奴
   一個見つけたんだが糞だった。

148 :nobodyさん:02/09/25 17:14 ID:sj/HLJpa
>>144 負荷率が抑えられる。

149 :nobodyさん:02/09/25 18:46 ID:???
>>147
フリースクリプトの設置に苦しむレベルのひとが
英語のreadmeを忌避するひとが
DB使おうなんて考えることがまずおかしいんじゃないか?

それから
>やっぱ、スクリプトから勉強しなきゃダメか・・・。
などと言っている不勉強な香具師に
>実は日本人が作った奴一個見つけたんだが糞だった。
などと言われてもお前自身糞なことからはじめろ、としかレスしにくいんだが。

150 :nobodyさん:02/09/25 21:13 ID:???
努力をしないヤツはどこへいってもウザがられるのだね。

151 :nobodyさん:02/09/26 00:02 ID:???
何事も努力が必要です。
実際、自分で作ってみれば難しさがわかるべヽ(`Д´)ノ

152 :nobodyさん:02/09/26 00:31 ID:???
>>150
努力しても出来ないヤツもウザがられるがな。
要は場の雰囲気を読めっつうことだよな。

153 :nobodyさん:02/09/26 02:11 ID:???
>>147
自分じゃ作れないくせによくも糞とは言ったもんだ。
しかも日本人は遅れてるだと?
じゃあ何も出来ないお前はどこら辺?




まあ気持ちはわからんでもないが・・・

154 :nobodyさん:02/09/26 02:32 ID:???
公開されているスクリプトの数は何の関係もない。

155 :nobodyさん:02/09/26 03:48 ID:???
>>153
作る側の立場なら>>147は目糞だが、使う側の立場なら>>147は鼻糞。
そして>>147すら満足させられない漏れらは耳糞。
>>147自身、糞だって自覚してるんだよ。
>>147は努力しないひと。勉強できないひと。
そんな>>147に捧げよう。
<?
echo "<META HTTP-EQUIV=\"refresh\" content=\"0;URL=http://tmp.2ch.net/kitchen/\">";
?>


156 :nobodyさん:02/09/26 05:07 ID:???
>>155
それをやるならもっとスマートに
<?
header("Location: http://tmp.2ch.net/kitchen/");exit;
?>

と。

157 :nobodyさん:02/09/26 09:31 ID:FqgYcmGJ
PHPにはMOD関数が無いようなのですが、、、
他の方法で余りを求める方法があれば教えてくださいm(_ _)m

158 :nobodyさん:02/09/26 09:35 ID:???
>>157
関数じゃなくて演算子 %

159 :157:02/09/26 09:57 ID:FqgYcmGJ
>>158
できました!
ありがとうございましたm(_ _)m

160 :nobodyさん:02/09/26 10:30 ID:???
PHP&MYSQLを使用しています。
PHPでMYSQLのフィールドカーソルを操作したいのですが、よくわかりませんでした。
簡単な操作方法がありましたら教えてください。

161 :nobodyさん:02/09/26 20:33 ID:v/eI/U7R
>>160
それは「PHP」の問題か?

162 :nobodyさん:02/09/26 21:11 ID:???

>>160 ネタだろ?マヂ質問だったら電波板にでも逝け。

163 :nobodyさん:02/09/26 23:04 ID:???
mysql_field_seek
mysql_fetch_field

164 :nobodyさん:02/09/28 00:40 ID:???
PHP + MySQL
http://pc.2ch.net/test/read.cgi/php/983250751/l50

165 :nobodyさん:02/09/28 23:08 ID:???
.phpを設定時間がきたら起動さす方法はありますか? cron以外なので無理かな・・・。

166 :nobodyさん:02/09/28 23:58 ID:???
>>165
cron以外ということはUnix系OSなんですな。
気軽な方法ではcorn以外思いつかないけど、
Unix板かLinux板で聞いてみるとか。

レンタル鯖はcronを使わせてくれない、もしくは有償だったりしますが、
自宅や会社のPCを使って、定期的にwgetさせる手は使ってます。


167 :nobodyさん:02/09/29 00:07 ID:???
METAで時間設定してブラウザつけっぱで放置、ならできるじゃん?

168 :nobodyさん:02/09/29 00:09 ID:???
>>166
ども。レンタルというこで当然cron使えず、
やぱしcron使わずには無理なんでしょうね。
だと、訪問者に踏ますようにするしかないかな?
どなたか良法知てたら教えてください。

169 :nobodyさん:02/09/29 00:12 ID:???
>>167
ありがとうございます。
そうですね。でも付けっ放しは無理だなー。
ツウ事で、訪問者がらみでMETAが有効になりそうですね。
どうなんでしょう?

170 :hmk:02/09/29 00:14 ID:0Sel5nEd
>>168
最後に踏んだ時間をサーバ上のファイルに記録しておけばいいやろ。

171 :nobodyさん:02/09/29 01:51 ID:Y4MVE/IQ
>>165
どういう処理をするものなのか解らないけど、
誰もアクセスしてなきゃ動かす意味ないんだろ?
んじゃ、設定した時間以降一回目のアクセスで動くようにしたら?


172 :nobodyさん:02/09/29 02:33 ID:???
スレ違いの悪寒がしてきた。

173 :nobodyさん:02/09/29 02:59 ID:DMNuaTqB
安い中古PC(数千円で買える)にLinuxを入れて、cronとwgetで定期的にアクセスする・・・

とっても不恰好だけど、とにかく安上がりに作りたいなら、こんな手もあるということで。
ついでに、自宅のルーターとしてもつかったら?

そもそも、なにを目的として、定期的に .php を実行したいのかによって解は変わるかも。
不定期でもいいなら、誰かがアクセスしに来たときに現在時刻を定数で割って、1時間おき
とかに所定のファイルが実行させるようにしてもいいのでは?

174 :173:02/09/29 03:02 ID:???
定数で割るってのは、ちょっと変か・・・ スマソ

170さんが書いているように最終アクセス時刻をファイルに保存しておいて、現在時刻との
差が1時間以上経過していたら実行するとかは?

175 :nobodyさん:02/09/29 03:20 ID:D5u5GxKu
php4.2.2+gd1.8.3+ttfで文字をImageTTFText()関数で画像化したいのです。
zlib,libjpeg,FreeType 等インストールしてpngで表示させるのは
成功したのですが、jpegだとNGです。
phpinfo()をみると
PNG SUPPORT enabledとなっていても、JPEGについては記述がないので
PHPのconfigureのログをチェックしたらこんな感じでした。(jpeg関連のみ抜粋)
checking for the location of libjpeg... yes
checking for jpeg_read_header in -ljpeg... (cached) yes
checking for gdImageCreateFromJpeg in -lgd... (cached) no
gdImageCreateFromJpegがyesなら問題ないと思うのですが。
誰か同じような問題に当たった人いたら教えて下さい。

176 :175:02/09/29 03:24 ID:D5u5GxKu
追加です。
GDのMakefileにはこんな変更を加えました。これでpngはOKでした。
CFLAGS=-O -DHAVE_LIBPNG -DHAVE_LIBJPEG -DJISX0208 -DHAVE_LIBTTF
LIBS=-lgd -lpng -lz -ljpeg -lm -lttf
INCLUDEDIRS=-I. -I/usr/include/freetype -I/usr/include

jpegライブラリ関係が機能してないのかなとも思ったのですが
チェックする方法とかないでしょうか。

177 :nobodyさん:02/09/29 03:32 ID:???
>>170 >>171 >>173
用途はただのデータ集計なんです。できれば定刻がベストですが無理ですね。
おっしゃるように最後に踏んだ時間を記録して、
時間差を確認して起動する方法を考えていきます。
ありがとうございました。

>>172
すれ違いなりました。 もうしわけない。

178 :nobodyさん:02/09/29 03:36 ID:???
>>175
まったく解らないのだが、

>checking for the location of libjpeg... yes
は、libjpegにロケーション出来てるかどうか?

>checking for jpeg_read_header in -ljpeg... (cached) yes
は、readだから読み込み?

でも、
>checking for gdImageCreateFromJpeg in -lgd... (cached) no
は、Createって単語が入ってるから、「作る」に関係がるんだろう。

ってことは、JPEGを作るための物が欠けてるんだねってカンジがするけど・・・

あくまでも、エラーを見たカンジで言ってるだけですけどw



179 :175:02/09/29 03:41 ID:D5u5GxKu
>178 どもです。
jpeg関係は jpegsrc.v6b.tar.gzからインストールしてます。
../configure --enable-shared
make install
ログを見た感じではjpegライブラリの場所はわかってるみたいなので、
確かに「作る」に関係してものが足りないんだろうけど。
それがなにか、わからないんですよね(半泣)


180 :178:02/09/29 03:44 ID:???
>>175
http://www.google.co.jp/search?sourceid=navclient&hl=ja&q=gdImageCreateFromJpeg

見た?

181 :175:02/09/29 04:07 ID:D5u5GxKu
>178
みました。が、わからず。
他に例がないってことは自分の環境に問題があると考えた方がよいかも。
とりあえず。ねます。レスサンクス。

182 :nobodyさん:02/09/29 06:37 ID:YD0GxPMW
>>177
言わずもがなのこととは思いますが・・・

クライアントからのアクセスをトリガにしてPHPを実行している真っ最中、
つまり、ファイルに保存している最終実行時刻を更新する前に、
もう一発クライアントからのアクセスがあると、2重にスクリプトを実行して
厄介なことになる可能性がありますので、ファイルのロックなどで適切に調停
して下さいね。

183 :nobodyさん:02/09/29 09:49 ID:???
>>182
なるほど、きっちりロックしときます。
ありがとうございます。

184 :nobodyさん:02/09/29 23:01 ID:WutRk6vF
$HTTP_GET_VARSの使い方をおしえてちょ

185 :hmk:02/09/30 02:35 ID:???
>>184
$HTTP_GET_VARSは配列で、スクリプトに渡された変数と値が、この配列のキーと要素になりまそ。

例 x=1,y=2が渡された場合
$HTTP_GET_VARS["x"] が 1
$HTTP_GET_VARS["y"] が 2
になりまそ。たぶんね。

186 :nobodyさん:02/09/30 02:46 ID:???
??

187 :nobodyさん:02/09/30 03:07 ID:???
過去ログまだ見てないから
ガイシュツかどうか分からないけど
PHP4.1.0以降だったかな?では

$HTTP_GET_VARS -> $_GET
$HTTP_POST_VARS -> $_POST

に変わったから注意ね

188 :187:02/09/30 03:17 ID:???
あ 正式にoffになったのは4.2.0からなのかな
スクリプト配布サイトにとっては厄介な変更だけどね

http://www.php.gr.jp/history/release_4_1_0.html
http://www.php.gr.jp/history/release_4_2_0.html

189 :nobodyさん:02/09/30 11:15 ID:???
if($ID = 'a' || $ID = 'b' || $ID = 'c')



if($ID = 'a|b|c')

の書き方は一緒なんでしょうか?

190 :nobodyさん:02/09/30 11:52 ID:???
??

191 :nobodyさん:02/09/30 12:20 ID:P9mskQbo
>>175
PHPの./configureで
lib/libjpeg.soのあるディレクトリ(--with-jpeg-dir=/usrまたは--with-jpeg-dir=/usr/local)
を指定した方がいいんじゃない。

192 :nobodyさん:02/09/30 12:22 ID:P9mskQbo
>>189
"|"と"||"はまったく違うって

193 :nobodyさん:02/09/30 12:36 ID:???
つーか、"=" が足りないような。。。

if($ID == 'a' || 'b' || 'c')

194 :nobodyさん:02/09/30 13:03 ID:???
>>189
ちがうんちゃうんか?
$ID = "c";if($ID == 'a' || $ID == 'b' || $ID == 'c'){echo "ID:含";}
$ID2 = "c";if($ID2 == 'a|b|c'){echo "ID2:含";}

195 :名無しさん:02/09/30 13:05 ID:???
???

196 :nobodyさん:02/09/30 15:05 ID:???
???

197 :nobodyさん:02/09/30 18:01 ID:???
複数行にわたる文字列があって、
その内の # から始まる行を削除したいのですが、
どのようにすれば良いでしょうか?
# から始まる行数は場合によって異なります。

198 :hmk:02/09/30 18:25 ID:???
>>197
$str = ereg_replace("\n#[^\n]*\n", $str);
$str = ereg_replace("^#[^\n]*\n", $str);
$str = ereg_replace("\n#[^\n]*$", $str);
$str = ereg_replace("^#[^\n]*$", $str);

こんなんで出来るかなぁ。。。
きちんと書けば、正規表現一発でできるはずなんだけど。。。
上のが無理なら、文字列を改行でexplode()してからループさせる方法もある。

199 :nobodyさん:02/09/30 22:27 ID:p1yTd7Ex
すんません、初歩的な質問させていただきます。
BASICにあったMID、(部分文字列コピー)関数のようなものは無いでしょうか…。
スマソ

200 :nobodyさん:02/09/30 22:32 ID:???
>>199
あるよ
http://www.php.net/manual/ja/manual.php

201 :名無しさん:02/09/30 22:41 ID:???
>>199
あるよ
http://www.php.net/manual/ja/manual.php

202 :199:02/09/30 22:48 ID:p1yTd7Ex
どこ?
http://www.php.net/manual/ja/ref.strings.php

203 :nobodyさん:02/09/30 22:53 ID:???
strtolower--文字列を小文字にする
strtoupper--文字列を大文字にする
strtr--特定の文字を変換する
substr_count--副文字列の出現関数を数える
substr_replace--文字列の一部を置換する
substr--文字列の一部分を返す
trim-- 文字列の先頭および末尾にあるホワイトスペースを取り除く
ucfirst--文字列の最初の文字を大文字にする
ucwords-- 文字列の各単語の最初の文字を大文字にする
vprintf--フォーマットされた文字列を出力する


204 :nobodyさん:02/09/30 22:56 ID:???
>>199
http://jp2.php.net/manual/ja/ref.strings.php
http://jp2.php.net/manual/ja/function.substr.php

205 :nobodyさん:02/09/30 22:59 ID:???
猿か小学生に教えてるようなモンだな…

206 :199:02/09/30 22:59 ID:p1yTd7Ex
substr
ありがとうございます。

207 :nobodyさん:02/09/30 23:16 ID:???
    ∧,,∧∩     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ*゚∀゚彡   < 先生!猿か小学生にも教えてあげて下ださい。
 .__ミミ_ ミ_    \______________________
 .\ ∪    \
  ||\_____.\
  ||\|| ̄ ̄ ̄ ̄||
 .   || ̄ ̄ ̄ ̄||

208 :nobodyさん :02/09/30 23:25 ID:???
    ∧,,∧∩     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ*゚∀゚彡   < 先生!猿がブラインドタッチでPHP書いてる姿、想像しちゃいました!
 .__ミミ_ ミ_    \______________________
 .\ ∪    \
  ||\_____.\
  ||\|| ̄ ̄ ̄ ̄||
 .   || ̄ ̄ ̄ ̄||


209 :nobodyさん:02/09/30 23:38 ID:???
    ∧,,∧∩     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ*゚∀゚彡   < 先生!208さんがオモシロスギデス。こんにゃろ。
 .__ミミ_ ミ_    \______________________
 .\ ∪    \
  ||\_____.\
  ||\|| ̄ ̄ ̄ ̄||
 .   || ̄ ̄ ̄ ̄||

210 :nobodyさん:02/10/01 01:06 ID:???
    ∧,,∧∩     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ*゚∀゚彡   < 先生!>>208が「こんにゃろ」とか言って可愛過ぎます!
 .__ミミ_ ミ_    \______________________
 .\ ∪    \
  ||\_____.\
  ||\|| ̄ ̄ ̄ ̄||
 .   || ̄ ̄ ̄ ̄||

211 :nobodyさん:02/10/01 02:05 ID:???
    ∧,,∧∩     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ミ*゚∀゚彡   < 先生!そろそろPHPの授業をはじめてください。
 .__ミミ_ ミ_    \______________________
 .\ ∪    \
  ||\_____.\
  ||\|| ̄ ̄ ̄ ̄||
 .   || ̄ ̄ ̄ ̄||

212 :nobodyさん:02/10/01 07:41 ID:qB96ooZo
>>197-198
> きちんと書けば、正規表現一発でできるはずなんだけど。。。

一発じゃマッチング順の問題で失敗する条件があるみたいです。2回に分ければ正しく動く置換が組み立てられます。

$str=preg_replace('/^\s*#[^\n]*\n?/', '',
preg_replace('/\n\s*#[^\n]*/', '', $str));

---
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/

213 :nobodyさん:02/10/01 08:01 ID:qB96ooZo
>>177
>.phpを設定時間がきたら起動さす方法はありますか? cron以外なので無理かな・・・。

pcntl_fork して後は寝て (sleep) 待つ、という方法ではいかが。つまり、cron 相当の作業を PHP で書いちゃえば良いってことですな。


214 :nobodyさん:02/10/01 09:39 ID:2iQ2koto
index.html内にある

<!--banner-->

というタグが、某ディレクトリ内にある画像に、ランダムで置き換わる際の
PHPスクリプトを教えて頂けないでしょうか。


215 :nobodyさん:02/10/01 11:06 ID:2iQ2koto
要はアフリエイトです

$rand = ???????????????
$pic01='<img src=$rand width="468" height="60">';
echo ereg_replace ("<!--banner-->",$pic01,$pic01);
のようになると思うんですが
特定の画像が出た時に特定のリンクがうまく行かなくて

216 :nobodyさん:02/10/01 13:20 ID:???
$rand = ??????????????? の後に;がないよ。
つかこの文章で動すか?特定のリンクの変数は?よくわからないす。ゴメソ

217 :nobodyさん:02/10/01 13:33 ID:???
>>215
> echo ereg_replace ("<!--banner-->",$pic01,$pic01);
これって、意味あるんか?
ereg_replace(string pattern, string replacement, string string)だから
$pic1に<!--banner-->が含まれていとすると置き換えようがない
仮に$randが"??<!--banner-->???"だったりすると、
結果は、
<img src=??<image src=??<!--banner-->??? with="468" height="60">??? with="468" height="60">
みたいに変にならんか。
やりたいことは間違いなく違うだろうが。

218 :nobodyさん:02/10/01 14:20 ID:q/Y1XH55
>>216-217
???????は変数
よく分からないのでもうやめときます

219 :nobodyさん:02/10/01 14:34 ID:???
>>215>>218
何がしたいのか詳しく書くといいですよ。
ここの先生達は猿でも教える事ができす。

220 :nobodyさん:02/10/01 15:07 ID:???

うきゃ?うききき、うーきうきうきー!
うきぃぃ・・・・。

221 :hmk:02/10/01 15:18 ID:???
>>215
文字列に変数が含まれている場合には、ダブルクォートでくくらないと駄目でした。
$pic01 = "<img src=\"${rand}\" width=\"468\" height=\"60\">";


222 :nobodyさん:02/10/01 15:26 ID:???
>>221
だから、元質問者はシングルクォートで囲ってますがな。

223 :hmk:02/10/01 15:38 ID:???
>>222
ん?どーゆーことじゃ?

224 :222:02/10/01 15:44 ID:???
>>223
だから、
$a = '"';
は有効で、
$b = """;
 はNGになるから、
$b = "\"";
となる。
http://pc.2ch.net/test/read.cgi/php/1011550860/l50
の方がいいかも。


225 :名無しさん:02/10/01 15:53 ID:???
PHPくだ質スレッドが欲しい。
ウザすぎ。

226 :222:02/10/01 15:54 ID:???
>>223
スマソ。
変数の展開の話してたんね
鬱だし能、逝ってくる

227 :nobodyさん:02/10/01 15:54 ID:???
>>224
いや、シングルクォートで括ると変数を展開してくれないのではなかったかいのぉー。
>>221は言いたいのではないかいな。

228 :nobodyさん:02/10/01 15:55 ID:???
>>222は勘違いをしているのでは。
>>221は"$hoge"と'$hoge'の違いについて話しているようだが

229 :nobodyさん:02/10/01 15:56 ID:ITTNSseG
PHPの基礎の話でここまで盛り上がるとはなさけなや

230 :nobodyさん:02/10/01 15:57 ID:2aPoU4IE
http://yahooo.s2.x-beat.com/

231 :hmk:02/10/01 15:58 ID:???
>>224
儂がいいたかったのは、
$name = "内山怜也";
$te_1 = 'I love ${name}.';
$te_2 = "I love ${name}.";
echo $te_1; // I love ${name}.
echo $te_2; // I love 内山怜也.
ちゅーこった。



232 :nobodyさん:02/10/01 16:03 ID:???

このレベルで引っかかっているようでは
PHPだろうがPerlだろうがASPだろうが
何やってもダメなものは駄目。

233 :nobodyさん:02/10/01 16:05 ID:???
もうちょっとプログラミングは何かということ
から勉強しないと >>232 の言う通りだね。

とりあえずこのスレはブックマークから外します。
役にたつ質問無さすぎ。

234 :nobodyさん:02/10/01 16:13 ID:???
全角数値を半角数値に変換したいのですが、何かよい関数ってあります?

235 :名無しさん:02/10/01 16:16 ID:???
>>234
あるよ
http://www.php.net/manual/ja/manual.php


236 :nobodyさん:02/10/01 16:32 ID:???
>>235
まにゅあるみろと・・・。
2ちゃんの意味ないな。(; ´Д`)スレ腐敗するわけだ

237 :nobodyさん:02/10/01 16:40 ID:???
>>236

「2ちゃんの意味」って何だよ?(藁
基礎を学ぼうとせず、ただ結果のみを求める「教えて君」が
叩かれるのは当然だろ、氏ね。

238 :nobodyさん:02/10/01 16:49 ID:???
$hoge=str_replace("0","0",$hoge");
$hoge=str_replace("1","1",$hoge");
$hoge=str_replace("2","2",$hoge");
$hoge=str_replace("3","3",$hoge");
$hoge=str_replace("4","4",$hoge");
$hoge=str_replace("5","5",$hoge");
$hoge=str_replace("6","6",$hoge");
$hoge=str_replace("7","7",$hoge");
$hoge=str_replace("8","8",$hoge");
$hoge=str_replace("9","9",$hoge");


239 :nobodyさん:02/10/01 16:51 ID:???
>>236
調べもせずに教えて君
逆ギレ教えて君
腐敗してんのはあんたのあたま。

240 :hmk:02/10/01 16:59 ID:???
>>234 の質問に対する答えとして、>>235は妥当だと思うぞ。
「何かよい関数あります?」だから、ある/ないで答えればいいじゃん。
あるとわかれば、234は自分で調べるだろ。


241 :nobodyさん:02/10/01 17:02 ID:???
>>238
それでもいいけど、
$str = "123456789";
 $str_from = array("0","1","2","3","4","5","6","7","8","9");
$str_to = array("0","1","2","3","4","5","6","7","8","9");
$str = str_replace($str_from, $str_to, $str);
 のほうがスマートかも。

$str = mb_convert_kana($str, "n");
が一番楽だけど。

242 :234:02/10/01 17:04 ID:???
どこかのHPで「mb_conver_kana」という関数で変換できる、ということまでわかったんですが
うまく逝かなかったので、別の方法があれば聞こうと思って、てっとりばやく1行質問してみたんです

$str = mb_conver_kana($var, 'AKHV');
|_ r 全角英字を半角に
R 半角英字を全角に
n 全角数字を半角に
N 半角数字を全角に
a 全角英数字記号を半角に
A 半角英数字記号を全角に
s 全角空白を半角に
S 半角空白を全角に
k 全角カタカナを半角に
K 半角カタカナを全角に
h 全角ひらがなを半角に
H 半角ひらがなを全角に
c 全角カタカナを全角ひらがなに
C 全角ひらがなを全角カタカナに
V 濁点を 1 文字全角に(K、H と一緒に使用)

この関数はPHPの標準ではないですよね?

243 :名無しさん:02/10/01 17:05 ID:???
そんな事情こっちが知るはずないだろ?

244 :hmk:02/10/01 17:07 ID:???
>>242 なぜうまく逝かない?PHPのバージョンはいくつニダ?

245 :234:02/10/01 17:10 ID:???
>>244 PHP-4.0.6です

246 :nobodyさん:02/10/01 17:16 ID:???
>>242
「てっとりばやく」が一番手間がかかった罠

247 :hmk:02/10/01 17:17 ID:???
それなら出来そうなもんだが、、、
なにか特別なエラーがでないのなら、あとは文字コードの問題くらいかなぁ。
儂はPHP3しかつかったことないので詳しく知らんが。

248 :234:02/10/01 17:26 ID:???
>>246
ですね( ´∀`)

>>247
PHP3でできるなら、4でもできますよね
原因調べてみます

ありがとんヽ(´ー`)ノ

249 :hmk:02/10/01 17:34 ID:???
>>248
PHP3だとmb_conver_kana()は使えないぞ。

250 :nobodyさん:02/10/01 17:41 ID:???
mb使えるようにコンパイルしてないとかなら笑えないけどなー

251 :234:02/10/01 17:43 ID:???
「t」が抜けてた・・・(;´д`)ハァハァ

○→mb_convert_kana
×→mb_conver_kana

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k05.htm
ここのHP参考にしてたんだけど、「t」がなかった・・・
やられたヽ(`Д´)ノ ウワァァァン

いろいろとご迷惑を(略

252 :nobodyさん:02/10/01 17:47 ID:???
>>251
氏ね

エラーメッセージは素人判断せずに全文コピペしろと口を酸っぱく…

253 :nobodyさん:02/10/01 17:47 ID:???
Call to undefined function
云々と出ただろうに。。。

254 :nobodyさん:02/10/01 17:49 ID:???
改造工房で回答が得られなかったので、ここで質問させて頂きます。

レッツPHPのスクリプトの改造で悩んでいます。
同一ホストからの連続投稿に時間制限を設けたいのですが(例えば一度書き込んだら
その後30分は書き込みできないようにする)、どこに何を書き込めば解決するでしょうか。
ソースは下記のものになります。
ちなみにPHPのバージョンは4.2です。

http://php.s3.to/simple/#short

255 :234:02/10/01 18:05 ID:???
>>252
コピペでやられたんです
参考に元ページに既に「t」がなかった・・・(T-T)

ほんと色々とありがとん

256 :hmk:02/10/01 18:05 ID:???
>>254
掲示板のデータファイルに、ホストのIPを一緒に書き込んでおけ。
そして、同ホストが前回書き込んだ時刻を参照しろ。
これが分からなかったら、再度、改造工房にageることですな。

257 :hmk:02/10/01 18:15 ID:???
>>254
クッキイを使う方法もあるぞ。

258 :login:Penguin:02/10/01 22:00 ID:???
>>254
IPでの制御はお勧めできない。
やっぱCOOKIEがBEST。

259 :nobodyさん:02/10/01 22:45 ID:???
>>255
自分も一回、それではまりますた。。
同じところのコピペしたんすね。

260 :nobodyさん:02/10/02 00:42 ID:???
>>258
「COOKIEを使用しない」にしていた場合の対策はありますか?

そう考えるとIPで制御してもいいと思うのですが、どうでしょう。
IPの場合でもダイヤルアップでころころIP変わるとか、プロキシで端末を特定できないとかの問題はあるので
一長一短だとは思いますが。

261 :hmk:02/10/02 01:22 ID:???
>>260
クッキィできない端末からは、書き込ませないようにすれば良いではないか。

262 :nobody:02/10/02 01:32 ID:???
どなたか、教えてください。
アンケートを取るフォームを作っていますが、そのアンケートの設問は「アンケート設問データ」によって
動的に変わります。
そのため、フォームのラジオボタンの名前はデータを読みながら「bottonxx」とxxの部分に連番を振りながら
「botton1,botton2」とつけています。
これを、受け取る側のプログラムで部品名をどのように編集し、セットされた内容を取得したらいいのかわかりません。

"botton".idx1では、そのidx1が1のとき、フォームでセットされたbotton1の内容は取得できないのでしょうか?

皆さん、このように、動的に名前の物の内容はどのように取得されているのでしょうか?

よろしくおねがいします。


263 :nobodyさん :02/10/02 01:59 ID:???
説明がいまいちわかりづらいのだが、、、
ある文字列の変数は$$で取れるよ、たぶん

$str = "botton".$idx1;
内容 = $$str; //つまり$botton1の中身



264 :hmk:02/10/02 02:06 ID:???
>>262

>"botton".idx1では、そのidx1が1のとき、フォームでセットされたbotton1の内容は取得できないのでしょうか?
>皆さん、このように、動的に名前の物の内容はどのように取得されているのでしょうか?
このへんの文章の意味がわかりまそん。

アンケートとるなら、
<form action="">
設問1:美しいのはどっち?<br />
<input type="radio" name="mondai[1]" value="1" checked="checked" />菊川怜<br />
<input type="radio" name="mondai[1]" value="2" />内山怜也<br />
設問2:若いのはどっち?<br />
<input type="radio" name="mondai[2]" value="1" checked="checked" />菊川怜<br />
<input type="radio" name="mondai[2]" value="2" />内山怜也<br />
</form>
フォームをこんな風にしといて、

<?php

$answer_array[1] = 2; // 例えばクイズだったら、
$answer_array[2] = 2; // 正解を配列にいれとくなりしてから、
for (reset($mondai); list($mondai_num, $mondai_ans) = each($mondai) {
if ($answer_array[$mondai_num] == $mondai_ans) {
echo "設問 ${mondai_num} は正解。";
} else {
echo "設問 ${mondai_num} は氏ね。";
}
}

?>
でいいんじゃねえの。


265 :hmk:02/10/02 02:09 ID:???
要は配列をつかいなさいってこった。

266 :262:02/10/02 03:21 ID:???
夜遅くに質問したのに、ありがとうございました。
>263さん
ありがとうございました。無事に、完成させる事ができました。
本当に、感謝感謝です。

>hmkさん
詳細に書いてもらって、ありがとうございました。
配列を使いたかったのですが、ラジオボタンや、チェックボックスに未選択がないか、
Javascriptでチェックしなければならず、配列で名前をつけた時(hogehoge[])に、
formhoge.hogehoge[].checked
と、書くとエラーになってしまったので、それぞれ名前をつける方法をとりました。

時間がなくって、苦し紛れな作り方になったのですが、助かりました。
ありがとうございました。

267 :hmk:02/10/02 03:33 ID:???
>>266
ちなみに儂の場合、エラーを回避するためelement[n]で参照するようにしてました。参考までに。


268 :260:02/10/02 07:53 ID:???
>>261
なるほど。そういう考え方ですか。

表示時にCOOKIEの使用可否をチェック

COOKIEが取得できないなら、書き込みフォームを表示しない
または、書き込みできない旨表示

とかもいけますね。
ありがとうございます。

269 :254:02/10/02 11:18 ID:???
>>256-261

ありがとうございます。とりあえず、cookieを使う方向でやってみようと思います。
ただ、cookieを使う方法が分からないです・・・・
どこに何を記述すれば解決するでしょうか?
教えてちゃんで本当にすみません。

270 :hmk:02/10/02 14:59 ID:???
>>269 setcookie()なんてのはなかったっけ?

271 :名無しさん@お腹いっぱい。:02/10/02 17:18 ID:???
マニュアル見ようよ・・・

272 :nobodyさん:02/10/02 19:49 ID:???
setcookie()
http://jp.php.net/manual/ja/function.setcookie.php

273 :254:02/10/02 20:14 ID:???
>>270-272

ありがとうございました。何とか解決できそうです。

274 :nobodyさん:02/10/02 23:11 ID:N6nWPgxI
4.2.4はいつ公開されるんだろうね。

275 :nobodyさん:02/10/02 23:16 ID:???
>>274
開発メンバは4.3もしくはPHP5に向いているとおもわれ

276 :age:02/10/03 14:13 ID:???
imgフォルダ内の画像をランダムに表示させるスクリプトは
どう書けばいいんでしょうか?
ただ画像を表示させるだけではダメです
画像にリンクをつけたいんです。
ご伝授宜しくお願い致します。

277 :nobodyさん:02/10/03 16:18 ID:???
>>276
http://php.s3.to/bbs/up/randam.phpsを改造
-----------------------------------------
$folder = "./img/";

$handle = opendir($folder);
while ($file = readdir($handle)) {
if (!is_dir($file) && preg_match("/\.(gif|jpe?g|png)$/i",$file)) {
$filelist[] = $folder.$file;
}
}
closedir($handle);

mt_srand((double)microtime()*1000000);
$randval = mt_rand(0, (count($filelist)-1));

echo "<A href=\"$filelist[$randval]\"><IMG src=\"$filelist[$randval]\"></A>";
------------------------------------------

278 :nobodyさん:02/10/03 16:32 ID:???
>>277
ご苦労さん。ところでそのスクリプトを>>276な質問をするヤシが
それなりに使いこなしてくれると思う?
このようにやったけどうまくいかね、教えろ。
ってならまだわかるんだけどな。

279 :nobodyさん:02/10/03 16:49 ID:cJeLz4gO
>>276
実際にやってるサイトを見つけて、その管理者に聞けば?


280 :age:02/10/03 17:14 ID:???
>>277
リンクはURLのほうがいいんですが・・・
すいません、ごめんなさい!

281 :nobodyさん:02/10/03 17:31 ID:???
それくらい自分でどうにか汁!

282 :ノンノン:02/10/04 11:39 ID:rtjubDTm
セッションを組み込んだフォームを作成中で、入力エラーがあった場合に
送信ボタンを押すとエラーページを表示させるようにさせたのですが、
そこからまたフォームへ戻ると入力された内容がすべて消えてしまいました。
Javascriptのhistory.back()やブラウザの[戻る]のどちらも同じ現象です。
セッションを外すとそういうことは起きません。

エラー表示はページを変えずにJavascriptでも可能ですが、Javascriptを
無効にしている人もいるのでできればそれは使いたくないんです。
こういった場合、どうすれば良いのでしょうか。

283 :nobodyさん:02/10/04 11:51 ID:zNdIxOGz
PERL初心者です(まだ1週間)
ファイルUPするのに<input type=file>
でPOSTすると
C:\Documents and Settings\Administrator\デスクトップ\プログラム\readme.txt
以下のような文字列が帰ってきます。
これをファイイルの部分だけ切り出すのて?
正規表現初心者です。うーんどうすればいいの?
置き換えならともかくループして1文字ずつよむならともかく
わかりません。


284 :nobodyさん:02/10/04 12:07 ID:???
>>282
php.iniのキャッシュがらみの設定を変更すると[戻る]でも内容を保持してくれる。
あと、戻るはやめてエラーページからフォームのページへ移るボタンを作って
入力内容を再表示させる方法の2通りあるよ。

本来ならキャッシュに頼らず、後者の方法で回避する方がいいと思うけど、
俺もついつい戻るにしてしまうからな。

>>283
正規表現でなくとも、最後の\以降の文字列を取る。ってかんじなら文字列関数で
何とかできるだろ。
ちなみにここはPHP質問スレだが、ひょっとしてマルチ?

285 :ノンノン:02/10/04 12:25 ID:rtjubDTm
nobodyさん、ありがとうございます。

> php.iniのキャッシュがらみの設定を変更すると[戻る]でも内容を保持してくれる。
> あと、戻るはやめてエラーページからフォームのページへ移るボタンを作って
> 入力内容を再表示させる方法の2通りあるよ。

なるほど、フォームへ入力した内容を逆送信という形ですね。
ただ、レンタルサーバを利用しているので前者は無理かな?

で、一つ試しにやったことなんですが、セッションを外しても
また後にセッションを組み込んだページへ移行しても、セッションの
内容を保持してるんです。
なので、「フォームのページだけセッションを外して送信したら再び
セッションを組み込む」なんてことはできるような気がするんですが、
これって邪道でしょうか?


286 :nobodyさん:02/10/04 12:49 ID:???
>>285
.htaccessでphp.iniの設定値を変更できるものもある。
で、肝心の設定項目を未だに思い出せない。調べりゃすぐわかるけどね。
値の方をpublicからprivateに変更すりゃよかったと思うけど、https時のIEの
バグ?がらみで俺はnoneにしてある。これでも[戻る]でも残る。

>なので、「フォームのページだけセッションを外して送信したら再び
>セッションを組み込む」なんてことはできるような気がするんですが、
>これって邪道でしょうか?

何がやりたいのか全体像が判らない。なんとなくだが、邪道というより
無駄というかちゃんと理解しているのかと小一時間...

287 :nobodyさん:02/10/04 13:51 ID:???
PHP+PDFLibを利用し,PDF_show_boxed()を用いて文字列を印字するために
下記のようなスクリプトを書いてみたもののエラーが出て印字できません.
何か手がかりをお持ちでしたらご教授ください。
-----------------スクリプトの内容-------------------
<?
Header("Content-type: application/pdf");
$pdf = pdf_open();
pdf_set_info_author($pdf, "Sample");
PDF_set_info_title($pdf, "Sample");
pdf_set_info_creator($pdf, "See Author");
pdf_set_info_subject($pdf, "Sample");

PDF_begin_page($pdf, 842, 595);
PDF_add_outline($pdf, "Page 1");
pdf_set_text_rendering($pdf, 0);
pdf_set_font($pdf, "HeiseiMin-W3", 10, "EUC-H");
pdf_show_boxed($pdf, "hoge",100,100,100,100,left); ←
PDF_end_page($pdf);
PDF_close($pdf);
fclose($fp);
$fp = fopen();
header( "Content-type: application/pdf");
fpassthru($fp);
fclose($fp);
?>
------------------------------------------------------
------------エラーの内容-----------
<b>Fatal error</b>: PDFlib error: PDF_show_boxed not supported for CID or EBCDIC encoding in
<b>/usr/local/apache/htdocs/pdf/sample3.php</b> on line 15


288 :nobodyさん:02/10/04 14:22 ID:H7Rb5fov
>286 >285
session.cashe_limiter = public


289 :nobodyさん:02/10/04 14:44 ID:???
>>288
おーっ、それそれ。

>>287
まんまコピペ か、1年以上進歩しない厨と思われ。

290 :287:02/10/04 15:22 ID:???
>>289
まんまコピペ か、1年以上進歩しない厨と思われ。

291 :ノンノン:02/10/04 16:34 ID:rtjubDTm
> session.cashe_limiter = public

おーっ、これですか。早速、.htaccess に書き加えて。。。ガーン!!
「表示できません」と出ました。トホホ。
記述法まで教えていただくわけにもいかず、あちこち調べてみましたら、

  session_cache_limiter();

という関数を使えば良いという説明がありましたので、これを利用させて
いただいたところ、できました。

> 何がやりたいのか全体像が判らない。なんとなくだが、邪道というより
> 無駄というかちゃんと理解しているのかと小一時間...

一時間も悩んでいただいたのですね。
ご迷惑をおかけしました。また、質問の際はヨロシクね。

ありがとうございました。


292 :質問:02/10/04 16:43 ID:zDqIUs3v
ttp://www.〜〜〜/~~~~/~~~~/~~~~/.htm

で最期のスラッシュ部分を削るとよくdirectry格納庫が見えるんですけど
これは犯罪なんですか?

293 :質問:02/10/04 17:44 ID:???
↑何故このスレで質問するのですか?↑

294 :nobodyさん:02/10/04 21:40 ID:???
>>292
犯罪だよ。もう既にやったんだね。悪いことは言わないから出頭しなさい。

295 :nobodyさん:02/10/04 23:07 ID:???
>>292
それはマズイよ。早いとこ出頭したほうがいいと思います。

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

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

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

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

296 :nobodyさん:02/10/05 00:05 ID:zZFr4hqn
$data = "<td>$name</td>";
とあった時、$dataを表示して $name を展開することは可能ですか?

297 :nobodyさん:02/10/05 00:08 ID:kOTZvqT1


298 :nobodyさん:02/10/05 00:09 ID:XGmx03Nq
それぐらい聞く前に試せ

299 :nobodyさん:02/10/05 00:17 ID:zZFr4hqn
echo $data;
でダメだったので、なにか方法あるかなぁと思いまして…。

300 :nobodyさん:02/10/05 00:34 ID:???
と思ったら出来ました。質問の例を単純化しすぎたようです。
$dataはlist - explodeで外部ファイルから持ってきているので、
その辺に問題があるのでしょうかね。

301 :nobodyさん:02/10/05 00:34 ID:???
>>299
そういやいままでそんなことしたこと無かったよ。
$data = "<td>"."$name."</td>";
ってやってたんだが、>>296式で試しにやってみたら
ちゃんとでけた。 当然て言えばそうなんだが、なぜいままで
やらなかったのだろう...
echo $data; で表示したよ。

302 :nobodyさん:02/10/05 00:52 ID:???
>>301
やっぱし、"<td>"."$name."</td>"; 式で書き慣れてたほうがいいと思うよ。
プロの方どうですか?

303 :nobodyさん:02/10/05 00:54 ID:???
……

304 :300:02/10/05 00:57 ID:???
すみません、するべき質問が間違ってたみたいです。

$file = file("data.html");
$html = implode('', $file);
list($head, $main) = explode ("<!--cut-->", $html);

この$mainに<td>$name</td>などが入っているのですが、(echoで確認済み)
前記のように展開がうまくいきません。
普通に$main="<td>$name</td>"とした場合と↑との違いは何なのでしょう?

305 :nobodyさん:02/10/05 01:37 ID:???
>>304
すんげぇ発想だな。
展開しないのだったら素直に諦めろ。
ちなみに
$data='<td>$name</td>';
とかだったら展開しないだろ。右辺の扱いが違うんだよ。

306 :nobodyさん:02/10/05 01:42 ID:???
>>304
ひょっとして
data.htmlの中に「$name」って書いてるのか?


307 :nobodyさん:02/10/05 10:48 ID:???
$name をHTMLから取ってくるってことなんかね?

308 :nobodyさん:02/10/05 16:28 ID:ERAiXWsY
2chのようなURLで、例えば
http://pc.2ch.net/test/read.cgi/php/1031721334/l50」の
「/php/1031721334/l50」の部分をread.cgiで取得する方法を教えて下さい。
すごく簡単にできたような気がするんだけど、コード書くの久しぶりだから忘れた…


309 :nobodyさん:02/10/05 16:39 ID:PH1wtlYb
PHPでページにアクセス制限をすることは可能ですか?
.htaccessと似たようなことがしたい(特定のホストを弾くなど)のですが・・・

310 :nobodyさん:02/10/05 16:50 ID:???
>>308

PHP スレだけど、分かってる?


>>309

可能。

311 :308:02/10/05 17:11 ID:???
思い出した、PATH_INFOだ。

312 :sleepy galaxy:02/10/05 17:18 ID:KAWXlSoz
超おすすめメールマガジン
sleepy galaxyだよ
http://www.msleep.com/jp/sg/
( ´,_ゝ`)( ´,_ゝ`)( ´,_ゝ`)( ´,_ゝ`)( ´,_ゝ`)

313 :nobodyさん:02/10/05 17:26 ID:???
>>309 こんなのは?

<?
$r_addr = getenv("REMOTE_ADDR");
$r_host = getenv("REMOTE_HOST");
if($r_host=="" or $r_host==$r_addr){
$r_host = @gethostbyaddr($r_addr);
}
$hantei = ereg("拒否したいホストA|拒否したいホストB", $r_host);
if($hantei == 1){
header("Location: http://www.2ch.net/"); //飛ばし先
}
?>

314 :309:02/10/05 17:39 ID:PH1wtlYb
>>313

ありがとうございます。でもコピペしてみたら、
エラーが発生してしまいました……どこに問題があるんでしょうか。


315 :nobodyさん:02/10/05 18:43 ID:???
エラーメッセージくらい書きませう。

316 :309:02/10/05 20:08 ID:???
>>315

エラーメッセージはこんな感じです。

Parse error: parse error, unexpected '@' in /****/****/****/****/index.php on line 35

317 :名無しさん:02/10/05 20:21 ID:???
$aa="1\n2\n";
としたとたん、$aaの中身が
"1\r\n2\r\n"
になってしまってウザイのですが、どうやって回避すればいいのでしょうか?
おしえてください!
verは4.2.2でし、、

318 :名無しさん:02/10/05 21:12 ID:pMN6x92i
317です
うそついていました
問題なく内部ではうごいていました



319 :300:02/10/05 21:22 ID:???
>>306 >>307
デザインを別ファイルにしたかったので、こんな意味不明なことを。
(よくある掲示板スクリプトの「スキン」みたいに)
何か別の方法考えてみます…。

320 :313:02/10/05 22:43 ID:???
>>316 ここかな。

$r_host = @gethostbyaddr($r_addr);

gethostbyaddr関数の前の「@」が邪魔してんのかな。
無くても大丈夫だからとってみたら。
うちではあってもなくても動くけど。

321 :nobodyさん:02/10/05 22:43 ID:5gdnUDvW
PHPにGDライブラリいれて使っているのですが、
画像をresizeして出力することはできるのですが、
縦のものを横にするようなことはできないんでしょうか?

スレ違いだったらスマソ。

322 :nobodyさん:02/10/06 00:56 ID:FiROMDEK
Htmlのなかに
<ul>


</ul>
この部分があって、これを取り除きたいのですが、
厨房なのでわかりません。

$hoge = ereg_replace("<ul>\n\n</ul>","",$hoge)

このようにしていますがだめっぽです。
ご教授おねがいします。



323 :nobodyさん:02/10/06 01:07 ID:???
><ul>


></ul>

\nが3回あるけど?

324 :nobodyさん:02/10/06 01:12 ID:FiROMDEK
>323
それしてもだめぽでした

325 :hmk:02/10/06 01:34 ID:???
>322
$hoge = ereg_replace("<ul>.*</ul>", "", $hoge);

326 :nobodyさん:02/10/06 02:08 ID:FiROMDEK
>>325
それだめなんすよー
<ul>
<li>ほげ
</ul>
ってのは 消したらだめなんですよー

327 :hmk:02/10/06 02:11 ID:???
>>326
あなたは何をやりたいのですか?
<ul>と</ul>だけを消したいのですか?

328 :nobodyさん:02/10/06 02:26 ID:FiROMDEK
>>327
<ul>と</ul>の間に2個の改行が入っている場合っす。


329 :hmk:02/10/06 02:28 ID:???
>>328
改行コードが\r\nになってるんでないの?

330 :nobodyさん:02/10/06 02:29 ID:FiROMDEK
>>329
といいますと?

331 :hmk:02/10/06 02:32 ID:???
$hoge = ereg_replace("<ul>\r\n\r\n</ul>", "", $hoge);

$hoge = ereg_replace("<ul>\r\n\r\n\r\n</ul>", "", $hoge);
を試してみよ。


332 :hmk:02/10/06 02:36 ID:???
>>331 事故レス
ereg_replace()でなく、str_replace()で十分か。

333 :hmk:02/10/06 03:06 ID:???
老婆心ながら、解説しておく。

Windows環境で編集されたファイルの標準的な改行は復帰+改行(\r\n)である。
また、UNIX系では\nのみ、Macでは\rのみである。

PHPにおいて、出力する場合は\nとしておけば通常は問題ない。
ただし、クライアントから送信されてきたデータを扱う場合には、改行コードを考慮に入れる必要がある。

複数のOSを考えなければならない場合、改行コードを正規表現(\r\n|[\r\n])で扱うのが簡便であろうか。

うんこ食って寝ます。。。

334 :nobodyさん:02/10/06 03:12 ID:FiROMDEK
>>331
だめっぽですねー

335 :hmk:02/10/06 03:19 ID:???
>>334
まだうんこ食ってないので即レスしますが、
だめぽな原因が、なにか文字列の置換とは別のところにあるのでは?
差し支えなければ、ソースを晒してみよ。
儂か、ほかの誰かが原因を教えてくれるだろうから。

336 :nobodyさん:02/10/06 03:36 ID:FiROMDEK
>335
ソースはあれだけっすけど
dmozのHTMLをちょこちょこいじくってます

337 :hmk:02/10/06 03:51 ID:???
>>336 dmoz???
もっと質問上手になって下ちい。
つまり、自分と同じ状況を相手が再現できるようにしなければなりまそん。
そうでない場合、皆は答えたくても憶測で答えるしかできまそん。

儂も儂で、実はPHPを動かす環境をもってなくて悪いのですが、、、


338 :hmk:02/10/06 04:05 ID:???
実はスペースが紛れ込んでいるというオチとかを憶測するとして、
また、<ul></ul>間に「2個の改行が入っている場合」というのを「表示するべきデータがない場合」と拡大解釈するとして、

$hoge = ereg_replace("<ul>[:space:]*</ul>", "", $hoge);

を試してみよ。

もう本当にうんこを食って寝ます。。。

339 :hmk:02/10/06 04:08 ID:???
事故レス
$hoge = ereg_replace("<ul>[[:space:]]*</ul>", "", $hoge);
でした。

340 :nobodyさん:02/10/06 04:51 ID:???
Open Directory 厨ですか?
あそこは糞ですよ。
統率執れてないし。

341 :駆け出し:02/10/06 08:28 ID:XXgIkL71
$hoge = ereg("<ul>.*</ul>", $hoge);
$hoge = ereg_replace("\r\n", "", $hoge);
$hoge = ereg_replace("\n", "", $hoge);
$hoge = ereg_replace("\r", "", $hoge);

こういう事?

342 :名無しさん:02/10/06 08:43 ID:???
このホームページの製作者が規約違反で逮捕されたそうです

http://plaza.rakuten.co.jp/a240a/

343 :駆け出し:02/10/06 08:54 ID:6TGeGVMz
あ、一行目からまちがえてる。。。

逝ってきます。

344 :316:02/10/06 13:49 ID:???
>>309=>>316 です。

>>320

試しに @ を外してみたのですが、やはり動作しませんでした。
バージョンは4.2ですが、何か関係があるのでしょうか?
度々質問してすみません。

345 :nobodyさん:02/10/06 14:38 ID:pKfa3/8w
>>344
バージョンは4.2
$addr = $_SERVER['REMOTE_ADDR'];
$host = $_SERVER['REMOTE_HOST'];
$acpos = strstr($addr, "拒否したいホストA|拒否したいホスト");
if($acpos) header("Location: http://www.2ch.net/"); //飛ばし先

346 :nobodyさん:02/10/06 15:15 ID:???
>>345

ありがとうございます。でも、試したところまたエラーが出てしまいました。

Parse error: parse error in /****/***/****/****/index.php on line 31
ちなみに31行目は
if($acpos) header("Location: http://www.2ch.net/"); //飛ばし先
の部分です。
何か打つ手がありましたら教えて下さい。

347 :nobodyさん:02/10/06 15:17 ID:???
すみません、>>346=>>309=>>316 です。

348 :313=320:02/10/06 16:37 ID:???
>>345
おー、strstr()関数って初めて知った…俺も触って1週間の素人なので。
ereg使うまでもないときは便利ですね。

>>346
345をそのままコピペしてるとして、
「拒否したいホスト」の部分にリモートホストのドメイン名
(例えばiij.ad.jpとか)を書いてるとしたら、動かない。
345のスクリプトは$hostは見ないで、$addrで判断してるから、
「拒否したいホスト」はIPアドレスで指定しないといけない。
あと、最後の行(Parse Errorが出てる文)も動かないかな?
ちっと345を元にして直してみた。4.2.2で動作してます。

index.php内に記述
<?
$host = $_SERVER['REMOTE_HOST'];
$acpos = strstr($host, "拒否したいホストをドメイン名で");
if(isset($acpos)) header("Location: http://www.2ch.net/");
?>

349 :nobodyさん:02/10/06 16:48 ID:???
>>347
うちで試してみたけど動いたよ
1. 省略せずに書いてみる
2. コメントを消してみる
 if( ... ){ header(" ... ") }
 else{ print ("OK"); }

parseエラーの行数が気になる
なんかのプログラムの途中に入れてるみたいだけど単独で試してみたら?


350 :346:02/10/06 16:53 ID:???
=>>309=>>316 です。

>>348

ありがとうございます。でも、またしてもエラーが出てしまいました…
Warning: Cannot add header information -
headers already sent by (output started at /****/***/***/***/index.php:16)
in /****/****/****/****/index.php on line 27

27行目は
if(isset($acpos)) header("Location: http://www.2ch.net/");
の部分です。同じ環境なのにどうして動作しないんでしょうか。

351 :nobodyさん:02/10/06 17:12 ID:???
>>355

header("Location: http://www.2ch.net/");
の前に何か出力してないか?

<html><body>
<?
header("Location: http://www.2ch.net/");
?>

もダメだぞ

352 :313=320=348:02/10/06 17:12 ID:???
>>350
むむむ、まだダメなんだ。
>>349の言うとおり、単独で試したほうがよさそうな。


353 :351:02/10/06 17:12 ID:???
>>350
だったよスマソ

354 :350:02/10/06 17:43 ID:???
=>>346=>>309=>>316 です。

>>349,>>351

ありがとうございました。単独で試したら動作しました。が、
自分が2chに飛ばされてしまいました。
もちろん、自分のホスト名は記述してません。
何故なんでしょうか…

355 :nobodyさん:02/10/06 18:39 ID:???
>>354
<?php
$host = $_SERVER['REMOTE_HOST'];
$acpos = eregi("拒否ホスト名",$host);
if($acpos){
header("Location: http://www.2ch.net/");
}else{
print "飛んでない";
}
?>

356 :354:02/10/06 19:03 ID:???
=>>350=>>346=>>316=>>309 です。

>>355

上手く動作しました! ここまで色々情報を頂き、
皆さん本当にありがとうございました。

357 :313=320=348:02/10/06 19:12 ID:???
>>356
おー、うまくいったのね、よかったね。

>>355のスクリプト、俺の環境(4.2.2)で試すとうまく動かない…
ホスト自体が取得できてないからなんだが、これって環境の問題かな?
スクリプトの問題じゃないのは明白なので不思議だ。
やっぱ自分のとこでは>>313式がちゃんと動くようです。

<?
$addr = getenv("REMOTE_ADDR");
$host = getenv("REMOTE_HOST");
if($host == "" or $host == $addr){
$host = gethostbyaddr($addr);
}
$hantei = ereg("拒否ホストA|拒否ホストB", $host);
if($hantei == 1){
header("Location: http://www.2ch.net/");
}
?>

358 :nobodyさん:02/10/06 22:23 ID:???
>>357
それは鯖の設定でホストが抜けない様になってるんだよ
だからgethostbyaddr()関数を使って、IPアドレスから
ホストを問い合わせる必要がある。

そんな余分な処理をするより、IPアドレスで制限した方が
負担が少ない。


359 :nobodyさん:02/10/06 22:28 ID:???
http://www.php.net/manual/ja/function.addcslashes.php
ここのマニュアルにある、
> "\0..\37" のようにcharlistに範囲を指定可能で す。この場合、アスキーコードが 0 から 31 の範囲の文字は全てエスケー プされます。

これってどういう意味?単なるtypo?

360 :nobodyさん:02/10/06 22:41 ID:???
>>359
そのままの意味

361 :359:02/10/06 23:58 ID:???
>>360
うーん、どこをどう読んでも
"\0..\37"ってのが、どうして"0から31"になるのか理解できないんで、
どういうことなのか御教授キボンヌ。

362 :359:02/10/07 00:04 ID:???
あ、やっと分かった。
たびたびスレ汚ししてスマン>ALL

>アスキーコードが32未満または126より大きい文 字は、8進表現に変換されます。
ここを見落としてた。

363 :荒川太郎:02/10/07 17:52 ID:bKtEI8Ri
 あるディレクトリ以下を呼び出すと、必ず一つのスクリプトを呼び出し、
特定ディレクトリ以下の、パス情報をパラメータとして取得することはできるでしょうか?

例:
 http://hogehoge.com/test/param1/param2

 上記の場合、

1.test/ 以下のパス情報は無視されて、hoge.php が呼ばれる。
2.test/ 以下の param1/param2 の情報を hoge.php の中で使用する。

 Servlet では同じようなことを、tomcat の設定ファイルでやっていたんですけど、
PHPでやらなくてはならなくなり、いろいろ調べているのですが、いい方法がみつかりません。

 ちなみに tomcat では web.xml で
<servlet-mapping>
<servlet-name>
HogeHogeServlet
</servlet-name>
<url-pattern>
/test/*
</url-pattern>
</servlet-mapping>

 というような設定をして行っていました。

 apache+PHP でも同様のことができるのでしょうか?

364 :nobodyさん:02/10/07 18:08 ID:???
>>363
mod_rewrite使ったらできそう。

365 :hmk:02/10/07 18:41 ID:???
mod_rewrite使え

366 :荒川太郎:02/10/07 20:25 ID:bKtEI8Ri
>>364
>>365

 ありがとうございます!
 mod_rewrite について検索してきますっ!

367 :hmk:02/10/07 20:33 ID:???
>>366
板違いで申し訳ないが、ちなみに儂は、
http://***/xyz へのアクセスを http://***/index.php?code=xyz
と読み替えさせるためにrewrite使ったことがあります。


368 :荒川太郎:02/10/07 20:38 ID:bKtEI8Ri
>>367

 どもです、この辺の話は、ここだとまずかったかな?
 apache関連の板ってあるのかな?

369 :nobodyさん:02/10/08 02:52 ID:mDZCCxjW
>>321
imagemagickってーの使えばできるぽ
外部コマンド使うか、pearのPECLぱっけじいんすとしれ

370 :nobodyさん:02/10/09 01:22 ID:Cmd2yG94
クッキーを2chみたいにJavaScriptで取得できないかな?
perlでは簡単に出来るんだけど、phpのsetcookie()を使うとJavaScriptで取得したときに
文字が化けちゃうよ。
setcookie()を使わずに、書き込みもJavaScriptを使えば良いんだろうけど、
なるべくならphpを使いたいな。
どなたか良い方法を知っている方いませんか?

371 :nobodyさん:02/10/09 02:49 ID:uMeBQ3Ig
なんで文字化けするのか考えたら?

372 :nobodyさん:02/10/09 08:19 ID:???
>>370
Netscape7はunescapeが対応しているのでNetscape専用にしる。
ていうか俺も困っています。

373 :nobodyさん:02/10/09 11:26 ID:???
>>19 の答えがわからないんだけど、ぜひ教えてください。
お願いします。。。

374 :nobodyさん:02/10/09 11:29 ID:???
>>373
粘るね、あんた……。
関連の ML には投げてみたの?

375 :hmk:02/10/09 13:29 ID:???
>>370
文字化けしないコードに変換してからsetcookie()すればいいだけでしょ、たぶん。

>>373
>>19の説明だけだと、PHP+PEAR+Accessについてよく知っている人でないと答えにくいと思う。
答える側の手を煩わせないように、前後のコードやデータとあわせて、@期待したい結果A実際の結果Bエラー等が出力された場合はその出力
を簡潔に書くべきだと思う。


376 :nobodyさん:02/10/09 15:10 ID:???
>>375
ですな。
冒頭にMSAccessとある時点でほとんどの人にあぼーんされているのではなかろうか。(w

377 :あくせる:02/10/09 16:21 ID:DrstWiBS
>>375
ですよね。
なんで、insert するときわざわざ $nowdate かわかんない。

テーブルこしらえるときに date TIMESTAMP DEFAULT CURRENT_TIMESTAMP とか。

Access なら「規定値」にDate()じゃだめなの?

378 :nobodyさん:02/10/09 19:40 ID:???
>>375
全然スレ違いなんだが、あんたのレスj-phoneの携帯から見ると絵文字が(w

スレ汚しすまそ

379 :nobodyさん:02/10/10 10:48 ID:???
MLで解答がいただけなかったので、こちらで質問させてください。
セッションについて質問があるのでよろしくお願いします。

記述1(session_start()を記述してない)
−−−test.php−−−
/* クラス定義 */
$sel2 = new クラス名;
/* 読み込んだクラスをセッション管理 */
session_register("sel2");
$sel2->クラス名($sql);

−−−クラス内−−−
$this->usersql = $sql;

だいぶ省略してますが上記記述だと、クラス内の
$this->usersql という変数はリロードしても引き継がれてるのですが

記述2(session_start()を記述してない)※上記とは違うソース(PHPマニュアルより抜粋)
if (!session_is_registered('count')) {
session_register('count');
$count = 1;
}
else {
$count++;
}
?>こんにちは、あなたがこのページに来たのは<?php echo $count;?>回目ですね。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
上記記述でリロードした場合、カウントアップしていってくれません。
session_start()を記述すればカウントアップするのですが、
ならばなぜ、session_start()の記述がない”記述1”は情報を保持しているのかが理解できません。何故session_register()だけでセッションが成立する
場合があるのか、、すみませんがご教授ください。

380 :nobodyさん:02/10/10 12:37 ID:???
>>379
良く分からんが、session_is_registered()のあたりで、
内部でいろいろやってそうだ…

便乗して質問。
$_SESSIONを開放しようとしてunset($_SESSION)した後、
$_SESSION['hogehoge']に何か値を代入すると、
値が保存されないんだけど、これって仕様?
どうやら、unset($_SESSION)すると、
その後のセッションに関する操作が全て無効になるみたいだけど。

http://www.php.net/manual/ja/function.session-unset.php
これ見る限り、$_SESSION = array();と等価であるように書かれているけど…

381 :nobodyさん:02/10/10 19:06 ID:???
>>379
セッション変数に登録しようとすると、暗黙のうちにsession_start()を
まだ呼び出していなかったら呼び出します。
ML過去ログにも同様のネタはあるよ。2年近く前だったかなー。



382 :nobodyさん:02/10/11 04:39 ID:Dj1Sz5F3
テンプレートにsmartyを使っていますが、
<style type="text/css">
<!--
.hide { display:none }
-->
</style>
のようなスタイルシートがテンプレート内にあると
Warning: Smarty: [in hoge.html line 13]: syntax error: unknown tag - 'display:none' in /usr/local/lib/php/Smarty_Compiler.class.php on line 1182

のようにWarningが出てしまいます。
回避する方法はありませんでしょうか。

よろしくお願いします。

383 :382:02/10/11 05:24 ID:???
↑ですが自己解決しました。
{literal}
{/literal}
で囲んでおけばよかったんですね。

しかし、SmartyってWYSIWYG環境でHTML作ること考えてないのかな?

384 :age:02/10/11 13:13 ID:???
PerlとPHPって負荷率ってどれくらい違うのですか?
例)サーバに画像掲示板100個設置

385 :nobodyさん:02/10/11 15:40 ID:???
設置しても負荷は掛かりませんが。

386 :nobodyさん:02/10/11 15:56 ID:???
どう考えても組んだ人次第

387 :nobody:02/10/11 23:07 ID:???
他の画面へ移動する方法を教えてください。

現在、<A href=〜>で、自分自身(php)を呼び出し、色々チェックをして、オッケーであれば
別の画面へリンクしたいのですが、チェック後オッケーであれば、header("Location: http=hogehoge")で、
別画面へ移動しています。

しかし、クライアントから「新規にウィンドウをオープンして表示して欲しい」とリクエストがあり、
困っています。
どうすれば、実現可能でしょうか?



388 : ◆Kiss.FX29M :02/10/11 23:30 ID:???
>>387
新規ウィンドウを開くにはJavaScriptを使うのだが、チェックしてダメな場合は
新規ウィンドウを開かずに元のウィンドウで修正させたいわけですな。
元のウィンドウに隠しフレームを作っておいて、リンク先をとりあえず隠し
フレームしておく。そこでチェックしてOKなら隠しフレームからJavaScriptで
新規ウィンドウを開く。ダメなら元のウィンドウへ修正画面を出す。
で、どうよ。

389 :387:02/10/11 23:41 ID:???
>>388
レスありがとうございます。

>チェックしてダメな場合は新規ウィンドウを開かずに元のウィンドウで修正させたいわけですな。

そうです、そうです。

やはりJavaScriptを使わないと無理でしょうか?
<A href=hogehoge target="_brank">のように、簡単にphpでチェック後自動的に
移動したいのです。

クライアントの要望では「なるべくJavaScriptを多用しない」とあるのです。
(フォームの入力チェックくらい)
なので、悩んでいます。
なにか、名案がありましたらご指導ください。

390 : ◆Kiss.FX29M :02/10/12 00:21 ID:???
>>389
JavaScriptの多用はダメって何でかな?
一切ダメってなら理解できないわけでもないのだが...

で、<A href=hogehoge target="_brank"> こうするとダメな場合でも
新規ウィンドウを開いちゃうわけだが、『入力に間違いがあるので、
修正してください』ってなメッセージを表示して元ウィンドウでの修正を
促すようにするとか...
クライアントの意向も含めて内容がわからないので、これ以上は
なんともだな。

391 :nobodyさん:02/10/12 00:43 ID:RgMaTiub
<A href=hogehoge?check=ok target="_brank">
とかして、開く先でチェックする。

チェック不通過なら、
header("Location: http=motopage?check=out")
で送り返す。
ってのは?
不通過の場合新しいページは開いたまま元のページを表示しちゃうけどね。


392 :nobodyさん:02/10/12 01:41 ID:???
どう考えてもページ遷移の設計に問題あるだろ。
といいたい気持ちを抑えつつ、ひとつ案を出してみます。

<? if( $checkresult == "ok" ){ ?>
<body onLoad="window.open('thisfile.html')">
<? } else { ?>
<body>
<? } ?>



393 :389:02/10/12 02:08 ID:???
レス頂いた皆さん、色々ありがとうございました。
結局、392さんの案を使わせていただきました。

>どう考えてもページ遷移の設計に問題あるだろ。

そうですね〜。
388さんの案でもいいのですが、「そこまでするのもな〜〜」っていう感じのものなのです。

とりあえず、実現できました。ありがとうございました。

394 : ◆Kiss.FX29M :02/10/12 10:32 ID:???
>>392
おっ! なるほどぉ。
ワシも勉強になった。


395 :( ´ー`)y-~~ ◆f7mhnEfPcU :02/10/13 02:59 ID:5MS6fmVa
PHPさわり記念age

396 :nana:02/10/14 11:29 ID:???
済みません。配列の事でお聞きしたいのですが、

$line = "出席番号<>1<>名前<>安藤<>科目<>数学<>点数<>85"

こういった内容の文字列があり、これから下のような配列を
作りたいと思っています。

$array("出席番号" => 1,
     "名前"    => "安藤",
     "科目"    => "数学",
     "点数"    => 85);

試行錯誤して一つ方法が見つかったのですが、何だか
とても回りくどい、下手な書き方をしているようです。。

もし効率的な方法があれば、教えてください。

<?php
  $line = "出席番号<>1<>名前<>安藤<>科目<>数学<>点数<>85";
  $data = explode('<>', $line);
  while($data) {
    $name    = array_shift($data);
    $value    = array_shift($data);
    $array_tmp = array($name => $value);
    $array    = array_merge($array, $array_tmp);
  }
?>

よろしくしくお願いします。

397 :nobodyさん:02/10/14 11:46 ID:???
あんまりいいのが思い浮かばなかった

$data = split("<>", $line);
for ($i = 0, $cnt = count($data); $i < $cnt; $++) {
$array[$data[$i]] = $data[$i + 1];
}



398 :nana:02/10/14 11:52 ID:???
>>397 さん、休日なのに素早い回答ありがとうございます!
さっそく使わせていただきます。ありがとうございました。

399 : ◆Kiss.FX29M :02/10/14 12:06 ID:???
>>396
その前にそんな配列を作って後で苦労しねぇか。

400 :nana:02/10/14 13:05 ID:???
>>399 さん、実は複数の先生から先のような、こちらが
想定していないフォーマットでテキストファイルを
受け取ってしまって、これをデータベースに登録して
いかなくてはならないんです。。

しかもテキストファイルの中身の「順序」が下記のように
まちまちなので、行単位で読み込みながら連想配列に
しておけば、データベースに登録していく際に間違いが
減るのでは、と思ったのですが…考え方が間違ってますでしょうか??

ファイル1: 出席番号<>1<>名前<>安藤<>科目<>数学<>点数<>85
ファイル2: 名前<>伊藤<>出席番号<>2<>科目<>数学<>点数<>65

401 : ◆Kiss.FX29M :02/10/14 13:33 ID:???
>>400
科目は数学だけではないだろうから、配列の次元を増やすか、
配列変数そのもを増やすかしないと...と思ったわけよ。
最終集計をデータベースでやるので仮だ! ってなら別にいいけどよ。



402 :nana:02/10/14 13:40 ID:???
>>401 さん、ご助言ありがとうございます。
仰るとおり、集計などはデータベースに登録してから
行うつもりでした…お気遣いありがとうございました。

403 :nobodyさん:02/10/14 14:40 ID:c/k9cDX2
PerlからPHPに流れてきて、痒いところに手が届くような思いなのですが、
セッションというのがいまいちよく分かりません。
セッション変数は、サーバー側に保持しているんですよね?
だとしたら、長い間運用していたら
サーバー側のリソースがいっぱいになってしまわないのでしょうか?
ブラウザが閉じられたらセッションも終了する、と解説書に書いてありますが、
クライアント側がハングアップした場合等でもうまく処理されるのでしょうか?


404 :nobodyさん:02/10/14 14:48 ID:???
RedHat 8.0 で、apache-2.0、PHP-4.2.2、postgresql-7.2.2 を
インストールしています。 以下を教えて下さい。

ローカルな環境で REMOTE_ADDR を取得したいのですが、
<?php
 print "remote_addr=".getenv("REMOTE_ADDR"). "<br>";
?>
では getenv 部分が空白になってしまいます。

phpinfo() では _SERVER["REMOTE_ADDR"] に正常な IP が表示されています。
php.ini は変更していません。


405 :nobodyさん:02/10/14 15:10 ID:???
>>404
ん?どうゆうこと?普通こうじゃないの?
<?
$remote_addr = getenv("REMOTE_ADDR");
print "remote_addr=".$remote_addr. "<br>";
?>

406 : :02/10/14 15:16 ID:qwp05sUr
$line = "出席番号<><>名前<>安藤<>科目<>数学<>点数<>85";

preg_match_all('/[^<>]+<>[^<>]*/', $line, $match);

$sets = current($match);

foreach($sets as $set) {
list($key, $val) = explode('<>', $set);
$array[$key] = $val;
}

-----
ガーベッジ・ コレクションで掃除します
session.gc_maxlifetime

-----
"remote_addr={$_SERVER['REMOTE_ADDR']}"

407 :nobodyさん:02/10/14 15:18 ID:IjGAaSWb
getenv()
注意 この関数は、ISAPIモードでは動作しません

<?=$_SERVER["REMOTE_ADDR"]?>

408 :405:02/10/14 15:19 ID:???
>>406 勉強になりまつ


409 :404 NotFound:02/10/14 15:24 ID:???
>>405-407
たくさんありがとうございます。
print "remote_addr=" .$_SERVER['REMOTE_ADDR']."<br>";
で表示はされました。

ISAPIモード...ですか... 検索してみます。


410 :403:02/10/14 16:07 ID:???
>406

なるほどー。時間制限があるわけですね。
ありがとうございました。


411 :nobodyさん:02/10/14 16:19 ID:x52xQDqk
>>407
どのバージョンからそうなったんだ?
以前は機能していたのに。
確認したら確かにCGIモードでしか値を返さないな。

412 :nana:02/10/14 18:33 ID:???
>>406 さん、ありがとうございます。
正規表現は難しいので殆ど使ったことがないのですが、
書いていただいた意味を調べて理解したいと思います。
ご親切にありがとうございました。

413 :nobodyさん:02/10/14 19:55 ID:H8/ENmxF
php4 win2k

echo readfile(filename);

すると、filenameの内容となぜかバイト数が表示されるのですが、
これを抑制するにはどうしたらいいですか。


file.txt
ああああああああああ

echo readfile("file.txt");

結果
ああああああああああ
20

414 :nobodyさん:02/10/14 20:00 ID:???
>>413 readfile のマニュアル読め。
この関数、名前が悪いよな。

415 :nobodyさん:02/10/14 20:11 ID:H8/ENmxF
>>414
Returns the number of bytes read from the file
あじやー
素直にfgets デモ使います。
定型html部分をインクルード(バックスラッシュなし)しようと思ったのだが、


416 :hmk:02/10/14 20:48 ID:r0BZ2PpZ
>>416
インクルードしたいのならinclude()すれば?

417 : :02/10/15 02:00 ID:???
>>415
readfile ファイルを出力してバイト数を返す
http://jp.php.net/manual/ja/function.readfile.php

readfile(filename);
だけにして戻り値は捨てる

>>416のように include,include_once,require,require_once
あたりの方がいいのでは、

Zendに評価して欲しくない部分でも含まれてない限り。

418 :nobodyさん:02/10/15 11:12 ID:YHFkhAWR
ひとつ質問させてください。(鯖はPHP4.2.2、使用PCはWinXP)
テキスト検索付きのBBSをファイルベースで作ってるのですが、
検索語に「ー(長音)」が含まれる場合にエラーが発生します。
  Warning: REG_EBRACK in xxx.inc on line 181
 当該ファイルの181行目の処理:
  $result = eregi($keyword,$res);
BBSログ内容を含む変数$resに対して、
検索語を含む変数$keywordで検索をかけているわけですが、
「ー(長音)」にぶつかると、REG_EBRACK([]ブラケットが閉じてない)
エラーが出てしまうようです。

いろいろ検索してみた結果、
SJISの長音がまずい文字を含んでるようなのですが、
正規表現はまったくの素人(PHPもですが…)なので
うまい処理の仕方が分かりません。
どなたか教えていただけないでしょうか。

※eregを使わないやり方があればそれでもOKです。
 ちなみに、PHPの内部エンコーディングはSJISです。

419 :nobodyさん:02/10/15 12:08 ID:???
>>418
http://www.php.net/manual/ja/ref.mbstring.php

420 :nobodyさん:02/10/15 12:53 ID:???
>>418
mb関数を使うのも良いが、EUC文字コードを使うのが基本

421 :s:02/10/15 13:02 ID:MW777drM
IDE何使ってる?

422 :nobodyさん:02/10/15 17:15 ID:60o/Yyha
変数は、$_GET["hoge"]で受け取った方が良いと聞いたのですが何故ですか?
$hogeで受け取るのと何が違うの?

423 :nobodyさん:02/10/15 17:49 ID:???
>>422
荒らしですか?

424 :nobodyさん:02/10/15 18:01 ID:???
>>422
「変数は、$_GET["hoge"]で受け取った方が良い」
とあなたに言った方に聞きなさい。

425 :418:02/10/15 18:50 ID:???
>>419-420 レスありがとうございました。

eregi()で検索する方法をやめて、
mb_strpos()を使うようにしたらうまくいきました…


426 :nobodyさん:02/10/15 18:54 ID:MbJ1xrNT
http://www.midgard-project.org/
だれかこれ使ってる人居ない?

427 :nobodyさん:02/10/16 02:07 ID:???
いま動いてるphpファイルのファイル名ってとれないですか?

iamview.php
<html><head></head><body>
<?php
echo "I am View<br>\n";
echo "PHP_SELF = ".$_SERVER[PHP_SELF]."<br>\n";
include "iambean.php";
$iambean = new iambean;
?>
</body></html>

iambean.php
<?php
class iambean{
function iambean(){
echo "I am Bean<br>\n";
echo "PHP_SELF = ".$_SERVER[PHP_SELF]."<br>\n";
}
}
?>

結果
I am View
PHP_SELF = /php/iamview.php
I am Bean
PHP_SELF = /php/iamview.php

2個目はiambean.phpになってほすぃ

428 :nobodyさん:02/10/16 02:21 ID:???
>427
__FILE__は?

429 :nobodyさん:02/10/16 02:37 ID:???
<?php
class iambean{
function iambean(){
echo "I am Bean<br>\n";
echo "PHP_SELF = ".$_SERVER[PHP_SELF]."<br>\n";
echo "SCRIPT_FILENAME = ".$_SERVER[SCRIPT_FILENAME]."<br>\n";
echo "PATH_TRANSLATED = ".$_SERVER[PATH_TRANSLATED]."<br>\n";
echo "SCRIPT_NAME = ".$_SERVER[SCRIPT_NAME]."<br>\n";
echo "__FILE__ = ".__FILE__."<br>\n";
}
}
?>
結果
I am View
PHP_SELF = /php/iamview.php
SCRIPT_FILENAME = c:/program files/apache group/apache/htdocs/php/iamview.php
I am Bean
PHP_SELF = /php/iamview.php
SCRIPT_FILENAME = c:/program files/apache group/apache/htdocs/php/iamview.php
PATH_TRANSLATED = c:/program files/apache group/apache/htdocs/php/iamview.php
SCRIPT_NAME = /php/iamview.php
__FILE__ = c:\program files\apache group\apache\htdocs\php\iambean.php

いけました!こんなのマニュアル載ってましたっけ??
ありがとうございました。

430 :nobodyさん:02/10/16 02:53 ID:QXwwjHEP
>>420
私はめんどくさいのでUTF-8Nです

431 :nobodyさん:02/10/16 02:56 ID:m/rwzFSQ
PHPでフォームを使ってファイル・アップローダーを作成した場合
・複数のファイルを選択してアップロード出来ますか?
・ファイルではなくディレクトリを指定して、その階層下のファイル、サブディレクトリをアップロード出来ますか?


432 :nobodyさん:02/10/16 03:05 ID:FAL4tSOv
PEARにtarでアーカイブする関数があるから階層ごとアッブロード出来んじゃないの?複数選択はブラウザからは無理っぽい

433 :nobodyさん:02/10/16 03:09 ID:???
>>432
input type=file
を沢山作れば出来るっしょ?

434 :nobodyさん:02/10/16 11:08 ID:m/rwzFSQ
>>432 >>433

サンプルスクリプトどこかにありませんか?


435 :nobodyさん:02/10/16 11:40 ID:FAL4tSOv
サンプルなら本に載っている。でもtarしてアップは知らない。出来るの?

436 :nobodyさん:02/10/16 12:35 ID:???
ディレクトリのアップロードは出来ない。

437 :nobodyさん:02/10/16 15:28 ID:???
>>433
基本的にそれでいいけど、formの方で
<input type="file" name="file[0]"> とやって受ける方で
配列の数だけループさせんのが楽です。

438 :nobodyさん:02/10/17 13:19 ID:wnOpV9ll
セッションを使ってみたのですが、30分程度アクセスしていないと
ブラウザを閉じなくてもセッションが切れてしまうみたいです。
php.iniのsession.cookie_lifetimeとかsession.gc_lifetimeとかも
いろいろいじっみたんですがやっぱり30分前後で切れてしまうようです。

もっとセッションを長く持つことはできないのでしょうか・・・

439 :nobodyさん:02/10/17 13:30 ID:???
>>438
PHPじゃなくてサーバ(Apacheとか)の設定じゃないのかな。

440 :nobodyさん:02/10/17 13:56 ID:frKHjIQw
>>438
Defaultだとセッション情報の生存時間は24分になってる
session.max_lifetime = 1440
ただし、24分以降のアクセスが有った場合に
session.gc_probability = n
 で定義されているn%の確率でガベージコレクション処理が
実行される。
アクセスがなければ、セッション情報はアボーンされない。
デフォルトはsession.gc_probability = 1
だから、結構なアクセス数がないとgcは開始しないはず
何だけど


441 :440:02/10/17 13:58 ID:frKHjIQw
間違った
 s/max_lifetime/gc_maxlifetime/

442 :x:02/10/17 14:28 ID:93YjN7NA
これって本当か?

↓ ↓ ↓
http://www.dream-express-web.com/space-trust.htm


443 :438:02/10/17 14:51 ID:dtum+/dq
ありがとうございます
gc_maxlifetimeってそういう意味だったんですね
ドキュメントみてもよくわからなくて。
アクセスが結構あるのでこの値を大きくしてみます

444 :nobodyさん:02/10/17 17:30 ID:B8kY3RPw
UNIQID というのはどうやって得るんでしょう?

445 :nobodyさん:02/10/17 17:40 ID:???
$id = uniqid("");
echo $id;

446 :nobodyさん:02/10/17 18:23 ID:B8kY3RPw
$token = md5(uniqid("")); // ランダム要素なし
$better_token = md5(uniqid(rand())); // 推測が困難であり、より優れている。


447 :nobodyさん:02/10/17 18:24 ID:B8kY3RPw
>>445
お返事ありがとうございます。
>>446のようなのを見つけました。

448 :nobodyさん:02/10/17 20:10 ID:???
>>444
ここのレスはすべてマニュアルをちょっと見ればわかるものだな。

449 :nobodyさん:02/10/17 23:11 ID:???
>448
ここのレスだけじゃなくMLもな

450 :nobodyさん:02/10/18 11:07 ID:???
php4.0.6(FreeBSD 4.2)での話なんですが

$mail_status = mb_send_mail($form["recipient"],$form["subject"],$mailbody,$mail_header);
の$mail_headerに一部日本語を含めてます(From:foo@hoge.com(名無しさん) みたいに)

で、mb_send_mail は、仕様として、最後の引数(ヘッダ)だけは文字コード変換してくれないのでしょうか?

上記のままだと、本文やタイトルは文字化けしてませんが、
From:foo@hoge.com(名無しさん) の日本語だけ、化けてます。

なので、
$mail_header = mb_convert_encoding($mail_header, "JIS", "JIS, eucjp-win, sjis-win");
としたら、文字化けは解消されたのですが。。。

こういう仕様なんでしょうか?


451 :nobodyさん:02/10/18 15:20 ID:???
>>450
マニュアル

452 :450:02/10/19 03:30 ID:Rs0UFwL7
>>451
マニュアル見ても、string mb_language ( [string language])の設定によって、変換・エンコードされる
としか書いてないです。。。

やぱ、
boolean mb_send_mail ( string to, string subject, string message [, string additional_headers [, string additional_parameter]])
のstring additional_headersは、そのままスルーなんでしょうか・・・?

453 :nobodyさん:02/10/19 04:44 ID:???
*.php以外のインクルードされるファイルは、htdocsの下には置かないほうが、
セキュリティ上望ましいと、聞いたことあります。
で・・・質問です。

<インクルードされるファイルは「*.inc、*.conf」の拡張子に限る>というルールをつくった上で、

<Files ~ "\.(inc|conf)$">
order allow,deny
deny from all
</Files>

をhttpd.confに加えれば、htdocsの下に「*.inc、*.conf」を置いても、セキュリティ上の問題は、
ないんじゃなかろうかと思ったんですが、実際、どうなんでしょう?

454 :age:02/10/19 10:02 ID:???
php.ini の各項目の詳細を日本語で書いてるサイトないですか?

455 :nobodyさん:02/10/19 10:46 ID:3cLIDoBp
>>453
それで安全だろ。


456 :nobodyさん:02/10/19 17:12 ID:???
>>453
エディタが、拡張しPHPでないとphpのモードにならいので、
インクルードするファイルもすべて*.phpにしてmath

457 :nobodyさん:02/10/19 17:48 ID:???
>>456
WinならTeraPadでも使えば?
MacならMi(ミミカキエディット)。

458 :nobodyさん:02/10/20 07:20 ID:???
たとえば掲示板で、データをテキストファイルに1発言1行で格納してあるとします。

たとえばレスをはじめから10件読む場合には、
1行づつ読み込んで、10行目を読み込んだ時点でファイルを閉じればいいですね。

しかし、「最新のレス10件」を読み込む場合には、
レスの範囲を計算するためには、「全部で何行あるか」を調べなくてはいけませんね。

そうすると、feofまで読み込んで、fseek等をしつつ、行数を調べてから、
改めてファイルを読み込むと言うことになります。

それなら、fileで一気にファイルを配列に読み込んで、その後でarray_spliceなりを
施せばいいのですが、データファイルが200KB,300KBにもなるとそれは
さけたいですね。

アドバイスをお願いします。

459 :458:02/10/20 07:25 ID:???
すんません。下げちゃいました。
それにしても、この板、人口少ないですね。


460 :nobodyさん:02/10/20 08:06 ID:???
>>458
> データファイルが200KB,300KBにもなるとそれは
> さけたいですね。

その程度なら全部を配列に読みこんでも良いのでは?

461 :nobodyさん:02/10/20 09:19 ID:3NSvh+yz
>>458
書き込み時に、何行書き出すか取得して、それを別ファイルに落とす。
んで、その別ファイルには何行あるか、と言う数値が1行ずつしか書き込まれない。
で、その別ファイルを10行分読み込んで、10行分の数値を全て足した数値+タグ分の数値で、
何行まで読み込めばいいか、処理出来ると思うが。
これだと、メッセージ編集した場合の書き換え処理が大変だが、メッセージ編集しないのであれば
これでいいと思われ。


462 :redeclareさん:02/10/20 11:43 ID:TH9l9BrQ
同じクラスを2回以上includeすると
Fatal error: Cannot redeclare class logger in
c:\apache\htdocs\php\logger.php on line 2
と言われてしまいます。
Javaでは同じクラスを何度もimportできるのに・・・。
この場合どのような構成にしたらよいのでしょうか?
コードを以下に示します。

463 :redeclareさん:02/10/20 11:49 ID:TH9l9BrQ
includetest.php
<?php
  include "hello.php";  $hello = new hello;
  include "goodbye.php";  $goodbye = new goodbye;
?>
<html><head></head><body><?=($hello->msg().$goodbye->msg())?></body></html>
hello.php
<?php
  class hello{
    function msg(){
      $msg = "Hello,2chWorld.<br>\n";
      include "logger.php"; $logger = new logger; $logger->log();
      return $msg;
    }
  }
?>
goodbye.php
<?php
  class goodbye{
    function msg(){
      $msg = "Goodbye,2chWorld.<br>\n";
      include "logger.php"; $logger = new logger; $logger->log();
      return $msg;
    }
  }
?>
logger.php
<?php
  class logger{function log(){}}
?>


464 :nobodyさん:02/10/20 12:12 ID:???
>>462
include_once
require_once


465 :redeclareさん:02/10/20 12:21 ID:TH9l9BrQ
>>464
できました!
今までリクエストが送られるたびに
初期処理的にfactoryクラスを呼んで
$GLOBALSに共通利用されるクラスをいれて使用するという
なんともまどろっこしいことをしてましたが
これで解決です。感謝!

466 :nobodyさん:02/10/20 16:50 ID:jWiCSXPt
<? include("$HTTP_SERVER_VARS[DOCUMENT_ROOT]/common/footer.inc");?>

って、もっとスマートな書き方
($HTTP_SERVER_VARS[DOCUMENT_ROOT] なんて使わずに)
あります?

SSI include みたいな。

467 :nobodyさん:02/10/20 17:06 ID:???
php.iniでinclude_path=.:{ドキュメントルートのパス}
でいいんじゃないの?


468 :458:02/10/20 19:58 ID:???
>>466-7

php.iniもさわれないし、.htaccessにもかけない環境の方は、

define("INCDIR",$_SERVER['DOCUMENT_ROOT'] . "/hoge/hage/");
として、

include(INCDIR . "foobar.inc");

でいいんじゃ?


469 :s:02/10/20 20:06 ID:7cHVMr6a
http://yahooo.s2.x-beat.com/

470 : :02/10/20 23:31 ID:???
extract($_SERVER);
$INCLUDE_PATH = ini_get('include_path');
$new_include_path = "{$INCLUDE_PATH}:{$DOCUMENT_ROOT}/hoge";
ini_set('include_path', $new_include_path);

471 :nobodyさん:02/10/21 00:42 ID:???
今、実行しているfunctionの名前ってとれないですか?

472 :nobodyさん:02/10/21 01:33 ID:az6boZmG
perlでいうところのjcode.plのような処理をするには
自分でコードを書くしかないのでしょうか?

473 :nobodyさん:02/10/21 01:50 ID:???
>>472
jcode.phpsがあるよ。
ttp://www.spencernetwork.org/

474 :nobodyさん:02/10/21 01:54 ID:???
mb_convert_encoding

475 :nobodyさん:02/10/21 02:56 ID:???
gzipを標準出力に結び付けている良い例はありますか?
$|=1;
open(STDOUT,"| /bin/gzip -1 -c");
この二つはPHPではどう書けるのでしょう。

476 :名無しさん:02/10/21 02:57 ID:???
>>471
何に使うの?

477 :nobodyさん:02/10/21 03:06 ID:???
>>475

ログ嫁。

478 :475:02/10/21 03:12 ID:???
>>477
検索しても見つかりませんでした。
このスレか、何番の過去ログかヒントだけでも

479 :nobodyさん:02/10/21 03:34 ID:???
>>478

1じゃネーノ?

480 :nobodyさん:02/10/21 06:56 ID:???
PHP勉強しようと思ってるんですけど、
おすすめの書籍とかないでしょうか?

481 :nobodyさん:02/10/21 07:20 ID:???
>>480

>>3

482 :471:02/10/21 11:00 ID:???
>>476
ログに$_SERVER[PHP_SELF]とfunction名と行を出そうと思ってるのですが
function名を文字列として渡すのは面倒&function名が変わったら修正増
ということでなんとかして関数その他で取れないかな、と。

483 :nobodyさん:02/10/21 14:26 ID:???
>>480
そもそもプログラミング経験があるのとないのでは学習方法が違うから答えようがない。

経験あるならマニュアル読めば十分。

484 :nobodyさん:02/10/21 16:27 ID:???
例えばaからzまでの配列を作る時に
・ひたすらがんばる
$array = array("a", "b", "c".......................................................);
・forでまわしてみる
for($i = ord("a").................................................)
というのが簡単に思いつくんですが、もう少し簡単で綺麗な
書き方はないでしょうか

485 :nobodyさん:02/10/21 16:59 ID:RKsFdcBa
>>484
$alpha = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
$a = explode(",", $a);
print_r($alpha);

こんなんで、どや

486 :すいません:02/10/21 17:00 ID:???
ごめんなさい。最初に誤っておきます。
本当にくだらない質問なんですが
PHPで、ユーザーエージェントによって
携帯端末用とPC閲覧用で表示を変えたいのですが
どういう風にすればよいのでしょうか?
なんとなく形はわかるんですが、それを実際に
PHPで動作させるのがわかりません><
たぶん・・・
環境変数からユーザーエージェントを見て
i-mode/j-sky/ezwebならこっちを表示
それ以外ならアッチを表示・・・というプログラムになると思うのですが・・・。

どなたかお優しい方ご教授お願いいたします。

487 :485:02/10/21 17:01 ID:???
う、間違ってた
$alpha = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
$a = explode(",", $alpha);
print_r($a);


488 :nobodyさん:02/10/21 17:01 ID:???
>>483
そもそも配列にしない。

ord("a") + $iで使ってけば良いじゃん。

489 :nobodyさん:02/10/21 17:02 ID:???
>>485
大正解。コーディングしなよ。

環境変数はマニュアルにもWebにも情報がある。
条件分岐なんて基礎の基礎だし。

490 :458:02/10/21 20:12 ID:Z25MjzcQ
>>486
UserAgentのデータベースを作りましょう。
http://www.hyuki.com/yukiwiki/wiki.cgi?UserAgent

サルにもわかる正規表現入門
http://www.mnet.ne.jp/~nakama/regexp1.html

制御構造について
http://homepage1.nifty.com/~takaot/prprpr/controlblock.html

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

491 :hmk:02/10/21 21:09 ID:???
>>484,485
私は、$array = array("a", "b",...); にするべきだと思う。
他人がコードを読むときのことを考えると、意味がはっきりするほうが良いと思います。

492 :458:02/10/21 21:14 ID:Z25MjzcQ
>>491
同意。

たとえだと思うけど、a〜z間での配列を作る前に、それが本当に必要なのか、
検討すべきだと思う。

493 : ◆Kiss.FX29M :02/10/21 21:54 ID:???
>>492
俺は、他人がコードを読むときなんてあんまりかんがえんが、
a-zと綺麗に並んだ配列を用意する時点で遠回りしている感じはするね。
で、1字づつの配列でいいのなら、
$array="abcdefg......";
でええのとちゃう。

494 :nobodyさん:02/10/22 00:47 ID:n3viipFn
PHPを始めて2日目の者です。
簡易伝言板のようなものを作ってるんですが、ログファイルが変なことに。。。
---------
name<>mes<>date
name<>mes<>date

name<>mes<>date
--------
といった感じに、改行数がどんどん多くなってしまいます。。。
表示などには特に問題は起きないんですが、ログファイルが見づらくなるので。。。
よろしければ対策を教えて下さい。

495 :494:02/10/22 00:48 ID:n3viipFn
ソースコード貼り忘れました(鬱
if($_POST{'name'} && $_POST{'mes'}) {
$name = $_POST{'name'};
$mes = $_POST{'mes'};

// 現在日時取得
$date = gmdate("d(D) h:i a", time() + 60 * 60 * 9);

// フォーマット
$data = "$name<>$mes<>$date\n";

$logs = file($logfile);
$fp = fopen($logfile, "w");
fputs($fp, $data);
$log_max--;
for($i=0; $i<$log_max; $i++) {
fputs($fp, $logs[$i]);
}
fclose($fp);
}
http://php.s3.to/tt/tt5.php
ここにあるサンプルのゲスブも同じ事態になりました。。。

496 :nobodyさん:02/10/22 09:50 ID:???
trim

497 :nobodyさん:02/10/22 10:08 ID:TXJWZ2fS
セッション管理について教えてください。
1台のサーバでApacheのVirtualHost機能を使って
aaa.hogehoge.com
bbb.hogehoge.com
を作るとします(ドメインは同じ)
この場合、aaa.hogehoge.comで登録したセッション変数を
bbb.hogehoge.comで参照することはできるのでしょうか?
同一サーバなので/tmpが参照できるから問題ないのかなあとか
思うんですけど、環境が作れなくて実験できません。
やったことのある方、すみませんが教えてください。

498 : ◆Kiss.FX29M :02/10/22 13:13 ID:???
>>497
基本的には可能。
但し、cookie経由でSessionIDを取得することは普通出来ない。
相対リンクでないので、URLに自動付加もしてくれない。
で、PHPSESSID=....を自力で出力する必要があると思う。

499 :497:02/10/22 16:46 ID:TXJWZ2fS
498さん、ありがとうございます。

PHPマニュアルに「session.cookie_domain」ってのがあったんですけど
これを指定すればcookie経由で使えないですかね?
教えてクンでごめんなさい。

500 : ◆Kiss.FX29M :02/10/22 18:19 ID:???
>>499
なるほど、
session.cookie_domain=hogehoge.com
ってことだな。
運営上セキュリティに問題がない場合はそれでいいんじゃない。


501 :nobodyさん:02/10/22 18:25 ID:AaVCn9+u
>>494
\rコードを削除すればいい。


502 :458:02/10/22 19:13 ID:TmLjz4JJ
>>494
デリミタをタブやカンマじゃなくて<>にするのは、
流行ってるの? 壺の影響か?


503 :nobodyさん:02/10/22 19:45 ID:???
>>502
俺もやっているが、俺はKENT氏の真似。つか、ログ互換にしたかったので使った。
<>は、htmlでは <> に変換されるから、内部表現に使えて便利。
カンマにしてcsvにしても良いが、カンマを含む文字列を使う時は""でくくる必要が
あるけど、fgetcsvを使うほうが効率的かな?

504 :458:02/10/22 19:48 ID:X7v1eaNo
>>503
fwritecsv(int fp, array data, str delimiter)
というのがあれば便利なんだけどね。

505 :nobodyさん:02/10/22 20:43 ID:???
>>502
流行ってるとかじゃなくて単に普通の文書中では
まず使われる事がなく、且つフィールドの境界が
目で見て分かりやすいからじゃないのかな。

506 : ◆Kiss.FX29M :02/10/22 21:03 ID:???
>>503 >>505
あなた方の言っている事は正しいと思うけど、
教えて君に<>を見せ付けられると、Uzeeeeee!
と思うのは私だけ?
ま、慣れの問題だとは思うがの。


507 :503:02/10/22 21:12 ID:???
> <>は、htmlでは <> に変換されるから
ぉぃぉぃ、俺は &lt;&gt; って書いたはずだぞ。
2chは & を & に変換しないのか?


508 :nobodyさん:02/10/22 21:24 ID:???
>>507
言いたい事はわかるが努力が足りないようだ。

509 :努力が&rlo;いなり足:02/10/22 21:38 ID:???
ようだ。

510 :503:02/10/22 21:50 ID:???
書き直し。。これでいいかの? >>508
> <>は、htmlでは <> に変換されるから
ぉぃぉぃ、俺は &lt;&gt; って書いたはずだぞ。
2chは & を &amp; に変換しないのか?

511 :nobodyさん:02/10/22 21:55 ID:???
>>509は努力しすぎ

512 :508:02/10/22 22:16 ID:???
>>510
合格。だけど何かが足りない、何かが・・・

513 :nobodyさん:02/10/23 00:49 ID:y/QVQMdn
もれは大量の改行とか以外は、投稿内容を as is でログに保存する
ことにしている。

読み出すときに、<>&"'などを「&xx;」に変換して表示するようにしている。
のでデリミタを<>はしないです。

514 :nobodyさん:02/10/23 02:04 ID:???
デリミタごときで2バイトも使うなと言う意見が…

515 :nobodyさん:02/10/23 03:03 ID:???
>>514
漏れのデリミタ変遷

\t

516 :nobodyさん:02/10/23 03:06 ID:???
漏れのデリミタ変遷

\t オーソドクスに

,  CSV

| psqlマンセー

<> Kentさん好き!!

Unicode NULLモジ

\t に戻る。

517 :nobodyさん:02/10/23 07:08 ID:???
\tだと、ファイル見た時に横に長くなって見づらくねぇ?



518 :nobodyさん:02/10/23 11:08 ID:???
>>517
縦に見ると項目が揃ってて見やすい。

519 :nobodyさん:02/10/23 11:25 ID:???
項目の長さが違ったらずれるじゃん

520 :nobodyさん:02/10/23 13:02 ID:knm2mfqY
ある連想配列に対して、array_pushのように、
末尾に要素を追加するにはどうすればいいのでしょうか?


521 :nobodyさん:02/10/23 13:25 ID:???
>>520
$hoge_array[newkey] = 'newvalue';


522 :486すいません:02/10/23 17:28 ID:???
ありがとうございました。
一応参考程度に自分がやったソースを・・・。

<?php
$test = explode("/",$HTTP_USER_AGENT);

if ($test[0] == 'DoCoMo')//←i-mode閲覧
{
●●●
}
else//←PC閲覧
{
○○○
}
?>
汚してすいません。

523 :nobodyさん:02/10/23 18:43 ID:???
WebARENA使ってるんですが、そこのPHPは普通と違ってCGIで動くので
ファイルの先頭に#!/usr/local/bin/php4が必要だったりして、
Apacheの一部として動作するPHPと違ってたりするので、
PHP関連の書籍とか見ても、それに触れてるものを見かけません。
CGIでPHPを使うことに関して詳しいHPとか書籍とかあったら教えてください。

524 :458:02/10/23 21:10 ID:???
$ua = array("DoCoMo", "PDXGW", "ASTEL", "J-PHONE", "UP.Browser", "Lynx");
foreach ($ua as $val) {
if (preg_match("/$". $val ."\//", $_ENV['HTTP_USER_AGENT'])) {
$pda = true;
break;
}
}
if ($pda === true) {
携帯端末用処理;
} else {
一般向け処理;
}

マニュアルにはPOSIX準拠のeregよりもpregの方が早いと書いてある。

525 :nobodyさん:02/10/24 05:31 ID:5F/44dYx
>>523


526 :nobodyさん:02/10/24 06:13 ID:kpV1tydg
FORMにこのようにcheckboxを書いてPOSTすると、
同じ名前の最後の項目しか表示されません。何が悪いのでしょうか?
<input type="checkbox" name="1" value="あ">
<input type="checkbox" name="1" value="い">
<input type="checkbox" name="1" value="う">
<input type="checkbox" name="1" value="え">

foreach($_REQUEST as $key => $value) {
if($key == "1") { print $value; } //項目1を表示
}

527 :526:02/10/24 06:15 ID:kpV1tydg
>>526
同じ名前の最後の項目しか表示されません

同じ名前のチェックした最後の項目しか表示されません
の間違えです。

whileでループさせても同じ結果です。

528 :nobodyさん:02/10/24 07:54 ID:uytwvD+v
ひとつ質問なんですが、
PHPのincludeを使ってXSLを呼び出すことはできますか?

529 :nobodyさん:02/10/24 08:18 ID:???
>>526
<input type="checkbox" name="1[]" value="あ">
<input type="checkbox" name="1[]" value="い">
<input type="checkbox" name="1[]" value="う">
<input type="checkbox" name="1[]" value="え">

それと、nameに数字はよろしくなさげ
$1とすると別の解釈される場合もあったような・・・


530 : ◆Kiss.FX29M :02/10/24 08:18 ID:???
>>526-527
その動作で正しい。
名前を変えるか、配列に汁。


531 :nobodyさん:02/10/24 08:21 ID:???
>>526
name="name[]"
で配列にしろ

532 :531:02/10/24 08:23 ID:???
ここの板でかぶるなんて珍しい。

533 :nobodyさん:02/10/24 12:58 ID:7cFeMhsm
JavaでStringを文字列連結していてパフォーマンスが落ちてしまい
StringBufferで解決したという経験がありました。
PHPでは . で連結するよりよい(軽い)方法は
用意されていないのでしょうか?
. 連結でもさすがにJavaほど重くならないようですが。


534 :nobodyさん:02/10/24 14:09 ID:rG1bP6Cf
MAC OSXで
IEやNNの右上についているツールや履歴の表示非表示を切り替えるボタンって
無効化できますか?
javascript の Openwindow()でツールバーやURLの表示無しオプションで
コンテンツ表示しているのに、そのボタンでURLなどが表示されてしまいます。
FLASHのゲームコンテンツなど、このボタンのおかげで困るケースがあります。





535 :nobodyさん:02/10/24 14:14 ID:???
>>534
PHPでは出来ないと思います。

536 :nobodyさん:02/10/24 15:35 ID:F6+LZK6Z
http://www.rescue.ne.jp/
レスキューってどうなったんですか?

537 :nobodyさん:02/10/24 15:46 ID:???
>>533
ソースを見たわけじゃないんだが、phpはデフォルトでStringBuffer相当の
動きをしているのではないかとおもふ。

538 :nobodyさん:02/10/24 16:16 ID:IkTbxMct
PHPってファイル書き込みで配列を書き込むことってできないの?
見たらArrayって入れられてたんだけど(fputs(),fwrite())

539 :nobodyさん:02/10/24 16:27 ID:???
>>538
serialize();

540 :526:02/10/24 17:44 ID:kpV1tydg
>>530
あーそうなんですか。なるほど。
perlのときはそれでいけたような気がするけど。うーん。

541 :nobodyさん:02/10/24 17:49 ID:???
すいません、教えてください。
mb_send_mail で添付ファイルを送信するやり方がよくわかりません。
どのように指定すればよいのでしょうか?

542 :nobodyさん:02/10/24 17:59 ID:???
マニュアル嫁。

543 :nobodyさん:02/10/24 20:52 ID:Ya2zNF/W
unset()の使い道って何?
変数を破棄すると、どんな利点があるの?
例えば、メモリが解放されるとか? <- この考えであってる?

544 :nobodyさん:02/10/24 20:58 ID:???
>>536
どうなったんだ?活動やめちゃったのか??

545 :hmk:02/10/24 23:00 ID:???
>>543
たとえば、ループ毎に、一時的に使っている配列を初期化したい場合とか、かな?


546 : ◆Kiss.FX29M :02/10/24 23:25 ID:???
>>543
普通の変数を破棄するときはあまりないけど、配列を弄っているとき
例えば不必要な要素を破棄して並べ替えみたいなときに、たまに使う。


547 :nobodyさん:02/10/25 00:23 ID:???
モジュールで動かすときってCGIで動かすときと違って何か気をつけなければいけないことってあるんですか?
負荷軽減のスレでちょっと話題になりかけていたんですが。


548 :538:02/10/25 00:46 ID:AgSiPFdD
何度もスミマセン
>>539
ありがとうございます。
これで保存はちゃんと出きるようになりました。
けど読み込みが上手くできません。。。
色々実験してみたんですが、
$file = file($filepath);
というように読み込んだ場合、配列として代入されるため
$file = unserialize($file);
としてもうまく動かないようなのですが。。。
とりあえず配列$fileを更にシリアル化して変数に直し、
それをunserialize()で配列に戻して、更にその要素をunserialize()で戻して
ファイルの各要素を取り出すという効率無視の処理をしているんですが、
何かもっと効率のいい方法はないでしょうか。
$file = file("$filepath");
$file = serialize($file);
$file = unserialize($file);
$file = unserialize($file[0]);

549 :538:02/10/25 00:47 ID:AgSiPFdD
>>548
訂正(するまでもないですけど
× $file = file("$filepath");
○ $file = file($filepath);

550 :荒川太郎:02/10/25 12:33 ID:ykDTClkj
 Linux の PHP から 他サーバーのOracleにアクセスしたいのですが、やっぱり、
オラクルクライアントが入ってないと、アクセスできないでしょうか?

 自分の環境で試したところ、PHPをコンパイル後なら、$ORACLE_HOMEの中にある、
Network と sqlplus の二つのディレクトリが残っていれば動きましたが、他の環境に
そのファイルを単純にコピーしても動くか疑問なのと、ライセンス違反のような気がす
るので、できればOracleクライアントなしで接続できればと考えています。


551 :538:02/10/25 12:34 ID:AgSiPFdD
>>548
我ながら意味不明なことしてました。
スマソ

552 :nobodyさん:02/10/25 14:40 ID:iOPLrEsc
ファイルのダウンロードをさせたくて以下のスクリプトを使っています。
http://php.s3.to/data/#dl

PHPを使ってasf(or asx) ファイルを再生させずに
ダウンロードさせたいのですが
asfの場合プラグインが動いてしまい再生が始まってしまいます。
asxの場合プラグインが反応し再生されません。

どうしたら良いのでしょうか?


553 :nobodyさん:02/10/25 14:58 ID:???
>>552
拡張子で判断するのはIEなのでPHPではどうしようもない。

554 :nobodyさん:02/10/25 15:35 ID:???
「IE の場合は、"対象をファイルに保存"で保存して下さい。」
とか書いてみる。

555 :nobodyさん:02/10/25 16:39 ID:???
>>552
出力時のヘッダーをいじる。

糸冬りょーー

556 :nobodyさん:02/10/25 18:31 ID:???
>>555
IEはヘッダーとか無視です。

557 :61:02/10/25 19:35 ID:???
<TITLE>の中身取り出しの問題は解決しますた。ありがとうございました。
ご報告が遅れました。ナマケモノレススマソ…。

558 :nobodyさん:02/10/25 19:42 ID:???
>>552

header("Content-type: video/x-ms-asf");
header("Content-Disposition: attachment; filename=hogehoge.asf");

/* asf の内容 */


559 :nobodyさん:02/10/25 20:06 ID:???
register_globals って、みんな、OFF にしてるもんなの?

560 :nobodyさん:02/10/25 20:31 ID:???
>>559
4.2.0以降導入で、php.ini-dist, php.ini-recomendedをベースに
php.iniを作成した奴でregister_globalsを知らない奴はOFF
4.1.0以降4.2.0未満導入でphp.ini-distベースならOn、
php.ini-recomendedベースならOff
それ以前は、On
最近の厨は、Offだけど、Onが標準だったときのスクリプトを
拾ってきて質問しまくり

過去の資産のしがらみでOnは結構いる
厨と、まじめにセキュリティ対策を兼ねてコーディングを修正
したところはOff
厨が増加しているからOff比率も上がってるはず、たぶん

561 :nobodyさん:02/10/25 20:38 ID:???
>>560
漏れは、Onの時のスクリプトの先頭に
import_request_variables を書き加えているだけで
よしとしていますが、やばいですか?

新規スクリプトでも$_POST['']とか書くの面倒なので
import_request_variables 使ってます。

php3もつかってるでし。

562 :nobodyさん:02/10/25 20:51 ID:???
>>561
別にかまわんが、

<?php
// $debug = 1
if ($debug = 1) {
// coding for debug
// みちゃだめよデータ表示部分
}
// 後のコード

?>
みたいに未代入の変数を0と仮定した様なコーディングしてると
import_request_variablesはregister_globals=Onと一緒で意味無し
ttp://localhost/test.php?debug=1
でアクセスされると見えちゃう。
だから、未代入変数の評価が無いようにコーディングできるなら
register_globals=Onでもいいが、ケアレスミスの防止のためにも
_POST/_GET/_COOKIE['hoge']を使っておくのが安心なわけ

まじれすしてしまった

563 :561:02/10/25 22:19 ID:???
>>562
なるほど、
これからは$_POSTなどを使うようにします。

今までは、たとえばDBをいじるときなど(つまりSELECT以外)のときは
POSTしか受け付けない、といったポリシーで構築していたのですが、
その場合のみimport_request_variablesを使わないようにしていました。

import_request_variables の代わりに

function hoge ($label) {
if (@$_POST[$label]) {
$$label= $_POST[$label];
}
}

という風に問題のないものだけインポートするというのはだめですか?

564 :561:02/10/25 22:32 ID:???
それから、関連質問ですが、

たとえばその値がPOSTされたモノでもGETされたモノでもいいけど、Cookie
では困る。という場合は
import_request_variablesでは困るわけですね。
でも、
if (($_POST['hoge'] == "bar") || ($_GET['hoge'] == "bar")) {
hogehoge;
}
とするのはあまりにも面倒です。

この場合、セキュリティーを考慮しつつ、ミニマルエフォートでかいけつするにはどうしたらいいですか・

よろしくお願いします。

565 : ◆Kiss.FX29M :02/10/25 23:21 ID:???
>>564
variables_order と $_REQUEST でどうよ。


566 :nobodyさん:02/10/25 23:32 ID:8xkByx7Q
$_GET['id']が必須な場合で、値が渡されていない場合、
default値をあげたいのですが、


if(!isset($_GET['id'])
if(empty($_GET['id'])
if ($_GET['id'] == "")

のどちらが望ましいですか?

567 :nobodyさん:02/10/25 23:34 ID:0gq4LIHA
http://taichi.mydns.to/自分では見れるのに、他人から見えないのはなぜですか?

568 : ◆Kiss.FX29M :02/10/26 00:13 ID:???
>>566
ケースバイケース
ってか、必須項目ならそれ以前に大切な事があるだろう。

569 :nobodyさん:02/10/26 00:35 ID:???
無料垢でSOCKET使えるトコてなくなってしまったんでしょうか・・。
誰か知ってたらこっそり教えてください。
言語は日英独のいずれかで。

570 :nobodyさん:02/10/26 00:36 ID:???
>566
必須か必須でないの2択だけなのなら
$var = (empty($_GET['id'])) ? 'デフォルト値' : $_GET['id']);
って記述は良く使うかも。

571 :nobodyさん:02/10/26 16:58 ID:???
>>561

『PHP4徹底攻略実践編』の「セキュリティの確保」の章を一読することを
はげしくオススメ。

わかりやすいよ。

572 :nobodyさん:02/10/26 19:11 ID:cHKiK7hP
神様。お力をお貸し頂けませんでしょうか?
迷惑メール攻撃スレ【未承諾広告※】
http://cocoa.2ch.net/test/read.cgi/phs/1033486267/l50

573 :nobodyさん:02/10/26 19:25 ID:yRABunW1
$a=0;
$b="";
で、$aと$bを判別する方法はありますか?

574 :nobodyさん:02/10/26 19:27 ID:???
>>573
ヌルヌル。

575 :さるる:02/10/26 20:20 ID:???
いままで こっそり質問してますた。
お許しください。
無料のPHPな鯖を、作ってみますた。
また、質問をこっそりとすると思うので
よろしくお願いします。

http://fh.aaacafe.ne.jp/

576 :573:02/10/26 20:37 ID:yRABunW1
>>574
$a=0;
$b="";
if($a==NULL) echo '$a==NULL<br>';
if($b==NULL) echo '$b==NULL';
を実行すると、
$a==NULL
$b==NULL
と表示されるんだけど、なんか間違ってる?

577 :573:02/10/26 20:45 ID:yRABunW1
$a=0;
$b="";
if(is_null($a)) echo 'is_null($a)<br>';
if(is_null($b)) echo 'is_null($b)<br>';
では、何も返さなかったです。

578 :573:02/10/26 20:49 ID:???
解決。var_dumpで方を調べればOKでした。

579 :573:02/10/26 20:50 ID:???
方→型です

580 :nobodyさん:02/10/26 21:08 ID:???
PHP/4.4.0-dev
ってどんなVerなの?
今最新が4.3.0なのに それの上があるの?

581 :nobodyさん:02/10/26 21:25 ID:???
>>580
後ろの -dev が全てを語ってると思うが・・・

582 :nobodyさん:02/10/26 22:50 ID:???
作ってみましたっていって半年後に消える鯖の多いこと多いこと。

583 :nobodyさん:02/10/26 23:20 ID:VJjRzkAf
置換について質問です。
以下のような文字列で
ほうぅ。http://shoichi.mien.nuなんだねhttp://shoichi.mine.nuだろぉ〜?
これのhttp://〜〜の部分を<A HRE=http://〜〜に置換したいと思います。
1つの場合はできるのですが、1つ以上の場合は思いつきません。
どなたかお知恵をお貸しください。

584 :nobodyさん:02/10/26 23:24 ID:???
>>582
かれこれ無料サービス5年目ですがなにか?

585 :nobodyさん:02/10/27 00:17 ID:???
>>583
ちなみに1つの場合ってどうやってんの?

586 : ◆Kiss.FX29M :02/10/27 00:29 ID:???
>>583
ereg_replaceかpreg_replace1を使えば一発やん。

587 :583:02/10/27 00:29 ID:QX87Ao09
>>585
しょぼいですが、こんな感じです
if(ereg("http://",$done)){
$ldone = $done;
// URL
$urladd = mb_ereg_replace("[^0-9a-zA-Z\/:.]","",$ldone);
// LINK
$mdone = "<A HREF=\"".$urladd."\" target=\"_blank\">".$urladd."</A>\n";
$new .= mb_ereg_replace($urladd,$mdone,$done);
}

588 :583:02/10/27 00:38 ID:QX87Ao09
>>586
1行に1つ以上ある場合の処理が…わかりません。
パターンマッチした回数を取れれば、それをfor文で書けばいいのか。
でも、$number = ereg("http://",$text);
$textに2つurlが入っていてもなぜか$numberには1しかはいらない。

589 : ◆Kiss.FX29M :02/10/27 00:42 ID:???
>>588
for文とそんなんじゃない。
一行のereg_replaceで全て差し替え出来ます。
がんばれよ。

590 :583:02/10/27 00:44 ID:QX87Ao09
>>589
了解です。
できるがわかったのでがんばってみます。
ありがとうございました。

591 :nobodyさん:02/10/27 00:58 ID:???
PHPでシンボリックリンクを生成する構文があれば教えて頂けますか?

592 :582:02/10/27 01:12 ID:???
>584
なんのこっちゃ。

593 :hmk:02/10/27 02:06 ID:???
>>591 symlink()

594 :nobodyさん:02/10/27 02:09 ID:???
>591
マニュアルよめ
そのままズバリな関数あるだろ

595 :nobodyさん:02/10/27 02:24 ID:???
>>573
===(=3つね)を使えばいいんでないの?(php3だと使えない気もしたけど)

596 :583:02/10/27 08:58 ID:QX87Ao09
昨日挑戦してたんですが、できませんでした。
どうしても、1つの行に違うURLがあると、一度のmb_ereg_replaceで
変更できませんでした。
何かヒントをもらえないでしょうか?

597 : ◆Kiss.FX29M :02/10/27 11:30 ID:???
>>596
あなたが、>>587で書いたパターンを使うと、
$html = ereg_replace(
'(http://'.
'[0-9a-zA-Z\/:.]*)',
'<a href="\\0" target="_blank">\\0</a>',$text);
かな。
\\0ってのがみそ。マニュアルをもっと読もうな。
後はマッチパターンをぐぐるかRFCを読んで精度をあげてな。
がんばれよ。


598 :nobodyさん:02/10/27 11:38 ID:Xr/mnh9j
性器表現ひとつに無駄スレするな!


599 :583:02/10/27 22:53 ID:QX87Ao09
>>593
ありがとうございます。
マニュアルに載っているものを質問してしまい
申し訳ありませんでした。

600 :nobodyさん:02/10/28 00:37 ID:omMjIkHW
今までPerlでやっていたのですが、今回PHPで掲示板を
作成しようと思っています。
そこでjcode.pl(文字コード変換)を使用していたのですが、
以下のサイトを見たところ
>ttp://dokokano.com/php/php_charset.html
>出力をShift_JISにする場合は、入出力部分の文字コード変換のためのコードを書く必要があります。
ということは、EUCにすればurldecode関数によって
QUERY_STRINGの内容を日本語に変換することが
できるということでしょうか?

601 :nobodyさん:02/10/28 01:13 ID:K9SZmaup
>>600
素直に新しめのバージョン(マルチバイト対応)使ったら?

602 : ◆Kiss.FX29M :02/10/28 01:14 ID:???
>>600
あんさん情報ソースが古すぎ。
php4.0.6以降に対応した書籍を買うか、
ttp://jp.php.net/manual/ja/ref.mbstring.php
を読んで出直し。

603 :nobodyさん:02/10/28 01:15 ID:???
どうしてもURLを変換したいってわけでなければ
リクエストを変数に入れてから変換するのが扱いがラク。

/* EUC-JPからSJISに変換 */
$str = mb_convert_encoding($str, "SJIS", "EUC-JP");
/* SJISからにEUC-JP変換 */
$str = mb_convert_encoding($str, "EUC-JP", "SJIS");


604 :nobodyさん:02/10/28 04:19 ID:RrSU6wqc
掲示板を作って今まで使っていたのですが、
フォームから送る値に「+」を含むと、
それが空白になってしまうことが分かりました。
以下のテスト用ファイルtest.phpでテストしても、
やはり空白になります。

<?php
echo $_GET["var"];
?>
<form method=get action="test.php">
<input type=hidden name="var" value="test+test">
<input type=submit value="go">
</form>

これはどうすればいいのでしょうか?


605 :nobodyさん:02/10/28 04:34 ID:eMSdzrbE
みなさんmail()でメール送信すると
本文は改行から始まりません?

mb_send_mail()だと先頭に改行は付かないんですが、
mail()でも改行から始まらないようにするのはムリですか?

606 :nobodyさん:02/10/28 05:08 ID:???
%2B

607 :nobodyさん:02/10/28 11:41 ID:???
>>604
しっかりtest+testと表示されますた。
>>605
mail()使ってますが、そんな現象は起こっていません。

PHP Version 4.1.2

608 :nobodyさん:02/10/28 12:37 ID:???
色々なファイルロック方法がありますが、
(flock, mkdir, symlinkなど)
どのロック方法が一番良いのでしょうか。
実際にスクリプトを作っている方はどの方法を
使っていますか?

609 :nobodyさん:02/10/28 12:42 ID:KUu9Ng1N
>>605
あー俺昔それで同じ質問した記憶があるわ。
結局何が原因だったのかはちょっと思い出せないけど、結果のレポートも
してあるはずだから、このスレの過去ログをmail()で検索すればどっかにあると思う。

610 :604:02/10/28 14:50 ID:RrSU6wqc
>>607
まじっすか? ソース見ても空白になってます。何でだろう??

>>606
ヒント?
確かにgetで渡されてるURLのパラメータみたら%2Bと表示されてるけど、
$_GETに入っている値が既に空白なのでどこで直せばいいの?って感じです。

設定が間違っているのだろうか…鬱


611 :nobodyさん:02/10/28 17:04 ID:???
>>604
"URLエンコード"あたりで検索シル!

612 :604:02/10/28 18:26 ID:RrSU6wqc
連鯖と構成を同じにしていたはずのテストマシンで
試してみたら正常に動作したので、あれ? と思って調べると、
連鯖→4.2.3
テストマシン→4.2.2
だったので、4.2.2に直すと、正常に動作しました。
本当に4.2.3固有の問題なのかは分かりませんが、
動いたので良しとしまする。


613 :nobodyさん:02/10/28 19:58 ID:OVLPNyBE
うまくいかずに困ってます。是非、ご教授ください。

バックグラウンドでプログラムを走らせる実験として
test.phpというプログラムとtest_back.phpという
プログラムを作りました。
=======test.php==========
<?php
system ("/home/sites/home/test_back.php > /dev/null &");
echo "OK";
?>
=======test_back.php========
<?php
sleep (30);
?>
=====================

という風に、test.phpから、test_back.phpを
呼び出して、30秒間sleepするものです。

しかし、ps で確認しても、うまく呼び出されていないようです。
そのため、test.phpのほうの  > /dev/nullを抜いて試してみた
のですが、すぐにOKが表示されるので、やはり呼び出されていないようです。

色々と調べて、自分では、間違っていないつもりなのですが、
問題点が、分かりましたら是非、教えてください。お願いします。

614 :nobodyさん:02/10/28 20:39 ID:h954DWc8
普通にリンクすれば
それともネタ

615 :605:02/10/28 21:06 ID:???
>>609
過去ログ見ました!
解決しました。

メールのヘッダの最後に改行があると、本文の頭に付いちゃうのね…
俺の場合、追加ヘッダの最後の改行を取ったら解決しました。

ありがとうございました。

616 :613:02/10/28 21:18 ID:OVLPNyBE
>>614
ネタじゃないです。本当にやりたいことは別にあるのですが、
それ以前に、プログラムがうまく動かないので、問題の洗い出しのため
簡単にして試してるだけです。

このシンプルなコードでさえ、動かないので・・・(・ω・)

617 :nobodyさん:02/10/28 21:49 ID:???
すいませーん世界の皆さん。
tmpfile();でできたファイルの名前を取得する術はないのでしょうかー。

618 :nobodyさん:02/10/28 21:56 ID:h954DWc8
手元に本あるか。
HTML入門
PHP入門
PHP文法書
■ グロバールリンク
ある別なサイトへリンクする際に使用します。リンク先のURLは(http://で始まる)で入力します。

<A HREF="★">〜</A> ★=URL

又、<A HREF="★">内にTARGET="_blank"を設定するとリンク先のページが、新しいWIndowを開いて表示されます。〜には、リンクを示す文章を入力します。




619 :nobodyさん:02/10/28 22:03 ID:???
>>617
最近の若いもんはマニュアルが読めないのか?
漢字が分からんのか?
ひらがながわからんのか?

まあ、術と言っちゃなんだが、
マニュアルの 「XXXファイルシステム関数」 を見れば答えが見つかるかも知れないな。


620 :nobodyさん:02/10/28 22:31 ID:???
お前誰だ?誰に答えてるの?

621 :nobodyさん:02/10/28 22:51 ID:h954DWc8
itbost/php/
system 関数や、exec 関数の関数リファレンスを見ると、
次のような記述があります。

「この関数を使用してプログラム実行を開始し、
バックグラウンドで実行したままにしたい場合には、
プログラムの出力をファイルまたは他の出力ストリームに
リダイレクトする必要があることにも注意して下さい。
さもないと、PHPはそのプログラムの実行が終了するまでハングします。 」

この文章の意味は、下記のプログラムのように記述しなさいという意味です。
 



system("/home/your/bgprog $arg1 $arg2 > /dev/null &");




622 :613:02/10/28 22:58 ID:OVLPNyBE
>>621
有難うございます。でも >>613 の通り
リダイレクトしてるつもりなんですが、それでも駄目みたいです。

623 : ◆Kiss.FX29M :02/10/28 23:18 ID:???
>>622
test_back.php のパーミッションは?

624 :nobodyさん:02/10/28 23:36 ID:h954DWc8
test.phpからtest_back.phpをincludeすれば呼べるが
system関数は外部プログラムを呼ぶための・・・
何で、Webホルダーのphp自身を呼ぶの

625 :613:02/10/28 23:56 ID:OVLPNyBE
>>623
644で駄目だったので、755にしました。
>>624
本当は、ブラウザからだとタイムアウトになるかな?程度の数の
メールマガジンを発行するようなシステムにしたいのです。
それがうまくいかず、プログラムを削っていったら、こんな形に・・・。

これって、ブラウザからでもコマンドラインからでも駄目なのですが
なぜでしょうか?

626 : ◆Kiss.FX29M :02/10/29 00:05 ID:???
>>625
cgi版かcli版のphpはインスト済み?
それと1行目に
#!/usr/bin/php
とかが必要。
もしくは、
system("/usr/bin/php /usr/sites/home/test_back.php .....
で実行するかだな。


627 :nobodyさん:02/10/29 00:09 ID:TKErwWFl
プロセス残るが実行できた
<?php
system ("C:\WINDOWS\NOTEPAD");
echo "OK";
?>

628 :613:02/10/29 00:52 ID:TzxoQcf+
>>626
どうも有難うございます。コマンドラインからの実行の際は
#!/usr/bin/php の部分が抜けていました。
その点を修正して、試しに、パーミッション777にしてroot権限で
実行してみましたがそれでも、Permission denied になってしまいます。。

これは、プログラムではなく、何かシステム的に原因があるのでしょうか?

629 : ◆Kiss.FX29M :02/10/29 07:45 ID:???
>>628
なぜ、Permission denied かわからんが、試しに
which php
と打つとどぉよ。


630 :nobodyさん:02/10/29 10:51 ID:???
>>617
ない。

631 :613:02/10/29 11:13 ID:TzxoQcf+
>>629 さん
which php で帰ってきたパスは
/usr/local/bin/php です。
1行目のこのパスを書いてますが。それでも駄目みたいです。

632 :gn355my0:02/10/29 11:45 ID:???
>>631
/usr/local/bin/php /usr/sites/home/test_back.php

ならどうよ?

633 :nobodyさん:02/10/29 12:13 ID:???
>>613
$ /home/sites/home/test_back.php
の実行結果は?
まず単体で動いてる?

634 :613:02/10/29 12:23 ID:TzxoQcf+
>>632
試してみましたが、駄目みたいです。

>>633
コマンドラインからだと動いてません。
ブラウザからだと、ちゃんと動作します。

試しに、シェルスクリプトで試してみたところ動作しました。
=test2.php=========
<?php
system("/bin/sh ./sleep.sh &");
echo "OK send.php<br>";
?>
=sleep.sh=========
sleep 5
==============

phpをコマンドライン上から実行できないのが原因でしょうか?





635 :633:02/10/29 12:36 ID:???
>>634
>phpをコマンドライン上から実行できないのが原因でしょうか?

そうでそう。


636 :nobodyさん:02/10/29 12:58 ID:wf/l5by6
利用するサーバでmagic_quotes_gpcがオンかオフかを調べるにはどうしたらいいですか?
この設定によってaddslashes()をするかどうかを分岐したいので。
magic_quotes_gpcがオンの場合でaddslashed()しちゃうと2回エスケープしちゃいますよね。

637 :nobodyさん:02/10/29 13:26 ID:???
>>636
var_dump(ini_get("magic_qoutes_gpc"));

string(0) is global value
string(1) is local value
 どのバージョンから使えるかはしらんです。

638 :nobodyさん:02/10/29 13:31 ID:???
>>636
phpinfo()は一通り目を通しておけ。

639 :636:02/10/29 13:48 ID:wf/l5by6
>>637
サンクス子
できました。ありがとう。

640 :nobodyさん:02/10/29 13:49 ID:???
>>613
やりたいことと違うかもしれないけど
http://pc.2ch.net/php/kako/1003/10032/1003283567.html
このスレで教えてもらってうまくできたよ。


641 :nobodyさん:02/10/29 16:28 ID:tR/mb4fj
PHPスクリプトが実行できません。
Apacheの設定ファイルにも AddType application/x-httpd-php .phpって追加したけれど
表示されません。どうしたら表記できるでしょうか?
誰か教えてください。


642 :PHPの日本語:02/10/29 16:37 ID:vXsUrIJb
とあるサーバで今PHPのプログラムを動かすテストをしているのですが、
なぜかPHPのスクリプトが記述してあるファイルはEUC/LFでないと文字
化けしてしまいます。しかし、ブラウザのエンコードを見るとシフトJIS
なんです。
同階層にあるHTMLファイルはSJIS/CR+LFで全然問題ありません。

別の僕が構築したテスト用サーバではPHPのファイルがSJISでも全然問題
ないのですが?

どういう状況なんでしょう?

643 : ◆Kiss.FX29M :02/10/29 16:47 ID:???
>>635
php -v
が実行できる?

644 :613:02/10/29 17:17 ID:TzxoQcf+
>>643
php -v
bash: php: is a directory
とでました。レンタル鯖なのですが、php のインストールの仕方に
問題があるんでしょうか?


645 : ◆Kiss.FX29M :02/10/29 17:34 ID:???
>>644
はへ?
/usr/local/bin/php -v
では?
/usr/local/bin/php のパーミッションも。

レンタル鯖の設定で実行させないようにしているのかもね。

646 :613:02/10/30 02:35 ID:NfkYl6Lz
>>645
これもやっぱり
bash: /usr/local/bin/php: is a directory でした。

ディレクトリの中身はこんな感じでした。何が問題でしょう?

drwxr-xr-x 2 root root 1024 Jun 7 13:57 .
drwxr-xr-x 3 root root 1024 Jun 7 13:57 ..
-rwxr-xr-x 1 root root 10018 Mar 5 2002 pear
-rwxr-xr-x 1 root root 4325 Mar 5 2002 pearize
-rwxr-xr-x 1 root root 500 Mar 5 2002 php-config
-rwxr-xr-x 1 root root 593 Mar 5 2002 phpextdist
-rwxr-xr-x 1 root root 700 Mar 5 2002 phpize
-rwxr-xr-x 1 root root 5088 Mar 5 2002 phptar

647 :nobodyさん:02/10/30 03:01 ID:???
/usr/local/bin/phpはディレクトリなのでは?
Apacheモジュール版のPHPじゃないの?


648 :613:02/10/30 03:28 ID:NfkYl6Lz
>/usr/local/bin/phpはディレクトリなのでは?
>Apacheモジュール版のPHPじゃないの?

/usr/local/bin/php のディレクトリの中の中身が 
>>646 です。>>647 さんのいうように、Apacheモジュール版のPHP
じゃないってことが原因?

649 : ◆Kiss.FX29M :02/10/30 07:34 ID:???
>>648
のようですな。(ぉィぉィ)
つうことで、wgetを使いませう。
system ("wget URL/test_back.php > /dev/null &");

650 :nobodyさん:02/10/30 13:43 ID:dL3lvkbY
php初心者で何も分からないので聞きたいのですが
<php? hogehoge ?>だったら動くのですが<? hogehoge ?>が動きません。
現在の環境は、VineLinux2.6+Apache/1.3.26+PHP/4.2.3です。
原因を教えていただけると幸いです。
どなたか宜しくお願い致します。

651 :nobodyさん:02/10/30 13:52 ID:???
>>650
<php?じゃ動かんでしょ。<?php
php.iniのshort_open_tag = Onになってる?

652 :nobodyさん:02/10/30 13:52 ID:???
>>650
XHTML

653 :nobodyさん:02/10/30 14:03 ID:LfLiEMda
>>651さん
short_open_tag = Onで解決しました。
お騒がせしました。

654 :nobodyさん:02/10/30 15:30 ID:???
配列から指定した値のものを削除したいのですが、
どうすればよいでしょうか?
私の見た限り、ズバリな関数はマニュアルには載っていませんでした。

655 :nobodyさん:02/10/30 15:37 ID:???
>>654
よくわからんがunsetじゃないん?

656 :nobodyさん:02/10/30 15:50 ID:???
>>654
マニュアルには載っていませんって、すげぇな。
全て読んだってことだろう。

657 :YAHOOO情報:02/10/30 15:53 ID:9DFYsx8y
http://yahooo.s2.x-beat.com/

658 :nobodyさん:02/10/30 18:56 ID:4q8hzZpW
>>654
array_spliceとかarray_sliceとか

659 :nobodyさん:02/10/31 01:40 ID:yMK1gcv2
phpで最強のアクセス解析誰かおしえてください。

最低、生ログ(訪問回数含)が見れればいいんだけどね。

660 :nobodyさん:02/10/31 04:15 ID:YDMbLtmR
>>659
$_SERVERをマニュアルで探してみる

661 :ノンノン:02/10/31 11:16 ID:Gi8DIir1
会員登録が必要なサイトの作成にあたってます。
で、ログイン時にIDなどをセッションレジスタに取り込んでいるのですが、
個人情報の更新する時にSSLを使用するとセッションの内容がなくなって
しまってるんです。「セッション切れ」とでも言うのかな?

SSLへセッションを引き継ぐにはどうすれば良いのでしょうか?
おわかりになられる方がいらっしゃいましたらお教え願います。
ヨロシクお願いします。

662 : ◆Kiss.FX29M :02/10/31 20:49 ID:???
>>661
ちょっと前に、バーチャルホスト間のセッション共有があったが、基本的に
同じことだと思うよ。cookie経由で引き継がれるかどうかわからんので、
SSLなページを指定するURLにPHPSESSIDを追加したらどうでしょう。
ただ、SIDってcookieが有効だ(とわかる)と空になるので、

<form action="https://www.hogehoge.com/sslpage.php?PHPSESSID=<?=session_id()?>" method=....
とかかな。もっと簡易な方法がありそうだが...

ただし、未検証です。

663 :ひよこさん:02/10/31 21:39 ID:XxGc2Q67
PHPってなんですか?

664 :nobodyさん:02/10/31 21:43 ID:???
出版社です。

665 :nobodyさん:02/10/31 22:51 ID:???
>>663
ここで調べれ
http://www.php.co.jp/
http://www.php.com/

666 :nobodyさん:02/11/01 07:12 ID:???
>>661,662
扱い上は別のホストに移ってるのと等価だから、セッション変数を受渡しできる方がまずい。

ホストを跨ぐようなデータのやりとりをしようとする事がそもそもの間違いだと思うんだが…

667 : ◆Kiss.FX29M :02/11/01 08:18 ID:???
>>666
PHPのセッション処理はホストを跨いでやり取りできないようになっている。
勿論、セッションIDも他のホストに晒すものではないが、

信頼できる同一ホスト上で、別ホストとみなされてセッションが引き継がれ
ないのを何とかしたい。

ってのは、間違いではないと思うが、どぉよ。

668 :nobodyさん:02/11/01 14:29 ID:rT5mgBbe
今週の範囲(例:10/27-11/2)を求めるコードを作ろうと
思っているのですが、どのような形で作ればよいか教えてください。


669 :nobodyさん:02/11/01 15:22 ID:sjfqb6HL
>>668
$now = getdate();
$today = mktime(0,0,0,$now['mon'],$now['mday'],$now['year']);
$start = $today - 86400 * $now['wday'];
$end = $start + 86400 * 7 - 1;
echo date("Y/m/d",$start) ." - ". date("Y/m/d",$end);

670 :nobodyさん:02/11/01 15:53 ID:t42zlzPT
ヤフーの掲示板をperl・wgetで取得して表示したいんですけど、うまくいきません。
例えばこんなURL↓
http://messages.yahoo.co.jp/bbs?action=topics&board=2000247&sid=2000247&type=r
なんでだろ・・? やっぱ規制かけてるのかな・・?
どなたか、外部から上記ページの取得ができた人いませんか?

671 :nobodyさん:02/11/01 16:09 ID:???
>>669
スマートなコードありがとん。
自分で作ったら50行ぐらいになったYO!!

672 :nobodyさん:02/11/01 16:40 ID:???
>>671
その50行のコードを書き込んでください。
後学のために

673 :nobodyさん:02/11/01 17:14 ID:???
糞コードになりますた(;´Д`)
インデントがタブなので書きこむと無くなるため見にくいと思いますが、、
後学のためにもならないと思います(;´Д`)

//today
$today = getdate();

//月の最大日
$maxday_array = array(0,31,28,31,30,31,30,31,31,30,31,30,31);

//うるう年チェック
if( !( $today['year'] % 4 || $today['year'] % 100 ) )
{
$maxday_array[2] = 29;
}

674 :続き:02/11/01 17:15 ID:???
//開始月日を求める
$d_sabun = $today['mday'] - $today['wday'];
if( $d_sabun < 1 )
{

$m_sabun = $today['mon'] - 1;
if( $m_sabun < 1 )
{
$st_m = 12;
}else{
$st_m = $m_sabun;
}
$st_d = $maxday_array[$st_m] + $d_sabun;
}else{
$st_m = $today['mon'];
$st_d = $d_sabun;
}

675 :さらに続き:02/11/01 17:15 ID:???
//終了月日を求める
$d_sabun = $today['mday'] + ( 6 - $today['wday'] );
if( $d_sabun > $maxday_array[$today['mon']] )
{

$m_sabun = $today['mon'] + 1;
if( $m_sabun > 12 )
{
$ed_m = 1;
}else{
$ed_m = $m_sabun;
}
$ed_d = $d_sabun - $maxday_array[$ed_m];

}else{
$ed_m = $today['mon'];
$ed_d = $d_sabun;
}
$ed_str = sprintf( "%02d/%02d〜%02d/%02d", $st_m, $st_d, $ed_m, $ed_d );

676 :あぼーん:あぼーん
あぼーん

677 :nobodyさん:02/11/01 20:16 ID:???
>>676
>309
           ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ( ´Д` ) < 通報しますた!
          /,  /   \_______
         (ぃ9  |
          /    /、
         /   ∧_二つ
         /   /
        /    \       ((( )))  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /  /~\ \     ( ´Д` ) < 通報しますた!
       /  /   >  )     (ぃ9  )  \_______
     / ノ    / /    /    ∧つ
    / /   .  / ./     /    \     (゚д゚) ツーホーシマスタ!
    / ./     ( ヽ、     / /⌒> )     ゚(  )−
   (  _)      \__つ  (_)  \_つ     / >      (・∀・)ツーホー!


678 :497:02/11/02 00:05 ID:F92LVFOL
PHPとPostgreSQLを別サーバにインストールしたいのです。
その場合、
./configure の --with-pgsql はどうやって指定すればいいんでしょうか?
本やマニュアルは同一サーバに入れることを前提に書かれているので
調べたんですがわかりませんでした。

やろうとしているのはWeb(Apache+PHP)をグローバルで、
DBを裏側(プライベート)に置こうとしてるだけなので、
特別変わったことをしているわけではないと思うのですが。。


679 :nobodyさん:02/11/02 00:06 ID:F92LVFOL
あ、497じゃないです。別のスレッドのが残ってた。

680 :nobodyさん:02/11/02 00:35 ID:xj1s/Rjk
PHP、OKのレンタルサーバーで今まで使えてた
スクリプトが急にエラーになったんだけど、さっぱり
原因がわからない。

問い合わせてみたが返事はまだ。。。
なんなんだろ?

681 :nobodyさん:02/11/02 00:39 ID:???
>>680
バージョンあげたんじゃないの?
phpinfo();とかでみてみれ

682 :nobodyさん:02/11/02 11:03 ID:???
>>678
PHPをコンパイルする時だけ、PostgreSQLをインストールしておくと良い。
PostgreSQLのlibとincludeが必要だから。

>>680
register_globalsとかshot_open_tagあたりが原因っぽい気がする。

683 :nobodyさん:02/11/02 11:17 ID:VDOgYkQj
>>610
ちょと遅レス気味ながら。

漏れもそれで悩んでる。つか、環境によって違うのね。ローカルのテストサーバ(PHP4.2.2)では
ちゃんと+が残ってるのに、ホスティングサーバ(PHP4.2.3)上では+が消えて空白になる。

rawurlencodeを使っているので、渡している文字列は"hoge%20%2B%20hage"みたいに
なっていることを確認済み。受け取った直後に$_GETを見ると"hoge hage"になってるという
具合。

PHPの設定なのか?とも思うけど、それらしいものが見当たらないように思う。ちなみに、
magic_quote_gpcはどちらの環境でもOn。

PHPのバージョン違いによるものか、それともApacheの設定ということもありうるかもと
思ってるんだけど・・・誰かわかる人いない?

684 :nobodyさん:02/11/02 11:19 ID:VDOgYkQj
>>683(自己レス)

うー、よく見たら>>612に答えが。

しかしPHPのバージョンを戻す以外に解決法はないのだろうか?

685 :678:02/11/02 11:42 ID:F92LVFOL
>>682

ありがとうございます。やってみました。
RPMで、potgresql-develを入れたら/usr/include/以下に
「libpq-fe.h」が入りますね。
あとは --with-pgsql オプションでエラーが消えました。

686 :nobodyさん:02/11/02 17:19 ID:3DCZqrMj
すいません、マジヒントだけでもお願いします。
mb_send_mailで添付ファイルつけて送らせたいと質問したものですが。
マニュアルを読んで最後の引数になにかヘッダを渡せばいいのかと思い
ましたが何を渡せばいいのかわかりません。
なにかヒントでも結構ですので教えてくださいませ、困り果ててしまいました。

687 :nobodyさん:02/11/02 18:07 ID:???
>>686
無理
PEAR使え

688 :nobodyさん:02/11/02 19:00 ID:???
>>684
ttp://www.php.gr.jp/
最新ニュース ・ 2002年9月6日
を眼を皿にして見れ


689 :nobodyさん:02/11/02 20:52 ID:???
PHPのRCバイナリパッケージって何処にあるよ?

690 :684:02/11/03 12:50 ID:8T4O8uvO
>>688
これ頭の4バイトが欠けるって話だよね?phpMyAdminが動かないのもこれが原因で、
formタグにenctype="multipart/form-data"をつければとりあえず回避できるという。

これと、漏れの言ってる「%2Bが空白に化ける」という話とはまったく別だと思うのだが・・・
でもとりあえず4.2.3国際版を入れてみるよ。直らなかったら笑いに来るね。

691 :nobodyさん:02/11/04 05:17 ID:???
ヒアドキュメント内で定数は使えますか?

692 : ◆Kiss.FX29M :02/11/04 05:24 ID:???
>>691
確か使えない。
{ } で括ってもダメだったよな。

693 :691:02/11/04 05:49 ID:???
>>692
むむー、そうですか。ありがとう。

694 :nobodyさん:02/11/06 17:35 ID:???
age

695 :nobodyさん:02/11/07 20:05 ID:ETizMt8f
簡単なプログラムですが、質問があります。

$fp = @fopen( "honya.txt", "r" );
while( $record[] = fgets( $fp ) );
fclose( $fp );

for( $i = 0; $i < count( $record ) - 1; $i++ )
 $item[] = split( " ", $record[$i], 11 );
echo "honya".$item[0][0]."hoge";
//echo "honya$item[0][0]hoge";

このプログラムだと出力が($item[0][0]=="xxxxx"だとして)
honyaxxxxxhoge
と表示されますが、コメントアウトしている方だと
honyaArray[0]hoge
と表示されます。更にNoticeもでます。(Noticeは設定ででないようにしましたが、、、)
なぜでしょうか?
宜しくお願いします。

696 :nobodyさん:02/11/07 21:03 ID:???
{}

697 :nobodyさん:02/11/07 21:11 ID:???
>>696
簡潔すぎだろ(w
>>695
{$item[0][0]}でやってみ。

698 :nobodyさん:02/11/07 21:34 ID:???
こうやる派? {$xxx}
それともこうやる派? ${xxx}

俺は ${xxx} こうやる派

699 :(  _。。)_ バタ。 ◆eJlUd9keO2 :02/11/07 22:24 ID:???
【質問】
クライアント用の socket を 非ブロックモードに設定するには
現状、 fsockopen系の関数を用いて socket_set_blocking関数を使うしかないのでしょうか。

いや、それでも構わないんですけど
socket_createで作ったリソースから非ブロックに切り替える方法はあるのでしょうか?
fgets / fputs を使うのが気持ち悪くて…。
でも socket_set_timeout は fsockopen系ですし… 素直に fsockopen系を使った方がいいのでしょうか。

700 :(  _。。)_ バタ。 ◆eJlUd9keO2 :02/11/08 06:24 ID:???
… fsockopen + socket_set_blocking(FALSE) してみても
何もメッセージが1つも着てない状態だと feof で 止まる……寝よう。


701 :695:02/11/08 09:36 ID:???
ありがとうございます。解決しますた。
${$a[1]}と${$a}[1]の差と同じ事ですね。

Cからきたので、混乱しておりました。

702 :(ふ):02/11/08 14:39 ID:???
>>699さん

なんだかお困りのようなのですが、僕の環境(php 4.2.2)では
<?php
$fp = fsockopen("www.php.net", 80);
socket_set_blocking($fp, false);
if (feof($fp)) {
print "eof\n";
} else {
print "non-eof\n";
}
fclose($fp);
?>
で普通にnonblockingな動作をしてくれています。なお、お気持ちは分かりますが
socketモジュールをお使いになるのはまだお勧めできません(ころころ仕様が変わるので)。

ちなみに4.3.0からstream_set_blocking()が正解になります。

てわけで環境を教えていただけますか?そしたらもうちょっとお役にたてるかもです。

703 :nobodyさん:02/11/08 20:23 ID:Vk0CjsjZ
>>670
遅レスだが外部から読めますよ
自分でスクリプト書いたわけでなく、exciteの翻訳通しただけだけど。
ttp://www.excite.co.jp/world/url/body/?wb_url=http%3A%2F%2Fmessages.yahoo.co.jp%2Fbbs%3Faction%3Dtopics%26board%3D2000247%26sid%3D2000247%26type%3Dr&submit=%83E%83F%83u%83y%81%5B%83W%96%7C%96%F3&wb_lp=JAEN&wb_dis=3&wb_co=excitejapan
ってな風に飛べましたので。

URLの文字列のエンコード/デコードあたりになにかあるんじゃないかと。

704 :nobodyさん:02/11/08 20:38 ID:Vk0CjsjZ
もう一例
ttp://x68000.startshop.co.jp/~68user/Cgi-room/source.cgi?mode=body&output=text&url=http%3A%2F%2Fmessages.yahoo.co.jp%2Fbbs%3Faction%3Dtopics%26board%3D2000247%26sid%3D2000247%26type%3Dr

705 :nobodyさん:02/11/09 18:55 ID:QiNeNmkL
JpGraphを使ってグラフを描きたいんですけど
グラフを出力するファイルの内容を変更しても
画像が変更されません
例えば付属のサンプルでグラフの数値をいじってみても
はじめに表示した値から変わらないのです
別のファイル名にかえてアクセスすると更新された画像になるんですけど・・・
どなたが原因をご存じないでしょうか?

706 :nobodyさん:02/11/09 20:04 ID:E2/H+5gT
<?php
echo "氏んでね?";
?>

707 :nobodyさん:02/11/09 20:41 ID:???
すみません、氏んできます
IEのキャッシュとか関係なくて
jpgraph.phpのUSE_CACHEをfalseにすればいいんですね
すみませんでした

708 :nobodyさん:02/11/09 22:50 ID:???
つまり765≠767?

709 :nobodyさん:02/11/10 05:02 ID:bTPzGvyq
今有料のレンタルサーバーでPHPスクリプトを書いているのですが、
submitした後に、特定の文字に「\」が付いてしまいます。
例えば
「ソース」という語を送信した時に
「ソー\ス」という具合になってしまいます。
どうしてでしょうか。同じ経験をされた方は意見を聞かせてくれないでしょうか。
特に「\」だけをstr_replaceで取り除くことはできなさそうなので困っています。
もしレンタルなのでサーバーに問題があるのならどうしようもないのですが...

710 :709:02/11/10 05:06 ID:bTPzGvyq
[補足]
「ソース」という語を送信した時に
「ソー\ス」という具合になってしまいます。

というのは、「ソース」という語を
テキストに書き込む時や、
テキストから読み込んで、printする時のことを指しています。

711 :nobodyさん:02/11/10 05:18 ID:???
EUC で書けば?

712 : ◆Kiss.FX29M :02/11/10 05:52 ID:???
>>710
相変わらずこのネタもいつまでもあるな。
magic_quotes_gpc をOffにするか、
stripslashesをつかう。


713 :nobodyさん:02/11/10 05:59 ID:???
>>710
if(get_magic_quotes_gpc ()){ $xxx = stripslashes($xxx); }
こんな感じにしておけば汎用的。

714 :709:02/11/10 07:31 ID:bTPzGvyq
どうもご返答ありがとうございます。
少し説明不足だったかもしれませんが、
$mes = htmlspecialchars($mes);
if(get_magic_quotes_gpc())
{
 $mes = stripslashes($mes);
};
一応このように書いていたんですが、「\」が表示されてしまいました。
710さんの言うように一度EUCで書いてみることにします。

715 :709:02/11/10 07:47 ID:bTPzGvyq
報告です。
まず文字コードをEUCで書いたところ、問題なく値を渡すことが出来ました。
それで、もう一度コードを見直していたのですが、どうやら思い違いで...。
たしかにサーバー側ではget_magic_quotes_gpc()がオンになっていたようなので
これによってstripslashしていたのですが、書き込むという作業だけにしか適応していなかったです...
ファイルから読み出すときも必要なんですね...(泣)
とりあえず解決できました。どうもありがとうございます。
そもそもどうしてmagic_quotes_gpcがオンになってることがデフォルトなのかわからないのですが...

716 :nobodyさん:02/11/10 08:17 ID:5LLCZez+
すいませんちょっと質問なんですけど、php作成の話ではないんですが、
海外のphpの掲示板に書き込もうとしているんですけど、画像をアップロードする機能が
ついてるんでやってみると
「アップロードされたファイルは有効なGIFかJPGファイルではありません。
それがそうであることを確認して、再び試みてください」
といわれてアップできないんですよね。gifで保存してもjpgで保存しても。
ファイル名はもちろん半角英語だし、cドライブの直下においてアップしたりもしてるのに、、、
これってどういう問題がかんがえられますか?
ファイル保存の時の問題?(jpgはjpgでもアメリカの形式は違うとか)
よくわからないんでよろしくお願いします。

717 :nobodyさん:02/11/10 13:37 ID:???
(笑)

718 :nobodyさん:02/11/10 15:53 ID:???


719 :nobodyさん:02/11/10 18:41 ID:bTPzGvyq


720 :716:02/11/10 20:48 ID:???
すいません、ちょっと他のスレで聞いてきます、ありがとうございました

721 :nobodyさん:02/11/10 20:57 ID:tAywYbvj
PHP、今日始めて書いています。
XHTMLで下記のように宣言したいのですが、
<?の部分をPHPとして解釈してしまうためか、エラーになってしまいます。
宣言を維持したままエラー回避する方法はありますでしょうか?

<?xml version="1.0" encoding="euc-jp" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?xml-stylesheet href="x.css" type="text/css"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

722 :nobodyさん:02/11/10 21:14 ID:???
>>721
宣言を文字列で出力するってのはどうよ?

723 :nobodyさん:02/11/10 21:18 ID:toIJMePB
>>721
寝たでしょうか?
php.iniの設定を見直してみてください。
それか.htaccess内にて(以下略)

724 ::02/11/10 22:00 ID:mHx5v26N
<?php echo "<"."?xml"; ?> version="1.0" .....
でいいのでは。
変に設定で逃げると後ではまったりするし。
---
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/

725 : ◆Kiss.FX29M :02/11/10 23:37 ID:???
いやぁ、俺も今までショートタグで済ましていたのだが、この機能はOffにして
<?php ... にしないとなぁ、と思う今日のこの頃。
でも、<?=...も使えなくなるのは辛い。

726 :721:02/11/11 01:22 ID:???
>>723
うっ、何か基本的なことを見落としていたのでしょうか…。
php.iniはいじれません、レン鯖なんで。
.htaccessで設定を変えられるんですか。勉強してみます。

>>721>>724
文字列出力してみます。

みなさんありがとうございました。

727 :717:02/11/11 05:55 ID:???
こんなとこに誤爆してたか。

728 :723:02/11/11 20:37 ID:Zxaf1apZ
誤爆ってステキです(ハートマーク)

729 :aiai:02/11/12 13:11 ID:4eKOLLvz
心底愛せる人がいるのであればもう何もいらない!
人生の答えが見つかったも同然である
http://www.tyousa.com

730 :nobodyさん:02/11/12 22:19 ID:???
postしてきたデータを
$fp=fopen("php://stdin", "r");
while(!feof($fp)){$buffer.=fread($fp, 4096);}
fclose($fp);
とかで直接吸い出そうとしたがphp://stdinが空っぽに見えるのだが。
もしかして$_POSTからじゃないと受け取れないの?鬱だ。
フォーム以外からもpostはあるだろうにのお。

731 :nobodyさん:02/11/13 00:25 ID:???
>>729
postはHTTPの範囲だな(apache側)。
stdin使うのはコマンドラインだな。
なにか見えてこないか?

732 :nobodyさん:02/11/13 08:48 ID:???
>>730
STDINはすでにPHPが読み込んでるので空っぽです
$HTTP_RAW_POST_DATA
は使えませんか。
使えないときは、php.iniがいじれたら
always_populate_raw_post_data = Onに

733 :問質:02/11/13 21:09 ID:ldABWSGY
if(&$foo) の「&」とか
if(!$foo) の「!」とかですでに躓いているのですが、
逝ってきたほうがよろしいですか?

734 :nobodyさん:02/11/13 22:27 ID:???
>>733
逝かなくてよし。その調子で精進すべし。

735 :nobodyさん:02/11/13 23:04 ID:???
>>733
! は簡単だが & は難しいな。

! 否定(論理の反転)
& 参照

まあがんばれや

736 :質問です:02/11/13 23:12 ID:???
move_uploaded_fileでTMPからファイルから
パーミッションが777のディレクトリの移動したいのですが
移動されたファイルのパーミッションが600になってしまいます
PHPでどうやって変更したらよいでしょうか?
systemコマンド以外で方法ありませんか?

737 :nobodyさん:02/11/14 00:17 ID:l0/zicwo
perlで
foreach(@array){
($a,$b,$c)=split(/<>/);
}
といった
コードは
phpでは
foreach(@array as $value){
list($a,$b,$c)=preg_split("/<>/",$value);
}
でいいのでしょうか?
なんか違うような気がするんですが・・。


738 :nobodyさん:02/11/14 02:07 ID:???
>>737
google("PHP", "split");

739 :nobodyさん:02/11/14 08:26 ID:wyuVakNT
>>737
正規表現使わないんだったらexplodeの方が早い

740 :nobodyさん:02/11/14 09:18 ID:vniA+Llk
追加書き
fopen("file","a")
ってデータ飛ばないって本当なんですかね?


741 :nobodyさん:02/11/14 09:44 ID:/H/milPr
phpで複数のユーザが共通にみれる変数てありませんか?
ASPのapplicationみたいなやつ。なんかサポートされていない
みたいなんだけどいい知恵ない?
やっぱファイルに書き込むしかない(w

742 :nobodyさん:02/11/14 16:57 ID:???
ちょい質問です。

レンタサーバのsafe mode on な関係で、CGI版PHPをUPしようとしていますが、
CGI版は、内蔵型PHPに比べ遅いとかありますか?

何か他に注意する問題とかありますか?


743 :nobodyさん:02/11/14 17:33 ID:l0/zicwo
>>742
かなり遅いと思われ、
それするならperlと変わらん。
abでモジュール版PHPと普通のperlを比べたが
5倍ぐらい違う。
また、PHP アクセラレーターいれると
通常時とくらべて3倍速度が違う。

またCGI版PHPはCGI版perlより遅い、という話もあり


744 :nobodyさん:02/11/14 17:37 ID:l0/zicwo
追記、レンタル鯖だったら
モジュール入れるべきじゃないかなー
アクセスが多いとCGI版では
プロセスがあがりすぎで
やってられないっていうのもある


745 :nobodyさん:02/11/14 17:42 ID:l0/zicwo
で、ちょっと聞きたいんだけど
perlで
@array = @array[sort {$array1[$b] <=> $array2[$a] or $array1[$b] <=> $array2[$a]}
0 .. $#array1];
っていうのは
PHPでどうかいたらいいんですか??

746 :nobodyさん:02/11/14 18:02 ID:???
>>744
お返事thanx

バーチャル鯖だから、モジュール版をインストは無理と思われ。
というか、モジュール版が入っているのですが、safe mode onなのです。

しゃーないので、CGI版を入れるのです。
遅くてもしょうがないです (T.T)



747 :nobodyさん:02/11/14 18:17 ID:???
safe_modeの何が拙いんだ?

748 :nobodyさん:02/11/14 19:09 ID:???
>>747
動かしたいスクリプトがsafe mode onでは、動かないのです。

外部プログラム(多分C)を動かすため?
サブディレクトリも作ります。



749 :nobodyさん:02/11/14 20:29 ID:???
>>732
ありがと。
調べた所.htaccessにphp_flag always_populate_raw_post_data Onとか書くと
使えるようになる最寄。やっぱ低レベルの処理も出来たほうが便利ね。

750 :nobodyさん:02/11/14 21:08 ID:???
CGI版 PHPを動かそうとして失敗しました。

ローカルのマシーンRedhat Linux 7.2 で make した php を レンタルサーバ
(多分turbo)へFTPして動かそうと思ったら、

./php.cgi: /lib/libresolv.so.2: version `GLIBC_2.2' not found (required by ./php.cgi) ./php.cgi: /lib/libc.so.6: version `GLIBC_2.2' not found (required by ./php.cgi)

と怒られた。ローカルが glib 2.2 でサーバがglib 2.1.3 みたいです。

この場合、自分のところのglib を 2.1.3 に下げて make しなおしするしかないんですかねぇ?

それとも configure のオプションで対応できますか?( configure 見てみたけどなさそうな感じではあった。)
または、どこかにphpの各種バイナリがあるところはないでしょうか?


751 :nobadyさん:02/11/14 21:27 ID:itLwLG8U
漏れはWin用バイナリなら配布しているサイトはみっつくらい知ってるけど
Linux用はRPMでの配布サイトでいっかしょしか知らない。ゴメソ。

752 :nobodyさん:02/11/14 21:31 ID:Kk7RsGj1
POSTされた値はフォームのnameと同名の変数(hogeだったら$hoge)に代入
される とどこの解説にもかかれているのですがうちの環境 Win2K&PHP4.2.2
だと$HTTP_POST_VARS[hoge]と配列からしか取り出せません
php.iniあたりを弄ればなんとかなるのでしょうか?

753 :nobadyさん:02/11/14 21:50 ID:itLwLG8U
ためらわずregister_globalsをOnで解決ね、問題ない、たぶん、やっちゃえ〜っ!

754 :752:02/11/14 22:29 ID:Kk7RsGj1
>>753
ためらわずにやったらできますた、ありがとうございます
副作用がでるかもしれないのでしばらくは試用しますが・・・


755 :nobodyさん:02/11/14 22:31 ID:cSFACNwV
for($i=0;$i<=12;$i++){
$foo[$i] = $hoge.$i;
}

うぅん、こんな感じで作ったんだけど、
何故か$fooの配列になにも格納されない…
なんででしょう?


756 :nobodyさん:02/11/14 22:47 ID:???
なにをしたいんだ・・・?
例をあげるとレスがつくかも知れん

757 :nobodyさん:02/11/14 22:52 ID:l0/zicwo
>>755
$hoge.$iが妙に評価されてないか?

758 :nobodyさん:02/11/14 22:54 ID:l0/zicwo
745だが、俺の質問難しかったかな・・。

759 :755:02/11/15 00:01 ID:ZlqtGDCC
>>756>>757さんありがとう。
ようするに、$foo[0]に$hogeに代入されている文字列と、
0を結合したものを代入したいのです。

それをfor文を使って$foo[1]〜[12]も同じように
繰り返したいわけです…


760 :nobodyさん:02/11/15 00:18 ID:???
123456 というやつから
12;34;56 a123456 123456z と言う文字列を作ろうと思うのですが
ログに 12;34;56<>a123456<>123456zと書き込んで読み出すのと
123456だけを書き込んで 3つに加工するのとでは
どちらがよい処理方法なのでしょうか?

761 :nobodyさん:02/11/15 00:20 ID:???
>>759
出し惜しみせず、もっと前後も見せた方が良いんじゃない?

762 :nobodyさん:02/11/15 00:23 ID:???
久々の書き込み。

誰かmailparse関数( http://jp.php.net/manual/ja/ref.mailparse.php )使ってる人いる?
いまいちよくわからないから参考になるページでもあると助かるんだけど。

763 :755:02/11/15 07:02 ID:fSn6fMud
$today = getdate();
$year = sprintf("%4d",$today[year]);
$mon = $today[mon];

$nextyear = sprintf("%4d",$today[year]);
$nextyear++;

for($i=1;$i<=12;$i++){
if($mon>$i){
$link[$i] = $nextyear.sprintf("%02d",$i);
}else{
$link[$i] = $year.sprintf("%02d",$i);
}
}

といった感じで、リンクを作成するスクリプトなんです。
現在の日付を取得して、過ぎた月は「?次の西暦年+月」
現在の月と年内のそれ以降の月は「?今年の西暦年+月」
という風にしたいと思っているのですが…

764 :755:02/11/15 07:26 ID:fSn6fMud
あ、最後の「}」はミスです。ソマソ。


765 :755:02/11/15 07:27 ID:fSn6fMud
あ、ミスじゃなかった。サマソ。

766 :nobodyさん:02/11/15 10:27 ID:???
>>755

$foo = array();
for($i=0;$i<=12;$i++){
$foo[$i] = $hoge;
$foo[$i] .= $i;
}

/* $foo[$i] = $hoge . $i;(半角スペースを間に入れる)でもOKかな? */

767 :nobodyさん:02/11/15 11:47 ID:???
PHP4.3.0使ってますが>>755のでちゃんと表示されますよ。

768 :nobodyさん:02/11/15 17:14 ID:mDnEDDpK
PerlでのサブルーチンはPHPではどう代用するのでしょうか?

769 :nobodyさん:02/11/15 17:18 ID:???
print と echo は、どう使い分けるのでしょうか。

770 :nobodyさん:02/11/15 17:18 ID:C04Zmy+e
Flash Player6用の圧縮swfが作りたいんですけど、PHPで出力できませんかね。
具体的に書くと、量の多いテキストデータだけを圧縮した別のムービークリップに別けて
おいて、後からその部分を随時差し替えたいのだけど。
テキストデータは掲示板みたいなもんなんで、書き込みがあるたびに内容を随時変更し
たんです。
mingじゃまだ圧縮形式はサポートしてないみたいだし・・・。

771 :nobodyさん:02/11/15 17:30 ID:???
>>770
gzwrite()じゃだめですかい

772 :770:02/11/15 18:16 ID:C04Zmy+e
>>771
ご返事ありがとう。

>gzwrite -- バイナリ対応の gz ファイル書き込み

うーん、無理じゃないかと思うんだけどできるの?
圧縮形式の仕様から調べにゃならんかな。
気が重いな、これは。

773 :age:02/11/15 19:51 ID:???
数値が

3  5  11

のようにタブ区切りで入っているテキストファイルを読み出し
最初の数字を$one
次の数字を$two
その次の数字を$three
というように数字を変数に入れる方法を教えて頂きたいのですが、、。

774 :nobodyさん:02/11/15 20:10 ID:???
>773
公式マニュアルのsplitみれ。

775 :PHP初心者:02/11/15 20:24 ID:W2O2vLxr
PHPを覚えたくて、参考書買ったんですが
サンプルばかりでチンプンカンプンですヽ(`Д´)ノ ウワァァァン

一から覚えるには、どんな書籍がオススメでしょうか?
雑誌名教えていただけると嬉しいです。

ちなみに当方のスキルは「ショボイホムペ(HTML)」を作れるくらいのレベルです。


776 :nobodyさん:02/11/15 21:04 ID:???
PHPは敷居が低い→厨房大量発生・・・・・

777 :755:02/11/15 21:19 ID:???
>>766
無事動作しました、ありがとうございました。
>>767
うちの鯖は未だに4.0なんですよ…それが原因なのかどうか。

778 :nobodyさん:02/11/15 22:28 ID:???
>>762
PECLに移動され、PHPの公式リリース には含まれなくなりました


779 :770:02/11/15 22:41 ID:C04Zmy+e
>>771

ごめん、gzwriteが有効のようですね。
せっかくヒントもらったのに早とちりでした。
何とかその後、圧縮形式はzlibで次のフォーマットというところまで調べました。


・圧縮形式のswfのformat
3 bytes CWS
1 byte version number(06?)
4 byte The size of uncompressed SWF file.(Not just uncompressed block).
remain zlib stream

・通常のswfのformat
3 bytes FWS
1 byte version number(05?)
4 byte The size of SWF file.
remain data


圧縮形式のswfは9バイト目以降が通常のswfをzlibで圧縮して入れてあるというこ
とでいいのでしょうか。
あとは目的のデータがどんな形で収められてるかですね・・・。
しかし、この手のことを手っ取り早く調べるにはどうすりゃいいんだろ。
今は何でもgoogleで必死に調べてますけど・・・。

780 :nobodyさん:02/11/15 23:45 ID:tDKzSlcQ
>>775
PHP徹底攻略(通称マンモス本)あたりはどうでしょう?
わからなくてもとりあえず何か作ってみるのが近道かと。

で、質問。
複数のURLからデータを取得して成形、という処理をしたいのですが
foreach($url as $value){
  $data = file($value);
  〜いろいろ〜
}
みたいな処理方法だとひとつのURLからデータを取得し終わったあとで
ないと次のURLのデータが取得できず、非常に時間がかかってしまいます。
(データの取得元がかなり重いサイトなので)
同時に複数のURLからデータを取得するというような動作をさせる方法、
もしくは少しでもデータの取得が高速化できる方法はないでしょうか。

781 :もん:02/11/16 01:35 ID:PWRTZyjL
メールが届かなかったかった時に、
戻ってきますが、
FROM:を設定しているのに、
戻ってきません。
なぜでしょう。

782 :nobodyさん:02/11/16 06:46 ID:???
それは PHP の問題じゃない。

783 :nobodyさん:02/11/16 06:55 ID:???
おそらくenvelop fromに戻ってるんだろう。
サーバの管理者に聞いてみれ。
メールログも見れるし、エラーメールも届いているはずだ(w

784 :775:02/11/16 07:08 ID:1/sWq2Gm
>>780さん
サンクスです(≧∇≦)ノ
今日は本屋へ行く日なので探してみますね。


785 :age:02/11/16 08:56 ID:???
log.txtの中身を配列に入れてprintで片方だけを表示させたいんですが

$log = 'log.txt';
$data = fopen($log,"r+");
list($view,$click) = split( ",", $data, 2);
print $view;
fclose ($data);

で実行した時 Resource id #1
とポツンと表示されてしまいます。
どうやったら良いのでしょうか?

786 :nobodyさん:02/11/16 09:18 ID:6U1hYCr1
>785
二行目おかしくないか?fopenの返り値は
int
配列に一括代入するのは
fopen($log,"r");
$data=file($log);
したらできる
ちなみに
perlでは
@data=<log>;
って感じかな。



787 :785:02/11/16 10:02 ID:???
>>786
今度はarreyとしか表示されませんでした、、

788 :770:02/11/16 10:57 ID:i0v/7za0
やった、できた!
ヒント下さった 771様、ありがとうございました。

789 :786:02/11/16 12:12 ID:6U1hYCr1
>>787
では
$data = array();
と配列を定義してからやるとどうなるだろうか?

790 :785:02/11/16 12:19 ID:???
>>789
ためしに

$data = fopen ($log,"r");
$data = file($log);
print $data;
exit;

print文でテキストファイルの中身を表示しようとしてるんですが
この時点ですでに「Array」としか表示されないんです。

$datas = array(A,B);
$view = $datas[0];
$click = $datas[1];
print ="最初の値は".$datas[0]."です";
とarrayをテキストファイルから読み込まずに、そのまま打つと
うまく表示されたんですが、テキストファイルから読むと「Array」しか
表示されないんです。

791 :nobodyさん:02/11/16 12:38 ID:???
お前はマニュアルを読んだのかと
小一時間問い(ry

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

792 :785:02/11/16 12:52 ID:???
>>791
読んだけど分からないんです・・・・・・・(;;

793 :nobodyさん:02/11/16 13:16 ID:???
$data = file('./log.txt');

for($i = 0; $i < count($data); $i++) {
$tmp = split(',', $data[$i]);
echo "$tmp[0]\r\n";
}

794 :nobodyさん:02/11/16 15:46 ID:???
http://www.php.net/manual/ja/langref.php
ここを読めば分かるはず。

795 :nobodyさん:02/11/16 15:54 ID:???
yahoo.com ってPHP採用したんだね。しらんかった・・・
http://www.zdnet.co.jp/news/0211/01/nebt_06.html

796 :PHPさん:02/11/16 19:10 ID:???
PHPからMySQLにつながりません。

環境は、Win2k Apache1.3.26 PHP4 です。

$con = mysql_connect("localhost","root","******");

if ($con) {

mysql_select_db("dbdb",$MyLink);
$MyQuery = "SELECT ACCESS_CNT FROM dbdb";
$MyResult = mysql_query($MyQuery,$MyLink);

$MyRow = mysql_fetch_array($MyResult,MYSQL_ASSOC);
echo $MyRow[0];

mysql_free_result($MyResult);

$con = mysql_close($con);

}

テーブルには1レコード存在し、2522 が入っています。
本来なら 2522 が表示されるはずなのですが。。。

何か設定が足りないのでしょうか。
ちなみに、ApacheとPHPは正常に動作しています。

797 :nobodyさん:02/11/16 19:17 ID:???
> PHPからMySQLにつながりません。

どこからそう判断したのか?
エラーメッセージがあるなら書けよ。

798 : ◆z.IEXmM1Rw :02/11/16 19:42 ID:???
>>797 エラーです。

Warning: Access denied for user: 'root@localhost' (Using password: NO) in i:\internet\web\vip\mai-k\a.php on line 8

Warning: MySQL Connection Failed: Access denied for user: 'root@localhost' (Using password: NO) in i:\internet\web\vip\mai-k\a.php on line 8

Warning: Supplied argument is not a valid MySQL-Link resource in i:\internet\web\vip\mai-k\a.php on line 10

Warning: Supplied argument is not a valid MySQL-Link resource in i:\internet\web\vip\mai-k\a.php on line 12

799 : ◆z.IEXmM1Rw :02/11/16 19:44 ID:???
>> 798 間違えました。

Warning: Unable to jump to row 0 on MySQL result index 2 in i:\internet\web\vip\mai-k\a.php on line 14
First Name:

Warning: Unable to jump to row 0 on MySQL result index 2 in i:\internet\web\vip\mai-k\a.php on line 16
Last Name:

Warning: Unable to jump to row 0 on MySQL result index 2 in i:\internet\web\vip\mai-k\a.php on line 18
Address:

Warning: Unable to jump to row 0 on MySQL result index 2 in i:\internet\web\vip\mai-k\a.php on line 20
Position:

800 :nobodyさん:02/11/16 19:45 ID:???
www.mai-k.net なら笑える。

801 :PHPさん:02/11/16 19:46 ID:???
>>799 の、 FirstName とかは気にしないでください。
ECHO してるだけです。

802 :nobodyさん:02/11/16 20:07 ID:???
で、
Warning: Access denied for user: 'root@localhost' (Using password: NO)
の意味は調べたかい?

803 :PHPさん:02/11/16 20:12 ID:???
>>802

それはパスワードを指定するのを忘れてた^^;
その他のエラーはなんだろぅ。

804 :名無しさん@お腹いっぱい。:02/11/17 00:22 ID:???
>>796
そんなコードじゃmysqlに
どのデータベースの"dbdb"を使うのか
教えてあげられない

805 :nobodyさん:02/11/17 05:10 ID:???
入門書でも買うとか。。

806 :nobodyさん:02/11/17 12:42 ID:YRaU2xF9
何度もすまない
つーか
@RANKING = $RANKING[
sort {$tmp1[$b] <=> $tmp1[$a] or $tmp2[$b] <=> $tmp2[$a]
}
0 .. $#tmp1];
ってなperlの部分をphpになおしたいんだが
だれか教えてくれないでしょうか?
ここで3日も困ってるっす。

807 :nobodyさん:02/11/17 15:19 ID:???
>>806
やめとけ、
今更携帯のランキングサイトなんぞ作っても流行らないからさ…マルチさんよぉ

808 :nobodyさん:02/11/17 15:21 ID:ZXiBJBMV
配列RANKING = $RANKING[
ソートする {
始めの条件(同じだったら偽になるので、次の条件へ)
次の条件 }
}
0からtmp1の最後まで];

要するに、優先順位がある2つの条件でソートして、配列にいれてるだけ。

809 :nobodyさん:02/11/17 15:31 ID:???
フォームからPOST形式で渡されたデータのタグ処理について良い方法はないでしょうか?
htmlspecialchars()を使えばいいと思いましたが、スクリプト中に数十個以上あるため
全部をいちいちやってられないのですが・・・
各変数に勝手に代入されちゃう前に文字列をまとめて処理する方法はないですかね?

810 :nobodyさん:02/11/17 15:34 ID:???
入力時にエスケープするというアイディア自体
(・A・)イクナイ!! と思う。

811 :nobodyさん:02/11/17 16:04 ID:YRaU2xF9
>>807
正直に申しますと
FFアドベンチャーがあまりに負荷が高いと書いてあるので
PHPにしようとがんばっているところです。

>>808
それをPHPで書く良い方法ないですか?

812 :809:02/11/17 16:13 ID:???
>>811
おいおい、俺も作ってるんだけど・・・

$_POST = array_map("htmlspecialchars", $_POST);
これで良いのかな。さすが俺。

813 :808:02/11/17 16:27 ID:YRaU2xF9
>>812
どのあたりよ?
こっちは250行目のあたりで
悩んでる。
それ以外は ほぼ完成してる
ここの部分ができれば、後はバクだしして おわりっす。

814 :809:02/11/17 16:38 ID:???
FFAv0.45か・・・
俺はma-tiさんの0.47使ってるからな。
クッキー関連とかロック関連とかまだまだだが。
まあ、まだPHP歴3日だし。
配布するつもりはあるのかな?それなら俺作るのやめようかな・・・

815 :808:02/11/17 17:30 ID:YRaU2xF9
>>814
公開できるような綺麗なものじゃない
スパゲティーだから
0.45と0.47って どう違うよ?

816 :808:02/11/17 17:42 ID:YRaU2xF9
>>814
EBS お願い

817 :809:02/11/17 17:48 ID:???
>>815
>ver.0.47: 2002年4月28日配布開始
>・ソースを最適化して75.2KB→63.1KBに成功!
>・若干早くなったと思います。本当に若干。。。気持ち程度。。。

つまりはあまり変わらないと思う。
俺は公開&配布予定だから、使うんだったら最新版のほうが良いし。
まあ、予定は未定だが。

EBSはプレイしたことないからよく知らん。

818 :808:02/11/17 17:52 ID:YRaU2xF9
>>817
ソース公開しますわー
まだ 作りかけのでよいかい?
というか 手伝って

それか ほかに有名どころのゲームをPHPお願いしたい
yomiサーチでもOK
できれば ebs

819 :809:02/11/17 18:01 ID:???
>>818
元々俺がPHP化しようとしてる理由は
『自分の改造しまくってるFFAが負荷やばいためPHP化しよう』と思ったが、
既にすごく汚くてとてもやる気がおきなかったため、
とりあえず軽量の原作版から作って
公開してそれから自分の改造したいように変えていこうって考えなわけ。
だからFFA以外は今のところする気はないな。設置してないし。

820 :809:02/11/17 18:03 ID:???
因みに最終的にはSQL使おうとまで考えてる。

821 :nobodyさん:02/11/17 18:06 ID:FpRG38IL
こっちで汁!

++++FF ADVENTURE++++
http://pc.2ch.net/test/read.cgi/php/991910275/l50

822 :808:02/11/17 18:06 ID:YRaU2xF9
PHP化する理由は
無料HPを運営していて あまりにFFAとEBSの設置が多いので
負荷がすごくなり、他のユーザー様にご迷惑がかかるので
必要に迫られて作っています。

言わば逆の立場ですね。お互い。

で どうするよ?

823 :809:02/11/17 18:13 ID:???
ffa_php@hotmail.com
作りかけでもいいから送ってくれれば俺が作ってる奴も
送り返すよ。俺もランキングの部分はまだ出来てないけど(汗

824 :nobodyさん:02/11/17 18:34 ID:n7xO86Z7
>>822
完成の暁には漏れに適価で売ってはくれまいか?

825 :PHP初心者:02/11/17 19:18 ID:yD7j6+V5
なんだかプロジェクトが始まったようですね。。
皆さん、がんがって下さい(≧∇≦)ノ

826 :808(さるる):02/11/17 19:47 ID:YRaU2xF9
>>824
完成したら
http://cgi.aaacafe.ne.jp
ここで、簡単に設置できるようにする予定なので
がんばります

827 :809:02/11/17 19:54 ID:???
俺は普通にソース公開で配布する予定です。
FFAは改造して何ぼですからね。
FFA推奨委員会も寂れているようなので
どんどん推奨していきたいです。

828 :nobodyさん:02/11/17 21:11 ID:???
>778
それは知ってるよ……。
とりあえずPECLのmailparse拾ってきて入れてはある。

で、公式サイトmailparse関数下部のスクリプトを走らせたら
signal 11吐いてapacheの小プロセスが死ぬ。
コマンドラインから実行するとphpがcore吐いて死亡。

諦めるかな……。

829 :nobodyさん:02/11/18 01:56 ID:???
>>822
FFAは負荷もだが、転送量も問題なのだが。
PHPにしようがダメなモンはダメ。

830 :nobodyさん:02/11/18 17:18 ID:???
PHPは内部では、
関数名、クラス名、メソッド名の大文字小文字の区別をしないようなのですが、
これを区別させるようにする事は出来ないのでしょうか?


831 :nobodyさん:02/11/19 03:59 ID:GvT3tsAV
内部というか言語仕様だと思うけど、
区別できれば何かメリットあるの?
自分で読みやすいようにdoSomething(hanyan)みたいにするけど。

832 :780:02/11/19 11:50 ID:9dfDoISG
どなたか>>780の質問に答えていただけないでしょうか・・・
催促して申し訳ありませんが、よろしくお願いします。

833 :nobodyさん:02/11/19 12:28 ID:9zdIs68p
PHP-4.2.2−DSOモジュール版とCGIバイナリ(コマンドライン版)−をコンパイルして使用しています。
ブラウザ出力するスクリプト中、shell_exec関数を使ってバイナリ版用のスクリプトを呼び出しました。

<html>
<?php

$envs=array("QUERY_STRING","REQUEST_METHOD");
for($i=0;$i<count($envs);$i++) {
putenv($envs[$i]."=".getenv($envs[$i]));
}

$str=shell_exec("sample");

?>
</html>

#!/usr/local/bin/php -q
<?php
echo "こんにちは";
?>

ここで上記$strには「こんにちは」が格納されると思ったのですが、
「X-Powerd-By: PHP/4.2.2 Content-type:text html No input file specified.」
という文字列が格納されてしまっています。なぜなのでしょうか?
($envsからの行を加えたとたんに、このエラーが出力されるようになりました)

Webで調べたのですが、解決策として示されていた--enable-discard-pathでも解決しません

834 :nobodyさん:02/11/19 16:03 ID:???
GDで半角カタカナを出す方法はありますか?

ImageString ($im, 11, 10, 10, "オマエモナー", $color);

とすると、イメージ内の文字が化けて出てきます。
どなたか宜しくお願いします。

835 :sage:02/11/19 23:29 ID:aA08ojgX
初心者な質問ですいません。
ファイルが存在するかを調べるfile_existsというのがありますが、
ディレクトリが存在するかを調べるものはないのでしょうか?
よろしくお願いします。

836 :nobodyさん:02/11/20 08:24 ID:???
>>835
オープン出来るか出来ないかで判断できるだろ


837 :nobodyさん:02/11/20 08:28 ID:???
>>835
file_existだとディレクトリも含まれる。
一般のファイル is_file()
ディレクトリ is_dir()
シンボリックリンク is_link() #Winでは使えない。

838 :nobodyさん:02/11/20 10:37 ID:???
落穂拾い...

>>832
スレッド使うのが常套手段ですが、PHPではアタリマエのようにスレッドが
使えないので基本的に厳しいです。

ので、シェルを使ってバックグラウンドで走らせるしかないでしょう。「色々な処理」
が何なのかわからないので、もっとメタな解決方法はあるかもしれませんが。

というわけで
$pid = getmypid();
foreach ($urls as $url) {
`curl $url > /tmp/$url.$pid &`;
}
とかして後はリダイレクトされたファイルを処理する、くらいでしょうか。どうやって
個々のcurlが終了したかを判断するのもまた面倒ですが、とりあえずファイルサイズ
見るとかでもいいんじゃないでしょうか?とりあえず、ですが。

最後にファイルを消すのもお忘れなく。register_shutdown_function()とか。

>>830
どーしても、どーしても、とおっしゃるのでしたらパッチ書いて差し上げますが、あんまり
うれしいこと無いと思いますよ。Zend Engine2ではCase Sensitiveにしよう、という話も
あったのですが、後方互換性的に問題ありありということで却下になりました。

メリットとしては
(1)関数やオブジェクトテーブルのlookupが早くなる(今はtolowerして処理してます)。
(2)普通の言語っぽくなる(笑)
くらいしか思いつきませんが。

839 :nobodyさん:02/11/20 11:59 ID:GqTHpGaW
PHPファイルをアップロードした時に、
パーミッションは644との認識なのですが、
Hファイルや、INCファイルも644としてよろしいのでしょうか?
また、PHP、H、INCファイルをアップロードするには
転送モードはバイナリ?テキスト?どちらなのでしょうか?


840 :gn355my0:02/11/20 13:21 ID:???
>>839
ご自身で試すわけにはいかないのですか?

841 :nobodyさん:02/11/20 13:26 ID:???
>>839
テキストエディタで開いてテキストファイルだったらテキストモード。
パーミッションは、拡張子だけじゃ分からん。
そのスクリプトでどう扱われているのかによる。
READMEを嫁

842 :sage:02/11/20 14:18 ID:???
>>837
助かりました。ありがとうございます!
>>836
パーミッションによってはオープンできない物もあると思うのだが、
違うかな。。

843 :nobodyさん:02/11/20 18:27 ID:eNXAFipW
PHP4.2.2でFastTemplateを使おうと思ったのですが、
サーバに入っていません。

http://www.thewebmasters.net/php/FastTemplate.phtml
ここから取ってきたモノをincludeしてやろうと思うのですが
誰か他に試した方いませんか?

class.FastTemplate.php3
3が付くのが気になります...

844 :843:02/11/20 19:09 ID:???
自己レス
http://ns1.php.gr.jp/pipermail/php-users/2001-August/001489.html
この辺を参考にしてみます。

845 :nobodyさん:02/11/20 22:56 ID:???
>>831,838

何を意図していたかと言うと、
メソッドのオーバーロードが実装されるまでのつなぎとして、
function func(&$val)
{
  $classname = get_class($val);

  switch ($classname) {
  case strtolower("MyClass1"):
.
.
  case strtolower("MyClass2"):
.
.
  }
}

とする時に、strtolower()がちょっと邪魔だっただけなので…


846 :nobodyさん:02/11/20 23:33 ID:1jUBHxNp
こんばんは〜( ・∀・)
今日ウチも自宅サーバーに挑戦しようと思い、
とりあえずWindows-Apache環境でPHP入れて、php動くようになったんですが、
一つ気になることがあるんです。
Apache側の設定で、
LoadModule php4_module c:/php/sapi/php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php .phps
PHP側の設定で、
;include_path = ".;c:/php/includes;c:/php/pear"
doc_root = "C:/Program Files/Apache Group/Apahce/htdocs"
extension_dir = "c:/php/extensions"
の3行を設定した末、phpinfo()による動作確認でページの表示は認められたんですが、
変数の受け渡しなどが全くできないのです。
たとえば
http://localhost/index.php?query=hoge
のqueryが受け渡されないんです。

Apache環境に変えた理由は和製のAn Httpdを使用していたところ、
同じような現象がありまして困ってます(´・ω・`)

Apacheの.incが認識されていないかとアホなことを考え、
使わない環境も考えたんですが変数の受け渡しだけがどうもうまくいきません。

php.ini側の設定に問題があるのでしょうか。
それとも他に何か設定が必要なのでしょうか?
説明不足かもしれませんが・・・ご教授お願いします( ・∀・)ノ

ApacheのバージョンはApache 1.327です。

847 :nobodyさん:02/11/20 23:41 ID:???
$_GET

848 :846:02/11/20 23:58 ID:9aYPHyGQ
どうも~
言い忘れてましたが、現在もレンタル中なんですが、
そちらの方では変数の受け渡しは出来ましたヽ( ´¬`)ノ

849 :846:02/11/21 00:06 ID:XBf4tF8P
どうも~
言い忘れてましたが、現在もレンタル中なんですが、
そちらの方では変数の受け渡しは出来ましたヽ( ´¬`)ノ

850 :nobodyさん:02/11/21 00:30 ID:???
>>847
気付いてもらえないようで...

851 :846:02/11/21 00:35 ID:XBf4tF8P
>>847
ありがとうございます。
extract($_GET);
ですね〜

852 :780:02/11/21 01:07 ID:???
>>838
ありがとうございます。
正直、何を言われているのかサパーリなのですが(;´Д`)
頑張って勉強します。
やっぱスレッド使えないのは痛いですねえ。
ちなみに「いろいろな処理」というのは簡単に言えば
「配列に入れてソート」です。
データが複数のページにまたがっているので全部まとめてしまおうと。

853 :nobodyさん:02/11/21 01:15 ID:???
PHPを使えば掲示板が作れると聞いたのですが
どうすればいいのでしょうか?
プログラミングとか初心者なんです。
昨日、店に行ってVisualStudioっての買ったのですが
これからどうして良いのか分かりません。
お店の人はこれがあればプログラミング出来るとの事なんですが・・・

854 :nobodyさん:02/11/21 01:27 ID:???
VisualStudio買っちゃったんだ……。すげぇな。
掲示板を作りたいんなら、メモ帳でいいとおもうよ、うん。

855 :nobodyさん:02/11/21 01:33 ID:???
Visual P# ですか?

856 :nobodyさん:02/11/21 03:04 ID:???
ネタネタ。

857 :nobodyさん:02/11/21 10:45 ID:???
これを機にC言語で作ってみるとか。

858 :nobodyさん:02/11/21 10:53 ID:???
JavaScript にすべきです。

859 :nobodyさん:02/11/21 12:03 ID:???
>>858
何をJavaScript にすべき?

860 :nobodyさん:02/11/21 14:05 ID:???
>昨日、店に行ってVisualStudioっての買ったのですが
>これからどうして良いのか分かりません。

これがホントならこの人は間違いなく・・・モゴモゴ

普通はPHP関連のHPを収集してPHPの環境等を調べて
PHPをインストールして、HPにあるサンプルで2時間ぐらい遊ぶ
そして、初心者に評判のいいPHP本を調べて購入して勉強

構文を覚え、これをするには何が必要かが分かるようになって
初めて市販の開発ソフトを購入→管理・運用が楽→ウマー

861 :nobodyさん:02/11/21 21:49 ID:YPJ0mbwG
セッションを飛ばすところまでは何とかいったのですが、
一度飛ばして、そこから次のページへ飛ばそうとしても上手く飛びません。
また、FORMによるデータの受け渡しもまったくできない状態だと判明しました。
原因の心当たりがある方はいらっしゃりませぬか?

862 :nobodyさん:02/11/21 22:29 ID:???
>>4

863 :nobodyさん:02/11/21 22:35 ID:???
しかし、マニュアルに堂々と書いてあることを聞く奴らって
どういう神経してるんだろうね?

864 :nobodyさん:02/11/21 23:19 ID:1XZhJXxJ
こういう神経です

865 :861:02/11/21 23:21 ID:YPJ0mbwG
一度はセッションも飛ぶのですが、それ以降が上手くいきません・・・
勿論>>4も設定しました

866 :nobodyさん:02/11/21 23:36 ID:???
>>865
ソースは?PHPのバージョンは?
もし自分が質問するほうじゃなくて
答えるほうの立場だったらその説明で十分だと思う?

867 :nobodyさん:02/11/21 23:49 ID:???
>>866
>原因の心当たりがある方はいらっしゃりませぬか?
だから『俺は無い』とでも答えておけばいいんじゃねーの?

868 :nobodyさん:02/11/21 23:56 ID:???
>867
無ければ答える必要ないんじゃねーか?
あるやつが答えりゃいいだけだろ?

869 :861:02/11/22 00:03 ID:6zsUquR2
言葉足らずですいません
今回はLinux環境で動かしているのですが、まったく同じソースでWindows版においたときの動作確認はとっています。
PHP4.2.2です

870 :nobodyさん:02/11/22 10:04 ID:HEeXMk8V
imap_setflag_full($mbox,"1","\\Deleted");
上記で削除フラグがつけられると思ったんですが、だめでした。
ためしに既読のフラグをつけようと
imap_setflag_full($mbox,"1","\\Seen");
をやっても新規のフラグのままでした。
一度フラグを削除してからでないとだめなのかと思い、
imap_clearflag_full($mbox,"1","\Recent");
imap_setflag_full($mbox,"1","\\Seen");
とやってもだめでした。
マニュアルもあまり詳細がのってないので前に進めません。
どなたかご教授ください。



871 :>>870:02/11/22 10:06 ID:HEeXMk8V
環境を書くのを忘れました。
OSはRedhat7.3
接続は
{localhost/pop3:110/notls}INBOX
でしています。
PHPのバージョンは4.2.3です。
よろしくお願いします。

872 : ◆Kiss.FX29M :02/11/22 10:17 ID:???
>>870
imap_datele で削除マーク
imap_expunge で削除
としてたよ俺は。

873 :>:02/11/22 10:21 ID:HEeXMk8V
>>872
削除ができるのは私も確認しました。
でも、
imap_datele($mb,"1");
$overview = imap_fetch_overview($mb, "1");
foreach($overview as $value){
$flag = $value->deleted
}
echo $flag;
imap_expunge($mb);
で、途中のフラグを表示してから削除してみても、
なぜか、新規フラグがたってました。

874 : ◆Kiss.FX29M :02/11/22 10:29 ID:???
>>873
pop3での接続じゃむり...ってか、反映しないのではなかったかなぁ。それ。
最近使っていないので、ほとんど忘れてる。



875 :>>870:02/11/22 10:31 ID:HEeXMk8V
以下みたいにわかりやすくして、みてみましたがNGでした。
$mb = @imap_open($host, $user, $pass);
$overview = imap_fetch_overview($mb, $msg_no);
imap_clearflag_full($mb,1,"\\Recent");
imap_expunge($mb);
print "<pre>";
print_r($overview);
print "</pre>";

pop3だとフラグつけられないのかな?


imap_close($mb);

876 :>>870:02/11/22 10:33 ID:HEeXMk8V
imapで接続したらあっさりフラグが変わりました。
ありがとうございました。

877 :>>870:02/11/22 12:50 ID:HEeXMk8V
でも、一度メールのヘッダを取得すると、Recentのフラグが消えてしまう。
プラス、Recentのフラグだけつけることができない。
なんで?
使用なの?

878 :nobodyさん:02/11/23 12:58 ID:???
最新版で直ってないバグ。
gmdate()で漢字が文字化けする。
関数内でstaticを使い、同時に複数の同じスクリプトを走らせると
異常に重くなる。globalだと問題ない。

879 :nobodyさん:02/11/23 20:34 ID:twAAlTTS
フォームから配列をhiddenで渡したいんですが。
配列はこんな感じで
$val[0]=array("a","b","c");
$val[1]=array("d","e","f"); あって
<input type="hidden" name="val[]" value="<? print serialize($val); ?>" >
やってもうまくいきません。

目的はフォームで確認のために$valを表示させ、OKならPHPで$valを処理。
ヘルプお願いいたします。

880 :879:02/11/23 21:06 ID:???
自己解決致しました。

881 :nobodyさん:02/11/23 21:11 ID:nnNnwbKG
>>879
自己解決したら解決法も書いておくと他の人に親切。
まだここ見てたら書いておいてみてくださいな。

882 :880=879:02/11/23 21:37 ID:twAAlTTS
ttp://php.joeysmith.com/manual/ja/function.serialize.php
にあるユーザーのレスにあるpropogateというファンクションで済ませました。
ひたすらval[0][0]からval[1][2]をアウトプットしてます。

でもserialize()で簡単にできそうな気がするんですが。
なぜか、879でHTMLソースはvalの値が化けていました。

883 :nobodyさん:02/11/24 15:09 ID:rESUx17L
「goto ラベル」でラベルの位置までジャンプさせるようなものは
PHPにはありませんか?

884 :883:02/11/24 15:29 ID:???
調べてみたのですが、どうもなさそうですね……。
エラー処理で使うわけではないので諦めます。

885 :nobodyさん:02/11/24 16:22 ID:???
gotoなんて使い道あるのか?

886 :PHPさん:02/11/24 19:32 ID:???
PHPでホスト名を取得する環境変数がわかりません。
教えてください。

ちなみに PHP Version 4.0.6 で、Apache で CGI 動作しています。
$REMORT_HOST では取得できませんでした。。

887 ::02/11/24 20:58 ID:2iDKmUF0
phpinfo(INFO_VARIABLES);
とかやって見るのがよろし。
---
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/

888 :nobodyさん:02/11/24 21:16 ID:???
Uxxxx.ppp.dion.ne.jpみたいな、fusianasan的なこの文字列は
phpから取得できないの?
>>886 とかぶってるのかも

889 :nobodyさん:02/11/24 21:31 ID:???
マニュアルぐらい調べてください。
4.0.6で動くかは知りませんがさっさとバージョンアップすべきです。
借りているならそんな所さっさとやめるべきです。
http://www.php.net/manual/ja/ref.network.php

890 :nobodyさん:02/11/24 23:19 ID:???
echo gethostbyaddr( trim( $REMOTE_ADDR ));
trimしなくてもいいのかな?

891 :nobodyさん:02/11/25 01:15 ID:TRGgbFwY
>>890
とりむさんいらないよ

892 :PHP ◆DQN/AO/IPw :02/11/25 01:50 ID:???
>>686
PEAR使え

893 :nobodyさん:02/11/25 20:09 ID:MbgdCRNZ
phpでhtmlファイルの中身の書き換えを行いと思ってます。

AAAA.html
--------------
<html><body>
AAAA
</body><html>
--------------

AAAA.html
--------------
<html><body>
BBBB
</body><html>
--------------

こんな感じの事がしたいのですが、スクリプトの書き方が途中までしかわかりません。。

<?php

$fp = fopen("./AAAA.html" , "w");
fwrite($fp , "test");
fclose($fp);

?>

これだと、AAAA.htmlは
--------------
test
--------------
になってしまいます。。良い書き方を教えていただけませんでしょうか。。


894 :nobodyさん:02/11/25 20:14 ID:???
読み込んで
置き換えて
書き込む

895 :nobodyさん:02/11/25 20:16 ID:???
         ,,.. -──- 、,      あはははははは!あはははははははは!
      ,. ‐'":::::::::::::::::   ....:``'-、       >>893 って本物のアホだな!あはははははは!
    ,/::::::::::::::::::: ....::::::::::::::::::::::::ヾ:、      ,....,   
   /::::::::::::::: ..:::::::::::::::i、::::::::::::::::::::'、':,.    /  ヽ  
  /::::::::::: ....:::::::::::::::::::::i:::!`、:ト、::::::::::::i i!   /     i
 i   ...::::::|'、ヽ;::::::::::::::|,!:!__リ,,'iヽ::l''、:'、  /     /
 | ..::::::::;:::i!:i ヾ:、ヽ:::::::::| リ , -─ リ i;il:ヽ, i    /
 l:::::::::::::::i',i ':i ,メ、 \;:l '゙    `、 !::::/l ...::::::/``ヽ
 l::ヽ:::::ヽ:i,レ',.゙-‐''''         ',/'/..::::::::::/    l'ヽ;、  
  i:::::>、:ヾ,' /     _,.. -‐'ヾi    ,レ'::::::::::;r':..   /  i_\
  i:::i. `'‐,ゝ    i"     '! ,.‐''" :::::::::::i゙::::::::.../.  ノ 'i\
   !::\ `ヽ    ':,     l{   ..:::::/::L,. ‐'":::::;/  !  l
   l::::::::`''‐r\    ヽ.,__,.ノィ'‐-‐''"'ォ‐--,゙弋''''"::::::;.ノ   l
   |::::::::;ィ:::}、 ``'''─--、-‐ニ┤ ___ハ,`''ーヽ-'=‐''":::   ,,/
   !::::::/ i:::|、\     ヾ´. i  ヽ   、''‐-、_::::::::::::::::: /
  i:::::/ i:::ハヽ`''‐、/l__\,| /    ヽ--、,.ニ=‐--‐'"


896 :893:02/11/25 20:25 ID:MbgdCRNZ
>>894
置き換えの部分がわかりません。。
どんな感じなのでしょうか。。

897 :nobodyさん:02/11/25 21:23 ID:???
>>896 
ふつうに置換えれば・・・。
つか何みてやってん? マニュアルみろよ。
eregあたりからしれらべてみ。
http://jp.php.net/manual/ja/

898 :893:02/11/25 21:36 ID:???
exec ("touch ./AAAA_2.html");
$fp = fopen("./AAAA.html , "r");
$fp2 = fopen("./AAAA_2.html" , "w");
while (!feof($fp)){
$okikae = fgets($fp , 4096);
$after .= ereg_replace("AAAA" , "BBBB" , $okikae);
}
fwrite ($fp2,$after);
exec ("mv ./AAAA_2.html ./AAAA.html");
こんな感じでできました。スイマセン。

899 :nobodyさん:02/11/26 00:39 ID:???
わざわざ exec 使うこと無いだろ
PHPにも、touch rename は用意されてる

900 :nobodyさん:02/11/26 01:42 ID:???
900

901 :nobodyさん:02/11/26 08:55 ID:???
>>898
正規表現使わないんだったら
str_replace
の方が良いようです。

902 :nobodyさん:02/11/26 15:40 ID:???
phpは、これからの言語です。必ず正規表現で・・・

903 :nobodyさん:02/11/26 18:49 ID:???
名前が日付のファイルを作りたいんだけどどうやったらいいの?
20021126.txtってみたいなの
いい初心者サイトって無いかな?

904 :nobodyさん:02/11/26 20:10 ID:???
ある晴れた昼下がり 市場へ続く道
荷馬車がゴトゴト >>903 を載せてゆく
可愛い >>903  売られてゆくよ
悲しそうな瞳で観ているよ
ドナ・ドナ・ドナ・ドーナ  >>903 を載せて
ドナ・ドナ・ドナ・ドーナ 荷馬車が揺れる

905 :nobodyさん:02/11/26 20:19 ID:???
>>903
$hizke.txt ただ日付を入れればいいと思うけど。

906 :nobodyさん:02/11/26 20:31 ID:???
>>904
ありがとう
http://jp.php.net/manual/ja/でfopenを見ろという事ですね

>>905
$hizke = gmdate("Ymd", time());
ってしろと言うことですね

907 :ぽぽんた:02/11/27 17:46 ID:32F4cqjQ
ちょこちょこ質問で見かける fsockopen についてなんですが・・・
fsockopen でデータを取得すると、どうも(低い確率ですが)
一部文字化けしませんか?私の取得方法がおかしいのかとか
考えましたが、サンプルとかと比べてもそれほどおかしなやり方は
していないと思うのですが・・・・。
過去ログや、googleで調べても出てこないのですが、他の人は
こういう現象が起きたりしていないのでしょうか。

【手順】
・fsockopenで目的のURLをオープン。
・各種パラメーターを fputs で送る。
・while でループして fgets でデータを取得
・ソケットをクローズする。

ってな感じです。

$sock = fsockopen( "www.xxxxx.xxx", 80 );
fputs( $sock, "xxxxxxx\n" );
fputs( $sock, "xxxxxxx\n" );
fputs( $sock, "xxxxxxx\n" );

while( !feof( $sock ) ) {
$str = fgets( $sock, 4096 );
echo $str;
}

fclose( $sock );

ちなみに、一度ソケットを利用すると再び同じPG内で
ソケットを利用しようとしてもオープンできません。
後片付けが悪いのでしょうか?
よろしくお願いします。

908 :nobodyさん:02/11/27 18:48 ID:???
>>907
HTTPヘッダの改行コードは
\r\nでおながいします。

909 :ぽぽんた:02/11/27 19:18 ID:32F4cqjQ
>>908 nobodyさん

ありがとうございます。
サンプルが \n だったのでそのままでした。
で、早速直したのですがやっぱりだめです。

データは「とりあえず」ほぼ正しく送られてくるのでhttpヘッダを
送る時点の問題では無いようです。(でも、今後ちゃんと\r\nにします:汗)

なんでしょう・・・一部の文字が崩れて文字コード崩れのような状態に
なってしまうんです。100文字に1文字とかそんな感じの頻度なので
結構、目立ちます。

例えば・・・htmlソースそのままで表示すると
------------------
でn

34b

ネければ、
--------------------
となります。原文は「でなければ」です。
他にも変な崩れ方をします。
「指落 1000 ヨっ」って表示されます。
これは「指輪っ」が正しいです。

なんなんでしょうねぇ・・・・

910 :nobodyさん:02/11/27 20:15 ID:???
性器表現ハァハァ

911 :nobodyさん:02/11/27 22:02 ID:???
パーミッションについて質問。

safemodeでchmod使おうと思ったら
chmod failed: Operation not permitted  とか言われました。

ブラウザでサーバサイドスクリプトを使ったときって、その他の扱いになるんですか?
サーバ内で処理してるからオーナーじゃないのですか?



あぅー、同アカウント内のスクリプトでしか見れないファイルつーのを作りたいYO

912 :nobodyさん:02/11/28 03:36 ID:???
nobodyさん

913 :nobodyさん:02/11/28 09:04 ID:F7kZgWD6
>>907
ひょっとしてWin鯖なら\nで良いです。詳しくは分かりませんが。

914 :bloom:02/11/28 09:44 ID:RNMw186q

http://www.agemasukudasai.com/bloom/

915 :nobodyさん:02/11/28 10:46 ID:???
Windows が \015\012 ですぜ。
\012 でも良いけど。

916 :ぽぽんた:02/11/28 13:45 ID:nkeBXKRh
>>915 nobodyさん

鯖はLinuxです。確かにCRLFはWinの改行コードですね。

それはそれで大切な議論なのですが、どっちにしろ
文字化けまくります。内部的な問題なのかなぁ(socketモジュール?)

PG細かく組まなくても単純にヘッダをfputs() で送って
fgetsで取得して表示するだけでも化けちゃうんですよね。
file()でURLを指定して読み込むと普通に読めるんですよね。

ちなみに、今回はPOSTデータを送る必要があったので
fsockopen()を使ってhttpヘッダをぶち込んでいます。
相手鯖からのデータを待っていなくちゃいけないのかなぁ。
ブロックモードとか関係ないと思うし・・・・(泣)

917 :nobodyさん:02/11/28 14:15 ID:PUGto0Nk
http://yahooo.s2.x-beat.com/

918 ::02/11/28 16:05 ID:BEW1IJeN
>>909
php のバージョンは?
4.2.3 だと mb 系を有効にすると一部文字化けが起きるバグありと聞いてます。


919 :ぽぽんた:02/11/28 16:18 ID:IiE4hQoQ
>>918 の さん
php のバージョンは 3.0.18-i18n-ja-3 です。
日本語処理を i18n系の関数を多用しているので 4に
移行していません。

その 4.2.3 のバグは、 mb系を利用していると起きるバグなのでしょうか?
それとも mb系を有効にしているだけで socketデータ取得時に
(mb系の関数を使わなくても)文字化けが起きてしまうようなものなのでしょうか。

SJISでよくある文字化けの問題であれば SJIS <-> EUC の絡みの
どこかで特定の文字だけ文字化けするはずですよね・・・・
まだ特定の文字だけなのか調べていないのでちょっと調べてみます。
有名どころで「表示」とか。

そういえば、毎回同じ[個所]で文字化けが起きていた気がする・・・・
「特定位置」でなくて「特定文字」という可能性はなぜか考えていませんでした。

920 :ぽぽんた:02/11/28 16:56 ID:IiE4hQoQ
・・・お恥ずかしい。自己解決しました。

言い訳させてください(爆)

1年ほど前、とあるサイトのページを取得しようと思ったのですが、
cookieを使ってたり、サンプルにあるヘッダ情報だけではうまく
データが取得できなかったので、「カンニング」したんです。
ブラウザ(IE5)で閲覧中の送受信パケットをダンプしてhttpヘッダをコ
ピーしたんです。で、それを編集してPGに組み込んだ、と。
賢明な方なら原因はすぐに分かりますよね。

1年近くずっと悩んでたのにごく簡単な理由でした・・・
httpヘッダが・・・・ HTTP/1.1 に・・・・・

えぇ、笑ってください。いいですとも。かなり大馬鹿ものですよ。

httpプロトコルが違ったのに動いていた方が不思議ですね・・・
HTTP/1.0 と HTTP/1.1 とでは同期の取り方が微妙に違うんでしょうね。

921 :nobodyさん:02/11/29 00:25 ID:Fg6tlzE0
これってどーよ?
PHP開発技術者育成講座:Zend Studioマスターコース
http://www.zend.co.jp/e-learning/
金額は個人で受講しても手頃だけど、内容がよくわからないので、二の足を踏んでます。

922 :nobodyさん:02/11/29 01:17 ID:lP9MNlfe
PHPに関して一つ質問させてください。
と記述すると$naに名前が出力されるものなのですが、、、
echo"ようこそ<br>$naさん";
とすると名前が出力されず、
echo"ようこそ<br>$na<br>さん";
とすると正常に出力されます。
PHPでは変数を使う場合は、
変数の前後に記述しては行けないもの等の決まりなどがあるのでしょか?

PerlでのCGIは理解しているのですが、
PHPは初めてなので混乱しています。
お力をお貸しいただければ幸いです。

923 :nobodyさん:02/11/29 01:23 ID:lzLul13h
phpで掲示板つくったんですけど
書き込んだあとに、再読み込みを押したら同じ内容が
自動的に書き込まれました
つまり、POSTで送信するとその状態が残っているような感じ
なんです。これを回避する方法はないかしら

924 :nobodyさん:02/11/29 01:30 ID:CsjprMSL
>>922
× echo "ようこそ<br>$naさん";
○ echo "ようこそ<br>".$na."さん";

925 :nobodyさん:02/11/29 01:46 ID:CsjprMSL
>>923
ひとつの案として、メッセージを書き込みするページが
開いたとき $_SESSION["kakikomi"] = "mada" にしておいて
書き込むページで
if ( $_SESSION["kakikomi"] == "mada" ) {
    kakikomi( $_POST["message"] );
    $_SESSION["kakikomi"] == "moukaita";
} else {
    echo "二重投稿エラーです。";
}
ってのはどう?

926 ::02/11/29 02:42 ID:vqpWO9fR
>>923
書き込み済んだらリダイレクトして再表示しちゃうのがお手軽かと。
POST の処理ルーチンも簡単にできるし。
---
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/

927 :nobodyさん:02/11/29 06:02 ID:QnsCph4W
disk_total_spaceって自身が置いてある上の階層は表示できないの?

928 :nobodyさん:02/11/29 07:39 ID:???
>>922
'$naさん'が一変数の扱いなのれす
やるなら、>>924 か
echo "ようこそ<br>{$na}さん";
でどだ

929 :bloom:02/11/29 08:57 ID:Ep+NyYTS

http://www.agemasukudasai.com/bloom/

930 :nobodyさん:02/11/29 10:27 ID:a3WbsO8J
>>924 >>928
ありがとうございます。
$na = 名前 となる場合

<?echo"<center>{$na}</center><br>";?>

と記述するのが良いのか

<?echo"<center>".$na."</center><br>";?>

と記述するのが良いのか、どうなのでしょう?
どちらでも同じ事なのでしょうか?


931 :hmk:02/11/29 10:58 ID:+pV4MPpt
>>928,930
{$na}では駄目です。${na}です。


932 :nobodyさん:02/11/29 11:27 ID:???
>>931
ダメなの?

933 :gn355my0:02/11/29 15:21 ID:???
ダメじゃないけど漏れならこうする

<CENTER><?= $na ?></CENTER><BR>

934 :nobodyさん:02/11/29 16:51 ID:FGwKAXnr
phpで質問です
htmlに出力するときはどっちが高速ですか?
(例1)
<?
テスト
?>
(例2)
print"テスト";

935 :nobodyさん:02/11/29 17:40 ID:???
> (例1)

何の意味があるのか小一時間問い詰めたい。

936 :nobodyさん:02/11/29 18:02 ID:???
小一時間どころか三日三晩問い詰めたい。

937 :nobodyさん:02/11/29 18:03 ID:FGwKAXnr
if(a == a){

<?
テスト
?>


}else{

print"テスト";


}


a=aの場合と
a=nullの場合と

どちらが表示が速いでしょう

938 :nobodyさん:02/11/29 18:21 ID:???
実行してみりゃ分かる(w<小一ヶ月問い詰められる理由

939 :nobodyさん:02/11/29 20:02 ID:rdc6a4ct
初心者が質問し、初心者が答える

940 :nobodyさん:02/11/29 20:24 ID:???
|∧∧
|・ω・`)
|oωo
|―u'
見守る初心者

941 :nobodyさん:02/11/29 20:52 ID:FGwKAXnr
$chcodeの値を出したいです

perlのソースですがphpに訳せる天才はいませんか?

$new=3;
$old=10;
$num1 = 7777;
$num2 = 77;
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$key = "uhreri";
@key = split(//, $key);
$date_num = sprintf("%02d%02d%02d%02d%02d",$mon +1,$mday,$hour,$min,$sec);
$chcode = ($date_num + $num1) * $num2;
$i = 0;
$chcode =~ s/./sprintf("%02x",ord($&)^ord($key[$i++ % @key]))/ge;



942 :nobodyさん:02/11/29 23:24 ID:???
よし初心者が答えてやる

<? テスト ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD>
<BODY></BODY></HTML>

こんなのが出力されるよ!


print"テスト";

テキストで

print"テスト";

と出るよ!

htmlは例1だから答えは例1!

943 :nobodyさん:02/11/29 23:29 ID:???
>どちらが表示が速いでしょう
エラーメッセージが出るけれど、いいの!?

>perlのソースですがphpに訳せる天才はいませんか?
凡人もいるよ!

944 :nobodyさん:02/11/30 00:04 ID:???
超初心者が思うに

$chcode = ($date_num + $num1) * $num2;
$i = 0;
$chcode =~ s/./sprintf("%02x",ord($&)^ord($key[$i++ % @key]))/ge;

これはおかしくない?最初の$chcodeで時間と何かの数字で計算して代入しているのに
また、$chcodeに何かを代入するの?

945 ::02/11/30 01:38 ID:tS4FEdrL
perl の =~ ってのは正規表現の適用 (置換 or マッチング) 指示でっせ。
s/ だから php なら、$chcode = preg_replace(...,,$chcode) ってパターンだな。
書き換えは簡単だけど、正確に読むのはダルいんでパス。
---
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/


946 :nobodyさん:02/12/01 03:25 ID:2VKLUjr4
RedHat Linux 7.1Jで、php-4.1.2-7.1.6を使ってます。

gdの「imageCopyResampled()」を使いたくて、 gd-2.xにバージョンアップ
しようとして(現在は gd-1.8.3-7)、 RPMパッケージを探したのですが、
ftp://ftp.rpmfind.net/linux/PLD/current/dists/ra/PLD/i386/PLD/RPMS/gd-2.0.1-7.i386.rpm
のようなPLDディストリビューションしかなく、インストール(アップデート)しても
うまくバージョンアップしてくれません。
どこかに別のRPMパッケージ、もしくは上記のもので成功させる方法って
ないでしょうか?

現在はImageCopyResized()を使って画像縮小してるんですが、激しく
荒い画像になってしまいます、、。

947 :nobodyさん:02/12/01 10:25 ID:iDh7XpXh
PHPで、gzip圧縮してブラウザに返す方法ありませんか?

948 :nobodyさん:02/12/01 10:34 ID:???
>>947
ある。

949 :946:02/12/01 10:48 ID:2VKLUjr4
情報追加です。

現在のphp-4.1.2-7.1.6をインストールしたままgd-2.0.1-7をインストール
しようとすると、「libgd.so.1.8はphp-4.1.2-7.1.6に必要です」と言われて
拒否られてしまいます。 強引に入れると確かにapache起動に失敗します。
gd-2.0.1-7のインストールファイルリストを見てlibgd.so.2.0.0だけなので
いやな予感はしていましたが、、、。

今度はPHP関係をまず全てアンインストールして、gd-2.0.1-7から入れると
インストールはできるのですが、php-4.1.2-7.1.6をインストールしようと
すると、「libgd.so.1.8はphp-4.1.2-7.1.6に必要です」と言われて、
今度はPHPがインストールできなくなってしまいます。

私のような素人考えからいくと、「gd-2.xを必要とするPHP4のRPMパッケー
ジがあれば、、」などと考えてしまうのですが、ちょっと的外れでしょうか?

950 :nobodyさん:02/12/01 11:46 ID:???
たぶんRPMの依存性で入らないってことかな。
後でどうなっても知らないけど、
gdのページには、
A very high degree of backwards compatibility
with existing gd 1.x code has been maintained,
at both the source code and binary level.
ってあるから無理やり入れてもよさそう。
libgd.so.1.xにシンボリックリンク張るのを忘れずに。
尚、レジストリの修正は自己責任でお願いします。

951 :946:02/12/01 12:08 ID:2VKLUjr4
>>950
ありがとうございます。
つまり、「gd 2.x は、1.x とソースコードもバイナリレベルも似ていて互換性も
保ってます」ってことですね。

最後の2行の意味がよく分からないのですが、libgd.so.1.xにシンボリック
リンクを張るのがどういう意味をなすのでしょう?
レジストリ修正っていうのはPHP4のRPMパッケージをいじるっていうこと
でしょうか? 、、、ちょっと私にできるかどうか、、、。

952 :nobodyさん:02/12/01 12:44 ID:EpowQ2LG
ちょっと伺いたいのですが
無料ホムペスペースのsendmailは
PHP4で使えますでしょうか?

953 :nobodyさん:02/12/01 12:49 ID:Ympa0jkR
>>952
当然使えます。sendmailもqmailも設定ひとつです

954 :952:02/12/01 12:53 ID:???
サンクスです!
早速、スクリプト探してきます!!

955 :初心者:02/12/01 15:01 ID:IYJM+D46
>>947
自分も丁度気になっていたところ。
ob_start("ob_gzhandler");
で良いと思うんですが。

956 :nobodyさん:02/12/01 15:53 ID:???
良い。

957 :nobodyさん:02/12/01 17:53 ID:???
変数宣言強制したい。


958 :nobodyさん:02/12/01 18:04 ID:???
>>947
今のPHPの設定を目を皿にして確認してみよう。
ただし、PHPでgzipコンプレスすると正常動作しなくなるスクリプトが少なからず出てくる。
(クライアント側ブラウザに圧縮されたバイナリデータが展開されてしまう)
スクリプトを修正すればなんとかなるとは思うが。

そろそろ新スレか?

959 :nobodyさん:02/12/01 19:13 ID:???
経験上、995まで大丈夫。(w

960 :nobodyさん:02/12/01 22:40 ID:???
精神衛生上、970くらいじゃないか?

961 :nobodyさん:02/12/02 00:30 ID:eE3XhUq7
POSTされた変数から手動で改行を取り除く処理で、

foreach($_POST as $key => $value){
$_POST[$key] = str_replace("\n", "", $value);
}
↑のように書くと意図したように動かない


foreach($_POST as $key => $value){
$_POST[$key] = str_replace("\n", "", $_POST[$key]);
}
↑のように書くとちゃんと動く

同じように見えるんだけどなにか違うの?
\nとかじゃなくてただのアルファベットとかだとちゃんと前者でもちゃんと動作するんみたい。
何故?誰か教えて。

962 :nobodyさん:02/12/02 01:50 ID:???
うちの環境(php-4.1.2-7)だとうまく動いた。
\nじゃなくて、\r\nに変更したけど。

963 :nobodyさん:02/12/02 04:08 ID:???
Part2 が立ったのは 995
Part3 が立ったのは 980
Part4 が立ったのは 999
Part5 が立ったのは ……HTML 化待ちで、漏れは読めない

964 :961:02/12/02 04:43 ID:eE3XhUq7
>>962
試してみた。
$_POST[$key] = str_replace("\r\n", "", $value);
だけだと成功

$_POST[$key] = str_replace("\r\n", "", $value);
$_POST[$key] = str_replace("\n", "", $value);
$_POST[$key] = str_replace("\r", "", $value);
3つ書くと失敗
後ろの$valueを$_POST[$key]に変更すると成功

php-4.2.2なんだけどなー。なんでだろう。

965 :nobodyさん:02/12/02 09:45 ID:vgT4ee9m
ダダダダ、ダダダダ、ヨザーー。

正規表現

966 :nobodyさん:02/12/02 23:01 ID:2uvkz+AI
最近PHPの勉強をはじめて、自分用に電車の時刻表を作ってます。
そこで祝日(成人の日)の判定が分からないです。

1月第2月曜日ってのはどうやって判定したらよいのでしょう?
教えてください。

967 :nobodyさん:02/12/02 23:34 ID:???
第二日曜が14日でなけりゃ第二日曜の次の日。
第二日曜が14日なら第二月曜は8日。


968 :ノウバディ:02/12/02 23:56 ID:yCCT0waL
レッツPHPのアクセス解析に、
CGIBOY同様の訪問回数、初回訪問日などを
誰かつけてください。
おながいします、。

969 :nobodyさん:02/12/03 00:53 ID:F9qCnjkA
966です。
>>967さんありがとうございます。

簡潔に書けそうなすばらしいロジックですね。
ただ、第二日曜を判定するロジック(書き方)が分からないのです。

教えてクンですみません。PHP4でのこの辺の書き方教えていただけないでしょうか。

970 :nobodyさん:02/12/03 01:26 ID:Q35J3m80
$timestamp = mktime(0, 0, 0, $month, 1, $year);
$first_day = getdate($timestamp);
if($first_day[wday] == 0)
  $second_monday = 8;
else
  $second_monday = 15 - $first_day[wday];
かな?
1日が日曜日なら第2月曜は8日、それ以外なら2週間後の今日から
最初の日曜日までの日数を引いた日、っていう感じ。
たぶん合ってると思う。


971 :nobodyさん:02/12/03 01:28 ID:???
ごめん、なんか自分で見直してみて説明変だな。
まあ、そんな感じで。

972 :nobodyさん:02/12/03 01:29 ID:???
$year = 2002;
$month = 1;
$the_day = happy_monday($year,$month);

echo $the_day;

function happy_monday($year,$month){
$weekday_1st = date("w",mktime(0,0,0,$month,1,$year));
$weekday_1st == 0 ? $sunday_1st = 1 : $sunday_1st = 8 - $weekday_1st;
$monday_2nd = $sunday_1st + 8;
return $monday_2nd;
}


973 :nobodyさん:02/12/03 12:11 ID:???
>968
レッツPHPの人にお頼み申せ。

974 :nobodyさん:02/12/03 16:07 ID:F9qCnjkA
>>966です。
>>970,972 ありがとう。休日(ダイヤ)か平日(ダイヤ)かの判定ができるようになりました。
こんな感じです。

//-----------------------------------------
//休日か平日の判定
function is_holiday($year,$month,$day){
$ls_day = sprintf("%02d/%02d",$month,$day);
$sflg = "weekday";
$holiday = array("01/01","02/11","03/21","04/29","05/03","05/05","07/20","09/15","09/23","11/03","11/23","12/23","12/30","12/31","01/02","01/03");
for ( $i = 0; $i < count($holiday); $i++ ) {
$holiday[$i] = holiday_shift($holiday[$i] . "/" . $year );
}
$holiday[16] = "01/" . sprintf("%02d",happy_monday($year,1));//成人の日
$holiday[17] = "10/" . sprintf("%02d",happy_monday($year,10));//体育の日
for ( $i = 0; $i < count($holiday); $i++ ) {
if ($ls_day == $holiday[$i]) {
$sflg = "holiday";
break;
}
}
return $sflg;
}
//-----------------------------------------
//ハッピーマンデー対応
function happy_monday($year,$month){
$weekday_1st = date("w",mktime(0,0,0,$month,1,$year));
$weekday_1st == 0 ? $sunday_1st = 1 : $sunday_1st = 8 - $weekday_1st;
$monday_2nd = $sunday_1st + 8;
return $monday_2nd;
}

975 :nobodyさん:02/12/03 16:07 ID:F9qCnjkA
974の続き

//-----------------------------------------
//祝日が日曜日の時には月曜日が休み
function holiday_shift($in){
$t = split("/",$in);
if(date("w",mktime (0,0,0, $t[0], $t[1], $t[2])) == 0) {
$holiday = sprintf("%02d/%02d",$t[0],$t[1]+1);
} else {
$holiday = sprintf("%02d/%02d",$t[0],$t[1]);
}
return $holiday;
}

976 :nobodyさん:02/12/03 19:51 ID:R/9PtWVb
htmlファイルから、
たとえば
<html><body><table><tr><td>文章</td></tr></table></body></html>
このようなファイルで<table>〜</table>までを取り出したいときにはどうしたら良いでしょうか?
この場合は
<table><tr><td>文章</td></tr></table>
を取り出せればいいのですが
宜しくお願いします。

977 :nobodyさん:02/12/03 20:18 ID:PNt+pMvy
>>976
<table>から</table>にマッチする正規表現で抜いてくればいいんじゃない?


978 :nobodyさん:02/12/03 23:16 ID:vkKrixb3
JpGraphをやりたくて、PHP徹底攻略実戦を買いました。
インストールしている途中でPHP.iniのインクルードパスのところで
いきづまってます。PHP.iniのインクルードバスがコメントになってる
からです。どうすればいいのですか?
Linux7.3です。LinuxもPHPも素人です。
7.3にPHPは既に入ってました。
<? phpinfo(); ?>は動作しました。

979 :nobodyさん:02/12/04 00:21 ID:???
//削除

980 :うえ〜ん:02/12/04 05:35 ID:XOwW5my4
こういうやつでなんで読み込んでくれないんでしょう?
全っ然わからん。PHP歴4時間・・・

-----test.php
<HTML><BODY>
<?php
$filename = "/home/hoge/hoge.dat";
$fp = fopen ("$filename","r");
flock ($fp,1);
$contents = fread($fp,filesize($filename));
flock ($fp,3);
fclose ($fp);
print $contents;
?>
</BODY></HTML>

981 :nobodyさん:02/12/04 06:23 ID:???
"home/hoge/hoge.dat"

982 :nobodyさん:02/12/04 06:25 ID:???
"./home/hoge/hoge.dat"でもいいけど。

983 :nobodyさん:02/12/04 06:35 ID:???
(´-`).。oO { エラー処理すればすぐ分かるのになぜしないんだろう

984 :nobodyさん:02/12/04 07:28 ID:???
そろそろ次スレきぼんぬ。

985 :nobodyさん:02/12/04 09:38 ID:???
>>984
あと10は逝けるね

986 :nobodyさん:02/12/04 10:57 ID:???
つーことで、テンプレ追加・修正案募集中。

987 : :02/12/04 14:04 ID:xBoKBvCa
>>980
$fp = fopen ($filename,"r");

988 :nobodyさん:02/12/04 14:11 ID:???
ネームかパスかはちょっと悩むところだね。

989 :ageてもいい?:02/12/04 14:51 ID:???
WebServer の基本認証のユーザー名とパスワードって
取得できるのかなぁ?


990 :nobodyさん:02/12/04 14:52 ID:???
げっつ990!(ワラ

991 :nobodyさん:02/12/04 16:10 ID:???
1000取りage!!!!!!!!!!!!!!

992 :nobodyさん:02/12/04 16:12 ID:???
>>991 ageんなヴォケ!

993 :980 (そろそろ新スレ?):02/12/04 16:26 ID:XOwW5my4
>>980 です。ありがとうございます。色々試してみました。
けど・・・まだダメなんです。
教えて頂いたとおりに、
$filename = "./home/hoge/hoge.dat"; とか
$filename = "home/hoge/hoge.dat"; と
やってもダメでした。
ただエラーが表示されるようになって、
「No such file or directory 」といわれます。
読んだままファイルの指定の仕方が間違ってるみたいなんですが・・・

で、ご指摘頂いた /home とルートからフルパスで書くところをhome/と
していますが、どういった理由なのでしょうか?
それともそんな書き方はもともと出来なくて、全て相対パスで書くべき
なのでしょうか?
http://www.php.net/manual/ja/function.fopen.php
を見ると $fp = fopen ("/home/rasmus/file.txt", "r");
のようにルートからフルパスで書いてあります。

test.phpとhoge.datを同じディレクトリに入れて
$filename = "./hoge.dat"; としてみたら、エラーは全く出ない
のですが、
<HTML><BODY></BODY></HTML>
とだけ見えて内容を全然読んでくれませんでした。

ちなみに >>987 さんの言うとおりに4行目はこうしてみました。
$fp = fopen ($filename,"r");

質問ばかりで申し訳ないのですが、ご教授願います。

>>989 オレも知りたい・・・

994 :989:02/12/04 16:37 ID:???
Apache モジュールとして動作してればいいらしい。
phpinfo 見ると、、、Server API が、CGI になってた(鬱

どやってApacheモジュールにするのかなぁ?

995 :nobodyさん:02/12/04 16:50 ID:???
>>989
Apacheモジュール版なら
$HTTP_SERVER_VARS['PHP_AUTH_USER'], $HTTP_SERVER_VARS['PHP_AUTH_PW']
とか
$_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']
で取れるだろ。

>>993
で、/home/rasmus/file.txt は有るの?

996 :995:02/12/04 16:53 ID:???
しもた。先書かれた。
>>994 root権限あるの?

997 :995:02/12/04 17:00 ID:???
次スレ立てますた
http://pc.2ch.net/test/read.cgi/php/1038988518/l50


998 :nobodyさん:02/12/04 17:06 ID:???

 長らくお待たせしました。やっと1000取り合戦場になるようです。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、やっぱやんなきゃダメか?    ,,、,、,,,
    /三√ ´兪)/   \________________ ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,    \今更やる気でねぇ…………よ。。。/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    ;)    (ι   )   (    ;)    )

999 :nobodyさん:02/12/04 17:09 ID:???
1000GETずさー

1000 :nobodyさん:02/12/04 17:11 ID:???
       ここに 乂1000取り合戦場乂 としての価値はありません。

       ,,、,、,,,       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\   \∧_ヘ
,,、,、,,,             やっぱや〜めたっと >   / \〇ノゝ  ,,、,、,,,
           ,,、,、,,,  ________/   /三√ ゚д゚)
                                /三/| ゚U゚| \
    \エーーーーーーーッ!?/   ,,、,、,,,    U (:::::::::::)∪  ,,、,、,,,
   ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧  //三/|三|\
   (    )    (     )   (    )    )   ∪  ∪
  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧,,、,、,,,       ,,、,、,,,
  (    )    (    )    (    )    (    )      ,,、,、,,,

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

276 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)