【PHP】質問スレッドpart21【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/08/27 18:00ID:???・新規質問の方は上げてください。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-4
0293272
04/09/01 12:24ID:???Windowsメモ帳で開いていたのが原因で、ほかのエディタで開いたら
ちゃんとできてました。
みなさん親切に答えてくれてありがとうございました。
ご迷惑かけました。
0294nobodyさん
04/09/01 12:28ID:???0295nobodyさん
04/09/01 12:43ID:???0296nobodyさん
04/09/01 13:54ID:???ドンマイ
0297nobodyさん
04/09/01 14:00ID:???0298nobodyさん
04/09/01 14:36ID:???TABだと開くエディタの設定によってインデント幅が
変わってしまうのでスペースだな。
特に複数人でソースいじるような場合はそう。
0299nobodyさん
04/09/01 14:40ID:???mb_send_mailでメールを送信すると激しく文字化けが起きます。
mb_language("ja")で指定もしてます…
php_iniの設定が間違ってるのだと思うのですが、何処をどの様に変更すれば宜しいですか?
ご教授願います。
0300nobodyさん
04/09/01 14:42ID:???でもエディタによってはスペースでインデントする機能が無かったりするしなぁ。
おれは普段はTAB使ってる。
スペースインデントがいいって言われたら、TABで書いたのをツールで変換してる。
0301nobodyさん
04/09/01 14:43ID:QcGal7pvどういう方法が一番高速ですか?
0302nobodyさん
04/09/01 14:52ID:VNRqZmigたしかそんなことあったなぁ。
mb_internal_encoding('EUC-JP');
を指定してみて。
0305nobodyさん
04/09/01 16:34ID:/FAqwI15printf("%x\n", "あ");
で、ffffa4a2といったように、a4a2という文字コード
がもらえるのですが、
PHPだと
printf("%x\n", "あ");
とすると、「a4」しか拾えません。
mb系の関数はあまり使いたくないのですが、それでも
いいので何か良い方法ありますでしょうか。
0306nobodyさん
04/09/01 16:45ID:???Cで printf("%x\n", "あ"); とやって得られた ffffa4a2 は文字コードではありません。
"あ" という文字列の格納されているアドレスです。
0307nobodyさん
04/09/01 17:20ID:/FAqwI15書きまちがえました
printf("%x\n", 'あ');
です。
で本題をお分かりの方いらっしゃいますでしょうか。
0309軟式PHP
04/09/01 17:37ID:???L -‐ '´  ̄ `ヽ- 、 〉
/ ヽ\ /
// / / ヽヽ ヽ〈
ヽ、レ! { ム-t ハ li 、 i i }ト、
ハN | lヽ八l ヽjハVヽ、i j/ l !
/ハ. l ヽk== , r= 、ノルl lL」
ヽN、ハ l ┌‐┐ ゙l ノl l
ヽトjヽ、 ヽ_ノ ノ//レ′
r777777777tノ` ー r ´フ/′
j´ニゝ l|ヽ _/`\
〈 ‐ 知ってるが lト、 / 〃ゝ、
〈、ネ.. .lF V=="/ イl.
ト |お前の態度が とニヽ二/ l
ヽ.|l 〈ー- ! `ヽ. l
|l気に入らない lトニ、_ノ ヾ、!
|l__________l| \ ソ
0310305
04/09/01 17:40ID:???0311nobodyさん
04/09/01 17:57ID:GSYA0qV6それもうまく動かない気がするけどなぁ・・・
とりあえず本題は
$a=unpack('H4', 'あ');
ってやって $a[1] を評価したらどうよ?
0314nobodyさん
04/09/01 18:18ID:???<form method="post" action="hogehoge.php">
<button type="submit" name="hage" value="tsurupeta">push!</button>
</form>
において、hogehoge.phpで$_POST[hage]の値が、
"tsurupeta"ではなく、"push!"が入っています。
valueで設定した値を取り出すことはできないのでしょうか?
0315nobodyさん
04/09/01 18:24ID:???<input type="hidden" name="hage" value="tsurupeta" />
<input type="submit" value="push!" />
</form>
こうやってみたら?
0316314
04/09/01 18:33ID:???すいません。言葉足らずでした。
実はボタンを複数置きたいのです。
質問を書き直すと、
<form method="post" action="hogehoge.php">
<button type="submit" name="hage" value="tsuru">push!</button>
<button type="submit" name="hage" value="peta">push!</button>
<button type="submit" name="hage" value="tsurupeta">push!</button>
</form>
として、
hogehoge.phpでどのボタンが押されたか判別したいのです。
ボタンのnameは同じにしたい
formタグはひとつですませたい
htmlタグ以外の技術はなるべく使いたくない
というのが希望です。
$_POST[hage]にvalueの値でなく、nameの値が入っているのは正常な動作なのでしょうか?
そうだとするとvalueの値ってのはいったい何の意味が。。。
よろしくお願い致します。
0317nobodyさん
04/09/01 19:03ID:???<form method="post" action="hogehoge.php">
<button type="submit" name="hage[tsuru]" value="push!" />
<button type="submit" name="hage[peta]" value="push!" />
<button type="submit" name="hage[tsurupeta]" value="push!" />
</form>
って感じにして、
$hoge=key($_POST['hoge']);
$hoge=pop($hoge);
ってのはどうよ?
試してないからうまくいくか知らないけど。
0318nobodyさん
04/09/01 19:05ID:???セットで送信されるに ''==ァ-‐‐,'゙<l _,,
決まってるじゃん `、:/::r'゙゙'_ェ'゙゙i、._ /ラノ マタ
,=キヅ `'ラ/ヾ/ (シフ マタァ〜 ゴジョウダン ヲ
,ケ:: ',. / ,:'゙
と思って試してみたら、ほんとにおかしな挙動をする。
有名なバグなのかなぁ。オイラは初めて知った。
(buttonはトリガーにしか使ったことがない。)
で、検索してみると http://d.hatena.ne.jp/nekoshiki/?of=4 がヒットした。
検索ワードは、「仕様 していない button value」。
0319nobodyさん
04/09/01 19:48ID:???IE 5.5, IE 6.0 → ボタンに表示されているものが入る。
Mozilla 1.7, Opera 7.54, Lynx 2.8.4 → valueが入る。
IEは「正常に」動作しているので改心してください。
0321nobodyさん
04/09/01 19:59ID:???0322nobodyさん
04/09/01 20:02ID:???一つの問題には多数の解法があるのに、何故それにこだわってやってるのかと…
0323nobodyさん
04/09/01 20:52ID:???>出力すると \r\n に変換されて記録されるよね。
だれか突っ込んであげないの?
0324nobodyさん
04/09/01 20:59ID:???<input type="submit" name="hage" value="push2>
<input type="submit" name="hage" value="push3>
でhageの中身見ればいいじゃん
0325nobodyさん
04/09/01 21:11ID:eg9a6m5n0326nobodyさん
04/09/01 21:12ID:/v+NW53mhttp://www.yuyuweb.com/garden/bbs/ccbmbs1/bbs1.cgi?room=1234
0330314
04/09/01 21:39ID:???IEの方言だったのですね。。。
ということはこのまま進めて解決してもIE以外では使えないって事か。。。
>>317
keyでは用意されたボタンの一番初めのキーが返ってくるようです。
つまり、例の場合だと、何を押してもtsuruが返ってきます。
用は、連想配列の要素にpush!が入ってるのはどのキーか探せばいいわけですね。
使えそうな配列関数を探してみます。
>>322
すんません。
はじめたばかりなんで、調べたこと以外のことはなかなか思いつかなくて。。。
ボタンの数が変動する上、キーの名前が固定されていないので、
issetでではむつかしいかな?
よくわかんないんですが。
>>324
ボタンに表示される名前をすべて同一にしたいのでダメかな。。。
>>325
その皮肉?すらわからない初心者でして。。。すんまそん。
みなさん、ありがとうございました。
もうちょい苦しんでみます。
0331nobodyさん
04/09/01 21:45ID:???<form method="post" action="hogehoge.php">
<input type="hidden" name="button" value="1">
<input type="submit" name="hage" value="push>
</form>
<form method="post" action="hogehoge.php">
<input type="hidden" name="button" value="2">
<input type="submit" name="hage" value="push>
</form>
<form method="post" action="hogehoge.php">
<input type="hidden" name="button" value="3">
<input type="submit" name="hage" value="push>
</form>
0332317
04/09/01 21:57ID:???実験してみたら、押してないボタンの内容まで全部送られてるっぽいから、どのボタンが押されたかの判定は無理っぽい。
>>318 の問題そのまんま。
button じゃなくて input を使うといいっぽいよ。
<form method="post" action="hogehoge.php">
<input type="submit" name="hoge[tsuru]" value="push!" />
<input type="submit" name="hoge[peta]" value="push!" />
<input type="submit" name="hoge[tsurupeta]" value="push!" />
</form>
って感じにして、
$hoge=key($_POST['hoge']);
$hoge=$hoge[0]; // さっきは pop を使ったけど、これでいいよね
これで OK じゃない?
0333nobodyさん
04/09/01 22:03ID:2OWt62Va$a = substr("abcdefg",1,3);
こんな感じでやっていたのですが、
「二文字目からからfに当たるまでを切り出したい」
というような場合はどうしたらいいのでしょうか?
0334317=332
04/09/01 22:04ID:???ボタンは同時に 1つしか押されないから、$_POST['hoge'] に含まれるキーの数は 1つってことで、
$hoge=key($_POST['hoge']);
これは Array が返るんじゃなくて、そのままキーが返るね。
だから、この 1行だけで OK みたい。
$hoge=$hoge[0] の行はいらない。
>>325
それを使ってどんな解決法があるのか教えてくれ。
ぜひ参考にしたい。
0335314
04/09/01 22:13ID:???formタグを複数使うと段落の成形がずれていくので。。。
すいません。
>>332>>334
デキタ━━━━━(゚(゚∀(゚∀゚(☆∀
理論がわかんないので調べますw
ありがとうございました。
0340nobodyさん
04/09/01 22:29ID:???PerlのファイルからPHPのファイルに変数を送ることはできますでしょうか?
例えば、Perlファイルで $a=3 という変数を
PHP側でも使用できるようにしたいのです。
0341nobodyさん
04/09/01 22:46ID:???0342nobodyさん
04/09/02 00:22ID:???0343nobodyさん
04/09/02 14:25ID:???何がやりたいのかよくわかんないけど、
Perl のファイルから Perl のファイルへ変数を送ることはできるんですか?
そのサンプルコードを提示すれば、きっとあなたのやりたい事が理解できると思いますし、
だれかからなんらかのアドバイスももらえるんじゃないでしょうか。
0344nobodyさん
04/09/02 15:54ID:???ファイルのサイズが大きいのでreadfileを使わず
読み込みバイトを区切って出力していくにはどうしたらよいでしょうか
0347344
04/09/02 16:22ID:???分割ではなくて、
$fd = fopen($filename, "rb");
while(!feof($fd)) {
echo fread($fd, 4096);
};
fclose ($handle);
ってやってみたのですが、だめだったんです。
0348344
04/09/02 16:23ID:???$fd = fopen($filename, "rb");
while(!feof($fd)) {
echo fread($fd, 4096);
};
fclose ($fd);
でした
0350nobodyさん
04/09/02 16:33ID:???ファイルを copy() させたいのですが
failed to open stream: Invalid argument
と言われます。パスに空白があるせいなのですが、どうしたらいいでしょうか?
0351nobodyさん
04/09/02 16:46ID:???だめって、どうだめなのよ?
で、そのコードは readfile とほとんど同じことをするものに見えるけど、なんで readfile じゃいけないの?
0352nobodyさん
04/09/02 16:49ID:???アップロード先ディレクトリのパーミッションが777以外で使えないのですが
他のパーミッションで使える方法ってありませんか?
0353nobodyさん
04/09/02 16:51ID:???Linux上で動いてるPHPだけど、スペース入りのパス作って Copy したけど、ちゃんと動いたよ。
スペースの問題じゃなくて、\ 記号をエスケープしてないとかじゃない?
0354344
04/09/02 16:54ID:???if ($fd = fopen($filename, "rb"))
としてやってみましたが、成功しているようです。
>>351
ファイルサイズが小さいものであればreadfileでできたのですが
ファイルサイズが大きいものをreadfileすると
ブラウザ上でサーバーが見つかりません
と表示されてしまいます。
0357nobodyさん
04/09/02 17:06ID:???なにが原因かはわかんないけど、サーバが見つかりませんってのは解せないね。
ループ一回ごとに Ob_Flush でも入れてみたらいいことあるかな?
0358nobodyさん
04/09/02 17:19ID:???0359nobodyさん
04/09/02 17:24ID:???0360344
04/09/02 17:37ID:???if ($fd = fopen($filename, "rb")) {
while(!feof($fd)) {
echo fread($fd, 4096);
ob_flush();
}
fclose ($fd);
}else{
echo "open error";
};
正しいかわかりませんが
でうまくいきました!ありがとうございました。
0363nobodyさん
04/09/02 21:12ID:???707はchmodとか使わない限り不要だろ
0364nobodyさん
04/09/02 21:34ID:???0365nobodyさん
04/09/02 21:39ID:???0366nobodyさん
04/09/02 22:55ID:???formの値がクリアされるが値を残す方法はありまつか?
0367nobodyさん
04/09/02 23:39ID:???JavaScriptとCookieで実現するのが一番常道だとは思う。
一応できなくはない、と。
0370nobodyさん
04/09/03 01:38ID:???テンプレート使ってるんだけど、そのページからsubmitして
confirmページへ飛ばして確認させて、間違いがあった人って
大半が「ブラウザの戻る」で戻しちゃんうんですよ。
0371nobodyさん
04/09/03 02:33ID:???0373nobodyさん
04/09/03 17:06ID:J5j4fe3Zphp /path/to/a,php
と起動すると問題なく実行できるのですが、
cron から 起動すると cronの実行は行われているのに、
a.phpの処理は行われないようです。
a.phpはエラーを吐くと思うのですが、
どうやってエラーを拾えばいいでしょうか?
php.ini の
log_errors = On
error_log = /path/to/error.log
を設定しましたが、エラーログははかれていないようです・・・
1行目のCGIコマンドを追加すべし。
#!/usr/local/bin/php
0375nobodyさん
04/09/03 17:43ID:???php コマンドにパスが通っていないだけでは?
cron に登録際に絶対パスで php コマンドを呼び出すとか。
/usr/local/bin/php /path/to/path/a.php
エラーを拾いたければ以下のように cron に登録すると簡単。
書き込み権限の確認を忘れないように。
/usr/local/bin/php /path/to/path/a.php &> /path/to/path/error.log
そういえば、私も別のパスからcron呼び出して相対パスで失敗したわ。
1行目でchdirで修正するのが楽かと。
0377nobodyさん
04/09/03 17:54ID:J5j4fe3Zorz・・・
ご指摘通り
/usr/local/bin/php
にパスが通ってなかっただけのようです。
cronからの起動だと /usr/local/bin/ のファイルもパス通ってないんですね・・・
・・・php側、全てフルパスに書き換えてしまった。
0378nobodyさん
04/09/03 17:55ID:???カレントディレクトリの違いでPHPスクリプトの中の include が失敗してるのかもよ。
cd /path/to/; php /path/to/a.php
ってやるとどうかな。
0379nobodyさん
04/09/03 18:02ID:J5j4fe3Zrequire するファイルのパスは気にしてたんですが・・・
phpのパスを気にしてませんでした。
0381nobodyさん
04/09/03 18:15ID:???705でやってるよ、俺は
0382nobodyさん
04/09/03 23:31ID:???SQLシンタックスエラーで帰ってくるんだけれど、
どうしたらいいの?
0383nobodyさん
04/09/04 00:35ID:???このページを参考に、PHPでメニュー領域とコンテンツ領域に分けたくて
色々やってみました。でもさっぱり分かりません。
リンク先、というかhtmlのフレームで言うtargetに当たる部分が全然わからない。
メニューはincludeできるんですけど、個々のメニューをクリックした時に
リンクされてるファイルを、同じページ内の同じ場所に表示する方法がどうしても分かりません。
今日は夕方位からずっとググりまくりで死ぬほど眠いので
明日また改めて質問させて下さい。その時はどうか宜しくお願いします。
0384nobodyさん
04/09/04 00:49ID:???0385nobodyさん
04/09/04 00:52ID:???コンテンツページすべてでメニューをインクルードすれば
メニューのよこにコンテンツが出力されたように「見える」ところがミソ。
0386nobodyさん
04/09/04 01:48ID:???おまいは騙されてる。
次の手段が考えられる。
1. SSI, PHP といったサーバサイドでの対応。
2. Dreamweaver 等、コンテンツ管理ツールの活用。
結論から言えば参照先の手法はオーバースペック。
自分で安全に運用する自信が無い、または手に余るなら迷わず 2 を選んでおけ。
つーか、俺がコイツと仕事したら良くも悪くも喧嘩になるな。
網羅的に語っているがどれも浅いよ。
営業さんとしては優秀かも知れないが。
0387nobodyさん
04/09/04 02:49ID:???その値に合うコンテンツを右っ側にインクルードするように作れば
ちょっとフレームっぽい感じ? あんま意味ないけど。
0388カポコン
04/09/04 02:57ID:???header("Expires:Sat,1 Jun 1975 00:00:00 GMT");
header("LastModified:".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control:no-cache,must-revalidate");
header("Pragma:no-cache");
include("menu.htm");
include("main.htm");
?>
こんなんでいいんじゃないのページの結合は・・・。
header()から中はあってもなくてもいいけど、キャッシュ対策で・・・。
0389nobodyさん
04/09/04 03:04ID:???385の普通さが逆に不思議だ
0390nobodyさん
04/09/04 03:12ID:???電波お花畑も含めて。
0391nobodyさん
04/09/04 03:15ID:???0392nobodyさん
04/09/04 03:34ID:???ネタが思いつきません。
>>383にあって俺に無いものはいったいなんでしょうか?
後日来ますので、その時はどうかよろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています