【PHP】下らねぇ質問はID出して書き込みやがれ 101
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/11/15(月) 13:00:07ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 100
http://hibari.2ch.net/test/read.cgi/php/1288168893/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0755nobodyさん
2010/12/14(火) 14:06:49ID:???うっわ過疎ってんな
っていうか初心者質問スレしか専門板にぎわってないんだよな
PHPについて適度な雑談するときも質問スレになっちゃってるし
初心者に優しくしてるとソイツが段々力付けてここの住人になってくれてにぎわうとゆー
0756nobodyさん
2010/12/14(火) 14:08:57ID:???これで新規は質問スレにしか寄り付かないからな
0757nobodyさん
2010/12/14(火) 14:12:52ID:???<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
でも「unicodeが含まれててもANSIで保存するぜ俺のphpは!」なんて事できんの?
何か俺ID出して質問したほうがいい気がしてきた・・・。
0758nobodyさん
2010/12/14(火) 14:13:49ID:???0760nobodyさん
2010/12/14(火) 14:22:18ID:???0761nobodyさん
2010/12/14(火) 14:24:50ID:???0762nobodyさん
2010/12/14(火) 14:32:53ID:???そんでcharset=Shift_JIS"だとunicodeの文字を送るとサーバーは認識できないからANSIのテキストに変換されて保存される
charset=utf-8だとunicodeの文字を送るとサーバーは認識してテキストファイルにunicodeの文字でUTF8のテキストにそのまま保存される
ふぅ、まぁこんな所だ
んでUTF-8でunicode送ってもテキストファイルAはNSIのまま保存?
それは文字列の文字コード変換でも使えばいいんじゃねーの?
0763nobodyさん
2010/12/14(火) 14:33:34ID:???ほれ
<?php
mb_language("Japanese");
$a = "hoge.txt";
touch($a); //文字コードはOS依存(デスクトップで右クリ→ファイルを作成状態)
$s = mb_convert_encoding("あいうえお", "UTF-8", "auto");
file_put_contents($a, $s); //ここでUTF-8になる
0764nobodyさん
2010/12/14(火) 14:39:04ID:???mb_detect_encodingで誤検出大作したほうがいいかも
0765nobodyさん
2010/12/14(火) 14:45:10ID:???ウインドウズのメモ帳とかの話?
そしたら、そのまま保存すれば Shift_JISになります。
もちろん2バイト文字が入ってなければ ANSIコードで書かれたファイルと言ってもいいですけど。
ファイルの文字コードなんてないんだよ。なんの文字コードでかいてあるか、中身みないとわからないから
もしくは、読んでもわからないから文字化けするんだよ。
だから、このファイルはこの文字コードで書いたからなって指定するんだよ。
メモ帳で charset=utf-8 っていれて保存したのブラウザで見れば化けまっせ。
PHP関係ないな。
0767nobodyさん
2010/12/14(火) 15:08:07ID:???abcde あいうえお
ANIS 5 10
UTF-8 5 15
だけどサーバー上は関係ねーからな
例えばレスしてログ作ってもunicodeがそのまま保存されても変換されても同じ
0770nobodyさん
2010/12/14(火) 16:23:12ID:???0771nobodyさん
2010/12/14(火) 16:44:53ID:???0773nobodyさん
2010/12/14(火) 17:26:56ID:???ANSIって1バイトコードのことだったような気がするんだが
0775nobodyさん
2010/12/14(火) 17:37:00ID:???確認や!
0776nobodyさん
2010/12/14(火) 17:40:37ID:???0777nobodyさん
2010/12/14(火) 17:42:13ID:???0778nobodyさん
2010/12/14(火) 17:45:41ID:???0779nobodyさん
2010/12/14(火) 17:46:36ID:???変換されるって言ってるけど、何が変換してると思ってるんです?
メモ帳で漢字書きますよね? 1って打ったら31ってコードがはいるでしょ?
あって打ったら 82A0が入るわけでそれで終わり。 そのまま保存されるし、
そのファイル読み込んで表示しても何にも変わらない。PHPが処理しようがなにしようが。
ブラウザで表示させてもブラウザに渡されるのは 3182A0
これを 1あ って表示するかどうかはブラウザがこれはshift-jisだって教えてもらってた場合だけ。
0780nobodyさん
2010/12/14(火) 17:54:34ID:???その理屈でいうならwindowsは内部がunicodeであってメモ帳で保存するときに
指定した文字コードへ変換されるんだが
俺はメモ帳でもUTF-8で保存するけどな
0781nobodyさん
2010/12/14(火) 18:02:10ID:???0783nobodyさん
2010/12/14(火) 18:14:13ID:???>>780
内部がunicodeなら開く時に文字化けしています。
0784nobodyさん
2010/12/14(火) 18:23:49ID:???メモ帳でUTF-8で保存するとBOMでろくなことにならんけどな。
ANSIやっとわかったよ。
メモ帳で CP932で保存するのをANSIって選択させやがるのなwwww
0785nobodyさん
2010/12/14(火) 18:30:18ID:???0786nobodyさん
2010/12/14(火) 18:32:51ID:???0787nobodyさん
2010/12/14(火) 18:40:35ID:???内部ってファイル内部じゃなくてメモリの話ね
うさみみハリケーンで調べたけどメモリではUTF-16のLEで格納されてた
0788nobodyさん
2010/12/14(火) 18:44:38ID:???<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
でフォームからあ*1000を送ってテキストに保存させたら2KB
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
でフォームからあ*1000を送ってテキストに保存させたら3KBだった
0789nobodyさん
2010/12/14(火) 18:46:43ID:???わからんよw
0790nobodyさん
2010/12/14(火) 18:49:02ID:???少なくとも4人は全く別の話してるぞ!
0791nobodyさん
2010/12/14(火) 18:50:38ID:???できなきゃここでいろいろ知るのは無理だw
まともに答えてるの俺ともう一人しかいないけどな。
0792nobodyさん
2010/12/14(火) 18:51:19ID:???0793nobodyさん
2010/12/14(火) 18:54:07ID:???0794nobodyさん
2010/12/14(火) 19:03:41ID:???0795nobodyさん
2010/12/14(火) 19:07:16ID:???0796nobodyさん
2010/12/14(火) 19:09:31ID:???0797nobodyさん
2010/12/14(火) 19:12:13ID:???UTF-8は全角文字1個ごとに制御文字つけるからバイト数がかさむ
UTF-16は全部2バイトコードにしてあたまに制御文字つけるだけ
そのかわり1バイト文字も2バイトになる
全角文字ばかりならUTF-16で保存すればShift-JISとあまり変わらない
ただPHPだとUTF-16ってイマイチ扱いづらそうな印象なんだがどうなんだろうな
0799nobodyさん
2010/12/14(火) 19:25:46ID:???サーバからはレスポンスとしてXMLを送ってもらい(プレーンテキストなら何でもいいが)
そのXML(プレーンテキスト)を解釈して結果をJavaScript側で判断するってのが流れだ
サーバに問い合わせる内容が例えばユーザ名の重複チェックだった場合
PHPへリクエストを送りPHPからRDBMSへユーザの照会を行い
重複してるかしてないかの結果と何か便利な付加的な情報があれば加えて
それらRDBMSから取得した情報をXML(実際はry)として送出(レスポンス)する
このように動的にXMLなどのデータを作成して送る必要があるため
必ずサーバサイドの言語と連携する必要がある
俺ってやさしいね
0800nobodyさん
2010/12/14(火) 19:27:21ID:???0801nobodyさん
2010/12/14(火) 19:28:03ID:???0802nobodyさん
2010/12/14(火) 19:37:11ID:xhJxB9zDXAMPPを使ってローカルである程度の動きを実装したいと考えていますが
フォルダの階層を表示するときに
Linuxだと/、windowsだと\になります。当然ですが。
プログラム中でファイルをインクルードするときに
パスを記述するときにこの違いはどの様にして対応してますか?
DIRECTORY_SEPARATORをつかってパスを記載してますか?
PHPの設定ファイルとかで簡単にパスの区切り文字を
windowsでも/にする方法とかはありますか?
0803nobodyさん
2010/12/14(火) 19:38:21ID:???ごめんねUTF-8ちゃん
0804nobodyさん
2010/12/14(火) 19:41:35ID:???0805nobodyさん
2010/12/14(火) 19:43:26ID:???絶対パスに指定するとしても1箇所のみでそこは
DIRECTORY_SEPARATORを使って書く
0806nobodyさん
2010/12/14(火) 20:01:09ID:???なんでwindows版の開発環境使うんだろうか
0807nobodyさん
2010/12/14(火) 20:33:06ID:???仮想マシンにあるフォルダの共有機能使ってUbuntuで動かしてるわ
0809nobodyさん
2010/12/14(火) 20:42:54ID:???0810nobodyさん
2010/12/14(火) 20:43:58ID:???DIRECTORY_SEPARATOR 使ってるよ
ただインクルードについては、include_pathに入れちゃうからパス指定はしてない。
0811サーバー”管理”
2010/12/14(火) 20:46:08ID:???0812nobodyさん
2010/12/14(火) 20:49:58ID:???>>802さんは「Linuxで動くシステム」と言っているので
それならローカル環境も、極力本番に近いLinuxにしたらという事を
>>806-807さんは言っているのだと思います。
0813nobodyさん
2010/12/14(火) 20:53:37ID:???これを参考にして他の回答者はまともな文章を書きましょう
0814nobodyさん
2010/12/14(火) 20:58:13ID:???0815nobodyさん
2010/12/14(火) 21:13:35ID:???0816nobodyさん
2010/12/15(水) 01:02:35ID:???以下の命令を実行すると
$sql = " select log_id, name, mail_address from tokai_member ";
$sql.= " where log_id= '" . $_SESSION["log_id"] . "'";
$res = mysql_query( $sql );
$count = 0;
$info = mysql_fetch_array( $res ) ;
$info["log_id"] $info["name"] $info["mail_address"] にはデータが入るのですが
$sql = " select log_id, name, mail_address from tokai_member ";を
$sql = " select * from tokai_member "; に変えると $info["mail_address"] にだけ、
値が入らないのですが、何が間違えなのさっぱり分かりません。
データベースの方の設定で「*」の時は取得できない設定とかってあるのでしょうか。
環境はWinXp、xamppのmysqlを使っています。
よろしくお願いします。
0818nobodyさん
2010/12/15(水) 01:15:10ID:V9crItGv【OS名】WindowsXP
【PHPのバージョン】5
【連携ソフトウェア】MySQL
【質問内容】
mysqlスレに質問するべきかもしれないのですが、
以下の命令を実行すると
$sql = " select log_id, name, mail_address from tokai_member ";
$sql.= " where log_id= '" . $_SESSION["log_id"] . "'";
$res = mysql_query( $sql );
$count = 0;
$info = mysql_fetch_array( $res ) ;
$info["log_id"] $info["name"] $info["mail_address"] にはデータが入るのですが
$sql = " select log_id, name, mail_address from tokai_member ";を
$sql = " select * from tokai_member "; に変えると $info["mail_address"] にだけ、
値が入らないのですが、何が間違えなのさっぱり分かりません。
データベースの方の設定で「*」の時は取得できない設定とかってあるのでしょうか。
0820nobodyさん
2010/12/15(水) 04:11:52ID:???0821nobodyさん
2010/12/15(水) 07:48:29ID:???0822nobodyさん
2010/12/15(水) 08:47:47ID:24J/DfE6PHPで皆がMySQLとかに自分の情報を書き込むサイトを作ってるのですが
この場合、PHPはアクセス制限かけた所に保存して、書き込みフォームで引き出すという方がいいでしょうか?
それともそのまま書き込みフォームにphpを記入してもいいのでしょうか?
安全面から見るとどっちの方がいいんでしょう?
0823nobodyさん
2010/12/15(水) 09:07:07ID:???要するに、public下にスクリプトを置くか、
public下ではhtmlレベルでrequire_onceかなんかでphpを呼び出すかってことかな?
どっちも一緒
0824818
2010/12/15(水) 09:22:44ID:V9crItGvphpmyadminでの操作では、問題ありません。
phpmyadminのsql画面で同じsql文を実行すると、3項目出てきます。
mysql_fetch_assocというのは、知らなかったので
調べてやってみます。
0825nobodyさん
2010/12/15(水) 09:23:21ID:24J/DfE6すみません、publicって皆がアクセスできるところでしたっけ?
とりあえずCGIってcgi-binってフォルダがあってそこに入れる感じじゃないですか?そしてそのフォルダに属性でアクセス制限かけたり
だけどphpってHTMLにそのまま記入してますが大丈夫なんですか?っていう感じです、説明足りずスミマセン
自分はcgiみたいにアクセス制限かけた所に呼び出すphp保存して、phpでではrequire_onceやinclude_onceで呼び出した方が安全に思えるんですが
どっちも一緒なのですか
0826nobodyさん
2010/12/15(水) 09:26:37ID:???CGIが家で全裸露出するとしたら
PHPは透明人間になって駅前で全裸露出する感じ
0827nobodyさん
2010/12/15(水) 09:28:23ID:???連用して使う感じだからそんな安全重視とかって感じではない
だからこそphpはセキュリティをしっかりやらなければならない
0829nobodyさん
2010/12/15(水) 09:35:26ID:24J/DfE6解りやすいたとえありがとうございます!
0831nobodyさん
2010/12/15(水) 09:48:59ID:???リスクは一緒。
0832nobodyさん
2010/12/15(水) 09:53:44ID:???0833nobodyさん
2010/12/15(水) 10:00:38ID:???0834nobodyさん
2010/12/15(水) 10:18:05ID:V9crItGvレス、ありがとうございます。
mail_addressは1つしかありません。
phpmyadminでのsql実行や、「*」を使わずカラム指定した時は
正常に見えるので構造定義等は間違っていないと思いたいのですが。。。
他のカラムと違うのはmail_addressを主キーに指定しているくらいです。
0835nobodyさん
2010/12/15(水) 10:48:14ID:???0836nobodyさん
2010/12/15(水) 10:56:45ID:???フィールドを指定したときと*の場合で読む順序が変わってるだけかと。
確かめてみたらプライマリキーを指定したときはプライマリキーの順番、
*やプライマリキーを出力に指定してない場合はINSERTした順番のような感じだった。
なので、835に一票
0837nobodyさん
2010/12/15(水) 11:06:51ID:???警告でるし、そのときはNULLのはず。
DBでNULLならNULLだけど。
0838nobodyさん
2010/12/15(水) 11:13:25ID:V9crItGvレス、ありがとうございます。
>>それって単にSQLの最初の一行目のmail_addressが空なだけなんじゃねw
最初のレコードのmail_addressカラムにデータが入ってないと言うことでしょうか。
データ自体は入っています。(テスト中で3件しかないので)
836さんの言われてることは、mail_addressカラムに全部データが入っていれば
問題ないのですよね。
ただ、 >>プライマリキーを出力に指定してない場合 って言うのが、よく分かりません。
出力する、しないが指定できるのでしょうか?
ちょっと、ググって来ます。
0840nobodyさん
2010/12/15(水) 11:53:05ID:MdJi7P3P【PHPのバージョン】5.3
【連携ソフトウェア】Apache, MySQL
【質問内容】
超ローカルcatv接続なのに規制されました(泣
phpを使って規制解除をしてもらう方法を教えてください
0841nobodyさん
2010/12/15(水) 12:01:17ID:???0842nobodyさん
2010/12/15(水) 12:54:05ID:???$class = new {var $m_name = "value"};
>>838
あとは凡ミスしか考えられない
色々と弄り回しているんだろうからデータも再確認した方がいいかも
0844nobodyさん
2010/12/15(水) 13:12:58ID:???> $info["mail_address"] にだけ値が入らない
どのようにして、「値が入らない」ことを確認していますか?
実は値が入っていても、「入っていない」と誤って認識してしまうプログラミングをしている可能性はありませんか?
0845nobodyさん
2010/12/15(水) 13:20:44ID:???0846nobodyさん
2010/12/15(水) 13:26:38ID:???>>842
一応あるといっていいのか謎な物はある
$class = new stdClass();
$class->m_name = "value";
こんな感じでプロパティを追加してく
メソッドも一応関数使って追加できたはず
0847nobodyさん
2010/12/15(水) 14:55:36ID:V9crItGvレス、ありがとうございます。
print($info["mail_address"]); とやって確認しています。
他のデータは表示されます。
ここまで来ると凡ミスだと思います。
問題の行の「*」を各カラム指定に変えると、正しく取得できるので
他の行でミスをしてるとは考えづらいのですが、多分、ほんの些細なこと
で引っかかってると思います。
もう一度、しっかりプログラムをチェックしてみます。
0848nobodyさん
2010/12/15(水) 15:02:20ID:???プログラムの見直しなどを行って、それでも本当に値が入っていないと判断できたならば、
$info["mail_address"] がどんな状態になっているかを調べませんか?
そして、調べた結果をこのスレに書いてもらえますか?
私個人の経験ではありえない状況であるので、是非にとも、一つの知識として得ておきたいと思いました。
厚かましいお願いで申し訳ありませんが、宜しくお願いします。
0849nobodyさん
2010/12/15(水) 15:33:06ID:???0850nobodyさん
2010/12/15(水) 17:03:42ID:???可能ならDBのテーブル構造を示したほうが参考になるかも。
$info["mail_address"]だけが空というのは原因が想像できないので
フィールド名を変えてみたりして試したらどうですか。
"name"と"mail_address"のフィールド名を逆にしたらどうなりますか?
0851nobodyさん
2010/12/15(水) 18:21:14ID:???■ このスレッドは過去ログ倉庫に格納されています