【PHP】下らねぇ質問はここに書き込みやがれ Part19
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/04/09(日) 01:31:18ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
過去スレは>>2-3あたり
0697644
2006/04/21(金) 13:51:20ID:5+Hakngkレンタルサーバのmysql(sjisで入ってる)をエクスポート
したのを自分のローカル環境(utf)にインポートする作業をやったんですけど、
どこをどうするとどうなるみたいのが見えてきました。
エクスポートでダウンロードしたファイルをエディタで開いたら
当然のようにsjisだったのでutfにして保存し直して
mysqlにutfでインポートしました。phpmyadminの表示も正常。
それを文字セットutfでcharsetもutfの状態で表示させました。
このままでは化けるんですが、これは環境依存ぽいのです。
最後はやはりset names utf8のクエリを打ちました。
どうもこのset namesは最強っぽい気がします。
取り急ぎ報告します。いままでアドバイス下さったかた、
最後までつきあって下さった691さん、ほんとうにありがとう。
0699nobodyさん
2006/04/21(金) 14:01:13ID:???設定できる・しなきゃならないのは、
・Mysql上で設定する、格納データの文字コード。
・PHPスクリプトを編集するエディター上で設定する、PHPスクリプトの文字コード
・PHPエンジンに教えてあげる、スクリプト本体の文字コード(PHP.iniでもスクリプト内でも指定可)
・PHPスクリプト内で指定する、Mysqlにアクセスする際の文字コード
・PHPスクリプト内で指定する、HTTP出力の際の文字コード
・ブラウザー・Webサーバーに教えてあげる、HTTPヘッダーで指定するHTMLの文字コード
・ブラウザーに教えるために出力するHTML内で指定する、HTMLの文字コード
少なくともこれらの区別・統一をきちんと図ってそれぞれ指定しなきゃダメだよ。
わかんなきゃ全部UTF-8に統一しとけ。
0700644
2006/04/21(金) 14:28:23ID:5+Hakngk素晴らしいです。感謝します。
・Mysql上で設定する、格納データの文字コード。
これはmy.iniで設定するものでしょうか?
[mysqld] default_character_set=utf8 とか。
これに従ってmysqlに登録されたデータの文字コードが決まるんですよね?
・PHPスクリプトを編集するエディター上で設定する、PHPスクリプトの文字コード
これは分かります。スクリプト自体の文字コードですね。
・PHPエンジンに教えてあげる、スクリプト本体の文字コード(PHP.iniでもスクリプト内でも指定可)
これは、,mb_convert_stringsの類ですかね。php.iniにもmb_string系の指定が結構ありますよね。
・PHPスクリプト内で指定する、Mysqlにアクセスする際の文字コード
これは、select文を打つときというか、コネクトするときに指定?
・PHPスクリプト内で指定する、HTTP出力の際の文字コード
これはechoとかするときにphpエンジンが何の文字コードを吐くかってことかな?
このへんはかなり分からないです。
・ブラウザー・Webサーバーに教えてあげる、HTTPヘッダーで指定するHTMLの文字コード
・ブラウザーに教えるために出力するHTML内で指定する、HTMLの文字コード
これは別物なんですか?特に後者はhtml文を書いているだけでも関係してきそうですが、意識したことがありません。
自分の理解はまだまだこの程度です。情けないです。
推測の範囲で申し訳ないのですが、結構省略しちゃうことがあると
思うんですけど、特別に指定しなかった場合は最終的にどこに依存するの
でしょうか?
0701nobodyさん
2006/04/21(金) 14:35:41ID:???0702nobodyさん
2006/04/21(金) 14:37:49ID:???0703644
2006/04/21(金) 14:52:20ID:5+Hakngkすいません。自分ばっかりかいて申し訳ないっす。
なんか極論的にはset names = utf8があればOKだしなければだめ的な
雰囲気になってきました。
MAMPだからかな。
0704639
2006/04/21(金) 16:02:39ID:???ををを・・・単純だけどこれで切り分け出来ますね、まったく思いつきませんでした(泣
これで逃げたいと思いますありがとうございました
ajaxも考えたんですが、この箇所だけにxml吐き出してブラウザ毎に接続アレコレしてっとなると・・・
ちょっと微妙な感じだったのでウダウダしてました。
いやその前に使ったことすら無いのですが
0707675
2006/04/21(金) 16:54:47ID:MBv/PjUM今少しずつ作っているのですが
POP3サーバに接続して、特定のメールアカウントの分だけ取得したい場合は
LISTにアカウントを書いておけば良いでしょうか?
0708nobodyさん
2006/04/21(金) 17:07:05ID:???0709675
2006/04/21(金) 17:27:25ID:MBv/PjUMあ・・・
0710nobodyさん
2006/04/21(金) 17:43:51ID:???とりあえずこの辺でも読むとか。
http://www.atmarkit.co.jp/fnetwork/rensai/netpro07/netpro01.html
0711nobodyさん
2006/04/21(金) 17:57:10ID:KwFOTHkhあ=> E3041
という結果が欲しいのですが
0712nobodyさん
2006/04/21(金) 19:10:47ID:???文字列を取得したいのか数値を取得したいのか知らないけど、bin2hex、ord、sprintfから好きなのえらんで。
0713nobodyさん
2006/04/21(金) 21:15:25ID:???aoki,32
takahashi,6013
…というような形式のファイルdata.txtがあり、
それをそれぞれの数値の部分でソートしたいのですが、どのような方法がありますでしょうか?
$lines = file('data.txt');
と配列にしましたが、その先が分かりません。
よろしくお願いします。
0714nobodyさん
2006/04/21(金) 21:20:33ID:q11WDkz80717nobodyさん
2006/04/21(金) 21:30:20ID:???カレーを作りたいんです。
お鍋に水を入れましたが、その先が判りません。
と言っている様な物だ。
もう少し自分で頑張れ。
ヒント:つ「配列廻してさらに配列生成」
0719nobodyさん
2006/04/21(金) 21:46:46ID:???array_multisortは配列の1次元目でしか(配列の関係を崩さず)ソートできない。
この場合には、usort関数を使う必要があるだろう。
0721nobodyさん
2006/04/21(金) 21:58:05ID:???…なんか釣られてる気がしないでもないが
foreach($lines as $line) {
list(, $key[]) = explode(",", $line);
}
array_multisort($key, $lines);
print_r($lines);
結果
Array
(
[0] => aoki,32
[1] => yamada,521
[2] => takahashi,6013
)
これでいいんだろ?あほですか?
0722nobodyさん
2006/04/21(金) 22:05:06ID:???>>714
無理。そんなのできたら携帯用あぷろだとか出来てる。
0723nobodyさん
2006/04/21(金) 22:16:31ID:???720 名前:nobodyさん[sage] 投稿日:2006/04/21(金) 21:57:38 ID:???
>>714
無理。そんなのできたら携帯用あぷろだとか出来てる。
0724nobodyさん
2006/04/21(金) 22:18:05ID:???722:nobodyさん :2006/04/21(金) 22:05:06 ID:??? [sage]
720 名前:nobodyさん[sage] 投稿日:2006/04/21(金) 21:57:38 ID:???
>>714
無理。そんなのできたら携帯用あぷろだとか出来てる。
0726nobodyさん
2006/04/21(金) 22:57:53ID:q11WDkz8あの・・・ありますけど・・・
0727nobodyさん
2006/04/21(金) 23:03:54ID:???試験的にセキュリティ無視でfwrite()とフォームを使ってスクリプトを書いたら***.phpで保存するといったプログラムを組んだのですが、
Warning: Unknown(): SAFE MODE Restriction in effect. The script whose gid is 1000 is not allowed to access
というエラーを吐いてくるのですが
どう対処したらよいでしょうか
0729727
2006/04/21(金) 23:07:44ID:???対処は無理なのか・・・・
0730nobodyさん
2006/04/21(金) 23:07:45ID:xjsHzaEwこれって、どういうエラー?
ちなみに221行目は、$tag .= "<form action=\"$_SERVER['PHP_SELF']\" method=\"post\">";
なんだけど・・・
0731nobodyさん
2006/04/21(金) 23:08:36ID:???どっちにしろ無駄だけど
0733nobodyさん
2006/04/22(土) 00:31:56ID:???具体的にはユーザー情報を格納したcookiesを発行なんかしちゃうと
ほかのサイトでも読み出しできてしまう
ということなんでしょうか?
でもそしたらどうやってログインして、複数のページを渡り歩けるようにすればいいんでしょうか・・・・
0734nobodyさん
2006/04/22(土) 00:49:23ID:???まず、最近話題のCSSXSSとCSSは全くの別物なので勘違いしないように。
XSSはphpでの出力時に、危険性のある全ての変数(ユーザ入力の値など)を全てhtmlspecialcharsでエスケープすれば防げる。
以上。
0735733
2006/04/22(土) 00:57:45ID:???ありがとうございます
クロスサイトスクリプティングに関しての質問でした
CSSとかくと混同するのでXSSと書くとか書かないとかまでググって来ました
タグを入れられるようにして拡張性をと考えていましたが、
便利の裏には様々な問題があるんですね・・・
0736nobodyさん
2006/04/22(土) 01:36:52ID:???0738nobodyさん
2006/04/22(土) 16:13:48ID:8MNYgK3yがあったとして、答えの二文字目までを表示させる事は可能でしょうか?
その場合どうすればよろしいでしょうか?
5/3の答えは1.666666・・・と続いていくので
2文字目、つまり 1.6まで表示させたいのです。
0741nobodyさん
2006/04/22(土) 17:19:10ID:he2KK3wFtest.phpにPOSTでデータを渡せますか?
(すれ違いでしたらすみません。。)
0742nobodyさん
2006/04/22(土) 17:20:36ID:kQFmUDLJ$birth=2006年4月22日
というデータが入っているとします。これを
$birth1=2006
$birth2=4
$birth3=22
という風に分解して各変数に入れるにはどうしたらいいのでしょうか?
0743nobodyさん
2006/04/22(土) 17:26:19ID:3kTedSI2これでエンコードしてみるものの、「"」「'」「\」といった記号をエンコードすると
それぞれ「%5c%22」(\")「%5c%27」(\')「%5c%5C」(\\)となってしまいます。
つまりエスケープされている訳ですが、こういった記号をエスケープさせないように
するにはどうしたら良いでしょうか?バックスラッシュ(\)までエンコードされて困っております。
宜しくお願いします。
0744nobodyさん
2006/04/22(土) 18:07:05ID:???$birth = "2006年4月22日";
$birth1 = mb_substr( $birth, 0, 4 );
$birth2 = mb_substr( $birth, 6, 1 );
$birth3 = mb_substr( $birth, 8, 2 );
// これで目的は達成できるが、月が2桁だったりするとだめぽ
$birth = "2006年4月22日";
list( $birth1, $birth2 ) = explode( '年', $birth );
list( $birth2, $birth3 ) = explode( '月', $birth2 );
list( $birth3, $birth4 ) = explode( '日', $birth3 );
// これだ!
0745742
2006/04/22(土) 18:24:54ID:???出来ました!こういう使い方があるんですね・・。
よくわかっていないので、関数を調べながら理解出来るようにします。
ありがとうございました。
0746743
2006/04/22(土) 18:27:38ID:3kTedSI2>>741
POSTデータを渡そうと思えば出来るけど面倒だと思われ。
クエリでいいじゃん。。
0747nobodyさん
2006/04/22(土) 18:32:48ID:???この画像って勝手に使っていいの?
0748nobodyさん
2006/04/22(土) 18:35:16ID:???今更だけど
$birth = '2006年4月22日';
preg_match('/^(\d+)年(\d+)月(\d+)日$/',$birth,$matches);
list($birth1,$birth2,$birth3) = array($matches[1],$matches[2],$matches[3]);
ってのもあり
0750741
2006/04/22(土) 19:05:13ID:he2KK3wF> POSTデータを渡そうと思えば出来るけど面倒だと思われ。
POSTで渡す方法を教えていただけないでしょうか?
#GETも考えたのですが、渡すデータが大きく無理でした。。
> クエリでいいじゃん。。
すみません、この場合のクエリがわかりません。。。
(データベースのクエリ?じゃないですよね。。)
0751nobodyさん
2006/04/22(土) 19:13:13ID:UThkpkc+0752nobodyさん
2006/04/22(土) 19:40:49ID:1mp5s2wDShift_JIS → %82%a0%82%a2%82%a4%82%a6%82%a8
EUC-JP → %a4%a2%a4%a4%a4%a6%a4%a8%a4%aa
UTF-8 → %e3%81%82%e3%81%84%e3%81%86%e3%81%88%e3%81%8a
これらのように、文字コードによって違いますよね?
この文字コードを指定してエンコーディングする方法は無いでしょうか?
0753nobodyさん
2006/04/22(土) 19:45:40ID:???送信者のメールアドレスは$fromの中に格納されます。
$write = false;で書き込みが中断されます。
//このアカウントからのみ受信
$carrier = array('docomo.ne.jp','ezweb.ne.jp','pdx.ne.jp');
//キャリア限定処理 追記部分
if(!in_array('$from',$carrier){
$write = false;
}
これだと駄目ぽみたいです。ご意見ください。
0754nobodyさん
2006/04/22(土) 20:05:35ID:???0755nobodyさん
2006/04/22(土) 20:42:50ID:???何がやりたくて何ができないの?
特に問題ないようだけど。
>>753
$host = substr(strstr($from, '@'), 1);
if(!in_array($host, $carrier){
・・・ってこと?
0757753
2006/04/22(土) 20:55:44ID:???記載ミスによるものかと何度も見ましたが違うようです。
あきらめて寝ます。おやすみなさい。
0758753
2006/04/22(土) 21:37:57ID:???一人でバカ騒ぎしてもうしわけないです。
0759752
2006/04/22(土) 22:02:27ID:1mp5s2wDじゃあ例えば、変数$strに $_POST["data"]の値を代入。
エンドユーザはそれぞれ「Shift_JIS」、「EUC-JP」、「UTF-8」といった文字コードを選択し、エンコードすることが出来ます。
出力結果はこれらの文字コードによって違います↓
Shift_JIS → %82%a0%82%a2%82%a4%82%a6%82%a8
EUC-JP → %a4%a2%a4%a4%a4%a6%a4%a8%a4%aa
UTF-8 → %e3%81%82%e3%81%84%e3%81%86%e3%81%88%e3%81%8a
mb_convert_encoding()で$_POST["data"]をエンコードするのかなー…?orz
何か良い方法を知っていたら教えてください。
0760752
2006/04/22(土) 22:08:05ID:1mp5s2wDこれです http://www.tagindex.com/tool/url.html
このように文字コードを選択リストから選択できるようになっているのですが、一体どのような仕組みなんでしょうか?
0761nobodyさん
2006/04/22(土) 23:16:50ID:???1.ます普通にPOSTやらなんやらで入力されてデータを受け取る(このときに文字コードは何でエンコードするかも!)
2.で受け取った値をエンコードする
3.エンコードしたデータを表示する
こうじゃない?
0762752
2006/04/22(土) 23:40:44ID:1mp5s2wD…うーん、(1)で文字コードを変換するための関数は一応調べはみたんだけど
mb_convert_encoding()でいいのかなぁ?
でもなんかちょっと違う気ガス。
0764761
2006/04/23(日) 02:17:22ID:???何で違うと思ったんだ?理由があるのか?
そもそもお前自分で俺の出した提案でコーディングしてみたのか?
答えだけ教えてもらおうと思うな馬鹿
ちなみにmb_convert_encoding()でOKだクソ野郎
デフォルトでは使えないようになってるけどな
そこまで教えられんよググレカレー
0765752
2006/04/23(日) 07:13:43ID:B54Vaitl(rawurlencode(mb_convert_encoding($_POST["data"], "Shift_JIS"))
とやっても「あいうえお」が「%3F%3F%3F%81%91%3F%3F%3F%3F%3F%81N」のようになってしまいます(「???¢?????¨」に文字化けする)
mb_convert_encoding()の使い方が間違ってるんだろうか
0766nobodyさん
2006/04/23(日) 07:35:05ID:???>「あいうえお」が「%3F%3F%3F%81%91%3F%3F%3F%3F%3F%81N」のようになってしまいます(「???¢?????¨」に文字化けする)
よく分からん。どっちになってるんだ?
0767nobodyさん
2006/04/23(日) 07:44:52ID:???まるごと書いてやるから、よく読めよ。
(サンプルなのでセキュリティは全く意識していないので注意)
<?php
header('Content-type: text/html; charset=Shift_JIS');
$encList = array('sjis', 'euc-jp', 'utf-8');
if ($_POST) {
$data = @$_POST['data']; // sjisで書いてあると想定
$enc = (int) @$_POST['enc'];
if (!isset($encList[$enc])) throw "(・∀・)";
echo rawurlencode(mb_convert_encoding($data, $encList[$enc], 'sjis'));
die();
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
<textarea name="data"></textarea>
<select name="enc">
<?php foreach ($encList as $enc => $encName) { ?>
<option value="<?php echo $enc ?>"><?php echo $encName ?>
<?php } ?>
</select>
</form>
0768767
2006/04/23(日) 07:50:14ID:???<input type="submit" />
0769nobodyさん
2006/04/23(日) 07:51:00ID:???0770nobodyさん
2006/04/23(日) 07:51:46ID:???0771767
2006/04/23(日) 07:54:35ID:???スマソ。不慣れだったので間違えた。
$enc_listとか$enc_nameって名前にするほうがpear標準だったっけ
0772nobodyさん
2006/04/23(日) 07:58:24ID:???知らない奴も居るだろうからまとめてみよう。勘違いがあったら教えてちょうだい
変数名:全て小文字。単語の区切りは「_」 例[ hoge_hoge ]
定数名:全て大文字 例[ HOGE ]
関数名:基本的に小文字だが、単語の区切りは大文字 例[ hogeHoge ]
0773nobodyさん
2006/04/23(日) 08:21:12ID:???pearのコーディング標準では変数名の単語の区切り方に関しては触れてないっぽいね。それ以外は>>772の通りだけど。
pearの他にもphpのコーディング規約みたいなのあったっけ?
0774nobodyさん
2006/04/23(日) 08:38:39ID:???クライスラージャパン中古車検索結果
http://www.chrysler.co.jp/servlet/chrysler.UCarSearchServlet?SV_ACTION=PAGE_CHANGE&PAGENO=1&SQL=WHERE@CLASSID@in@(@'PT'@)@AND@DELFLAG@=@'0'@&ORDER=3
WHERE CLASSID in ('PT') AND DELFLAG = '0'& ORDER = 3
(^ω^;)・・・
0776nobodyさん
2006/04/23(日) 09:25:42ID:???そうなの?ソースキボンヌ。
ちなみに「プログラマとしての」と名打つならJavaの反例出すけど、この変数名の規約はどうとらえられてるの?デファクトスタンダード的には。
http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367
CとかRubyとか関数名/メソッド名はアンダースコアで区切ることのほうが多いようだけど。
C++みたいにSTLの命名に従うかJava風にするかどっちつかずなのもあるし。
PHPの場合は標準関数の命名が割と無茶苦茶な前提の上だからどうしても規約みたいなのは必要でしょ。
一応公式に公開されてるのがpear標準くらいしかないから、それに従っておくのが妥当ってのはよく聞くけど。
0778nobodyさん
2006/04/23(日) 12:10:28ID:???ちゃんとSELECTしかできない権限とかにしてあるのかなぁ
これかなりヤバイ香りが漂ってるが。
おい>>774、七氏だろ お前SQLインジェクションやってみて報告しる!
0779nobodyさん
2006/04/23(日) 14:06:26ID:???0780752
2006/04/23(日) 14:56:53ID:B54Vaitlとってもありがとう。
書き方とか参考にします。
0781nobodyさん
2006/04/23(日) 15:05:20ID:???“->”なんですけど
これって
$A=1+2
$B=$A
この場合
$B=$A->1+2
こんな感じ?
0782nobodyさん
2006/04/23(日) 15:10:14ID:???-> はクラスを使った時に、クラスの変数や関数を使うためのもの。
クラスって何?って場合は、マニュアルを参照のこと。
0783nobodyさん
2006/04/23(日) 15:39:22ID:???ありがとうございます。
->なんですけど、これはPHP5〜から使えるのでしょうか?
それともPHP4の最新バージョンでも標準で使えるのでしょうか?
0784nobodyさん
2006/04/23(日) 16:22:55ID:???$this->testとかね
0786nobodyさん
2006/04/23(日) 17:30:05ID:???さっさと読むだけにして、青マンモスに進んでも良いでしょうか?
0787nobodyさん
2006/04/23(日) 17:44:42ID:???特定のディレクトリ/hogeから画像(.jpg)の名称を取得して、指定サイズで
一覧表示するという。
登録しているファイル名を出力するのはわかるのですが、画像のファイル名自体を
取得して〜というのは可能なのか?っと疑問に思いまして。(単に出来ないのですが・・・
0788nobodyさん
2006/04/23(日) 17:46:37ID:???0789nobodyさん
2006/04/23(日) 18:12:30ID:???Shift_JIS(sjis-win)
EUC-JP(eucjp-win)
iso-2022-jp(jis…だけど厳格にはすこしちがう)
utf-8
について、徹底的に学びましょう
0790787
2006/04/23(日) 18:18:13ID:???凄い!!出来ました!!所持リファレンスにも載っていない関数でしたが、
以下のようなソースで思い通りに出来ました。
<?php
$img_list=glob('./photo/*.jpg');
$count=count($img_list);
for($i=0;$i<$count;$i++){
print"<img src=\"$img_list[$i]\" width=100 height=80>";
}
?>
ありがとうございました。
0792nobodyさん
2006/04/23(日) 18:36:08ID:???0793nobodyさん
2006/04/23(日) 18:37:13ID:T/zlG2dE0794nobodyさん
2006/04/23(日) 18:46:06ID:m0Rs4MP50795nobodyさん
2006/04/23(日) 18:50:57ID:???0796nobodyさん
2006/04/23(日) 19:30:53ID:???■ このスレッドは過去ログ倉庫に格納されています