【PHP】下らねぇ質問はここに書き込みやがれ 26
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/08/07(月) 13:11:50ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレは>>2-10 関連スレは>>4-10 FAQは>>6-10 辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0376nobodyさん
2006/08/13(日) 22:13:08ID:t3hDjrcl<?php
require_once('JSON.php');
$json = new Services_JSON();
$js1 = '[{"url":"http://www.yahoo.co.jp/","title":"Yahoo Japan!"}]';
$js2 = '{"url":"http://www.yahoo.co.jp/","title":"Yahoo Japan!"}';
$decoded = $json->decode($js1);
$hoge = $decoded->title;
print "title=".$hoge;
?>
と書いた場合に、$js2をパースした場合はうまく行きますが、$js1をパースした場合はうまくいきません。
"[]"が含まれているからだと思います。[]が含まれていてもうまくいく方法はありませんか?
0377376
2006/08/13(日) 22:16:41ID:t3hDjrcl0378nobodyさん
2006/08/13(日) 23:36:15ID:eyKLaI69処理後3秒待って他の処理したいときとかどうすればいいの
0379nobodyさん
2006/08/13(日) 23:39:16ID:???0380nobodyさん
2006/08/13(日) 23:39:45ID:fTOpOca20381nobodyさん
2006/08/13(日) 23:42:14ID:???0382nobodyさん
2006/08/14(月) 01:10:19ID:???0384nobodyさん
2006/08/14(月) 02:07:14ID:???オマエモナー
0388nobodyさん
2006/08/14(月) 02:45:01ID:???0389nobodyさん
2006/08/14(月) 03:10:13ID:???0390nobodyさん
2006/08/14(月) 06:49:54ID:???0391nobodyさん
2006/08/14(月) 07:48:30ID:???替わりのSQL文だれか教えて
0392nobodyさん
2006/08/14(月) 08:21:09ID:???つ http://pc8.2ch.net/test/read.cgi/db/1148936556
0393nobodyさん
2006/08/14(月) 11:30:35ID:???>ファイルポインタをファイルの 終端に置きます
実際は、オープンした直後のファイルポインタは先頭ですよね。
ファイルポインタがが終端に置かれるのではなく、ファイルポインタがどこを指していても書き込みは終端から行われるという事でしょうか。
0395nobodyさん
2006/08/14(月) 11:46:32ID:???不都合というか、公式のマニュアルが、実際の動作と全く真逆の事を言うという事があるのかなぁと思いまして。
翻訳時に表現がややずれてしまったとかでしょうか?
0396nobodyさん
2006/08/14(月) 11:47:42ID:???今'a'で開いた直後にftellで調べたら確かに0だったが、
http://jp.php.net/manual/ja/function.ftell.php
ftell() は、("a" フラグ付きでオープンされた) 追加のみ可能な
ストリームに対する結果も未定義です。
ってあるから'a'モードが特殊で
実際はファイルポインタは終端にあるんじゃね?
0398nobodyさん
2006/08/14(月) 11:54:53ID:RvQDryMl01:640x480
02:800x600
03:960x600
04:1024x768
05:1600x1200
見たいな感じになってるんですが
番号と解像度を二次元配列に格納するのにうまいこといかないんですけど
どのへんがマズイですかね?
以下ソースです
$kaizoudo = array();
$fp = fopen('kaizoudo.txt', 'r');
for($k = 0;!feof($fp);$k++){
$line = chop(fgets($fp));
$temp = explode(":", $line);
$kaizoudo[$k] = array($temp[0], $temp[1]);
print "$kaizoudo[$k][0]:$kaizoudo[$k][1]<BR>";
}
これを実行すると
Array[0]:Array[1]
みたいなのが出力されちゃいます
0399nobodyさん
2006/08/14(月) 12:03:51ID:???だから print "$kaizoudo[$k]";の結果表示は Array だ。
その後ろに[0]ってかいてあるよな?
だから print "$kaizoudo[$k][0]";の結果表示は Array[0] だ。
これが今の状態。
つまりprintが一次元配列か二次元配列か分かってないのが原因。
{}で囲むと大丈夫だよ。
0400nobodyさん
2006/08/14(月) 12:07:36ID:???0401nobodyさん
2006/08/14(月) 12:20:14ID:???なるほど!
格納はちゃんとできてたんだけど表示がうまくいってなかったんですね。
分かりやすい解説ありがとうございました。
0402nobodyさん
2006/08/14(月) 12:24:56ID:QXYq1pPLPHP 5.1.4
の環境で strtolower で誤変換が発生するみたいだが
これってバグかな?
<?php
$str = '検索エンジン';
echo strtolower($str); // 「検索トンヘン」と表示される
?>
0406nobodyさん
2006/08/14(月) 12:48:46ID:???Shift_JISで「検索エンジン」はアスキーコードで以下のようになる。
140 159 141 245 131 71 131 147 131 87 131 147
でだな、途中の71と87はGとWのアスキーコードなんだよ。
その部分はアルファベットとして見られて、小文字に変換され、103(g)と119(w)になる。
140 159 141 245 131 103 131 147 131 119 131 147
という値が結果として返る。これはShift_JISで「検索トンヘン」となる
0407402
2006/08/14(月) 12:49:08ID:???echo mb_strtolower($str, 'SJIS');
で出来ました。ありがとうです
>>405
精進します
0408nobodyさん
2006/08/14(月) 13:54:45ID:???0409nobodyさん
2006/08/14(月) 14:52:12ID:???文字列の末尾に「表」という漢字があるとなぜか「\」が付加されてしまいます。
例えば、フォームに「あいうえお表」と打ったとすると、実際に取得する値は「あいうえお表\」となってしまうのです。
他の漢字やひらがな、カタカナ等では発生しないようです。
該当部分のソースはこのような感じです。
$title = $_REQUEST['title'];
<input name="title" type="text" id="title" value="<?php echo $title; ?>" />
どのようにすればよいのか全く検討もつかず、こちらでお伺いした次第です。
何卒ご指南のほどをよろしくお願いいたします。
サーバー : IIS 5.1
PHP : 5.1.4
0413409
2006/08/14(月) 16:47:52ID:EO88qrv9>>410
既知の問題だったのですね。
ありがとうございます。
>>411
そうですね。REQUESTは危険かもしれません。
変更したいと思います。
>>412
PHP等のスクリプトではやはりShift-JISは適さないのですね。
大人しくUnicodeかUTFにしてみます。
無知なもので、おかしなコーディングもあったようでしたが、見事解決することができました。
質問と関係のない部分まで指摘していただき非常に助かりました。
下らない質問に返答していただき、ありがとうございました。
0414nobodyさん
2006/08/14(月) 17:06:51ID:???iriaなどを使っても上手く保存できません。
ご教授願います。
0415nobodyさん
2006/08/14(月) 17:13:13ID:???0416nobodyさん
2006/08/14(月) 17:14:06ID:???0417nobodyさん
2006/08/14(月) 17:18:15ID:???サーバサイドで動くスクリプトがDLできたら俺は恥ずかしい思いをすることになる。
やめてくれ
0419nobodyさん
2006/08/14(月) 17:25:57ID:???0420nobodyさん
2006/08/14(月) 18:28:34ID:???rootで入って権限のところを見るとユーザーはちゃんと作成されていました。
何が原因なのでしょうか・・・
0423nobodyさん
2006/08/14(月) 20:08:55ID:???IPアドレスを記録しておくのが良いでしょうか?
0424nobodyさん
2006/08/14(月) 20:10:38ID:FIfhz0i4<form action="./" method="POST">
とありました。手ものPHPの入門書には、<form action=のあとにはhoge.phpというふうに
phpファイル名を指定していたのですが、
上記の<form action="./" method="POST">の場合は、どのファイルにPOSTされるのでしょうか?
サーバOS:Windows2000
Webサーバ:Apache2
PHP:5.1.4
です。
0425nobodyさん
2006/08/14(月) 20:12:23ID:???0426424
2006/08/14(月) 20:29:55ID:???その場合やはり、サーバの設定によるんですかね。
0427nobodyさん
2006/08/14(月) 20:30:44ID:???詳細な目的にもよるけど、IPアドレスによる判断はベターだろうね。
>>424
ブラウザ側は/で終わるURLに対してPOSTする。
GETで試せばURLに出るからすぐ分かる。FxのLiveHTTPHeaderでもいい。
受け取るのはApacheで設定したDirectoryIndex
だからindex.cgiかも知れないし、index.htmlかも知れない。
0428nobodyさん
2006/08/14(月) 20:40:19ID:???ホームページ丸ごとDLするソフトで出来たよ → Junshu
別にクラッキングじゃないしね
でもセキュリティかかってたらムリだよ
0429nobodyさん
2006/08/14(月) 20:50:49ID:???$b = explode(",", $a);
echo $b;
としたとき、Arrayとでます。
結果として、appleorangelemonと出したいのですが、
echo $b[0].$b[1].$b[2];
の形式だと、配列の値が増えるに連れて大変になっていまいます。
もっとスムーズに書く方法はありませんでしょうか?
0430nobodyさん
2006/08/14(月) 20:57:55ID:???0431nobodyさん
2006/08/14(月) 21:02:26ID:???implodeですか。
explodeと同じものだと思い込んでいたので、見落としてました。
$b = implode("", $a)でいけそうですね。
どうもありがとうございます。
0432nobodyさん
2006/08/14(月) 21:35:25ID:???やるなら
$c = implode("", $b);
echo $c;
で、>>429でやりたかったことは
$b = str_replace(',', '', $a);
echo $b;
なんじゃないの?
0433nobodyさん
2006/08/14(月) 21:41:03ID:???$aの部分を配列にしました。
書き忘れててすみません。
$a = array("apple", "orange", "lemon");
$b = implode("", $a);
一応配列にいれたものを表示したかったので、
あんな感じのソースになりました。
0434nobodyさん
2006/08/14(月) 22:27:53ID:???その変数から1行1行取り出すにはどうすればいいですか?
0438423
2006/08/14(月) 22:54:57ID:???ありが�d
質問ついでに・・・・
この場合、IPアドレスとホストだと、どっち記録しておくのがよりベターでしょうか?
どっちも変わらないのでしょうか?
0440nobodyさん
2006/08/14(月) 22:59:09ID:WuPf1wcIXHTML文書内でPHPを使う時のXML宣言のことなんですが、
<?="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"?>
↑こうやってやってみたのですが、最初の行に改行が入ってしまいます。
最初の行の改行を取り除くにはどうするべきでしょうか?
0441nobodyさん
2006/08/14(月) 23:03:33ID:???<?="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"?>
が書かれている前に改行が入ってるない?
違うなら、動作環境教えて
0442nobodyさん
2006/08/14(月) 23:04:59ID:???普通はIPアドレスを使うな。
ホスト名は無駄に長いし、サーバーによっては自動で逆引きできないし、
逆引きできたとしてもしない方が負荷は低いし。
0445440
2006/08/15(火) 00:05:55ID:???前に改行は入ってません。
鯖はこちら↓
http://www.land.to/shiyou.php
>>443
詳しくないのですがBOMってメモ帳で編集した時に付くんじゃなかったっけ?
ちなみにTeraPadで編集しました。
0447446
2006/08/15(火) 00:09:10ID:???0448nobodyさん
2006/08/15(火) 00:15:31ID:???いや、だから、BOM を付けずに保存してみなよ。
どんなエディタを使っていても BOM を付けることは出来るよ。
0449nobodyさん
2006/08/15(火) 00:31:13ID:???0450nobodyさん
2006/08/15(火) 00:54:56ID:???0451nobodyさん
2006/08/15(火) 00:56:27ID:???無限ループでもさせたらどうするんだ。
0452nobodyさん
2006/08/15(火) 03:02:08ID:???無限ループよりリソース食いまくりの方がこえー。
0453nobodyさん
2006/08/15(火) 07:29:31ID:tOktgI2K定数ってどういうときに使うんですか?変数じゃだめなんですか?
定数の機能(役割?)は変数の機能の一部・・・というか変数に包括されているように感じて。
マニュアルとか解説本を読み始めたばかりなんですが・・・。
0454nobodyさん
2006/08/15(火) 07:50:20ID:???ただし、コード中で「値を変えるな」もしくは「値には意味がある」といった意図を込める時に使う。
例えば途中で値が差し替えられてないことを前提にコードが読めるので読みやすくなる。
0455nobodyさん
2006/08/15(火) 07:58:29ID:???画像がtext形式になってしまいます。
画像として処理してくれる関数などありますでしょうか?
スクリプト
$fp = tmpfile();
fwrite($fp, $img);
rewind($fp);
$temp = fread($fp);
<img src="<?php $temp ;?>">
0456453
2006/08/15(火) 08:08:13ID:???レスどうもです。
定数は値が変わらないことを明示させるために使うんですね。
コードの読みやすさとかにまで意識が回りませんでした。
ありがとうございました。
0457nobodyさん
2006/08/15(火) 09:59:53ID:OANfrr1E現在の設定は
Multibyte Supportenabled
Multibyte string enginelibmbfl
HTTP input encoding translationenabled
Multibyte (japanese) regex supportenabled
Multibyte regex (oniguruma) version3.7.1
mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
DirectiveLocal ValueMaster Value
mbstring.detect_orderautoauto
mbstring.encoding_translationOnOn
mbstring.func_overload00
mbstring.http_inputSJISSJIS
mbstring.http_outputSJISSJIS
mbstring.internal_encodingEUC-JPEUC-JP
mbstring.languageJapaneseJapanese
mbstring.script_encodingno valueno value
mbstring.strict_detectionOffOff
mbstring.substitute_characterno valueno value
といった感じで設定していて、MySQLはujisを使用してます。
この間まで、MySQLのデータを問題なく表示できたのですが、最近文字化けするようになりました。
おかしくなる前にMySQLを5.0.24にアップしたので、それが原因かもしれませんが・・・
もしご存知の方がいらっしゃったら教えてください
環境はMacOSX10.4.7 Apache2.2.2 PHP 5.1.4 MySQL 5.0.24
です。よろしくお願いいたします。
0458nobodyさん
2006/08/15(火) 10:00:22ID:7B9Fe4ha・ブラウザ上のJavascript
・submit後のPHP(Validateクラス等)のメソッド
・INSERT時のDBが履くエラー
↑の3つが主なチェックタイミングだと思うんですが、
2回目のPHPでのチェックを無くして、3つ目のDB登録時に戻ってくるエラーコードで
ケース文で対処するのはセキュリティ上何か問題ありますか?
PDO等の接続抽象オブジェクトのバインド変数使う前提ですが・・・
0459nobodyさん
2006/08/15(火) 10:39:55ID:???mysqlは4.0.x系以前とそれ以上はかなり違う
3系や4.0.x系から5.0.24にアップデートしたなら
やっぱmysqlと関連する問題じゃないかな
上記の情報だけで一概に何が原因か特定はできないが
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?FAQ#content_1_40
こことか参考にしてみれば
0460nobodyさん
2006/08/15(火) 10:44:28ID:???数字などを分かりやすくする場合
定義済みの定数はほとんどそう
LOCK_EXとかSEEK_SETとかよく使うけど実際の数字は知らないし
0461nobodyさん
2006/08/15(火) 11:07:13ID:OANfrr1E早速の回答ありがとうございます。
ただ、わたしは5.0.22からのアップデートなので、いわゆる4.1でのcharacter関連の変更とは関係ないと思います。
5.0.22に戻すのもちょっと嫌ですが。
0462nobodyさん
2006/08/15(火) 13:14:41ID:???apache_request_headers()
と同じことを実現するにはどうすればいいでしょうか?
Apacheのモジュールとしてでしかこの関数は機能しないようです。
へるぷみー
0465nobodyさん
2006/08/15(火) 13:35:54ID:???HTMLから勉強しなおせ。
>>458
Javascript → ユーザビリティの向上
Validator → PHPスクリプトが期待するデータ形式かをチェックし、実行時エラーや想定外の動作を回避
他言語構文(SQL, HTMLなど)構築時 → 他言語での特殊文字を排除し、SQLインジェクションやXSSを回避
DBが吐くエラー → DBとの不整合をチェック
Webセキュリティに関する書籍はいくつか出ているので読んでおけ。
>>462
環境変数
0466462
2006/08/15(火) 13:42:20ID:???function emu_getallheaders() {
foreach($_SERVER as $h=>$v)
if(ereg('HTTP_(.+)',$h,$hp))
$headers[$hp[1]]=$v;
return $headers;
}
?>
本家でこれが書いてあるんですが、
全く同一の処理でしょうか?
某プログラムでこの関数を利用しても上手くヘッダーを取得できない
ようです。
apache_request_headers って $_ENVも含みますか?
0467nobodyさん
2006/08/15(火) 13:51:03ID:???画像出力とHTMLを同じスクリプトで同時に吐けないよ。
ヘッダーが違うからね。
<img src="img.php?<?=$id;?>">
とかにしなさい。
0469nobodyさん
2006/08/15(火) 14:02:34ID:???どう考えても、PHPとは関係ない質問だろう
問題はMySQLのバージョンをあげたら発生したということは
十中八九、MySQLの問題だろう
まずは、
SHOW VLIABLES lilke 'char%'
で、文字コードセットがどうなっているか確かめる
それで、character_set_server がこっちの想定してない文字コードで
表示されているのなら
ALTER DATABASE で文字コードを再設定する
character_set_client などが違う場合は
SET NAMES などで文字コードを、PHPから接続するたびに再設定しなおす
0472nobodyさん
2006/08/15(火) 17:41:13ID:cZ5ZgBLvhtmlのデザイン部分はcssで分けて管理しますよね。
phpでは、html部分にスクリプトを入れて、動的な処理ができますが
デザイン部分のcssはそのままですよね。
そこで、phpでhtmlを動的に処理するように、cssをphpで動的に変化させたいと考えたので
htmlの<link rel="stylesheet" type="text/css" href="../style.css">部分を
<link rel="stylesheet" type="text/php" href="../style.php">
のように書き換えたのですが、cssとしての効果を発揮しません。
これはhtmlの仕様で、css部分をphpで処理することはできないのでしょうか?
Apacheの設定を変えて、拡張子がcssでもphpとして処理するようにすれば良いのでしょうが
レンタルスペースだとそれもできませんよね?
0474nobodyさん
2006/08/15(火) 17:51:02ID:???いや、CSSのContent-typeはtext/cssだから。
PHP側でheader('Content-type: text/css')吐かせれば問題無いし、linkタグも書き換えろよ。
もうちょっと勉強しろよ
■ このスレッドは過去ログ倉庫に格納されています