【PHP】下らねぇ質問はここに書き込みやがれ 29
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/09/17(日) 04:26:39ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0697nobodyさん
2006/09/28(木) 16:18:41ID:???<FilesMatch "^hoge$">
ForceType application/x-httpd-php
</FilesMatch>
0698nobodyさん
2006/09/28(木) 17:17:22ID:???AddType application/x-httpd-php .html
と書いておけばいい。
0699nobodyさん
2006/09/28(木) 17:27:41ID:???<FilesMatch "^index$">
ForceType application/x-httpd-php
</FilesMatch>
とやって、indexにアクセスしましたが無理でした...
(index.php設置済み)
また、indexで設定した場合、DirectoryIndexの設定はindexになるのでしょうか?
0700nobodyさん
2006/09/28(木) 17:28:36ID:???0701nobodyさん
2006/09/28(木) 17:35:53ID:???ありがとうです
ではDirectoryIndexもindexにする必要がありそうですね
0702nobodyさん
2006/09/28(木) 18:14:22ID:???mod_rewrite使えばいいんじゃね
RewriteEngine On
RewriteRule ^(.*)$ $1.php
0703nobodyさん
2006/09/28(木) 18:42:29ID:loAqiE0j<br> ではなく <br/>
と書くのはどうしてなのでしょうか?
<br>と書いても正しく動作はしました。
0704nobodyさん
2006/09/28(木) 18:50:09ID:???HTMLなら <br>
XHTML なら <br />
それぐらい知っとけ。
主要ブラウザではどっちで書いても同じ動作。
<br/> や <br></br> も XHTML として正しい表記だが、
XHTML未対応の古いブラウザだと誤動作を起こすことがある。(改行されないとか2回改行されるとか)
0705nobodyさん
2006/09/28(木) 19:52:10ID:fnAbwW59スクリプト、出力、データベース入力共にSJISのシステムにアクセスしてからEUCのシステムにアクセスするとこのエラーが発生しだします。
このエラーは上位ディレクトリにあるphpMyAdminでも発生するようになります。
おそらくhtaccessの設定によるものだと思うのですが、なぜ違う上位ディレクトリにまでエラーが出るのかわかりません。
SJISのシステムは携帯の絵文字を使用する掲示板のためEUCにするのは難しいです。
問題点と改善策を教えてください。
お願いします。
0707705
2006/09/28(木) 20:14:37ID:fnAbwW59Parse error: parse error, unexpected T_STRING in /home/????/public_html/????/m/mobile/includes/languages/japanese.php on line 70
というエラーが出たり出なかったりします。
その行は
define('HEADER_TITLE_TOP', 'トップ');
です。
0708nobodyさん
2006/09/28(木) 20:17:00ID:???本によると、規格化するときに<></>にしようとしたらbrがあったので<br></br>だとめんどくさいし古いのだとあれだし、
ましてや<br>だけだとだめだから、からタグ?でコメントないなら<br />で良いやって乗ってたような
0709705
2006/09/28(木) 20:19:51ID:fnAbwW59Parse error: parse error, unexpected T_STRING, expecting ')' in /home/????/public_html/phpMyAdmin/lang/japanese-euc.inc.php on line 19
でその行は
$day_of_week = array('日', '月', '火', '水', '木', '金', '土');
です。
0710nobodyさん
2006/09/28(木) 20:23:13ID:???0712705
2006/09/28(木) 20:39:28ID:fnAbwW59php_value mbstring.internal_encoding SJIS
php_value mbstring.script_encoding SJIS
掲示板ディレクトリのhtaccessの設定は
php_value output_handler none
php_value mbstring.http_input SJIS
php_value mbstring.http_output SJIS
php_value mbstring.encoding_translation off
php_value mbstring.detect_order auto
php_value mbstring.func_overload 1
php_value mbstring.substitue_charcter none;
です。
絵文字に関してですがこの設定じゃないとフォームから入力されてそれを受け取る時点で????なってしまいます。
これ以外の設定でこれを回避する方法もあるんでしょうか?
0713nobodyさん
2006/09/28(木) 20:46:59ID:???ひとまずこのスレを絵文字で検索する事をオヌヌメする。
0714nobodyさん
2006/09/28(木) 20:47:28ID:eG4UHdr9$Time = date("H");
switch ($Time) {
for ($a = 0; $a < 24; $a++){
case $a:
print "<P>".$a."</P>\n";
break;
}
}
?>
エラーになってしまいます。何故でしょうか?
教えてください。
0715nobodyさん
2006/09/28(木) 20:49:42ID:???の設定で、
$day_of_week = array('日', '月', '火', '水', '木', '金', '土');
とEUCで書いたスクリプトを読み込んだら
エラーが出てもおかしくない理由を理解できないと
あんたの根本的解決には至らない気がするな
0717705
2006/09/28(木) 20:57:54ID:???絵文字の変換はできていて掲示板は正しく動くんです。
掲示板にアクセスすると他ディレクトリのシステムでエラーが出るんです。
>>715
そのエラーが出るのは掲示板の上位ディレクトリでinternal_encoding SJISという設定はしていません。
それとも一度どこかでhtaccessで設定するとその設定は持ち越されてしまうのでしょうか?
0718nobodyさん
2006/09/28(木) 20:59:44ID:???> >>713
> 絵文字の変換はできていて掲示板は正しく動くんです。
> 掲示板にアクセスすると他ディレクトリのシステムでエラーが出るんです。
別のシステム(PHP)なら因果関係は無いはず。
cookieとかセッションとかがかぶってるとか??
0719nobodyさん
2006/09/28(木) 21:04:18ID:eG4UHdr9どこが間違いかご指摘お願い出来ませんか?
switch ($Time) {
//for ($a = 0; $a < 24; $a++){
case $a:
print "<P>".$a."</P>\n";
break;
//}
}
これはOKですし
//switch ($Time) {
for ($a = 0; $a < 24; $a++){
case $a:
print "<P>".$a."</P>\n";
break;
}
//}
これもエラーになりません。
for とswithを組みあわせるときに注意点などありますでしょうか?
0720705
2006/09/28(木) 21:05:11ID:???なるほど。しかしcookieとかセッションとかかぶることによってこのようなエラーが起きるんものなのでしょうか?
そもそも同じ部分を読んでるはずなのに更新するたびエラーが出たり出なかったりするのが自分の理解の範疇を超えていて困り果ててます。
とりあえずcookieとかセッションとかチェックしてみます。
0721nobodyさん
2006/09/28(木) 21:13:24ID:???case〜breakの中にfor構文は書けるが
caseを包括するようなforなんてのは書けないよ。
switch〜caseの構文を完全に壊してる。
そんな感じでやるならこうだろ。
for ($a = 0; $a < 24; $a++){
switch ($Time) {
case $a:
print "<P>".$a."</P>\n";
break;
}
}
0723705
2006/09/28(木) 21:59:34ID:???あるディレクトリから別ディレクトリにリンクで飛ばしたとき適応されるのは飛ばした先のですよね?
ちなみに掲示板のほうもおかしな挙動を始めてしまいました。
能で文字化けし、セッションも働いてないようです。
もうダメだ…。頭を冷やして出直します。ってゆーか逃げたいです。
webプログラミングってプログラムじゃないところが難しすぎますね。
みなさんありがとうございました。
0724nobodyさん
2006/09/28(木) 22:43:56ID:???能が文字化けする理由もわからんのにSJIS使ってるのか?
てかWebプログラミングはプログラムじゃないのか、へー。
0726nobodyさん
2006/09/29(金) 00:28:08ID:???揚げ足取るならせめてちゃんと読もうよ。
「プログラミング以外のところが難しすぎる」からどうやったらそう読めるのか…。
「能」の文字化け問題については同意だが…。
0727nobodyさん
2006/09/29(金) 00:43:14ID:???「webプログラミングってプログラムじゃないところが難しすぎますね。」
は>>724と同じ意味と受け取っていた、曖昧な表現にも問題があるかと・・。
「PHPってプログラムじゃなくてスクリプトでしょ」って俺もjava野郎に言われた事があって、ちょっと被害妄想も入ってるがw
0728nobodyさん
2006/09/29(金) 00:48:10ID:???0729nobodyさん
2006/09/29(金) 01:10:16ID:???そもそも2chは悪意ある発言と思っても間違いではない空間だと思うが。
0730nobodyさん
2006/09/29(金) 01:35:16ID:???java野郎がphp野郎より優れてるとは一概に言えないけど、
javaがある程度できる人とphpがある程度できる人(でもphpしかできない人)って、やっぱ「プログラマ」としての差があるのは否めない。
わりと適当に書いても動いちゃうからかな。
0731nobodyさん
2006/09/29(金) 02:13:13ID:CHXTDEUo$ pear package
Analyzing Foo/Bar.php
Error: Parser error: invalid PHP found in file "./Foo/Bar.php"
これを「function foo() {}」に変更したら、パッケージが作成できました。
これってpearのバグでしょうか。それともabstractは使うなということ?
どなたかアドバイスお願いします。
PHP 5.1.4, PEAR 1.4.9
0733731
2006/09/29(金) 02:31:17ID:???package.xmlで指定するバージョン番号が1より大きいときもエラーになって、
「その場合は<extends>タグを使え」とエラーメッセージに出てくるのですが、
pearのマニュアルを読んでも該当するタグが見つかりません。
エラーメッセージはこんな感じです。
Channel validator error: field "version" - major versions greater than 1 are not allowed for packages without an <extends> tag or an identical postfix (foo2 v2.0.0)
だれか<extends>タグの使い方教えてください。
0735nobodyさん
2006/09/29(金) 07:17:52ID:???ttp://www.php.net/manual/ja/language.oop5.abstract.php
0736nobodyさん
2006/09/29(金) 08:24:54ID:hGRz7bViまた、そのインポート方法はありますか?
よろしくお願いします。
0738nobodyさん
2006/09/29(金) 08:57:23ID:hGRz7bViすいません、php質問スレなのでphpって明記しておくのを忘れてました
PHPを使ってバックアップ、インポートがしたいのですが・・・
その方法が各DBのマニュアルに載っているのであれば失礼
0739nobodyさん
2006/09/29(金) 10:08:17ID:???>「PHPってプログラムじゃなくてスクリプトでしょ」って俺もjava野郎に言われた事があって
へぇ〜
スクリプトはプログラムじゃないのか?
ネイティブなCPUコードに落ちていないという意味ではjavaも
中途半端じゃん。
正直、言語の優越はあんまり興味ないな。そんなの切り口で
いくらでも評価変わってくるしさ。好きな言語使えばいいじゃん。
一番影響するのは、個人スキルの優越だしな。
チラ裏だが、
俺的には、Webプログラムで飯食ってるやつが
XSS、CSRFとか知らないっていうのは恥ずかしいと思う。
1言語しか知らないやつが言語の優劣語るのは恥ずかしいと思う。
まぁ、そういうやつに限って優越語りたがるんだがな。
0740nobodyさん
2006/09/29(金) 11:41:00ID:???お前の質問は、
「八百屋さんに野菜が売っていますか?」
と言ってるようなものだ。
その質問への答えは、「はい」で終わり。
0741nobodyさん
2006/09/29(金) 13:43:57ID:???みたいに、変数宣言せずにクラスを使うようにするにはどうすればいいの?
一回しか使わないのに毎回変数に入れるのまんどくさい(´Д`)
0742nobodyさん
2006/09/29(金) 13:54:40ID:???0743nobodyさん
2006/09/29(金) 14:02:15ID:???0744nobodyさん
2006/09/29(金) 14:04:37ID:???0746nobodyさん
2006/09/29(金) 17:20:17ID:hGRz7bViそうですね、失礼しました。
その方法をお願いします
0747nobodyさん
2006/09/29(金) 17:22:27ID:???mysql バックアップ
でググってみてはどうでしょうか。
その後、その方法をPHPで実行する方法を考えましょう。
0749nobodyさん
2006/09/29(金) 18:14:10ID:ejiIN4Agはtrue返すしvar_dumpで見てもnameやsizeも入ってるのに
is_uploaded_file($_FILES["hoge"])
はfalse返ってきます・・・
php.iniですが
file_uploads = on
;upload_tmp_dir = c:\windows\temp
upload_max_filesize = 5M
upload_tmp_dirはコメントアウトしてるので、winsows2003の場合"C:\WINDOWS\Temp"に
入ってるはずが・・・
どこか考え間違いでもしてるんでしょうか凹○
0750nobodyさん
2006/09/29(金) 18:17:18ID:???0751nobodyさん
2006/09/29(金) 18:33:29ID:???と思いきや$_FILES["hoge"]["tmp_name"]に直しても駄目でした・・・
0752nobodyさん
2006/09/29(金) 18:45:13ID:???0753749
2006/09/29(金) 19:07:32ID:???var_dump($_FILES["hoge"]);
var_dump(is_uploaded_file($_FILES["hoge"]['tmp_name']));
試しにこうやって見ると
array(5) {
["name"]=> array(1) { [0]=> string(12) "test.zip" }
["type"]=> array(1) { [0]=> string(28) "application/x-zip-compressed" }
["tmp_name"]=> array(1) { [0]=> string(25) "C:\WINDOWS\TEMP\php81.tmp" }
["error"]=> array(1) { [0]=> int(0) }
["size"]=> array(1) { [0]=> int(3405) }
}
bool(false)
こんな感じなのです。
なんかhttpサーバーが原因な気もしますねこれ、うーん
環境書いておきます。
windows2k3 apache2.0.55 php5.1.2
0755nobodyさん
2006/09/29(金) 20:10:11ID:???http://jp2.php.net/manual/ja/function.is-uploaded-file.php
to get the example to work on windows, youll have to add a line,
that replaces backslashes with slashes.
eg.: $filename = str_replace ("\\", "/", $filename);
前から思ってるんだけど、公式マニュアルにコメント欄がくっついてて、
そこに結構重要な情報が書いてある、っていう
この公式マニュアルの仕様はどうにかならないのかな?
xml_set_character_data_handlerのコメント欄なんかも
It would be nice if someone could complete documentation of
this function. I think that the "splitting" behaviour
should (at least) be mentioned within the documentation,
とか書いてあるし。
(コメント欄で盛り上がった、ある仕様について
「これってドキュメントに書いてあるべきだよね」とか書いてある)
http://jp2.php.net/manual/ja/function.xml-set-character-data-handler.php
0757nobodyさん
2006/09/29(金) 20:18:43ID:???英語でどこかに通知すればいいのかな?
0758nobodyさん
2006/09/29(金) 20:38:19ID:???var_dump($a);
var_dump(file_exists($a));
array(1) { [0]=> string(25) "C:/WINDOWS/TEMP/phpCA.tmp" }
bool(false)
重ね重ねありがとうございます!がやっぱ読み取れないっす・・
申し訳なさと焦りで心が折れそうです
>>755
日本語のとこしか読んだことありません 汗
0759nobodyさん
2006/09/29(金) 21:03:42ID:kqk1O6yRURLに http://〜/index.php?2006
のように ?a=1&b=2 などとなっていないのを見かけるのですが、
この場合どうやって'2006'を取得できるのでしょうか?
取得したい変数がひとつの時にシンプルでいいな、と思っています
よろしくお願いいたします
0760nobodyさん
2006/09/29(金) 21:06:10ID:???$_SERVER['QUERY_STRING']で取れない?
0761nobodyさん
2006/09/29(金) 21:10:28ID:???file_existsがfalseになるってのは、
そもそも、そのファイルは存在しているのだろうかって感じだね。
なにがおこってるんだろ。
WindowsのpHPはつかったことないけど、俺なら
まず、そのファイルが存在するのか、
あと、サーバーがWindows2000みたいだけど、XPではどうか、
Linuxとか(レン鯖とかなんでもいいけど)では、同じスクリプトが動くか、
などを見てみるかな。
0764nobodyさん
2006/09/29(金) 21:28:09ID:???ここを良く見ろ
> ["tmp_name"]=> array(1) { [0]=> string(25) "C:\WINDOWS\TEMP\php81.tmp" }
ファイル名が入ってるのは$_FILES['hoge']['tmp_name'][0]だ
0765nobodyさん
2006/09/29(金) 23:50:44ID:???配列で連結しすぎると分かりにくくなるし。
A1−−B1
−−B2
−−B3ーーC1
−−C2
−−C3
A2−−B1
−−B2
−−B3
たとえばこんな感じの。
0766nobodyさん
2006/09/29(金) 23:57:32ID:???0767nobodyさん
2006/09/30(土) 01:01:05ID:???0 => array(null),
1 => array(0),
2 => array(1)
)
で3階層おpk
0768nobodyさん
2006/09/30(土) 12:42:07ID:???while ($data[$i] = $result->fetchRow()) {
$i++;
}
って意味のある文なんでしょうか?
$data[$i] = $result->fetchRow()って条件式で
$data[$i] に値を代入していくわけではないですよね??
ttp://ethna.jp/ethna-document-dev_guide-db.html
$sql = "SELECT id FROM test";
$result =& $db->query($sql);
$i = 0;
while ($data[$i] = $result->fetchRow()) {
$i++;
}
0770nobodyさん
2006/09/30(土) 12:59:44ID:???データを取り出して、格納したデータを条件式で比較して
データが存在すればまた繰り返すってやつ。
それ最後に無駄なデータがはいっちゃうんだよね。
while ($buf = $result->fetchRow()) {
$data[] = $buf;
}
こっちのほうがいいよ。
0771nobodyさん
2006/09/30(土) 21:25:10ID:???0772nobodyさん
2006/10/01(日) 02:27:44ID:F96v0AKS<?php
setlocale (LC_ALL, 'jpn');
print(strftime("%Y年%b月%d日"));
print(strftime("%A"));
?>
上の例だと月までは表示されるのですがそれ以降が文字化けします。
曜日もめちゃくちゃです。
phpiniの設定は
default_charset = EUC-JP
magic_quotes_gpc = Off
output_buffering = Off
mbstring.language = Japanese
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.internal_encoding = EUC-JP
mbstring.detect_order = auto
mbstring.substitute_character = none
phpファイルはEUC-JPで保存。
文字列自体を
print("日曜日");
とかすると問題なく出ます。
phpiniの設定など、いろいろな組み合わせを試してみましたが解決しませんでした。
phpは5.14です。
お願いいたします。
0773nobodyさん
2006/10/01(日) 03:21:35ID:???次のコードで今日の日付と曜日は出力することができると思います。
//今日の日付
print(sprintf('%s年%s月%s日', date('Y'), date('m'), date('d')));
//曜日
$week = array('日', '月', '火', '水', '木', '金', '土');
print($week[date('w')] . '曜日');
もっとスマートなやり方があるかもしれませんが。
0774nobodyさん
2006/10/01(日) 03:47:33ID:???0775772
2006/10/01(日) 12:36:31ID:F96v0AKSなるほどその方法だと出ますね
strftimeのマニュアルに
「注意 (上記の)全ての変換指定子が使用するCライブラリでサポートされてい ない可能性があります。この場合、PHPの strftime()で該当する変換指定子はサポートされ ません。」
こんな記述がありました。
これでしょうか?文字化けなので微妙に違う気もするけど。
Smartyを使ってるんで、プラグイン作るかなあ。
日付は2006/10/01とか2006-10-01でもいいし、
{$data|date_format:"%b"}月{$data|date_format:"%d"}日
とできるけど、曜日が英語表記だとなんだし…
>>774
ごめんなさい。書き忘れましたがwindowsでテストしてるんです。
その書き方はLinuxの書き方でしょうか?
私の環境だと
setlocale(LC_ALL, 'jpn' );
以外は日本語にセットされないみたいです。
setlocale(LC_ALL,'jpn.eucJP');
も試してみましたが曜日が英語で表示されるので効いていないみたい。
ちなみにPHP5.16にしてみましたが同じでした。
0776nobodyさん
2006/10/01(日) 13:55:05ID:U0I6sUmv*.htmlと*.phpで数字で見て負荷は変わりますか?
0777nobodyさん
2006/10/01(日) 13:57:34ID:???0778nobodyさん
2006/10/01(日) 14:04:14ID:???0779nobodyさん
2006/10/01(日) 14:13:08ID:U0I6sUmv$パスワード=ぱすわーど;
$なまえ=ぎこねこ;
if($ぱすわーど==$_post[省略]&&$なまえ==$_post[省略]){
echo"ログインしました";
} else {
echo"不正なアクセスです。";
}
というコードをphpファイルにうめてアクセス制限を行いたいのですが、
BASIC認証と比べて、phpファイルに直接埋め込むこのやり方はどちらが安全でしょうか?
また、このやりかたでパスワードやなまえがもれるでしょうか?
0780nobodyさん
2006/10/01(日) 14:18:45ID:???setlocate(LC_ALL,Japanese_Japan.20932)
0782nobodyさん
2006/10/01(日) 15:52:43ID:???0783nobodyさん
2006/10/01(日) 16:08:29ID:???0784nobodyさん
2006/10/01(日) 16:16:28ID:???ローカルでCLIなPHPスクリプト動かして
対象ファイル読み込んで正規表現で
<script.*?</script>を削除して保存。
0785nobodyさん
2006/10/01(日) 16:21:39ID:F96v0AKSおお、直りました
ありがとうございます
教えてもらっておいてなんですけど正確には
setlocale (LC_ALL, 'Japanese_Japan.20932');
でした。
シングル、もしくはダブルクオーテーションで囲まないと駄目でした。
ウィンドウズでEUCJPの時はこうみたいですね。
0786nobodyさん
2006/10/01(日) 16:31:01ID:???foreach ((array) glob('*.html') as $file) {
$contents = file_get_contents($file);
$contents = preg_replace('|<script.*?</script>|is', '', $contents);
file_put_contents($file, $contents);
}
phpって便利ね。
0788nobodyさん
2006/10/01(日) 17:19:26ID:U0I6sUmvempty($_POST["name"])と!isset($_POST["name"])は同じですか?
なんかemptyを使うとうまくいくのですが、!issetだと動かないんですよね。
0789nobodyさん
2006/10/01(日) 17:34:06ID:???0790nobodyさん
2006/10/01(日) 17:44:02ID:???empty … もし、空ならば
isset … もし、変数がセットされていないならば
$a = "";
だと、変数はセットされていないが、空だという状況になる。
0791790
2006/10/01(日) 17:44:39ID:???isset … もし、変数がセットされて「いる」ならば
否定形と肯定形の関数があるってのは紛らわしすぎるな
0793nobodyさん
2006/10/01(日) 17:49:25ID:???> $a = "";
>
> だと、変数はセットされていないが、空だという状況になる。
変数はセットされているが空、でしょ。
0795nobodyさん
2006/10/01(日) 17:52:19ID:???0797nobodyさん
2006/10/01(日) 18:25:04ID:???>フォームが空でも空文字列で渡ってくる。
nameだからテキストフィールドだと思うけど、たとえばチェックボックスは
チェックしてないと渡ってこないよ。
■ このスレッドは過去ログ倉庫に格納されています