【PHP】質問スレッドpart28【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/05/05(木) 17:17:11ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
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辺り
0447nobodyさん
2005/06/09(木) 23:46:51ID:???よほど大規模な開発にはよさげだけどね
でもかなりの部分はEclipseでも賄えちゃうしなあ
俺はまず使うこと無いな
0448自動返信
2005/06/10(金) 00:08:58ID:gLWzFcyIこれは成功したんですけど、送信されてきたメールアドレスをこのPHPスクリプトに渡したいんですが、まずメールアドレスの取得方法は何かありませんか?
0449nobodyさん
2005/06/10(金) 00:52:21ID:???ぉぃぉぃ。
qmailだと実行できるとか、Maildir/を見るしかないとかを>>431で書いておきながら、
実は何も知りませんてか。
エンベローブFromは取れないが、Mailヘッダも含めて標準入力から来てるだろ。
0450自動返信
2005/06/10(金) 00:58:44ID:gLWzFcyIすみません…そのとおり何も知らないんでどうしようもなく質問させていただきました。
qmailだと実行できるというのはそういう一言情報が調べたときにありましたが、という意味で書きました。
Maildir/については、メール内容などがどういう風に書き込まれてるかを調べていけば読み出すことでできるかもしれないという自分なりの考えを述べたつもりです。
こんな/etc/aliasesというものをまったく知らなかったので。
標準入力からきているというヒントでも正直よくわかりません…。
どこでどう取得すればいいんでしょうか?
0451nobodyさん
2005/06/10(金) 01:08:30ID:???$mail = file_get_contents('php://stdin');
これで、メールの内容(ヘッダ込)が全て$mailに入るから、
適当なファイルに書き出して、どのような中身になっているか見てみるがいい。
後は、マニュアルのmailparse関数等を参考に。
0452nobodyさん
2005/06/10(金) 01:13:11ID:???mailparse関数を使えって意味じゃなくて、そこに書いてある内容を参考にって意味だったんだが、
何も書いてないよなw
RFC822とか、その他いろいろググってってことで。
0453自動返信
2005/06/10(金) 01:44:05ID:gLWzFcyIありがとうございます。
PHPのCLI版はさっきいれたところで、このような形で標準入力を取得できるとは知りませんでした。
標準入力を取得し、それをファイルに書き出すまでは成功してるんですが、いざ、メールの内容取得となると取得できていません。
現時点まででしたことをまとめると
/etc/aliasesにroot:"|/usr/bin/php /home/sample.php"を追記
/home/sample.phpに以下のコードを記述
$mail = file_get_contents("php://stdin");
$fp = fopen("mailh.txt","w");
fwrite($fp,$mail);
fclose($fp);
まだ何か勘違いしているのでしょうか?
RFC822の情報はありがとうございます。
メールヘッダの形式もあいまいだったのでこの機会に習得しておきたいと思います。
0455nobodyさん
2005/06/10(金) 01:53:30ID:???一度も使ったことがないなら、登録してFree Evaluation(英語版)で試してみなよ。
バージョンが上がる度に良くなってる点は評価できるけど、
Java使ってて動作がもっさりだなと思わないこともない。Eclipseもいっしょだが。
まあ、今時のマシンだと気にするほどじゃないけどね。
0456自動返信
2005/06/10(金) 01:54:08ID:gLWzFcyI遅くまですみません、でも何か解決策が見えると思います。
がんばってみます。
昼4時から取り組んで悩んでいたので解決に光が見えてきて本当に嬉しいです。
本当にありがとうございます。
自分もこういう質問に答えられるくらいになるようもっと勉強します。
0457自動返信
2005/06/10(金) 02:12:27ID:gLWzFcyIできました!
きちんと$mail=file_get_contents("php://stdin");で$mailに入っていました。
まずそもそもrootに対してメールが送られたときにファイル書込みができているのだろうかと思い適当な文字をファイル書込みしようとしました。
すると適当な文字aaaとかにもかかわらずファイル書込みがされませんでした。
じゃあこのスクリプトを呼び出していないのかというとそうでもなく、mail関数などは正常に動作していて、きちんとスクリプトを呼んでいることがわかりました。
そこでmail関数を使用して、$mailで取得したヘッダ内容を自分の携帯電話へ送ってみたところ正常に動作しました。
なぜファイル書込みができなかったかを考えたところ、おそらくこのスクリプトを実行しているのがメールサーバーだからだろうと思い/homeを777にして書き込み権限を与えました。
すると成功しました。
長かったですがやっと成功できました。
本当にありがとうございました。
本当にいくら感謝してもしきれません。
もっとPHP単体だけでなく他プログラムとのかかわりも含め勉強を重ねていきます。
0458nobodyさん
2005/06/10(金) 02:12:30ID:???>>453のmailh.txtを書き出すには、postfixが動いている権限で書き出せるように
パーミッションの設定が必要。
後は、本当にsample.phpに渡っているかmailログ等で確認汁。
今度こそ寝るw
0459nobodyさん
2005/06/10(金) 02:13:49ID:???まぁ、よかったな。
0460自動返信
2005/06/10(金) 02:14:13ID:gLWzFcyIそのとおりです。
そこまで見通せるの本当に凄いです、ありがとうございました。
0462nobodyさん
2005/06/10(金) 17:17:39ID:???dblは表示できるんだけど、jpgがどうしても上手くイカン・・・
0463nobodyさん
2005/06/10(金) 20:55:18ID:???これを、なんとか呼ぶことが出来ないものでしょうか…。
2回目にクラスを呼ぶ時点で、前に呼んだクラスはもう必要が無くなるので、未定義状態に出来ればいいのですが
そんな都合がいいことは出来ないでしょうかね・・・?
0464nobodyさん
2005/06/10(金) 21:09:27ID:???0466nobodyさん
2005/06/10(金) 21:15:17ID:???0468nobodyさん
2005/06/10(金) 23:09:41ID:???結局includeeされたファイルはただそのまま読み込まれているだけだから、
同じファイルに同じクラス名のクラスを2つ書いてることになるだろ。
それを別のものとして宣言ってのは無理だろ。
だいたい同じクラス名を使うなって。
0469468
2005/06/10(金) 23:13:45ID:???>>455
どうも使用期限が付いてるものをインストールするのは嫌なんだよね〜・・・。
ゴミが溜まりそうなので。
だからCeleron600MHz、メモリ128Mの使ってない端末に入れてみた->評価版。
ん〜・・・、すげーもっさりしてるね動作が・・・。当たり前か。
まぁでも良い感じかなぁとは思った。今月末に購入するよ。
0470nobodyさん
2005/06/11(土) 00:04:11ID:???---- Test.class.php ----
<?php
class Test {
}
?>
----------------------
---- main.php -----
<?php
require_once('Test.class.php');
require_once('Test.class.php'); // これはエラーにならない
$obj =& new Test();
?>
------------------
こういう話じゃないってこと?
0471nobodyさん
2005/06/11(土) 00:12:41ID:???特定のディレクトリ内に一番最後に格納されたファイル
(または過去n個以内の複数のファイル)のファイル名情報を取得して、
.php内に表示させる方法ってないでしょうか?
イメージとしては、
<?php echo date('m/d', filemtime('./upload/') ) ?>
↑の指定ディレクトリの更新日時を取得して表示する、の
名前取得版みたいな感じで動作させたいんですが...。
0472nobodyさん
2005/06/11(土) 00:27:43ID:???・アップロード時にテキストファイルにファイル名を書き込む
・表示させる時にディレクトリ関数・ファイルシステム関数を使ってデータ取得
etc.
0473nobodyさん
2005/06/11(土) 00:57:32ID:???本来はどれか一個しか読み込まないんですが、全てのプロパティを比較したかったんです。
---- a.php -----
class test
{
var $name = 'a';
}
---- b.php -----
class test
{
var $name = 'b';
}
通常は、どれかを選択して使用するのですが
a.phpやb.phpをリスト化したいと思ったのです。。
<li>a.php : name = a</li>
<li>b.php : name = b</li>
のような感じで。
0475nobodyさん
2005/06/11(土) 01:14:38ID:???0476nobodyさん
2005/06/11(土) 01:24:14ID:???0478nobodyさん
2005/06/11(土) 01:27:11ID:???0479nobodyさん
2005/06/11(土) 01:35:39ID:???0480nobodyさん
2005/06/11(土) 01:52:11ID:???0481nobodyさん
2005/06/11(土) 22:30:08ID:JxmTPzAIショッピングカーとぐらい、本とかみないでも
1からスクリプトかけるのか?
俺ショッピングモールいまつくってるけど、仕事で
ぶっちゃけ本みながらやってるんだけど・・・
おまえらどうなの?
0483nobodyさん
2005/06/11(土) 23:02:59ID:???見ないでも書けるけど、本見て仕事がスムーズに進むなら
別に見ても構わんと思うぞ。教科書持ち込み不可のテストでもないんだから。
リファレンスマニュアルは、手元に置いてるな。データと紙の両方。
0484nobodyさん
2005/06/11(土) 23:04:57ID:???そんなことやってたらコスト的に勿体無いから。
0485nobodyさん
2005/06/11(土) 23:14:38ID:???よくスペルとか忘れるから、マニュアル片手にやってるよ。
あと、自分で作った既存のスクリプトからコピペしたりよくやってる。
正直、関数のうろ覚えが多いんでマニュアルないとゼロから100まで作るのは無理かも。
0486nobodyさん
2005/06/11(土) 23:18:47ID:???どっちに配列だっけ…と迷う事がよくある。
0487nobodyさん
2005/06/11(土) 23:22:04ID:???それと、本を見ながら作業ってのは、余りしないな。
ネット上で探した方がコピペも出来るし作業的には楽。
0489nobodyさん
2005/06/12(日) 02:21:46ID:???0490mbstring
2005/06/12(日) 02:40:25ID:???PHPのソースを展開し
./configure --enable-mbstring
make
su
make install
何かいけないこと考えられますか?
php-cli.iniの[mbstring]設定もしました、といってもそもそもUndefinedFunctionとなるのでそれ以前の問題なんです
0492nobodyさん
2005/06/12(日) 05:32:11ID:T3M2BgYkサーバサイドで実行してくれるPHPスクリプトってどっかにありませんかね。
ご存知の方がいたらよろしくです。
一応、最初は自作しようと思ってpearのhttp_requestとか使って
まずlivedoorBLOGで試したんですが、いきなりログインまわりの
セッション保持で挫折です。cookieの送受信はきちんとやっているつもりなんですが、
どうやらそう簡単にはいかないらしく。
0493nobodyさん
2005/06/12(日) 10:24:17ID:???を
2005年06月12日 01時28分43秒
に整形したいのですが、できませんか?
0494掲示板のperlですが
2005/06/12(日) 10:37:05ID:CxMhZf98(略)
if($mail eq "fusianasan"){
$body = "$host";
}
この場合メル欄に「fusianasan」と入れると、メル欄にホストが晒される
ことになると思いますが、たとえば「俺はfusianasan」「fusianasanだよ」のように
「fusianasan」という文字列を含む場合は全てhostを晒したいという時、
$mail eq のあたりをどう書き換えればいいですか。
どうか先輩方教えて下さい。<(_ _)>
0495掲示板のperlですが
2005/06/12(日) 10:39:29ID:???$body = "$host";
}
じゃなく
$mail = "$host";
}
でした。逝ってきます。
0496nobodyさん
2005/06/12(日) 10:42:34ID:???Date関数のマニュアルをよく読む。
date("Y年m月d日 h時i分s秒")
という風に出力する形式(フォーマット)を指定できる。
0497掲示板のperlですが
2005/06/12(日) 10:42:42ID:???逝ってきます。すみません。
0498nobodyさん
2005/06/12(日) 10:56:58ID:???date("Y年m月d日 h時i分s秒") は知っています。
2005-06-12T01:28:43+09:00
を
2005年06月12日 01時28分43秒
に整形したいんです。できませんか?
0499nobodyさん
2005/06/12(日) 11:00:17ID:???0502nobodyさん
2005/06/12(日) 12:02:42ID:???正規表現使うまでもないでしょ。
形が決まってるんだから。
>>481
PHPのマニュアルはかなり優秀だと思う。
〜やりたい時はどうすればいいのだろう?
と思ったときは、まず最初にマニュアルを見る。
大概答えが書いてあるよ。
0503nobodyさん
2005/06/12(日) 14:29:13ID:???同じような挙動を取る関数を作成することは可能でしょうか。
とりあえず、PHP4の時は以下のようにしてファイルを読み込むようにしているのですが、
これだとページによっては不要なファイルも読み込んでしまいますよね。
if (PHP_VERSION < "5.0.0") {
foreach (gleb("./class/*.inc") as $classfile) {
require_once($classfile);
}
}
0504503
2005/06/12(日) 14:31:35ID:???gleb→globです。
0505nobodyさん
2005/06/12(日) 14:39:15ID:???readdirでディレクトリの中にあるファイルを全部表示させたのはいいんですけど
で、ファイルがこんな感じで表示されてるんですが
↓↓↓
〜.jpg [ファイルサイズ] 削除
〜.txt [ファイルサイズ] 削除
〜.zip [ファイルサイズ] 削除
この削除ボタンを押すと対応したファイルが消えるようにしたいんですけど
どんなスクリプト組めばいいのかいまいちわかりません。
誰か俺に教えてくださいorz
0507nobodyさん
2005/06/12(日) 15:08:44ID:???どのあたりが分からんのか説明が欲しいところだけど、
やることは簡単なので処理の流れを書いてみる。
<a href="delete.php?filename=〜.jpg">削除</a> で、削除スクリプトを呼び出すボタンを作成。
delete.phpは適切に入力チェック後、unlink()を使ってファイルを削除。
0508nobodyさん
2005/06/12(日) 15:18:11ID:???�dクス
強引に一つのスクリプトでやろうとしてたからいけなかったのかorz
0509nobodyさん
2005/06/12(日) 16:54:54ID:???いつもそうやってきたんだが
デスクトップ上で動かすことってできねえか?
0516nobodyさん
2005/06/12(日) 17:34:46ID:???コード「F659」といった16進で指定される文字を
出力するにはどうしたら良いのでしょうか?
0518nobodyさん
2005/06/12(日) 17:52:20ID:???今日日のクライアントPCはハード的に見ればけっしてミニとは言えないけど
ローカルマシン内でクライアントとサーバが同居して閉じた構成。
0519nobodyさん
2005/06/12(日) 17:53:43ID:???0520nobodyさん
2005/06/12(日) 17:56:07ID:???0521nobodyさん
2005/06/12(日) 18:03:36ID:???サーバの定義は人によると思うけど、
WEBサーバとして機能するソフトウェア(Apache、IISなど)がそのPC内で稼動してれば
WEBサーバと言えると思うよ。
サーバに大きいも小さいもないし。
とりあえず、ApacheとPHPをインストールしてきちんと設定すれば
Win上でテストはできるよね。
もちろん、実際のサーバ上でしか使用できないモジュールなどを使う場合は
テストできないけど、それは仕方ない。
0522509
2005/06/12(日) 18:05:37ID:???是非やってみます><
0523nobodyさん
2005/06/12(日) 19:31:04ID:???いいのでしょうか?
0524nobodyさん
2005/06/12(日) 20:14:06ID:???素人の俺にはそんな荒業怖くてできんが・・・
0525nobodyさん
2005/06/12(日) 20:22:13ID:???0526nobodyさん
2005/06/12(日) 20:22:46ID:???そして今も増えつづけているのさ。
0528525
2005/06/12(日) 20:26:31ID:???0530nobodyさん
2005/06/12(日) 20:50:13ID:???プロならいきなりレン鯖でテストしないとなw
0531nobodyさん
2005/06/12(日) 21:04:56ID:???それ、殆どの場合、レン鯖で規約違反。
ちゃんと、ローカル環境とかでテストしてからアップしろと書かれてるはず。
0532nobodyさん
2005/06/12(日) 22:10:01ID:???うちの場合は、
データセンターに鯖は置いてあって、リモートでログインしている。
テストサーバと本番サーバを立てていて、
テストサーバへアップして動作確認している。
そもそもローカルじゃテストできない部分もあるしね。
ところで、プロでレン鯖使うのはどんな案件?
0533カポコン
2005/06/12(日) 22:27:10ID:???俺の場合は、1Pサーバーのテスト後、2Pサーバーで再テスト。
最後は、クラス鯖で各枝ごとに動作検証汁。
ハードウェア、回線エラーとかでパフォーマンス落としている
部分があればそういう部分も修復・交換しているって・・・
全 然 、 p h p と 関 係 ね ー な
0535nobodyさん
2005/06/12(日) 23:08:38ID:F9hjAojE最終的に借りてるサーバーいくつかで意図通りに動くかテストするわ
0536nobodyさん
2005/06/12(日) 23:26:10ID:???表示されんのだが・・・
0537nobodyさん
2005/06/12(日) 23:32:34ID:???1. phpinfo(); - phpが動いているかどうか調べる
2. echo 'hello world'; - お約束。アルファベットのみなので文字化け等の問題を除去できる
3. echo 'てすと'; - 次へのステップ
4. echo '<center>てすと</center>'; << いまここ
つー感じで徐々に試してみたりしませんか?
0538536
2005/06/12(日) 23:36:47ID:???サンクス
大丈夫だったんだが
<HTML>
<BODY>
<?php
//名前かメールアドレスが未記入の時
if ($name == "" || email == "" || $password1 == !! || $password2 == ""){
echo " <CENTER>入力漏れがあります。</CENTER>";
//パスワードと確認用パスワードが一致しないとき
}elseif($password1 != $password){
echo " <CENTER>パスワードが正しくありません。</CENTER>";
//名前に使えない文字が入っている時
}elseif($a == 6){
echo " <CENTER>名前に使えない文字が入っています。</CENTER>";
//パスワードが4文字未満のとき
}elseif($a == 5){
echo " <CENTER>パスワードが短すぎます。</CENTER>";
//全ての条件に当てはまらない(実行)
}else{
}
?>
</BODY>
</HTML>
だと何も表示されなくなるのよ(´・ω・`)
0539538
2005/06/12(日) 23:39:42ID:???""が!!になってたよ(´・ω・`)
エラーが表示されなくなって不便になったなぁ
0541nobodyさん
2005/06/12(日) 23:56:33ID:???詳細キボン
(strpos($name,".")||(strpos($name,",")||(strpos($name,"[")||(strpos($name,"]")||(strpos($name,"(")||(strpos($name,")")||(strpos($name,"<")||(strpos($name,">")
↑省略するにはどうしたらいいだろう
strpos($name,".,[]()<>")
ってやてもできんかた
0542nobodyさん
2005/06/13(月) 00:18:30ID:???POSTで変数を得たいのですが
複数ほしい場合に
$_POST['$a','$mail'];
な感じでできますか?
0543nobodyさん
2005/06/13(月) 00:24:03ID:???php.iniかini_setで error_reportingをE_ALLにする。
どの文字も必ず含まれているなら min(strpos($name,"."),strpos($name,",")....)
そうじゃない場合は、オイラなら単純にループさせて最小の値をとるか、
正規表現で発見できるまでの文字列を抜き出してそれの長さを調べるかな。
>>542
詳しく
0545523
2005/06/13(月) 00:34:13ID:???■ このスレッドは過去ログ倉庫に格納されています