【PHP】下らねぇ質問はここに書き込みやがれ 68
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/05/03(土) 22:52:16ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0712nobodyさん
2008/05/18(日) 22:14:27ID:???0713nobodyさん
2008/05/18(日) 22:17:37ID:???つ配列関数
0714nobodyさん
2008/05/18(日) 22:18:39ID:???つまり無駄なことをすればrand使わなくてできるんじゃねw
0715nobodyさん
2008/05/18(日) 22:19:12ID:???$array = array(1,1,1,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5);
↑こんなのじゃないからな
こんなめんどくさいのならrand使うのといっしょ
あとは自分で考えろってこった
0716nobodyさん
2008/05/18(日) 22:20:19ID:???0717nobodyさん
2008/05/18(日) 22:21:37ID:???0718nobodyさん
2008/05/18(日) 22:26:14ID:???おれが手直ししてあげよう
0719698
2008/05/18(日) 22:26:23ID:???ありがとうございます。読んでみます。
基本文法習得をなんとか終えた後、
今「PHP サイバーテロの技法」という本を読んでいますが、
ヌルバイト攻撃とかディレクトリ・トラバーサルとか、自分にはかなり難しいですね。
とはいえ一通り対策が講じれるようにならないとまずいのですが…
PHP簡単、というのは良く聞きますがセキュリティまで考えたら
そんな単純な話ではないなぁ、と。
0720nobodyさん
2008/05/18(日) 22:27:41ID:???おれが手直ししてあげよう
0721nobodyさん
2008/05/18(日) 22:28:25ID:???早くコード書いて俺に答えを教えてくれ。もう日曜の10時半なんだよ。
0723nobodyさん
2008/05/18(日) 22:31:37ID:???0724nobodyさん
2008/05/18(日) 22:32:00ID:???0725651
2008/05/18(日) 22:36:59ID:TyvZJlXjまあ、困り度はそんな感じです
ななしで煽るのは止めてくださいずら
0726nobodyさん
2008/05/18(日) 22:43:42ID:???array_randでもrandでも好きなようにやればいいさ。
0727nobodyさん
2008/05/18(日) 23:10:02ID:???よし、ここは全くわからない俺が
しかもrand関数って何という俺が
風呂はいって
珈琲飲んで
パジャマに着替えてから一緒に考えてあげよう。
ところで、ID14のPRI値が3でmessage値が「えええ」だから
ID14のPRI/(全部のPRIの値)の確率でID14のmessageを表示されたいの?
0728nobodyさん
2008/05/19(月) 00:10:36ID:i7qsMY9zどうやればいいですか?
0729651
2008/05/19(月) 00:10:56ID:f/z8MzuC0731727
2008/05/19(月) 00:40:33ID:???$priarray
$messagearray
にDB取り込んで,取り出したいIDを$keyIdに入れ
function rndAnswer( $priarray,$messagearray,$keyId ) {
$keyId = $keyId-1;
$rndNum = $priarray[$keyid]/array_sum( $priarray );
/**rand使えるようにどうにかする。**/
return $answer;
}
よし、これ以上は小生には無理だ。あとはお前ががんばって教えてくれ。
0732nobodyさん
2008/05/19(月) 04:44:41ID:uTe3T86TUTF-8で運用するWebフォームから、iso-2022-jpでメールを出そうとしているのですが
文字コードマッピングの問題で 鰍竅`(WAVE DASH)などがどうしても化けてしまいます。
Web上での文字コードのルールについて基本的な知識やルールは承知しているのですが
ユーザが入力してくる文字(機種依存文字が多々あり)をそのままメールに活かすように
したいのです。
もし解決法をご存じの方がいらっしゃいましたら是非お知恵をお貸しください。
よろしくお願いいたします。
0733732
2008/05/19(月) 04:51:38ID:uTe3T86TPHP 4.4.2
FreeBSD 4.11-RELEASE-p17
Apache2系
です。
これまでは
mb_convert_string($mail_body, "iso-2022-jp", "UTF-8");
で試みています。
0734nobodyさん
2008/05/19(月) 07:01:59ID:???0735nobodyさん
2008/05/19(月) 10:17:54ID:???目的に合うかわからんけどMySQL側で。。バージョン依存あり
SELECT * FROM aaa WHERE id =14
AND RAND( ) < pri / ( SELECT SUM( pri ) FROM aaa )
0736nobodyさん
2008/05/19(月) 10:38:21ID:qHM47HMzファイルはアップロードできたのですが、
クライアント側のファイルのパスをサーバ側でも取得したいのですが
$_FILES['id']['name']にはファイル名だけしか入っていませんでした。
フルパスを取得するにはどのようにしたらよいでしょうか?
PHP Version 4.2.3 です。
0737nobodyさん
2008/05/19(月) 11:12:13ID:???0738nobodyさん
2008/05/19(月) 11:24:04ID:???Javascriptで取得できるから、あとはがんばって。
ただ、ブラウザごとに微妙に動作が違った気がする。
<form onSubmit="alert(this.file.value)">
<input name="file" type="file">
<input type="submit">
</form>
0739nobodyさん
2008/05/19(月) 11:46:25ID:qHM47HMzhiddenにthis.file.valueを設定すればよいということですね。
別件で作ったJavaサーブレットのアップロードでは取得できたので
PHPが隠蔽しているのかもしれません。
Javascriptでやってみます。
ありがとうございました。
0740nobodyさん
2008/05/19(月) 15:47:38ID:???PHP+Oracle接続環境を作成の際にエラーが出まして、
もし、分かる方が居たら教えて頂ければと思っております。
仮想マシン:Xen
管理OS:CentOS5
ゲストOS:CentOS5,Fedora8
apache 2.2.8
php 5.2.6
configureは出来たのですが、makeで以下のようなエラーが出ました。
libphp5.la
/usr/bin/ld: cannot find -lirc
collect2: ld returned 1 exit status
make: *** [libphp5.la] エラー 1
CentOS5,Fedora8共にエラーが出ております。
lircが見つからないといわれているので、
yum install *lirc*で全部入れてみましたが駄目でした。
両OSで出来ないのでXenのカーネルが問題なんでしょうかね…
よろしくお願いします。
0742nobodyさん
2008/05/19(月) 18:09:53ID:???なんでライブラリの問題でカーネルが原因になるんだか
/usr/bin/ld: cannot find -lirc はlircが見つからないではなく
libirc.aが見つからないって意味だ
よって yum install *lirc* とか無駄
libircが入ったパッケージをインストールするか、強引だがリンカの指定から-lircを外して動けばOK
0743nobodyさん
2008/05/19(月) 18:45:13ID:???解答ありがとうございます。
仮想サーバーと同じ構成のマシンがもう1台ありまして、
そのマシンはFedora5なんですが、
makeまではいけたので、
Xenのカーネルが問題なのかなと思ってしまいました。
エラーの意味やライブラリを理解できていない自分には、
リンカの指定をはずすなどかなり難しいそうなので、
libircが入ったパッケージを探してみます。
0744nobodyさん
2008/05/19(月) 19:41:48ID:xzrDZ7d0Apache 2.0
PHP 5
$h = popen('unko.exe');
if ($h == FALSE) die('失敗したにょ!');
fputs($h, ・・・以下省略
pclose($h);
こんな処理をしたいのですが、unko.exe は実際にはありません。
無いにもかかわらず popen の戻り値が FALSE にならないので
die してくれません。ちゃんと die してほしんです。
何か良い方法はありませんか?
0745nobodyさん
2008/05/19(月) 19:45:03ID:???0746nobodyさん
2008/05/19(月) 20:09:53ID:???PEAR::AUTHを使ってみたいのですが、
パスワード暗号化の時saltを付け加える事ってできますか?
暗号化方法の選択でSMD5等が無いようなので…
0747746
2008/05/19(月) 20:16:05ID:???0748746
2008/05/19(月) 20:28:11ID:xxBfPPP+0749nobodyさん
2008/05/19(月) 20:47:56ID:???0750nobodyさん
2008/05/19(月) 20:50:38ID:???0751nobodyさん
2008/05/19(月) 20:53:44ID:???0752746
2008/05/19(月) 20:56:08ID:xxBfPPP+他でも聞いたのですが答えがなかったのです。
0753nobodyさん
2008/05/19(月) 20:57:51ID:???http://www.pearlgakki.com/
0754nobodyさん
2008/05/19(月) 20:59:14ID:???pearlってライブラリなかった?
0755nobodyさん
2008/05/19(月) 21:00:11ID:???http://www.jap.co.jp/pearl/
0756ハチミツ
2008/05/19(月) 21:52:54ID:sdAnx2Kbttp://bbs.832tool.net/
のショボい掲示板を作って、パーミッションは604にしました。
しかし、なぜかindex.phpのスクリプトが抜かれてしまいます。
教えてください。
また、サーバはXREA.COMを借りています。
セキュリティの穴があるとか言われたことがあるのですが、誰か詳しい方教えてください。
0757nobodyさん
2008/05/19(月) 21:56:08ID:???0758ハチミツ
2008/05/19(月) 22:05:23ID:sdAnx2Kbほぼ自作のindex.phpに穴があるせいか、パスワードの入ったログファイル(.cgiでパーミッション606)がアクセスされてしまうのです。
普通なら.cgiは、アクセスされないのですが、穴の性で見られてしまっているということです。
0759nobodyさん
2008/05/19(月) 22:07:19ID:???どっかで見たと思ったらあった。
情報小出しにするんだったら、プーさんになめられとくもんだと思う。
△▲ WebProg 初心者の質問 Part17 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1204462146/321-322
0760nobodyさん
2008/05/19(月) 22:08:14ID:???0761ハチミツ
2008/05/19(月) 22:10:33ID:sdAnx2Kbhttp://bbs.832tool.net/?id=test%00index.php
この不正アクセスで、index.phpがヌルバイト攻撃で不正アクセスされたのですが、%00を排除することにより、対策はできました。
今は
http://bbs.832tool.net/?id=%
こんなのは、不正アクセスとして、エラールーチンに飛ばしているのですが、
http://bbs.832tool.net/?id=test%00
が、チェックをすりぬけられます。
これは、穴になっていて、index.phpは不正アクセスされるのでしょうか?
0762ハチミツ
2008/05/19(月) 22:13:02ID:sdAnx2Kbよく意味がわからないです。
>>760
不正にindex.phpが見られたら、
同じディレクディレクトリにあったとしたら
pass.cgi
が見られたり、
../pass.cgi
と指定されたら見られてしまいます。
0763nobodyさん
2008/05/19(月) 22:21:40ID:???日本語も良く分からない。
index.phpに(不正なクエリと共に?)アクセスされと同階層にあるpass.cgiが見られてしまう?
謎。
ドキュメントルート以上に置くかapacheをちゃんと設定するかaccessで拒否るか拡張子phpにすればいいのでは?
0764ハチミツ
2008/05/19(月) 22:26:56ID:sdAnx2Kb指定されたファイルが見られてしまうと言うことです。失礼しました。
データの書き込みは
{$id}-log.cgi
と記述していまして、
id=testして、あればログファイルを記述しなければエラーをだすようにしているのですが
この$_GET['id'];
に不正に
index.phpが仕掛けれているせいか、-log.cgiが擦り抜けられてしまうという怖い攻撃らしいです。
昔はそれで、中身が表示されたのですが、今は対策したはずです。しかし、中身が漏れているらしく…
教えてほしいです。
0765ハチミツ
2008/05/19(月) 22:29:04ID:sdAnx2Kb0766nobodyさん
2008/05/19(月) 22:36:15ID:???0767ハチミツ
2008/05/19(月) 22:38:02ID:sdAnx2Kb0768nobodyさん
2008/05/19(月) 22:40:51ID:???ない気がする。そんなの、どう対策すべきかは誰にも判らんだろ。
0771nobodyさん
2008/05/19(月) 22:50:24ID:???いやー、でもさ何気に>>746はここの解答者には難しくね?(俺含め)
そりゃ平のMD5がオンライン辞書攻撃であっさり抜かれる事があるのは承知してるが
0773nobodyさん
2008/05/19(月) 23:54:40ID:???0774nobodyさん
2008/05/20(火) 00:01:01ID:???0775nobodyさん
2008/05/20(火) 00:16:10ID:???773 名前:nobodyさん[sage] 投稿日:2008/05/19(月) 23:54:40 ID:???
横から悪いが、PEARのソースコードなんてそんな簡単に改造できるもんなん?
0776nobodyさん
2008/05/20(火) 00:17:29ID:???ソースも読めない池沼と言うべきだった
0777nobodyさん
2008/05/20(火) 00:39:40ID:???0778nobodyさん
2008/05/20(火) 00:49:15ID:???それすら出来ないならPEARまんま使うか、他のよさげなライブラリ探すしかない。
だって自分で作りたいんでしょ?
0779nobodyさん
2008/05/20(火) 01:06:40ID:YowAhmFQ一回のクエリで全データを配列に入れて、それからforなどで表示する方法と、
どちらが速くて負荷がかからないですかね?
実験では後者ですが、具体的な差が説明されている
サイトなどをご存じでしたら、教えて下さい。
0780nobodyさん
2008/05/20(火) 01:18:34ID:???通信ならDB呼ぶオーバヘッドを考慮して前者
メモリなら後者
あとね自分でベンチとったならそれ信じなよ
こんな匿名のとこで聞いて前者のほうが断然早い!とか言えば信じ込んじゃうわけ?
自分の結果に自信を持ってくれ
0782nobodyさん
2008/05/20(火) 11:27:00ID:MX4GJ438上みたいな記述って問題ないでしょうか? echo $var1_1と試したところ、
ちゃんと表示はされてるんですが、念のため確認したいです。
どなたかご回答お願いします。
0783nobodyさん
2008/05/20(火) 11:27:56ID:???0784nobodyさん
2008/05/20(火) 11:29:22ID:???調べるって大事
http://www.php.net/manual/ja/language.expressions.php
0785nobodyさん
2008/05/20(火) 11:41:01ID:???以前調べたら、PHPだけがJavaとかPerlとかCと三項演算子の結合の向きが違ってたし。
0786nobodyさん
2008/05/20(火) 12:40:09ID:???つまりこんな関数があるとき、
function hoge() {
echo "hogehoge";
}
$a = `hoge()`
// $a = "hogehoge" となる
ということがやりたいのですが。
0787nobodyさん
2008/05/20(火) 13:08:12ID:???http://jp2.php.net/manual/ja/book.outcontrol.php
0788nobodyさん
2008/05/20(火) 13:13:01ID:???そのページよりは
http://www.php.net/manual/ja/language.operators.php
の方がいいでしょ。
代入演算子は right結合だから
$a = $b = $c は $a = ($b = $c) として評価
0789786
2008/05/20(火) 15:14:45ID:???0790nobodyさん
2008/05/20(火) 20:01:58ID:???echoで自分の定義したオブジェクトを指定した場合に特定のメソッドの結果を返させたいのですが、どうやれば良いのでしょうか。
例:
($barはfooクラスのインスタンスであるとして)
echo $bar;
ってしたときに
echo $bar.toString();
のような動作をさせたいのですが。
0791nobodyさん
2008/05/20(火) 20:09:02ID:???正しくは
echo $bar->toString();って感じです。
echoが通常呼び出す文字列変換メソッド?を書き換えられれば良いのでしょうか。よくわかりません。
0792nobodyさん
2008/05/20(火) 20:28:34ID:???0793nobodyさん
2008/05/20(火) 20:41:24ID:???デフォルトではなんかのインターフェイスを呼んでおいてほしいです。toString()が存在するかどうかすら隠ぺいしておきたい。
なるべくソースコードをすっきりさせるために…
0794nobodyさん
2008/05/20(火) 20:42:27ID:???これは明示的に変換が必要なケースだろ
0795nobodyさん
2008/05/20(火) 20:48:21ID:???0796nobodyさん
2008/05/20(火) 20:51:10ID:???http://jp.php.net/manual/ja/language.oop5.magic.php
0798nobodyさん
2008/05/20(火) 22:17:15ID:aFyFy0AFmb_convert_encoding()でShift_JIS→UTF-8に文字コードを変換して
simplexml_load_string()でxmlのデータを扱うおうとしてるけどエラー出るから助けてくれ
エラーは「Entity: line 1: parser error : switching encoding: encoder error」って出てるけどエンコード系でダメなの?
コードは下な感じ
<?php
$_xmlFile = file_get_contents( "etc.xml" );
$_xmlFile = mb_convert_encoding( $_xmlFile, "UTF-8", "Shift_JIS" );
$_xml = simplexml_load_string( $_xmlFile );
?>
ググッたらsimplexml_load_string()はUTF-8でないとダメ!って見つけてこうやってんだけど
他に何かありますか?
0799nobodyさん
2008/05/20(火) 22:22:38ID:???0800nobodyさん
2008/05/20(火) 22:37:15ID:aFyFy0AFxmlは別のjavaプログラムからShift_JISで出力してる
<?xml version="1.0" encoding="Shift_JIS" ?>
<data>
<no_001>
<date>2008/05/20</date>
<comment>あいうえお</comment>
</no_001>
</data>
>>798のmb_convert_encoding()の返り値の$_xmlFileを
var_dump()でみたら2バイト文字は文字化けしてないんですけど・・・
エラー的には1行目がおかしい?(文字コード関係?)
0801nobodyさん
2008/05/20(火) 22:42:19ID:???0803nobodyさん
2008/05/20(火) 23:21:06ID:???XMLファイルの中でエンコードが指定されてるから、ファイルの文字コードが正しければ、
mb_convert_encoding は不要。
0804nobodyさん
2008/05/20(火) 23:38:22ID:???>>801
Shift_JISで出さないとxmlファイルの一部が文字化けしちゃうんだよね
mb_convert_encoding()がなんとかしてくれると思ったんだが
>>802
試してみたが"sjis"でも変わらなかった
>>803
実はxmlファイルをjava側で出力してる時に全角ハイフンの文字化け対策で
ファイル出力のときの文字コード指定はWindows_31Jにしてるんだけど・・・それが原因だったりするのかな(文字コードが合ってないってことで)
文字化けしてないんで大丈夫と思ってるんだけど(xmlにはWindows-31J指定できないんでShift_JISにしてる)
0805nobodyさん
2008/05/20(火) 23:46:18ID:???>xmlにはWindows-31J指定できないんで
これ本当?Windows-31J は IANA文字コードセット名だから使えて良い気がするんだけど。
PHPもサポートしてるし。
http://www.php.net/manual/ja/mbstring.encodings.php
とりあえず全角ハイフン無しのデータ作って読み込めるところまでやった方が良いんじゃね。
0806nobodyさん
2008/05/20(火) 23:50:24ID:rMEOfKkXこれはどのように理解すればいいでしょうか?
$a = 'hoge';
$b =& $a;
var_dump($b);
$a = 'poge';
var_dump($b);
unset($a);
var_dump($b);
0807nobodyさん
2008/05/21(水) 00:01:15ID:???ほいほい
http://jp2.php.net/manual/ja/language.references.unset.php
0810nobodyさん
2008/05/21(水) 01:40:53ID:???名前とか。
0811nobodyさん
2008/05/21(水) 01:57:50ID:???あんまりマトモなやり方じゃないが debug_backtrace で一応取れる。
マトモな方法があったら自分も知りたい。
http://jp.php.net/manual/ja/function.debug-backtrace.php
■ このスレッドは過去ログ倉庫に格納されています