【PHP】下らねぇ質問はID出して書き込みやがれ 91
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/12/08(火) 13:53:09ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 90
http://pc11.2ch.net/test/read.cgi/php/1258187482/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん
2009/12/08(火) 13:54:07ID:???【PHP】下らねぇ質問はID出して書き込みやがれ 89
http://pc11.2ch.net/test/read.cgi/php/1255263534/
【PHP】下らねぇ質問はID出して書き込みやがれ 88
http://pc11.2ch.net/test/read.cgi/php/1253061577/
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/
【PHP】下らねぇ質問はID出して書き込みやがれ 86
http://pc11.2ch.net/test/read.cgi/php/1249042741/
【PHP】下らねぇ質問はID出して書き込みやがれ 85
http://pc11.2ch.net/test/read.cgi/php/1245074032/
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
【PHP】下らねぇ質問はID出して書き込みやがれ 83
http://pc11.2ch.net/test/read.cgi/php/1238958898/
【PHP】下らねぇ質問はID出して書き込みやがれ 82
http://pc11.2ch.net/test/read.cgi/php/1236532468/
【PHP】下らねぇ質問はID出して書き込みやがれ 81
http://pc11.2ch.net/test/read.cgi/php/1234958956/
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
【PHP】下らねぇ質問はID出して書き込みやがれ 79
http://pc11.2ch.net/test/read.cgi/php/1231850905/
0003nobodyさん
2009/12/08(火) 13:54:48ID:???■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル http://framework.zend.com/manual/ja/
■Smartyマニュアル http://www.smarty.net/manual/ja/
(以下英語)
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smarty http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん
2009/12/08(火) 13:55:28ID:???1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→ http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0005nobodyさん
2009/12/08(火) 13:56:11ID:???→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
0008Neet
2009/12/08(火) 16:45:50ID:bw06sTbP独学で勉強して実際に面接に挑む予定です。
もしここにいる人で、仕事でプログラム書いている方
あなたが面接官だった場合どのようなことで採用の判断決めますか?
0009nobodyさん
2009/12/08(火) 17:23:21ID:???0010nobodyさん
2009/12/08(火) 17:26:52ID:???0011sage
2009/12/08(火) 17:40:40ID:+lXW3oI0PHP 5.2.9のレンタルサーバなのですが、
$context = stream_context_create(
array(
'http'=>array(
'method'=>'POST',
'header'=>"X-Server-Address: ".$_SERVER['SERVER_ADDR']."\r\n".
"User-Agent: Mozilla/4.0\r\n"
)
)
);
上記のcontext設定でfile_get_contentsをしたときに、
methodは書き換わるのですが、headerの内容が書き換わりません。
headerの設定を適当に
"Accept-language: en"
などに変えてみても、反映されないのですが、
headerの書き換えが禁止されるようなphp.iniの設定など
あるのでしょうか?
methodは書き換わっているだけに、不可思議なんです。
よろしくお願いします。
001211
2009/12/08(火) 17:42:54ID:???申し訳ない
0013nobodyさん
2009/12/08(火) 18:07:51ID:???で質問です。パッケージでインストールしてます。
<?php echo SQLITE_BOTH; ?>をcliで実行すると3が返ってくるのですが、
ブラウザで開くと SQLITE_BOTH という文字が返ってきます。
モジュールの場合なぜか未定義となってしまうようなのです。
<?php phpinfo(); ?> をブラウザで見ると SQLiteがちゃんと存在します。
$ php -i したときの結果と比べても同じ内容です。
このような違いはなぜ起こるのでしょうか?
どのようにしたら SQLITE_BOTH を定義済みとして参照できるでしょうか?
よろしくお願いします。
001413
2009/12/08(火) 18:18:21ID:???cliでもモジュールでも定数として見えました。
SQLiteのモジュールの定数だけがおかしいみたいです。
なんなんだろう。。。
Debian(php5-sqlite)の問題だったらごめんなさい。
0015nobodyさん
2009/12/08(火) 18:31:46ID:GGPotsAy001813
2009/12/08(火) 18:50:58ID:ppGwYCe4すみません、名前を書けば出ると勘違いしてました。気をつけます。
>>17
こんな関数あるんですね。
preで括ってブラウザに出たものとcliで実行した物を保存して
diffしてみたところ、[pcntl], [ncurses], [SQLite] の3つが
cli にしか存在しませんでした。
あと違いがあった中でこんなのがありましたが、
ブラウザ: [PHP_CONFIG_FILE_SCAN_DIR] => /etc/php5/apache2/conf.d
CLI : [PHP_CONFIG_FILE_SCAN_DIR] => /etc/php5/cli/conf.d
これはどちらもsymlinkで /etc/php5/conf.d を参照してます。
あとは関係がありそうな差異は見られませんでした。
peclから手でインストールしてみようかと思ったら、あれはもう
メンテナンスされてないんですね。。。
002013
2009/12/08(火) 19:32:38ID:ppGwYCe4pcntlとncurses 関係はcliのみ存在しました。
sqlite_* は両方に存在します。
その他、
modのみ: apache_lookup_uri virtual apache_request_headers apache_response_headers apache_setenv apache_getenv apache_note apache_get_version apache_get_modules getallheaders
cliのみ: chroot, pdo_drivers
という違いがありました。 pdo_drivers が気になる。。。
>>19
sqlite_*に未定義の定数を指定したりしなければ動くのです。
rhacoというのを試していたのですが、いっこうにうまく動かず、
やっと見つけた原因が「定数が未定義」というものでして。。。
定数指定してるところをばさっと消すと一応動作しました。
002113
2009/12/08(火) 19:52:42ID:ppGwYCe4apacheのモジュールでもpdo_drivers関数は存在していました。
実はPDO_OCIを入れようとして、pecl install PDO_OCIしたところ
pear/PDO_OCI requires PHP extension "pdo" (version >= 1.0)
と言われたので、てっきり古いんだと思い、
pecl install PDO してしまいました。
うまく動かず、元に戻したつもりだったのですが、なにかおかしい
状態になっているのかもしれないです。
たぶん私の環境の問題だと思いますので、質問は取り下げます。
お騒がせして申し訳ありません。
0022nobodyさん
2009/12/08(火) 20:14:06ID:GGPotsAyそのデータベース部がブラウザで文字化けしました
解決方法が分からず、とりあえずmb_convert_encoding($row['name'],'EUC-JP','auto')のようにした所ブラウザ上は文字化けは収まりました
しかし、元々htmlspecialchars($row['country'])のようにしていたのですが、上記のやり方だとHTML エンティティに変換するにはどのようにすればいいのか分かりません
どのようにすればいいのでしょうか?
一個一個の個別の変換ならば変数に定義してそれを引数に入れればいいのでしょうが、大量にあるのでどう対処すればいいのか分かりませんでした
0023nobodyさん
2009/12/08(火) 20:48:20ID:???Shift_JISやEUCを使う理由はあるの?
0024nobodyさん
2009/12/08(火) 21:54:43ID:???0025Neet
2009/12/08(火) 21:59:25ID:bw06sTbPすれ違いなのは分かりましたが、あほっていうのはなぜですか?
0026nobodyさん
2009/12/08(火) 22:09:44ID:GGPotsAy皆さんは、データベース登録時、PHPコードの文字コードはそれぞれ何で保存されているのですか?
UTF-8でしょうか?
あっ、ちなみに自分はLinuxではなく、WindowsXPです
0028Neet
2009/12/08(火) 22:13:30ID:bw06sTbPPHPのソースコードの文字コードは文字化けの直接原因でなく
header関数,htmlの文字コード指定をShift_JISで出力してあげればいいと
php.iniファイルの文字コード関連の設定を一度確認しないと解決しない
0029nobodyさん
2009/12/08(火) 22:15:38ID:GGPotsAy確かにそうですよね
しかし、文字化けが解消しなくて困っています
色々なコードで保存しなおしたり、php.iniなどの設定を見直したり・・・
ですから、参考にでもと思ったもので
DB : Shift_JIS 、 PHP : EUCで何がおかしいのかなと思いまして
0030nobodyさん
2009/12/08(火) 22:16:42ID:GGPotsAy>header関数,htmlの文字コード指定をShift_JISで出力してあげればいいと
それはまだ試しておりませんでした
ブラウザの文字コードを変えるような事は行っていましたが
ちょっと試してみます
0031Neet
2009/12/08(火) 22:23:25ID:bw06sTbP文字コードは何にしています?
0032nobodyさん
2009/12/08(火) 22:34:45ID:GGPotsAyめぼしい所の設定を書かせて頂きます
((php.ini))
default_charset = Shift_JIS
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = auto;
mbstring.script_encoding = EUC-JP
((MySQL))
[mysql]
default-character-set=sjis
[mysqld]
default-character-set=sjis
skip-character-set-client-handshake
となっております
003432
2009/12/08(火) 22:42:32ID:GGPotsAymysql> SHOW VARIABLES LIKE 'char%';
を行ったところ、
| character_set_client | sjis
| character_set_connection | sjis
| character_set_database | sjis
| character_det_filesystem | binary
| character_set_results | sjis
| character_set_server | sjis
| character_set_system | utf8
等となっております
>>33
そうなのですか・・・
自分もちょっとUTF-8の方を試してみようかと思います
結構この文字化け問題、色んな所でぶつかっていて・・・
0035Neet
2009/12/08(火) 22:46:11ID:bw06sTbPつまりブラウザーに出力するさいにShift_JIS指定してくれとお願いしている。
htmlタグに<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
と記入するのもブラウザーに出力する際にShift_JISでお願いしている。
これで直らない?
Mysqlにデータを登録する際にフォームの文字コードは?
0036nobodyさん
2009/12/08(火) 23:06:16ID:GGPotsAy今回はフォームからMySQLに登録したのではなく、コマンドプロンプトから読み込んでデータベースに登録しました
mb_internal_encoding("Shift_JIS"); を書き加えたらデータベースからの出力内容はちゃんと日本語で出ましたが、今度はその他の<table>要素とかの文字が文字化けしてしまいました・・・
>htmlタグに<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
一応やってみましたが残念ながら改善致しませんでした
0037Neet
2009/12/08(火) 23:17:34ID:bw06sTbP0038nobodyさん
2009/12/08(火) 23:21:23ID:???内部コードがどうなってるか調べてみ
0039nobodyさん
2009/12/08(火) 23:26:03ID:GGPotsAy例えばなのですが、
<?php
require_once("DB.php");
$dsn="mysqli://pearusr:pearpass@localhost/pear";
$db=DB::connect($dsn);
$rs=$db->limitQuery("SELECT * FROM composer ORDER BY birth ASC",2,3);
?>
<table border="1">
<tr>
<th>名前</th><th>出身国</th><th>誕生日</th>
<th>享年</th><th>代表作</th>
</tr>
<?php while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){ ?>
<tr>
<td><?php print(htmlspecialchars($row['name'])); ?></td>
<td><?php print(htmlspecialchars($row['country'])); ?></td>
<td><?php print($row['birth']); ?></td>
<td><?php print($row['old']); ?>歳</td>
<td><?php print(htmlspecialchars($row['work'])); ?></td>
</tr>
<?php } ?>
</table>
です
0040Neet
2009/12/08(火) 23:34:05ID:bw06sTbPshift_jisでphpファイルを保存するとどうなりますか?
0042nobodyさん
2009/12/08(火) 23:42:48ID:???0043nobodyさん
2009/12/08(火) 23:44:10ID:GGPotsAyテーブル上の全ての文字、名前とかも文字化けします
データベースからの文字は変換されるのかと思っていたら、それすらも文字化けしてしまいます
>>41
すみません
一応自分でも<table>の上に、<html><meta〜><body>など書いてタグを閉じてみたのですが、元々がこのコードでしてそれを出しました
0044nobodyさん
2009/12/08(火) 23:48:31ID:GGPotsAy自分でも、htmlspecialchars(mb_convert_encoding($row['name'], "EUC-JP", "auto"))
としたら上手くいったのですが、mb_convert_encoding()を全てに書かなきゃいけませんでした
もう結構な日数、設定を見直そうと色々とやったり検索してみたのですが、迷宮に迷い込んでしまいました
0045nobodyさん
2009/12/08(火) 23:53:02ID:???htmlspecialcharsも全部に書いてるじゃないか
ていうかそういうもんだし・・・
いやなら$row全部にかければいいんじゃね
0046nobodyさん
2009/12/08(火) 23:58:35ID:???というのがこのスレのスタンス
たまに出るが>>4の1のEUC-JPはそろそろはずしたほうがいいと思う
0047nobodyさん
2009/12/09(水) 06:25:37ID:AEdsXhEHでは共用サーバにおいて各ユーザが自分に割り当てられた
ディレクトリ以下にしか読み書きできないようにするには
どうすればいいのでしょうか? apache + mod_php です。
0048nobodyさん
2009/12/09(水) 06:35:27ID:LJm/OnIufilename.jpgでもfilename_150x100.jpgでもマッチさせたいんですがうまくいきません。
preg_match('/^([0-9a-z]+)_([¥d+]{2,3})x([¥d+]{2,3})¥.(jpg|gif|png)$/', $file, $ret)
↑まではなんとか辿りつきましたがこれだと_150x100がないとマッチしてくれなくて困っています。
多分初歩的なことだと思いますが、どなたかここから先を教えてください。
0049nobodyさん
2009/12/09(水) 07:34:34ID:???0050nobodyさん
2009/12/09(水) 07:42:02ID:???while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){
foreach ( $row as $eachvar=>$eachval){
$row[$eachvar] = htmlspecialchars(mb_convert_encoding($reachval, "EUC", "SJIS"));
}
?>
<tr>
<td><?php print($row['name']); ?></td>
005232
2009/12/09(水) 09:36:23ID:anat6YPp結局問題が解決しなかったので、ご指摘の通りphp.iniもmy.cnfもUTF-8に統一しました
テキストエディタの初期文字コード、保存文字コード共にUTF-8に、ブラウザも自動判別(+UTF-8)にしたところ何とか文字化けは起こらなくなりました
これで文字化け問題は解決したのか分かりませんが、一応このままやってみようと思います
ありがとうございました
0053nobodyさん
2009/12/09(水) 11:29:07ID:???0054nobodyさん
2009/12/09(水) 11:44:36ID:zpeYVRKK複数行読み込ませて「<>」の左の要素と「$_POST['button']」が一致した時ループを終了して$dataに代入するにはどのようにすればいいでしょうか?
if($_POST['button'] === 'NOT') $_POST['button'] = '';
$fhy = fopen("data.cgi","r");
@flock($fhy,"2");
while(!feof($fhy)) {
$fline = fgets($fhy);
$textline = explode('<>',$fline);
if($_POST['button'] === $textline[0]) {
$flag = 1;
breack;
}
}
if($flag == 1) $data = $textline[1];
0055nobodyさん
2009/12/09(水) 11:48:35ID:zpeYVRKK要素は二つのみです。
0056nobodyさん
2009/12/09(水) 12:00:08ID:???$_POST['button'] = '';
んん?
if($_POST['button'] === $textline[1]) {
$data = $textline[1];
break;
}
でいいのでは?
0057nobodyさん
2009/12/09(水) 12:02:44ID:mJCDNQBS【PHPのバージョン】php5.045
【連携ソフトウェア】-
【質問内容】
コードを記述します。
<html>
<head><title>Hello</title></head>
<body>
<?php
$now = gettimeofday();
$weekday = array( "日", "月", "火", "水", "木", "金", "土" );
echo date('Y/m/d') .' '. '(' . $weekday[date("w")].')'.' ' . strftime('%H:%M:%S',time()) . '.<font size="2">'.$now['usec'];
?>
</body>
</html>
上記に於いて、タイミングによってマイクロ秒の部分の桁数が4桁とか3桁とかに
変わってしまうんですが、これを常に6桁に固定させることは可能でしょうか?
よろしくお願いします。
0058nobodyさん
2009/12/09(水) 12:03:05ID:zpeYVRKK0060nobodyさん
2009/12/09(水) 12:11:43ID:zpeYVRKKマジでありがとうございました!
0061nobodyさん
2009/12/09(水) 12:59:57ID:mJCDNQBSやてみたんですがどうもうまくいきません…
大変お手数ですがコードを記述していただけないでしょうか?
0062nobodyさん
2009/12/09(水) 13:02:04ID:???0063nobodyさん
2009/12/09(水) 13:04:53ID:???わかんなかった?マニュアルに書いてるから出来ると思ったが
$now['usec']を
sprintf("%06d", $now['usec'])
0064nobodyさん
2009/12/09(水) 14:56:51ID:???参考書だけでいいってのならば数ヶ月でいいだろうけれど、ちゃんと本家に行ってマニュアル読んでってなるとめっちゃ大変だった
設定などにもかなりてこずったし、学習量は少ないとは思えなかった
コレで大変ならばJavaとかCとかもっと大変なんだろうな・・・
0065nobodyさん
2009/12/09(水) 15:02:28ID:mJCDNQBSすいません、まだ勉強し始めなものでして。精進します
>>62
うまくいきました!ありがとうございました!
0066nobodyさん
2009/12/09(水) 16:04:19ID:???データベースはPHPに限ったことじゃないし、PEAR、Smarty、ZFはあくまでもツールだから
使わない方法もある。全部PHPで作れるし
■ このスレッドは過去ログ倉庫に格納されています