【PHP】質問スレッドpart33【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/16(木) 03:19:52ID:xwXojaq/【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0264nobodyさん
2006/02/23(木) 23:51:45ID:???0265nobodyさん
2006/02/23(木) 23:54:03ID:???ヒント:http://jp2.php.net/manual/ja/ref.datetime.php
0266nobodyさん
2006/02/24(金) 00:57:31ID:???0267nobodyさん
2006/02/24(金) 01:03:46ID:???自分の質問が下らないかどうか分かるレベルならこのあたりの質問はしない
つまり質問者にどうこう言ってもねぇ・・
0268nobodyさん
2006/02/24(金) 01:18:16ID:???世の中の質問はみんなくだらなくないと思う。
ぶっちゃけ、くだ質の中でも最低ランクの質問だと思うぞ >>264
0269nobodyさん
2006/02/24(金) 01:40:17ID:???0270nobodyさん
2006/02/24(金) 01:49:26ID:???0271nobodyさん
2006/02/24(金) 02:33:27ID:???「そんな下らない質問するな」とでも書くか?
0272nobodyさん
2006/02/24(金) 04:09:55ID:???となっている動的に返される配列を
array('3','7')
のように変換したいのですが、どうするのがスマートですか?
foreachで展開してまた、配列を作るという頭の悪そうなアルゴリズムしか浮かばないです
orz...
0275nobodyさん
2006/02/24(金) 06:29:28ID:???>>272
ちっとはマニュアル調べろって
http://www.php.net/manual/ja/function.array-values.php
0276nobodyさん
2006/02/24(金) 16:23:17ID:???PHPスクリプトは動いていますがPHPが作ったディレクトリやファイルが消去できなくなっています
FFFTPでパーミッション等の設定をいくら変えてもダメです
で原因はパーミッションでは無くディレクトリやファイルの所有者自体が違うから
まではわかりました(すべてではないが一部ある)
このレンサバの仕様は
CGI の実行権限 others権限(SuEXEじゃないサバ)
ファイルの所有者は私
PHPはCGI版ではなくapacheのモジュールとして動作
CGI を実行するユーザ名 wwwユーザー
つまりPHPが作ったディレクトリやファイルの一部が私ではなくwwwユーザーになっているものが
原因のようです(すべてではないが一部ある)。FFFTP上でも所有者名が違うことがわかります。
Googleしたところ、CGI等が作ったファイルが所有者違いのため消せないことがある
そういう場合はCGIを使って消すべしとあったのでFFFTPで直接消そうとするのではなく
rmdir()やunlink()のスクリプト経由でやってみましたがこれもダメです
今回は最悪サバ缶に消去を頼むとしても、原因を突き止めないと消せないファイルはこれからも
作られ続けるので
PHPのどこを気をつけたらこの症状が防げるか
これを消すPHPのプログラムがあったら教えていただけませんか
0278276
2006/02/24(金) 17:06:05ID:NYH/iAxrエエェェ(´д`)ェェエエ
良ければもう少し詳しく教えていただければ助かります
このサバにいるかぎり直す方法はナイということですか?
共用だから他にも利用者がいるので文句が多数出ないように
そういう仕様にはしないような気もします
この理解は違うのでしょうか
0280nobodyさん
2006/02/24(金) 17:14:51ID:???ディレクトリ自体もphpで掘ったなら、ちょっとめんどうだね
0281nobodyさん
2006/02/24(金) 17:27:08ID:???phpの問題、つうか、セキュリティ上の問題。
セーフモードで動いてるんで、そうなる。
鯖を変えたところで、セーフモードでやってる所じゃ同じ事になるね。
たぶん、phpでファイルを消すスクリプトがおかしいんだろ。
ファイル作ったときに、パーミッションを適正に設定してないとかじゃねーの?
0283nobodyさん
2006/02/24(金) 17:28:26ID:???0284276
2006/02/24(金) 17:31:58ID:NYH/iAxr>ディレクトリ自体をphpが掘ったなら
こういう現象になることがあるということですか?
>>279
PHPスクリプト自体はご機嫌よく稼動しています
エラーはとくに無いみたいです
0285276
2006/02/24(金) 17:46:14ID:NYH/iAxrセーフモードじゃないということで借りています
借りる時(試用期間中)にチェックもしました
http://php.morva.net/manual/ja/features.safe-mode.php
の真ん中のほうにあるチェックの仕方をやってみました
セーフモードじゃないと思っていたこと自体が間違いということでしょうか
>>282
とりあえずディレクトリをPHPに作らせないようにして
一度やり直してみます
どうもありがとうございました
0286nobodyさん
2006/02/24(金) 19:06:51ID:???0287nobodyさん
2006/02/25(土) 12:21:13ID:???0288nobodyさん
2006/02/25(土) 12:31:18ID:???そもそも下らないかどうかなんて、主観というか本人のレベルに依存する話だしな。
0289nobodyさん
2006/02/25(土) 13:56:44ID:???0290nobodyさん
2006/02/25(土) 14:45:50ID:Z8amSH1Wos=windows XP
HTMLコーディング=出来ます。
CGI=有り物の設定をちょこっと変更する程度。
PHPでこんなことをやろうと思っています。
-------------------------------------------------------------------
HPの右隅にカレンダーと新着を置いて、別webページより管理
カレンダー:2ヶ月表示オートで切り替わり、管理ページより指定した日にちだけ
だけ赤く表示・キャンセル機能
新着:管理ページより、新着情報入力追加・削除・コメントリンク機能
-------------------------------------------------------------------
HPで表示するだけ、別webページで管理変更をPHPで作れるのでしょうか?
PHPで出来るとしたら、構造はたぶん頑張って勉強して出来ても、HPへの引き継ぎ処理が何をどうやればいいか見当が付きません。
PHPの根本から勉強しなくては出来ない事でしょうか?
0291nobodyさん
2006/02/25(土) 15:15:28ID:???貴方が使われてる「HP」の意味が不明瞭です。
(HomePageの略であろうことは判ります)
現在のHomePageの意味合いは、Webブラウザでアクセスできる
インターネット上のコンテンツぐらいの大雑把なものなので
CGIやPHPで作った動的なコンテンツもHomePageといえます。
0293nobodyさん
2006/02/25(土) 15:41:53ID:???3回くらい読み返してみましたが
何を聞きたいのかさっぱりわかりません。
適当におぎなって推測しても5通りくらいに解釈できます。
質問を整理してください。
0294nobodyさん
2006/02/25(土) 15:44:41ID:Z8amSH1W不明瞭な表現をし、失礼致しました。
トップページのカレンダーと、新着情報を管理ページからの変更で内容が変わるようにしたいと考えております。
管理用のアクセス制限ページを作り、そこで変更・追加・削除の管理したいと思っております。
0295nobodyさん
2006/02/25(土) 15:51:55ID:???いや、具体的な機能(表示とか管理)の話以前に
「HPへの引き継ぎ処理が」というところで
その"HP"って何よ?という疑問がでるということ。
0296nobodyさん
2006/02/25(土) 16:00:13ID:Z8amSH1W1.PHPでサイトトップページの二ヶ月表示のオートカレンダーの色変更を別ページから、更新できるようにすることが可能でしょうか?
2.PHPでサイトトップの新着情報の変更・追加・削除・を別ページから、更新できるようにすることが可能でしょうか?
3.PHPで出来たとしても、(テンプレ等探しましたが見あたらず)本を読む程度の漱石じゃ不可能そうでしょうか?
0297295
2006/02/25(土) 16:00:20ID:???そのトップページの生成方法を
・新着情報等をincludeするSSIを利用したshtmlにする。
・新着情報等をincludeするPerlやPHPを利用したCGI他の動的なものにしてhtmlを出力する。
・トップページは静的なhtmlにして、そのhtmlを別の管理プログラムで書きかえる。
0298295
2006/02/25(土) 16:03:27ID:???これはincludeじゃなくて「取り込む」という意味で
0299nobodyさん
2006/02/25(土) 16:07:13ID:???PHPでそういうサイトを作れるか?ということであれば、作れます。
> PHPの根本から勉強しなくては出来ない事でしょうか?
ある程度自在に操れない人の場合、自作するのはかなり困難でしょう。
残念ながら、そういう仕組みの既存のスクリプトがあるかどうかは知りません。
>>295
引継ぎ、つーか、(PHPスクリプトが処理する)変更を(HTMLで作ろうとしている)画面上に反映、ってことだべ。
HTMLにPHPを埋め込める つー悲しい誤解が導き出した悲劇だぁね。
実際には、こういう手順になる。
1. もともとhtmlファイルだったものをphpの中の人が処理できるように拡張子phpに変更する。
2. 必要に応じてphpの命令を埋め込む。
0300290
2006/02/25(土) 16:13:10ID:Z8amSH1Wありがとうございます。
解決の糸口が見えてきた気がします。
メモして、何とか探して勉強してみます。
0302nobodyさん
2006/02/25(土) 16:14:48ID:???>>290は>>293と>>295のレスから
どうやって解決の糸口を見つけたのか…
謎は永遠に残ったままなのであった
0304nobodyさん
2006/02/25(土) 16:32:22ID:???0305nobodyさん
2006/02/25(土) 16:35:37ID:???0306nobodyさん
2006/02/25(土) 17:25:15ID:cZFcTwP1<rdf:Seq><rdf:li rdf:resource="http://www.hoge.com/test.php"/>
このようなタグや属性があった場合
getElementsByTagName("rdf:Seq")やgetAttribute("rdf:resource")ではうまくいかず
getElementsByTagName("Seq")やgetAttribute("resource")と書くとうまくいくのですが
このような事が起こってしまう原因をご存知の方はいますか?
できれば正確な名前"rdf:Seq""rdf:resource"でアクセスするようにしたいです
0310皮先くん ◆N3i.Qu1SoY
2006/02/25(土) 19:59:19ID:???ttp://oresama.hopto.org/~sheel/nwbachlow.shtml
このように2006年2月の各都市の最低気温の平均値を自動算出させて
使っています。重宝しているのですが、スクリプトをいちいち書き換えなければ
現状では2006年の2月しか対応できません。
そこで質問です。
formを使って○年の△月の○と△の部分をshellscriptに送る方法は
ありますか?
もしくはshellscriptではなく
phpで2006年2月の各都市の最低気温の平均値を自動算出可能ですか?
0311nobodyさん
2006/02/25(土) 20:06:18ID:???> phpで2006年2月の各都市の最低気温の平均値を自動算出可能ですか?
データがあれば、スクリプト組めば算出できるんじゃね?
shellscriptはスレ違いだと思う。
0312nobodyさん
2006/02/25(土) 20:08:33ID:???bashスクリプトがコマンドライン引数を受け取って処理できるようにしてあれば
$output = `スクリプト $引数`; って形でスクリプト呼んで出力を受け取れるよ。
0313nobodyさん
2006/02/25(土) 20:32:21ID:???0315皮先くん ◆N3i.Qu1SoY
2006/02/25(土) 20:46:54ID:F0bSXXFWありがとうございます。
データは気象庁のWebサイトからcurlコマンドで取得しています。
phpでは、bashみたいに
(1)curlして
(2)好きな行の好きな数値だけをgrepやsedでピックアップ
ってなところも可能ですか?
0316nobodyさん
2006/02/25(土) 22:28:03ID:???0317nobodyさん
2006/02/25(土) 22:49:04ID:???0318nobodyさん
2006/02/25(土) 23:58:42ID:???0319nobodyさん
2006/02/26(日) 00:01:22ID:???ば、ば・・バナナはおやつにはいるんですか?
0320nobodyさん
2006/02/26(日) 00:32:55ID:???むかーしハマったの思い出した。。
コレ使ってみ
function delDir( $dirname )
{
if ( ! file_exists( $dirname ) ) return "見つからない";
$dh = opendir( $dirname );
if ( $dh === false ) return "開けない";
while ( ( $file = readdir($dh) ) !== false ) {
if ( $file == "." || $file == ".." ) continue;
if ( ! unlink( $file ) ) {
closedir( $dh );
return "ファイルが消せない→$file";
}
}
closedir( $dh );
if ( ! rmdir( $dirname) ) return "だめでした";
return "おしまい";
}
0322nobodyさん
2006/02/26(日) 00:49:02ID:???あー、こうかな
if ( ! unkink( $file ) && ( ! chmod( $file, 0666 ) || ! unlink( $file ) ) ) {
0324皮先くん ◆N3i.Qu1SoY
2006/02/26(日) 02:26:44ID:WcIHh0oV>>242
の件ですが、
ttp://oresama.hopto.org/~sheel/phptest/formtest/form.php
このようになんとかうまくいくようになりました。
form.phpで書き込まれた(または選択された)値について
POSTでform.phpへ値を返すようにしています。
>>241
でつまずいていた原因がわかりました。
それはPOSTで値を受け取る方法が
$name
として受け取っていたからでした。
正しくは(PHP4.3の場合は)
$POST_name
が正しいのです。
俺様自力で何でも解決できちゃう強者なので、
そのすごさをここでおまいらにいちいち報告してやりますね。
0325nobodyさん
2006/02/26(日) 02:37:38ID:???0326皮先くん ◆N3i.Qu1SoY
2006/02/26(日) 02:42:30ID:WcIHh0oV0327nobodyさん
2006/02/26(日) 03:16:23ID:???0328nobodyさん
2006/02/26(日) 03:18:22ID:???0329nobodyさん
2006/02/26(日) 03:49:50ID:tRG/7BVDphp.iniは間違いなく設定してある
同時にログを取るためにfwrite関数を使ってるけどこれも化けてない
考えられる原因を全て答えろ童貞うんこちんこども
0330nobodyさん
2006/02/26(日) 03:59:19ID:???mb_internal_encoding("使ってる文字コード");
これをmb_send_mailする前に呼べばうまくいったような覚えがするが
動かなかったらごめんね、小便野郎
0331nobodyさん
2006/02/26(日) 04:01:30ID:???0332nobodyさん
2006/02/26(日) 04:05:05ID:???0333皮先くん ◆N3i.Qu1SoY
2006/02/26(日) 04:16:24ID:WcIHh0oVttp://oresama.hopto.org/~sheel/lowestbach.shtml
PHPでもこの程度のことが簡単にできるといいんだが・・・。
0334nobodyさん
2006/02/26(日) 10:50:39ID:???0335nobodyさん
2006/02/26(日) 11:02:06ID:???0336nobodyさん
2006/02/26(日) 11:14:21ID:???0338nobodyさん
2006/02/26(日) 11:55:23ID:???個人的にはこっちのスレ残して欲しい。くだ質は読んでないし書き込みもしてないし。
まあ本当にスレの必要がなくなれば誰も書き込まなくなって自然に落ちるのだから統合だのなんだの言うだけ無意味だが。
人がいる限りどうせ次スレ立つでしょ。
0339nobodyさん
2006/02/26(日) 12:07:01ID:???0340nobodyさん
2006/02/26(日) 12:29:18ID:???平均点10のテストなんて中学生に東大入試解かせるとかそんなんだろ
実際は数学英語国語全て偏差値30以下の池沼なんだろうけど
0341nobodyさん
2006/02/26(日) 12:33:24ID:???90なんてハッタリは偏差値の概念知ってたらこけないから>>174は中卒だろ。
0342nobodyさん
2006/02/26(日) 12:41:01ID:???池沼学校で国語偏差値30なら池沼の中の池沼だなwwwwwwww
0343nobodyさん
2006/02/26(日) 12:41:10ID:???0344nobodyさん
2006/02/26(日) 13:13:54ID:???また来られたらウザイしもうやめようやそのネタ
0345nobodyさん
2006/02/26(日) 14:24:47ID:???ここはPHPのスレなんだから、質問以外の会話は必要ないだろう?
大人数で一人の人間を攻撃するなんて君たちは最低のクズだな
0346皮先くん ◆N3i.Qu1SoY
2006/02/26(日) 14:27:36ID:dOqMy4uq全国平均点が10点もないとんでもないテストがあって、
それで100点取ってみたら偏差値105くらいだったよ。数学な。
まぁ2年の最初で3年も一緒に受けるテストだったからそれくらいの平均点はしょうがないし。
それにしても>>342の言うことは正しい。
東大に行ったくらいで神扱いな底辺高校だった。
0347nobodyさん
2006/02/26(日) 14:33:01ID:???ループ内でcontinue使いまくりで最後ってどこよ?てときに
for( $i=0; $i<100; f(),$i++ ){
$i++のとこによく関数呼び出しいれちゃうんだけど、これって
マナー的にはどうなの?
0348nobodyさん
2006/02/26(日) 14:46:53ID:???ループ内で条件分岐させた方がスマートだと俺は思う。
0349皮先くん ◆N3i.Qu1SoY
2006/02/26(日) 14:53:45ID:dOqMy4uqの件なんですが、
formでPOSTされたものをphpスクリプトで受け取る方法はわかったのですが、
POSTされた値をtext.batファイルに書き込むことがいまいちわかりません。
これはどうやったらいいのでしょうか?
今は↓こんなふうにやっていて、submitするとtext.datに
書き込まれるはずなんだけどなぁと思いますがうまくいきません。
ちなみにアクセス権はよくわからないのでなにも考えなくていいように
全部777にしています。どうも「print」の部分はうまくいくのに、
「fopen」関連はちゃんと動作していない感じです。text.batに何も書き込まれないので。どこがわるいのでしょうか?
<?php
$filename = "text.dat";
if (isset($_POST['submit'])) {
print "Your name is " . $_POST['name'] . ".<br>";
print "Your sex is " . $_POST['sex'] . ".<br>";
print "Your hobby is " . $_POST['hobby'] . ".<br>";
print "Your OS is " . $_POST['OS'] . ".<br>";
print "Your opinion is " . $_POST['kansou'] . ".<br>";
$file = fopen($filename,"w");
flock($file, 2);
fwrite($file, $POST_['name']);
fwrite($file, $POST_['sex']);
fwrite($file, $POST_['hobby']);
fwrite($file, $POST_['OS']);
fwrite($file, $POST_['kansou']);
flock($file, 3);
fclose($file);
}
?>
0350nobodyさん
2006/02/26(日) 15:04:02ID:???典型的に頭悪いガリ勉タイプだと思う
0351nobodyさん
2006/02/26(日) 15:55:59ID:izomZemY質問なのですが、
if文の条件部分に間違えて代入演算子を使ってしまったのですが
PHP、アパッチ共に怒ってくれませんでした。
if( $hoge = "hogehoge" )
{
}
で、入門書で調べたところ、
「気をつけてコーディングしてください」
とだけあったのですが、
皆さんは、自分で気をつける以外の方法をお持ちですか?
(チェックツールのようなもの?)
0352nobodyさん
2006/02/26(日) 16:06:39ID:???0353nobodyさん
2006/02/26(日) 16:09:31ID:???その間違い間違いであるがエラーではないからだれも教えてくれません。
その手のミスを防ぐ原始的な方法としては
if ( "hogehoge" == $hoge) ;
と書くようにすること。こうすれば "hogehoge" = $hoge はエラーとなるのでわかりやすい
0354nobodyさん
2006/02/26(日) 16:16:39ID:???で良く使われるヤツだな。
NULL == $xって最初は何だ?って思うんだけどね。
0355nobodyさん
2006/02/26(日) 16:20:59ID:???ifの条件式の中で代入演算子が使えなくなったり怒られたりするようになると、手間が増えて面倒。
特にNULL,FALSE,なんかの値(や配列)のどれかを返す関数を使う場合、ifやwhileの条件式の中で使うとすっきりと書ける。
ミスの対処法は>>353が書いてるようにするくらいしか無いんでね?C FAQでも見かけた希ガス。
0356nobodyさん
2006/02/26(日) 16:23:25ID:???0357nobodyさん
2006/02/26(日) 16:37:46ID:YAFRqcKG0358nobodyさん
2006/02/26(日) 16:39:13ID:izomZemYいや、ホント助かりました。
ありがとうございます。
VB→C#とやってきてるのですが、
$hoge = 12;
$hoge = "test";
#hoge = date("Y");
とか、型宣言してないのに。。とか、驚き中です。
先ほどの質問後にIDEでもあればいいのかなと思い、
ttp://phpspot.net/php/phpeditor.html
がHITしたので、特徴にある、
「・構文チェック機能 … ボタン一発で構文エラーがないかチェックできます。」
で、前述のif($hoge = "hoge")が怒られるかどうか確認してみます。
>>354
あ〜、なるほど〜って感じです。
先輩。助かりましたよ。
ありがとうございます。
>>355
そうですよね、条件文内で関数使いますもんね。
>特にNULL,FALSE,なんかの値(や配列)のどれかを返す関数を使う場合、ifやwhileの条件式の中で使うとすっきりと書ける。
これ、メモっておきました。
ありがとうございます。
ちょっとした疑問追加です。
echo関数の引数に、改行コードを含めるのは慣例で、
理由はHTMLとして出力された時に読みやすくする為という事でよいですか?
0359nobodyさん
2006/02/26(日) 17:00:53ID:???> 「・構文チェック機能 … ボタン一発で構文エラーがないかチェックできます。」
> で、前述のif($hoge = "hoge")が怒られるかどうか確認してみます。
それを怒るIDEは存在しないと思いますよ。構文としては合ってるし、よく使うから。
if($hoge = hoge()) {
hoge2($hoge);
}
みたいな感じで、関数の戻り値をチェックするのと同時に変数に格納しといて
ifの中でその値を利用する…みたいな書き方は普通にやります。
よく使うケースは
if($fp = fopen("file", "a")) {
fputs($fp, $data);
}
$hoge = hoge();
if($hoge) {
hoge2($hoge);
}
と分けてもいいんだけどかえって煩わしいので。
それにしても if("hoge" == $hoge) ってミスタイプ防止が目的だったのか…
同じ会社でこういうコーディングする人がいるから何でだろうとずっと思ってたよ。
0362nobodyさん
2006/02/26(日) 17:04:43ID:???>>358
> echo関数の引数に、改行コードを含めるのは慣例で、
そんな慣例は無いと思うけど。
> 理由はHTMLとして出力された時に読みやすくする為という事でよいですか?
出力に改行が欲しければ改行を付ける。不要なら付けない。そんだけ。
HTML中の改行は、場所によっては無視されるのでデザインに影響しないけど、
場所によっては表示に隙間ができたりする場合もあるから要不要はちゃんと考えないと。
■ このスレッドは過去ログ倉庫に格納されています