【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カテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0515504
2006/09/25(月) 17:56:20ID:???header("Content-Type: text/html;charset=UTF-8");
と指定したのですが、変わりませんでした。
>>509
MySQLです。
データベース作成時には特に何もいじっていません。
また、設定の仕方がわかりません。
>>512
それはもともと表記されていましたが、消しても書いても変化はありませんでした。
>>513
UTF-8では文字化けした状態で表示
EUC、SJIS、JISでは何も表示されません。
DBの方に言ってみることにします。
有難うございました。
0516nobodyさん
2006/09/25(月) 18:00:54ID:???0517nobodyさん
2006/09/25(月) 18:01:25ID:???WinXP、PHP 5.1.4
php_imagick.dllをphp.iniに追加しましたがロードに失敗してしまいます(読み込めないとのエラーがログに吐かれていた)。
mbstringやpdoなど、他のモジュールはロードできています。ファイル名が間違っていないか何度もチェックしましたが合っています。何が原因なのですか?
0518nobodyさん
2006/09/25(月) 18:13:04ID:???$str .= aaa;
return($str);
}
$str = "あいうえお";
echo str($str);
上記のようにすると、「あいうえおaaa」と出力されます。
ここまではいいのですが、$str以外の変数にも同じようにしたいのですが、
どのようにすれば良いのでしょうか?
つまり、$strだけじゃなく、
str($hogehoge);や
str($aiueo);など
いろんな変数にも対応できるようにしたいです。
0521nobodyさん
2006/09/25(月) 18:18:36ID:???function ($a)
{
$a .= 'aaa';
return $a;
}
$str = 'あいうえお';
$hogehoge = 'ほげほげ';
$aiueo = 'あいうえお';
echo( $str );
echo( $hogehoge );
echo( $aiueo );
0523nobodyさん
2006/09/25(月) 18:31:39ID:???SJISとJISとEUCとUTF-8
どう違うのでしょうか?
また何か説明の載っているわかりやすいサイトはありませんか?
0524nobodyさん
2006/09/25(月) 18:33:50ID:???せめてもう少し書籍等を読んだほうが・・
関数内の変数は外には影響しません
このあたりを実行すれば理解出来るんじゃない
---------------
$a = 5;
print $a . '<br>';
test();
function test(){
$a = 1;
print $a;
}
--------------
0526nobodyさん
2006/09/25(月) 18:39:28ID:gQCSf4GGセットの仕方が分かりませんってさ
mysqlならcharacter set utf8
pgsqlなら--encoding=utf8
って書いたじゃん・・・
0527nobodyさん
2006/09/25(月) 18:53:09ID:???0529nobodyさん
2006/09/25(月) 18:55:49ID:???今辞書でちょうど見つけたところw
聞く前に調べるべきでした・・・
0531nobodyさん
2006/09/25(月) 20:13:43ID:???でググって一個目で何とかなるんとちゃう
0532nobodyさん
2006/09/25(月) 20:56:02ID:???スクリプトを停止にしたいんですが
どうやったらいいですか?
0533nobodyさん
2006/09/25(月) 21:24:44ID:???http://www.php.net/manual/ja/features.connection-handling.php
これででき・・ないかな
試したことないから分からん
0534nobodyさん
2006/09/25(月) 21:25:50ID:???勝手に止まらなかったっけ?
ブラウザが再読み込み→Apacheにリクエスト中断発信→ApacheはプロセスにAbortシグナル発行
って流れだったと思う。
問題はPHPがsleep中にシグナルを受け取れるかどうかだと思うけど、SQLクエリー発行中はともかく
sleep中なら多分受け取ってると思うんだけど。
0535nobodyさん
2006/09/25(月) 22:23:46ID:UugMM9l5そのような関数や変数はありますか?
0536nobodyさん
2006/09/25(月) 22:28:48ID:???0537nobodyさん
2006/09/25(月) 22:29:11ID:???0538nobodyさん
2006/09/25(月) 23:42:58ID:???メールを送信するとISO-2022-JPで送信されない。
なにも特別な対応していないからあたりまえだが。
いままでは、mb系のfunctionで対応してきたが、コアチームからバグが登録されたからどうにかしろ
といわれたんだげど、ポリシーでiconv系もmb系も使用しないらしい。
この条件で一体何ができるだろう。なんかいい方法ある?
0539nobodyさん
2006/09/25(月) 23:51:09ID:???0540nobodyさん
2006/09/25(月) 23:52:31ID:???0541nobodyさん
2006/09/26(火) 00:03:35ID:???いいアイデアだけど、日本語に特化したのは130%拒否される。
バグ登録した方がパッチを出しているが、日本語オンリーな上にバグってる。w
事象はわかっていたけどまともな対応はできないので、放置しておいたのになぁ。
いらんことを。
0542nobodyさん
2006/09/26(火) 00:07:42ID:???0543nobodyさん
2006/09/26(火) 00:14:49ID:???538,541は、そのオープンソースのメールシステム(パッケージ)を使う側じゃないの?
ん・・・コアチームではないけど、開発してるってことかな。
もしそうだとしたら、コアクラスを拡張してISO-2022-JPで送信できるようにするのはパッケージが「日本語に特化する」ことにはならないと思うけど。
0544nobodyさん
2006/09/26(火) 00:15:51ID:???だね。とりあえず、日本ではそのルールをかえない限り、野良パッチするしかないと書いといた。
XOOPSみたいに、日本語版を出すしかないのか。ニッチなOSSだから喜ぶひとはいないし、報われないし。
放置決定。
0545nobodyさん
2006/09/26(火) 00:19:35ID:???いや、翻訳してるだけなんだけど、使う側ではないのよ。キムチの人とか、4000年の人が、
いろいろバグを登録するので、コアチームがわからないとメールをなげてきた。
0546nobodyさん
2006/09/26(火) 00:23:35ID:???話から察するにコアチームが言語の汎用性を深く考えてなさそうだから、簡単に拡張できないっていう難しさがあるんだろうね。
ISO-2022-JPに対応するサブクラスを作成したとしても、コアクラスに小さな、または大きな修正が必要になるだろうと。
それをコアチームが認めないのかな。仕事だとプログラミング以外の難しさもあるからね。
0547nobodyさん
2006/09/26(火) 00:27:51ID:???勝手な想像で見当違いな事を言ってしまい申し訳ない。
バグを登録してくる人達に、コアチームのポリシー・「バグ」ではないこと・修正されないことを伝えるだけだね。
0548545
2006/09/26(火) 00:36:18ID:???いや、普通に考えるとそうだと思う。
Exciteで翻訳しながらそう回答した。
マルチバイトをアメリカンに説明するのはムズい。日本語でも説明できないのに。
Thanks.
0549nobodyさん
2006/09/26(火) 03:46:23ID:byyWwaMP文字コードはUTF-8で作っていった方がいいと思うよ。これからの時代。
0550nobodyさん
2006/09/26(火) 07:53:34ID:???actionにある記述って拡張子とかいらないのですか?
てか、これだけでPHPで作られてるのかわかりますか?
<form name="link" method="post" action="../diary/Detail" >
0551nobodyさん
2006/09/26(火) 09:26:19ID:???0552nobodyさん
2006/09/26(火) 09:33:10ID:???たまに拡張子のないページ見かける。
ページ遷移でjspとか出てきたりして、
はじめてJavaだったのかーって感じだったり。
これはいったいどういう仕組み?
htaccessかなんかかな?
0555nobodyさん
2006/09/26(火) 09:51:01ID:???拡張子ってどうやれば、隠せるのでしょか?
あと、そのサイトがphpやperlで作られているって見分ける方法ってあるのでしょうか?
0556nobodyさん
2006/09/26(火) 10:18:54ID:???数秒後に次のページ渡すにはどうすればいいのでしょうか!?
sleepとheaderではできないですよね。。
0560nobodyさん
2006/09/26(火) 10:44:49ID:???0561nobodyさん
2006/09/26(火) 11:06:44ID:???if(get_magic_quotes_gpc()){
$string = stripslashes($string);}
$string = htmlspecialchars($string);
return $string;
}
こうしたstringをそのまま、データベース(mysql)にぶち込んでるけど、
問題ってあるかな?
0563nobodyさん
2006/09/26(火) 11:23:45ID:???作る側が意識して隠してれば分からない
Content negotiationとかrewriteとかScriptAliasとか方法はいろいろある
0565nobodyさん
2006/09/26(火) 12:47:34ID:???ですよね。これはXSS対策で、HTMLに表示しなければ関係ないですよね??
これとは、全く別に、POSTで送られてきた値にinitvalやaddslashを用いればいいのでしょうか?
それとも、561の関数にinitvalやaddslashを入れればいいのでしょうか?
0566nobodyさん
2006/09/26(火) 12:59:28ID:???何もフィルタかけず(オーバーヘッドを減らすため)
SQLInjection対策でDBに突っ込むものを直前にエスケープ(addslashes)
XSS対策で出力するものを直前にHTML特殊文字変換(htmlspeicalchars)
っていうことじゃないかね
0567nobodyさん
2006/09/26(火) 13:15:21ID:???エラーを表示させてるのですが、この場合、エラーが出たら、
unlinkで削除するのが良いのでしょうか?したら、このファイルは存在しないみたいな
エラーがでたので、アップされたファイルは保存されていないのでしょうか?
0569nobodyさん
2006/09/26(火) 13:54:17ID:???すいません。タイプミスでした。ちゃんと削除されました。
0570nobodyさん
2006/09/26(火) 16:31:25ID:EMjXfoVa絶対に見逃せないエロ娘たち
http://wanwanwan.mine.nu/uploader/src/up0045.jpg
http://wanwanwan.mine.nu/uploader/src/up0044.jpg
0572nobodyさん
2006/09/26(火) 18:26:08ID:???$obj = new EveLove();
$obj2= new EveDisLove();
class EveLove{
function EveLove() {
echo "test";
echo "test2";
ここで抜ける
.....echo "test20";
}
}
class EveDisLove{
function EveDisLove() {
echo "1";
echo "2";
.....echo "20";
}
}
表示を
test
test2
1234...20となるようにしたいです
可能であれば関数等教えてくださいm(_ _)m
0573nobodyさん
2006/09/26(火) 18:51:35ID:???0574nobodyさん
2006/09/26(火) 18:52:43ID:???意味が分からん。が、書いてる内容そのままに答えるなら
returnで抜けるか、実行させたくない部分をコメントアウト、もしくは削除しろよ。
0575532
2006/09/26(火) 20:00:27ID:???sleep(20)で一時停止中に再読み込みやストップボタン押しても、20秒後停止が解除されたら
スクリプトが最後まで実行されてしまうんですが、
どうしたらいいのですか?
頭にignore_user_abort(1);
をつけたのですが変わらずでした
おしえてください
0576nobodyさん
2006/09/26(火) 20:05:52ID:???なぜ、わざわざaddslashesを使うんだよ?
SQLエスケープ専用の関数があるんだからそれを使えよ。
お前程度の知識でaddslashesを使うと、必ず穴が出る。
0577nobodyさん
2006/09/26(火) 20:12:45ID:???これ、読め。
http://www.amazon.co.jp/gp/product/4883374718/ref=sr_11_1/250-2846891-3685828?ie=UTF8
お前程度の知識でaddslashesを使うと、必ず穴が出る。
0578nobodyさん
2006/09/26(火) 20:42:55ID:???だからエスケープって書いてるじゃん
上でのaddslashes云々の話から繋がるように例として挙げてる
文脈から判断してくれよそれくらい
0579nobodyさん
2006/09/26(火) 21:14:43ID:OUvdqD7Q0580nobodyさん
2006/09/26(火) 21:25:16ID:4x0TvdIuecho レベルひっくぅ・・・・
0581nobodyさん
2006/09/26(火) 21:43:25ID:???バカかお前は。俺はその本はもちろん持ってるし、高木浩光氏のサイトも読んでる。
お前みたいなバカがいまだにaddslashesなんか使ってるから問題発生するんだ。
>>578
はぁ? 何言ってんの? 勝手に無茶苦茶な話をしてんじゃねぇよチンカス。
だからエスケープにはaddslashesじゃなくて専用関数(mysql_real_escape_string等)使えっての。
0582nobodyさん
2006/09/26(火) 21:44:36ID:???スクリプトは公開されていないでしょうか。
0583nobodyさん
2006/09/26(火) 22:18:16ID:???そんな真っ赤にならんでも^^;;;;;
0584nobodyさん
2006/09/26(火) 22:25:25ID:???その本読んでるなら、そんなにaddslashesを批判する必要なくない!?
まあ、おれはよくわからんがその本では、mysql_real_escape_stringよりも
addslashesを薦めてるぞ。
0586nobodyさん
2006/09/26(火) 22:39:58ID:???mysql_real_escape_string or addslashes
おれ、addslashes
0587nobodyさん
2006/09/26(火) 22:45:50ID:???具体的に反論できないチンカス乙
悔しかったらmysql_real_escape_stringよりも
addslashesを使うべき理由を挙げてみろ。
0588nobodyさん
2006/09/26(火) 22:50:19ID:???0589nobodyさん
2006/09/26(火) 22:54:42ID:???マニュアルにあるユーザ定義関数 quote_smart( ) なんてどうよ?
http://www.php.net/manual/ja/function.mysql-real-escape-string.php#AEN103489
0590nobodyさん
2006/09/26(火) 22:55:04ID:???0592nobodyさん
2006/09/26(火) 23:03:25ID:???これ↓、無意味なコードじゃねぇ? 別に数値かどうかに関わらず全てクォートすればいいわけで。
数値かどうか判定する分だけ無駄な処理に思われる。
// 数値あるいは数値形式の文字列以外をクオートする
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
0593nobodyさん
2006/09/26(火) 23:04:37ID:???データの安全性を確保するため、MySQL へクエリを送信する場合には (わずかな例外を除いて)常にこの関数を用いなければなりません。
0594nobodyさん
2006/09/26(火) 23:08:34ID:???俺はmysql_〜派
理由。こっちなら文字コード設定に合わせて最適なエスケープをしてくれるから。
UTF-8しか使わないならどっちでもいーんじゃないの?
外部との連携とかあってSJIS使う羽目になったらaddslashesは「使えない」。
0595nobodyさん
2006/09/26(火) 23:16:27ID:???0596nobodyさん
2006/09/26(火) 23:23:38ID:???処理が早い。
データベースコネクションの有無に影響されない。
逆変換が容易。
magic_quotes_gpcとの相性が良い。
0597現在
2006/09/26(火) 23:27:22ID:???mysql_real_escape_string 2票
0598nobodyさん
2006/09/26(火) 23:29:52ID:???0600nobodyさん
2006/09/26(火) 23:37:15ID:???0602nobodyさん
2006/09/27(水) 00:02:57ID:???逆変換が必要になるケースが理解できない…
どういう場面でそんなことする羽目になるんだ。
magic_quotes_gpcはそもそも真面目にエスケープ処理を考えてる人なら
最初から使うべきものじゃないんだから考慮する必要を感じない。
0603nobodyさん
2006/09/27(水) 00:03:35ID:???<?= echo 文字列 . $_POST['なんとか'];?>
これが危険な理由がバカな漏れには分からないorz
教えてたもれ。
0605nobodyさん
2006/09/27(水) 00:29:47ID:???0606nobodyさん
2006/09/27(水) 00:44:56ID:S78j1V6Hそれとも、スクリプト内で呼ばれた時だけ、セッション・ファイルから
随時メモリに読み出されて利用されるのでしょうか?
たとえば$_SESSION['login']='ok'という内容で格納されているとして、
スクリプト中で、if ($_SESSION['login']=='ok') {} のように使った場合、
$_SESSION['login']は、そのスクリプト終了後にメモリから解放されるのか、
それともセッションが継続する限りメモリ内に$_SESSION['login']が残り続けるのかが知りたいです。
0607nobodyさん
2006/09/27(水) 00:52:31ID:???サイテロ本の丸写し乙。
>処理が早い。
処理時間に有意の差が出るほど長大なSQLを使う場面があるとは思えない。
>データベースコネクションの有無に影響されない。
通常、エスケープしたSQLは、当然DBに接続して使うわけで、
結局コネクションは必要になる。
>逆変換が容易。
俺は今まで数々のWebアプリを作ったが、逆変換が必要だった場面など記憶にない。
>magic_quotes_gpcとの相性が良い。
いくらテロリストと相性が良くても、テロリストはテロリストだ。
0608nobodyさん
2006/09/27(水) 01:16:17ID:???1点、そもそも間違ってる部分があると思うんだが、
> それとも、スクリプト内で呼ばれた時だけ、セッション・ファイルから
> 随時メモリに読み出されて利用されるのでしょうか?
と
> $_SESSION['login']は、そのスクリプト終了後にメモリから解放されるのか、
の部分。
まるでスクリプトが終了してもメモリ上にデータが残ってるかのようだが、
スクリプト終了=使われてた全メモリ解放だよ。
というわけで正解は
スクリプトの中でセッションを開始した時点で全部の内容がメモリに読み出され、
スクリプトが終了した時点で全部解放される。
となる。
> スクリプト内で呼ばれた時だけ、
は間違いだが
> そのスクリプト終了後にメモリから解放される
は正解。
0609nobodyさん
2006/09/27(水) 01:22:05ID:S78j1V6H>スクリプト終了=使われてた全メモリ解放だよ
よく考えたらそれはそうでしたね。分かってたのに勘違いしました。
>スクリプトの中でセッションを開始した時点で全部の内容がメモリに読み出され
ズバリその点について気になっていたのでした。
たとえば$_SESSION['A']、$_SESSION['B']、$_SESSION['C']とあった場合、
スクリプト中で$_SESSION['A']だけを使った場合、メモリに読み込まれるのは$_SESSION['A']だけなのか、
それともA〜Cまで全部セッション開始(session_start)時に全部読み込まれてしまうのか、
それが質問したい点でした。
0610nobodyさん
2006/09/27(水) 01:28:24ID:???どうなんだろうね。俺はこういうちゃんとした処理してるほうが好きだけど。
俺だったらis_boolも判断して0か1に変換するし。mysqlだとtrue,false使えないんだよね。
汎用性のある、エスケープするfunctionなりクラスなり作るならしっかりやっといた方がいいとは思う。
mysql_real_escape_stringのマニュアルでは、引数にstringとってる。
まぁ何にしろ正常に動作するなら、あとは好みの問題かなぁ・・・
>>600
magic_quotes_gpcがonで、addslashesすると2重にエスケープされちゃうでしょ。
俺はmagic_quotes_gpcがonだったらstripslashesしてDBのエスケープ関数使う派。
でもpostgresのpg_escape_stringは何か問題があるという記事を読んだような気が・・・もう1回調べよっと。
0611nobodyさん
2006/09/27(水) 01:52:50ID:???でもさ、数値かどうかを判定するロジックを仮に無くしたとして、
それで何か弊害が出るかい?
その判定ロジックを省いて、
とにかくmysql_real_escape_stringをかければ、結果は同じでしょう。
0612611
2006/09/27(水) 01:56:17ID:???intval()をかけないと致命的だ・・・とか書いてるけど、
俺はそうは思わない。
なぜなら、その変数をPOSTなどから受け取った時点で、is_numericやctype_digitなど
適切な手段にてしっかりバリデートしてれば問題ないわけで。
(むろん、この場合でもmysql_real_escape_stringは必須だが)
0613nobodyさん
2006/09/27(水) 02:08:47ID:???好みの問題だから、そこをお互いどうこう言っても仕方ない。
postで受け取った時点でっていうのはあるね。俺も初めの頃はそうしてた。
でも毎回やるのが面倒になったから、DB用のクラスにエスケープするfunction作って、あとはデータ全部投げるだけ。
エスケープ以外のバリデートが必要なところはその場その場でやるけどね。
まぁ、それも好みの問題。
特に俺のDBクラスではいくつかのDBに対応させてて、magic_quotes_gpcがonの時にstripslashesするからfunction内でのis_boolチェックは必須。
■ このスレッドは過去ログ倉庫に格納されています