【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カテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
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タグも書き換えろよ。
もうちょっと勉強しろよ
0476nobodyさん
2006/08/15(火) 17:57:56ID:???ありがとうございます。
>style.cssを生成すれば
の意味が良くわからなかったので『php css 生成』で検索したところ
cssのphp化という記事がHITしまして、その方法で満足のいく結果を得ることができました。
別ファイルにこだわる理由としては、作ろうとしているページが30ページくらいになる予定で
その30ページのどのページも記事が違うだけで、デザインは同じにしたかったので
毎回、html内に書くのは面倒くさいなぁ
というだけです。
あとは、管理のしやすさでしょうか?
何はともあれ、>>472さんの『生成』という言葉が解決に結びつきました。
ありがとうございました。
0479nobodyさん
2006/08/15(火) 18:10:09ID:???>別ファイルにこだわる理由としては、作ろうとしているページが30ページくらいになる予定で
>その30ページのどのページも記事が違うだけで、デザインは同じにしたかったので
普通に外部cssで良いじゃん?
0480nobodyさん
2006/08/15(火) 18:20:32ID:D3BJyJj0fopen(サイズが大きいファイル,"r");
fopen(サイズが小さいファイル,"r");
これって処理速度は変わるんですか?
0481nobodyさん
2006/08/15(火) 18:26:27ID:???0482nobodyさん
2006/08/15(火) 18:57:49ID:D3BJyJj0開くファイルが大きかろうが、小さかろうがファイル用のバッファの大きさは変わらない、ファイルを開いた時に全てメモリに展開するわけではない という理解でいいんでしょうか?
0484472
2006/08/15(火) 19:27:14ID:???精進いたします。
ご迷惑おかけしました。
>>477
----- style.php の方の変更点 -----
拡張子をcss → php
ファイルの一番最初に
<?php header("Content-Type: text/css"); ?>
を追記
これで、このファイルは拡張子がphpなのでphpとして処理され
しかし、htmlからはcssとして解釈してもらえるみたいです。
-----example.phpの方の変更点-----
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" href="../style.css">
となっていたものを
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" href="../style.php">
と書き換えるだけです。
すべてのcssをphpに書き換えるわけではなく、あくまでもファイル指定する部分の拡張子だけをphpに直すとうまくいくみたいです。
>>479
普通の外部cssだとphpとして処理してもらえないので
example.php側からの処理を受け取って、cssを書き換えたかったのです。
程度の低い質問に付き合ってくださった方々ありがとうございました。
0485nobodyさん
2006/08/15(火) 19:40:18ID:D3BJyJj0バッファ(ストリームであってるかな?)は、いつ作られるんですか?
0487nobodyさん
2006/08/15(火) 20:31:05ID:lK1TSrGk文字化けの原因はmb_convert_encodingだった。
お騒がせいたしました。
0488nobodyさん
2006/08/15(火) 20:51:22ID:D3BJyJj0では、ストリームとはなんなんでしょうか?
0489nobodyさん
2006/08/15(火) 20:55:06ID:???0491nobodyさん
2006/08/16(水) 00:45:48ID:???{
function getB()
{
return "nullpo";
}
}
class A
{
var $elements = array();
function newElement()
{
$element[] = new B;
}
function getCurrentElement()
{
echo end($this->elements)->getB();
}
}
> end($this->elements)->getB();
こんな感じで配列にはいってる最終の要素のメソッドを呼び出したいんですが
うまくいかないですー
どこがおかしいかってのと
どうやったらうまくいくかってのをどうかご教授ください
0492nobodyさん
2006/08/16(水) 01:05:43ID:NkNMn0adwindowsXP SP2
apache2.0
PHP 5.1.4
という環境です。
アップローダーで、必ず画像とコメントを一緒に表示させたいのですが、どのようにしたらよいでしょうか。
つまり、画像のアドレスを開くと必ず、アップロード時のコメントとセットで表示するようにしたいのです。
以下のような形で試したのですが、画像ではなくバイナリが表示されてしまいます。
<HTML>
<HEAD>
<META http-equiv="Content-Style-Type" content="text/css">
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<TITLE></TITLE>
<body>
こめんと<br />
<?PHP
readfile("./files/1/1.jpg");
?>
</body>
<HTML>
・flashでHTMLを読み込んで出力
・javascriptで画像ファイルを読み込んで出力
必死扱いて他の方法を考えて探してみたのですが、やり方がわからずじまいでした。
どうかお力添えをして頂けないでしょうか。
0493nobodyさん
2006/08/16(水) 01:29:11ID:???Perlじゃあるまいし、関数の戻り値に直接->なんて演算子は使えないんじゃない?
function getCurrentElement()
{
$e = end($this->elements);
echo $e->getB();
}
でどうよ?
0494nobodyさん
2006/08/16(水) 01:30:32ID:???ストリームは概念。
データを出力する処理を連続して行う事が出来る相手が出力ストリーム
逆が入力ストリーム。
たとえばコンソールは文字出力を連続して行う事で文字列を表示できるわけだ。
ファイルの場合、ファイル名と位置を指定して読み書きが出来るが、
printで文字列を連続して出力するようなインターフェイスを間にはさむ事
によって、ストリームとして利用することも出来る。
というか、ファイルをストリームとして扱う仕組みを、だれかが作ってくれた
からそれが利用できる。そういうもの。
0495nobodyさん
2006/08/16(水) 01:32:56ID:???HTMLの基本として、HTML本文と写真は必ず別ファイルでないといけない。
同じプログラムでいっぺんに両方とも表示させようとしてもムリ
そもそもそのHTMLじゃIMGタグがどこにもないじゃんか。
<HTML>
<HEAD>
<META http-equiv="Content-Style-Type" content="text/css">
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<TITLE></TITLE>
<body>
こめんと<br />
<IMG SRC="別のPHPプログラム">
</body>
<HTML>
ってやって、その別のPHPプログラムで画像を出力させなきゃダメかと。
つーかこれ、
<IMG SRC="./files/1/1.jpg">
じゃダメなのか?
0496nobodyさん
2006/08/16(水) 01:37:30ID:???やっぱそれしか方法がないんですね.
どうもありがとうございました.
0497nobodyさん
2006/08/16(水) 01:37:57ID:???悪い事だとは思わんが
0498nobodyさん
2006/08/16(水) 01:51:44ID:???出典は忘れてしまったが
“HTMLを取得してからプログラムの勉強に取り付け”と言って有名になった人が居たなあ。
実際、ハイパーテキストマークアップ言語はプログラム言語ではないし、何の関係があるんだろう……?
0499nobodyさん
2006/08/16(水) 02:09:56ID:???function newElement()
{
$this->element[] = new B;
}
>>495
過去ログ嫁。>455
0501nobodyさん
2006/08/16(水) 02:16:19ID:???hogehoge
}
if(hoge)
{
hogehoge
}
どっち派?
0503nobodyさん
2006/08/16(水) 02:21:13ID:???0504nobodyさん
2006/08/16(水) 02:22:25ID:???functionやclassならともかくifなら上。Cでもそう。
PEAR他PHPの主要開発系でも上推奨。
0505nobodyさん
2006/08/16(水) 02:24:26ID:???C言語でも歴史的(というか習慣的?)な理由でそうなってる。
0506nobodyさん
2006/08/16(水) 02:24:29ID:???0507nobodyさん
2006/08/16(水) 02:25:32ID:???{
hogehoge
}
見やすいのでこっち
0508492
2006/08/16(水) 02:37:12ID:???仕組みの解説有り難うございます。
>>495
<IMG SRC="別のPHPプログラム">
こういう方法があったのですね。知りませんでした。
これを使おうと思います。
有り難う御座いました。
画像イメージアドレスへの直リンも防ぎたかったのです。
0510nobodyさん
2006/08/16(水) 03:07:20ID:665idoIEなぜかUnicodeの「〜(もう少し太くてぎざってるやつ」になってしまいます。
スクリプト自体はUTF-8で動いておりUTF-8のページから書き込んだ場合は正常に取得できます。
どういった原因が考えられますか?
0511nobodyさん
2006/08/16(水) 03:11:52ID:???if (hoge){
}
0512nobodyさん
2006/08/16(水) 03:12:05ID:???0513nobodyさん
2006/08/16(水) 03:58:59ID:???http://pc8.2ch.net/test/read.cgi/php/1153652403/
でも書いたけど、それが有名な「波ダッシュ問題」だ。
個別に置換して対応して下さい。
0514nobodyさん
2006/08/16(水) 04:01:00ID:???http://pc8.2ch.net/test/read.cgi/php/1153652403/822
どうせ見れないだろうけど。
0516nobodyさん
2006/08/16(水) 04:27:21ID:???Unicode が抱えている諸問題をろくに知りもせずに
安易に UTF-8 を勧める人が最近多いと感じます。
0517nobodyさん
2006/08/16(水) 04:42:30ID:???最終的にEUC-JPがベストって事?
0518nobodyさん
2006/08/16(水) 04:56:14ID:???"♪"から?を得るにはどーすればいいですか?
0519nobodyさん
2006/08/16(水) 04:58:21ID:???0520nobodyさん
2006/08/16(水) 05:04:23ID:???自分は結構書いてきたつもり。
「波ダッシュ問題」は文字コード変換が介在しなければ表に出てこない問題なので
UTF-8 で統一してれば問題なし、とでも思っているんでしょう。
自分は EUC-JP が無難だと思いますがね。
ただ、EUC-JP で統一出来ない事例(携帯向けなど)も多々あるので
どれが最適かってのは一概には言えないと思います。
■ このスレッドは過去ログ倉庫に格納されています