【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
0254nobodyさん
04/08/31 16:14ID:???foreach($fp as $fpv){
echo $fpv."<br>";
}
とか
0256nobodyさん
04/08/31 17:36ID:???> ですが単純に"http://www.google.co.jp/"でのアクセスならtrueです。
なんだ。ネタかよ
0257nobodyさん
04/08/31 18:02ID:???http://ns1.php.gr.jp/pipermail/php-users/2003-November/019273.html
0258nobodyさん
04/08/31 18:02ID:???fopen が成功したときに返すのは true ではないっていう、この際どうでもいい点以外に、なにか有意義な指摘は無いの?
0259nobodyさん
04/08/31 18:09ID:???ググれば出てくる話にダラダラレスしてる奴らも冗談半分なんだろ。
明確にネタだと言ったらすこしは醒めんか。面倒臭い。
0263nobodyさん
04/08/31 20:38ID:???http://www.google.co.jp/search?q=cache:-u7P_8RU9r4J:bugs.php.net/bug.php%3Fid%3D8440+php+success+warning+fopen&hl=ja
しかし、似たようなトピックが結構あるし、この条件でもまだ2万近くヒットしてるから、
ちょっと特定はできんな。ML漁ったらさらに情報増えそうだ。
ちなみに今回はリダイレクト問題じゃなく、4.2.3でクエリ飛ばすとGoogleが403を
返すのをハンドリングできないというだけだと思われ。
# このスレでもちょっと前にもfile_get_con()で206がハンドリングできねえぞどうなってんだっ
# て話があったけど。
知ってる人には当たり前だが、phpのwapperはステータスコードのトリートは
ほとんどやらない仕様なのだ。
はるか昔、内部ステータスのSuccessがエラーで返っちゃうダメ仕様についても
readfileとかstreamの問題で何度か指摘されたことがあったが、これは果てしなく
分かりにくいのでいつのまにか修正されらしい。
解決策はみんな0.1秒で思いつくと思うので省略。
# ときに、レスポンスヘッダー見るくらい常識というのは、今や過去のことですか・・?
0265nobodyさん
04/08/31 21:21ID:???PHP4.2にはUAディレクティブありませんから!!
ちなみにUAは、全く送らないかきちんと偽装する、が正解。
#しかしそうするとぐーぐるのサービス規定に抵触するモヨウ
0267nobodyさん
04/08/31 21:28ID:LThtawzV前の頭に載せたくなるデザインもなかなかだったが、
今回のはマジ欲しい。
0268nobodyさん
04/08/31 21:41ID:???最初に本当に気付いてたなら、その時に言えば感謝されたものを。
0269nobodyさん
04/08/31 21:51ID:???0270nobodyさん
04/08/31 21:56ID:LThtawzV問題のカイケツってこれのことか?
0.1秒でカイケツしたのは>>268だけだろ?
他の皆はマックンに乗り換えようぜ!
古きよきコンピュータって感じで最高じゃん。
おでこの部分を人差し指でつついてフラフラさせたりして遊びたい。
スクリプトならOSXでもバリバリ開発出来るんだぜ。
0271nobodyさん
04/08/31 22:00ID:???外にあふれてきてるやつがいるのか? 巣に帰って呉よ
0272nobodyさん
04/08/31 22:27ID:???<?php
$data = "\"$a."<>".$b."<>".$c."\n";
$fp = fopen("file.log","a");
flock($fp,2);
fputs($fp,"$data");
flock($fp,3);
fclose($fp);
?>
<html>
<body>
完了
</body>
</html>
のように「file.log」に書き込んで
a<>b<>c
d<>e<>f
のように書き込んでいきたいのですが
a<>b<>cd<>e<>f
のように改行がうまくいきません。ちなみに最後の文字(〜<>f)の後には
改行が入ってるのですが。どうしてでしょうか?
0273nobodyさん
04/08/31 23:04ID:MMjs19HPすごく初歩的な返事で悪いんですが釣りですよね!!
0275272
04/09/01 02:02ID:zYm4GWInあと少しミスして書いてました。
<?php
$data = $a."<>".$b."<>".$c."\n";
PHPは昨日始めたばかりで真剣にわからないんです。優しい方がいたら教えてほしい…。
0277nobodyさん
04/09/01 02:35ID:?????
$data = "{$a}<>{$b}<>{$c}\n";
0278nobodyさん
04/09/01 02:38ID:???ソースのコピペくらいきっちりやらなきゃ釣り扱いされるよ。
例えば
<?php
$a="a";
$b="b";
$c="c";
$data =$a."<>".$b."<>".$c."\n";
〜略〜
にしてリロード2回すれば
a<>b<>c<>
a<>b<>c<>
のfile.logができるはず。
エディタの設定で\nが改行されないだけなら板違い。
0279277
04/09/01 02:40ID:???0281nobodyさん
04/09/01 02:52ID:???0282nobodyさん
04/09/01 02:54ID:???$data = "{$a}<>{$b}<>{$c}\n";
$data = "$a<>$b<>$c\n";
どれでもOK
ログファイルをWindowsメモ帳で開く様なら\nを\r\nにしとけ
0283nobodyさん
04/09/01 02:56ID:???> 改行が入ってるのですが。どうしてでしょうか?
これ本当か?
0284nobodyさん
04/09/01 03:47ID:???マジ使い易い。
0286nobodyさん
04/09/01 08:15ID:???改行コードの問題かな。
PHP の動いてる OS はなに?
Windows系の OS だと改行コードは CRLF(\r\n) だから、テキストモードでオープンしたファイルに対して \n を
出力すると \r\n に変換されて記録されるよね。
でも、もしなんらかの問題で、
・\n で出力したものがファイルにも \n で記録されて
・fopen で追記オープンして、書き込み位置をファイルの最後にシークしようとしたとき、改行コードとして \r\n を期待しているのに
・実際にファイルに記録されている改行コードは \n なのでシークに失敗し、
・ファイル末尾の \n の位置に書き込み位置をシークしてしまい
・fputs でデータを出力したとき、その \n を上書きしてしまい
・結局行間の \n は消滅し、最後に書き込んだ行の \n は残る
みたいな現象とか?
fopen のファイルモードに "ab" を指定してバイナリモードでファイルを扱うようにしたら?
改行コードが CRLF がいいなら、バイナリモードでオープンした上で \r\n を出力するとどうだろう。
0287nobodyさん
04/09/01 08:43ID:???"b"として扱うように変更になっている。
最近PHPを始めたんなら最近のバージョンだと思うけどどうかな
0288nobodyさん
04/09/01 10:44ID:bsFh6eifrm file.logさせて3回以上実行してからfile.logを張ってみそ
実行した時には張る必要もない気がするが・・・
0289nobodyさん
04/09/01 11:23ID:???スペースつかってまつか?
TABつかってまつか?
PEARってスペースなんだよな。
0290nobodyさん
04/09/01 11:28ID:???0292nobodyさん
04/09/01 12:10ID:???秋の訪れに期待していたのだが・・・
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以外で使えないのですが
他のパーミッションで使える方法ってありませんか?
■ このスレッドは過去ログ倉庫に格納されています