【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辺り
0233nobodyさん
2006/02/23(木) 11:47:54ID:???もし板違いスレ違いだったら誘導していただけると助かります。
PHP5でSimpleXMLを使ってXHTMLファイル処理したいのですが、
どうも <html> 要素に xmls="http://www..." を指定すると、xpath()でノードを取得できなくなってしまいます。
xmlns 属性をまるごと消すと、目的のノードを取得できるようになります。
なぜ xmlns を指定すると取得できなくなるのか、原因と対策をご存知でしたら回答お願いします。
-----------------------------------------------------
【src.html】(このXHTMLの <html> 要素から xmlns を削除するとちゃんと取得できます)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="ja" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>テスト</title>
</head>
<body>
<div id="nullpo">
ぬるぽ
</div>
<div id="ga">
ガッ
</div>
</body>
</html>
【test.php】
$sxml = simplexml_load_file('./src.html');
$xpath = "//div";
$res = $sxml->xpath($xpath);
var_dump($res[0]);
0236nobodyさん
2006/02/23(木) 13:50:14ID:cRiHYjaVありがとうございます
0237221
2006/02/23(木) 14:05:43ID:???あ、すみません。全くその通りですた・・・ooorz
ttp://oresama.hopto.org/~sheel/phptest/bbs/gazou.php
このBBSはまんま「レッツPHP」さんの秀逸なBBSを
そっくりそのままの形で設置してみましたのです。
これをわたしがつくったかのように書いてしまったのはすみませんでした。
わたしはただ、PHP例文に多く触れることにとにかく主眼を置いていますので
とりあえず設置してみただけです。
設置、とひとことで言っても、これを行うにはMacOSXの
Terminalを使用してchmodコマンドを駆使したり、
mkdirコマンドを駆使したり、割と様々なテクニックが必要であり
1年前のわたしではまったくできなかったことでした。
とにかく「今そこにあるPHPプログラム」を少なくとも
「設置」くらいはできるようになった、と感動すら覚え、
まるでこどもが親に「ほら、ボク、こんなことができたYO!」
と言っているかのような錯覚に陥っていたのも事実でした。
0238nobodyさん
2006/02/23(木) 14:08:14ID:???データベースの作成?流用?も楽々っぽい印象を思っています。
PHPのデータベースとの親和性を前面に打ち出して、
「署名をつのるためのPHPブログラム」
をつくってみたいと思います。
今、具体的に頭に描いているのは、
名前
所属
メールアドレス
コメント
というのをそれぞれ入力してもらい、
[投稿する]ボタンをクリックすると投稿される、というものです。
これはまんまBBSの形に似ているので、BBSを動かすPHPプログラムを
ちょちょっとせせるだけでなんとかならないかなぁと思っています。
もしなにかアドバイスがありましたらひとことだけでもよろしくお願いします。
0239nobodyさん
2006/02/23(木) 14:50:33ID:???mysql_real_escape_stringかmysql_escape_string
どちらがいいかはマニュアル調べれ
0240nobodyさん
2006/02/23(木) 15:14:06ID:???これからも、ここに書き込むのなら、
名前を固定にしてトリップをつけると幸せになれると思いますよ。
3年も2chに馴染まれているので、今更でしょうけど、
念のため、名前欄で「俺様#hogehoge」とかであなただけのトリップが持てますからね。
是非。
0241皮先くん ◆N3i.Qu1SoY
2006/02/23(木) 15:42:12ID:???これでいいですか?
ではさっそく。
>>238
を実現するためには、php超ド初心者の俺としては
まず、軽いステップを踏む必要があると思い、
ここを参考にして<form>からPOSTで受け取るスキルを更新しようと
しています。
ttp://php.dori-mu.net/news.html
全くこの通りにやっているのですが、
どうにもうまくうごきません。
まず、
ttp://oresama.hopto.org/~sheel/phptest/news/newspost.php
これをやると、「hogehogeのように書き込まれました」
と表示されるはずなのですが、そうはなりません。
news.batへの書き込みがうまくいってないような感じです。
パーミッションの問題かな、と思ってnews.batは
「だれでも書き込み可」にしてみましたがダメですた・・・orz
どうしたらいいのでしょうか?
0242皮先くん ◆N3i.Qu1SoY
2006/02/23(木) 15:48:29ID:???このように
ttp://oresama.hopto.org/~sheel/phptest/news/
news.datとnewspost.phpとprintnews.phpは同じディレクトリ内に
存在しています。
あと、エディタを使ってnews.datに1234と一行書き込むと、
printnews.phpは正常に動作するようです。
ttp://oresama.hopto.org/~sheel/phptest/news/printnews.php
なぜ>>241のnewspost.phpがうまく動作しないのか、
ヒントだけでも教えていただけると助かります。
0243nobodyさん
2006/02/23(木) 16:19:18ID:???0244皮先くん=241=242 ◆N3i.Qu1SoY
2006/02/23(木) 16:53:38ID:???スキルアッププロジェクトは遅々として止まったままです。
news.batへの書き込み自体はどうもうまく行っているようです。
なぜかというと、if分岐を削除すると
ちゃんと[]のnullが書き込まれているからです。
問題の根源は、formからsubmitとcontentsを
postしてないか、postされているのに受け取れない、
のどちらかかと思われます。
apacheの設定でformからのpostを有効にする、って設定が
あったりするんですかね・・・。で、それが無効になっている、と。
ちょっとその辺をひとりで調べてみますね。
0245nobodyさん
2006/02/23(木) 16:54:04ID:???0247皮先くん=241=242 ◆N3i.Qu1SoY
2006/02/23(木) 17:17:49ID:cy2LQUXfIDを出さない行為がよくない行為だというのは初めて知りました。
これからはIDもトリップも露出して正々堂々と闘うことを誓います。
>>244
の続きの話ですが、
どうもapacheは最初からpostとかgetとかサポートしているみたいですね。
というか世の中ほとんどGETなどの世界でWWWが存在しているっていうかw
う〜む、原因がわからない。
誰も教えてくれないようなのでひとりで悩むより
次の課題に取り掛かりたいと思います。
課題を思いついたらまた書き込みますね。
誰かが課題を出してくれても大歓迎です。
PHPのスキルの更新が目的ですので。
0248nobodyさん
2006/02/23(木) 17:22:49ID:???0250nobodyさん
2006/02/23(木) 17:47:28ID:???ありがとうございます
一応自力でどうにかする方法も見つけたのですが、こっちの方がスマートそうです
4.3以降はmysql_real_escape_string
それ以前はmysql_escape_string
を使うようです
0252nobodyさん
2006/02/23(木) 17:48:47ID:???0253nobodyさん
2006/02/23(木) 17:59:57ID:???0254nobodyさん
2006/02/23(木) 18:10:22ID:QpcRsDDOUTF-8でPHPなども組んできたいと思います。
sjisだとsubstr関数が上手くいかないなどの問題点を聞いた事はありますが、
URF-8の問題点などございましたら教えてください。
ちなみに、現在はEUCを使用しております。宜しくお願いします。
0255nobodyさん
2006/02/23(木) 18:14:23ID:cy2LQUXf皮先はちょうど太陽のような存在だろう。
あぽーんさせないためには普通はトリップをつけないことを
考える(=北風)が、皮先は太陽のように
自分からあぽーん設定を解除させる術に長けている。
>>251
>そんなこと言っちゃったら名無しに戻っちゃうだろ
それを敢えてせずに真っ向勝負が皮先クオリティ。
いつしか皮先のハイクオリティな書き込みを見たくて
透明アポ〜んを外したくなる、それが皮先。
0257nobodyさん
2006/02/23(木) 18:42:06ID:???ここの回答者全員バカじゃんwwwwwwwwww
0258nobodyさん
2006/02/23(木) 18:48:56ID:???か
0259nobodyさん
2006/02/23(木) 18:56:29ID:???書き込む人間が愚かだったからとしか言いようが無い。
0260nobodyさん
2006/02/23(木) 20:09:16ID:???0261nobodyさん
2006/02/23(木) 20:14:14ID:???Unicodeから他の文字セットに変換する際に
その変換テーブルが統一されてないので、
文字の一部で変換に環境による違いが発生する。
0262nobodyさん
2006/02/23(木) 23:19:47ID:???function hoge(){//本当はもっと複雑です。
$a = 'hoge';
}
echo $a;
みたいなことがやりたいのですが、出来ませんでした。
逆はglobalで出来るのですが、このパターンは分かりませんでした。
ご存じの方教えてください。
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:???■ このスレッドは過去ログ倉庫に格納されています