トップページphp
1001コメント296KB

くだすれPHP(超初心者用)6

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2009/04/05(日) 22:04:26ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
ttp://www.php.net/
ttp://jp.php.net/

前スレ
くだすれPHP(超初心者用)5
http://pc11.2ch.net/test/read.cgi/php/1227303362/

関連スレ
PHP総合雑談スレ
http://pc11.2ch.net/test/read.cgi/php/1200314111/
PHP初心者勉強会やらんかね!
http://pc11.2ch.net/test/read.cgi/php/1209137730/
0813nobodyさんNGNG
( ̄ー ̄)ニヤリッ(わっ)
0814nobodyさん2009/08/09(日) 14:30:51ID:???
>>812
つマニュアル
0815nobodyさん2009/08/10(月) 00:13:28ID:???
超初心者用スレなんだから、行き先ぐらい示してあげようよ

閉じタグについてはここ
http://www.php.net/manual/ja/language.basic-syntax.instruction-separation.php

returnについてはお好きにどうぞ
0816nobodyさんNGNG
phpで2証スクリプトは作れますか?
0817nobodyさん2009/08/10(月) 18:21:19ID:???
>>816
できると思うよ
0818nobodyさんNGNG
作ってください
0819nobodyさん2009/08/10(月) 19:16:57ID:???
いいよ
0820nobodyさんNGNG
どうやって作るの?
0821nobodyさん2009/08/10(月) 19:31:23ID:???
>>820
つかったことないんだけど、
どんな仕様のプログラムですか?
0822nobodyさんNGNG
全然わかんない。
0823nobodyさん2009/08/11(火) 01:16:38ID:???
>>811
ありがとうございます。

因みに自分でアップローダを作ってみたのですが、
どうもクラックされたっぽいです。
(クラックっていうか侵入されたかも)

現在、自分の運営しているサイトのアップローダは何かファイルがアップロードされた場合
ファイルの種類や投稿者の情報とか色々と記憶しているのですが、
昨夜(2:00過ぎ)にそのアップロードされたファイルの一覧ページを見てみたところ
確かに「Explorer.php」というファイルがアップロードされていました。

一番気がかりなのは、もう一度ページをリロードすると消えていました。
DBへのアクセス権ものっとられていたりするのでしょうか?
非常に心配です。



08248232009/08/11(火) 01:29:03ID:???
あと、現在サクラ鯖をレンタルしphpを動かしているのですが、
アップロードされた場合に弾くべきファイルとして、
*.php *.en *.ja

を禁止していたのですが perl(触った事が無いですが)とかも
アップロードされると外部から実行されてしまいますよね?

その場合にperlのアップロードを弾く場合にはどうすればよいでしょか?
perlの拡張子は *.pl なので

*.pl.ja 等を弾けば良いでしょうか?
0825nobodyさん2009/08/11(火) 01:33:15ID:???
>>824
「特定のファイル形式を弾く」よりも、「特定のファイル形式以外拒否」の方がよくねか?
0826nobodyさん2009/08/11(火) 01:35:28ID:???
>>825
おおぉー。。。。
そうですね。。。
ご名答です。

因みに一時的にphpスクリプトをアップロードされ、次の瞬間にそのファイルが無くなったということは
侵入された可能性はありますか?
0827nobodyさん2009/08/11(火) 01:51:51ID:???
不安ならホストアドレス、あるいはIPを制限すればいいと思います
0828nobodyさん2009/08/11(火) 01:53:18ID:???
>>827
串さしてホストを変えながら攻撃されてます。
0829nobodyさん2009/08/11(火) 02:13:40ID:???
プロクシー経由を弾けばいいんじゃね?
0830nobodyさん2009/08/11(火) 02:15:46ID:???
簡単に串経由かどうかを判定する方法はありますか?
あと、Torとか使ってくる奴もいてうざくてしょうがないです。
0831nobodyさん2009/08/11(火) 02:37:13ID:???
>>826
アップロードディレクトリでスクリプト実行できないようにしなよ
今のセキュリティホール全開な仕様が異常だと認識したほうがいい

>侵入された可能性はありますか?
スクリプト実行と侵入は違う気がするが
suexecが有効ならサーバ内のファイル構成を見られたりファイル消されたりする可能性はある

とにかくPHP周りを強化するよりサーバ周りの設定を強化したほうがいい
0832nobodyさん2009/08/11(火) 02:44:24ID:???
>>831
>アップロードディレクトリでスクリプト実行できないようにしなよ
ディレクトリに設定する権限は755に設定していますが、
これでは駄目なのでしょうか?

因みにファイル構成を見られる分には別にいいのですが
phpスクリプトのコードまで見られた可能性はありますか?

あと、ちょっと原始的かもしれませんが *.php *.PHP *.pl *.PL *.cgi *.CGI を
全てアップロード付加にしました。

取り合えずこれでアップローダからの侵入は防げるかなと思ってますが、
ベテランの方もし穴があるとすればご指摘願います。
0833nobodyさん2009/08/11(火) 02:46:09ID:???
> 簡単に串経由かどうかを判定する方法はありますか?

ちっとはてめえで調べろよ、横着野郎。
0834nobodyさん2009/08/11(火) 02:50:08ID:???
>>833
考えました。
0835nobodyさん2009/08/11(火) 02:56:58ID:???
>>832
755じゃ実行されるでしょ
ていうか権限の問題じゃない
一番簡単なのはAddTypeハンドラでtextとして実行するようにする
他にもルール作って特定拡張子へのアクセス防いだりなど
htaccessを用いていろいろ対策は可能
0836nobodyさん2009/08/11(火) 03:14:49ID:???
>>835
今日帰って来たら色々とapacheがらみを勉強してみようと思います。

※上でも書いた様に *.php *.pl 等の実行形式のファイル自体はアップロードさせない様に判定ロジックを
組み込みました。
取合えずこれで少しは穴は塞げた(???)と思いましたのでもう寝ます。
ご回答くださった方々ありがとうございました。
0837nobodyさん2009/08/11(火) 14:47:02ID:???
PHPのセキュリティの攻撃となんちゃらの実際

とかって本を読めば?
0838nobodyさん2009/08/12(水) 01:01:23ID:???
>>837
買ってきます。
0839nobodyさん2009/08/12(水) 18:14:55ID:XtZqM+tg
フォームで受け取った$pass(値はhoge)と
同じくフォームで受け取った$idをファイル名に含んだファイルの二行目をfile()で読み込んで
$data[1](値はhoge)に代入して
if($pass==$data[1]){
print"値は同じです".$pass"==".$data[1];
}
else{
print"値は違います".$pass"==".$data[1];
}
を実行すると
「値は違います hoge==hoge」
と表示されるのですが「値は同じです」と表示させるにはどうしたらいいですか?
0840nobodyさん2009/08/12(水) 18:24:11ID:???
var_dumpしてみそ
0841nobodyさん2009/08/12(水) 18:43:49ID:XtZqM+tg
Var_dumpしてみたら@dataの値全部の最後尾に半角スペースがあったんだけど
ファイルを見てみると
hoge
hoge
hoge
で半角スペースなんてないんだけどこれって別のところに原因がある?
代入は$data=file("$filepath");ってやってるんだけど。
0842nobodyさん2009/08/12(水) 18:59:57ID:???
> print"値は違います".$pass"==".$data[1];

print"値は違います" . $pass . "==" . $data[1];
ではないのか?
0843nobodyさん2009/08/12(水) 19:03:38ID:???
書き込みはドット抜けてたけどソースにはかいてある。
0844nobodyさん2009/08/12(水) 19:14:53ID:???
file()で読み込んだら行末に改行コードが入ると思うが。
0845nobodyさん2009/08/12(水) 22:39:56ID:???
>844
が正解。trim()かrtrim()する必要がある
0846nobodyさん2009/08/12(水) 23:23:53ID:???
PHPサイバーテロの技法 攻撃と防御の実際

、、、だった。
0847nobodyさん2009/08/12(水) 23:30:30ID:???
それかFILE_IGNORE_NEW_LINESフラグを付ける。

ttp://www.php.net/manual/ja/function.file.php
>改行記号はついたままとなります。 失敗すると file() は FALSE を返します。
0848nobodyさん2009/08/12(水) 23:38:47ID:???
>>847
何言ってんだよ、$passに改行コードをつけてからコンペアすりゃいいだろw
0849nobodyさん2009/08/13(木) 00:35:56ID:???
Debian lennyのPHP5でPDO+sqlite3を使いたいのですが
どうすればPDOドライバが使えるようになりますか?
0850nobodyさん2009/08/13(木) 00:44:24ID:???
compareをコンペアと発音する若い連中
0851nobodyさん2009/08/13(木) 00:45:29ID:???
>>849
php.iniのPDOの行がコメントアウトされてるから、
コメントアウト;をはずして、
上書き保存して、
アパッチ再起動かな?
0852nobodyさん2009/08/13(木) 01:14:32ID:???
>>851
vimでphp.ini開いて/pdoやってみたけどnot foundって出てきましたorz
0853nobodyさん2009/08/13(木) 01:18:14ID:???
じゃ書いとけばいいんじゃね
0854nobodyさん2009/08/13(木) 01:26:14ID:???
アパッチの設定ファイルのほうだったかな?
httpd.confとか。
0855nobodyさん2009/08/13(木) 03:23:23ID:???
コンボボックスより選択された値をhidden項目に設定し、
その状態で自画面(TestAction)のPHP部分に引き渡したす
為に、次のコードを書いたのですが、エラーが発生してしまいます。

いずれも、*.submit();の実行時にエラーが発生してしまうのですが
どうすればよいでしょか?

function TestSelect(iSelect)
{
  document.getElementById("id_value_set").value = iSelect;


  //■方法@
  document.name_select_page.submit();

  //■方法A
  obj = document.forms["name_select_page"];
  obj.action="TestAction.php"
  obj.submit();

}
<form name="name_select_page" action="TestAction.php" method="POST">
  <input id="id_value_set" type="hidden" value=""/>
  <select onchange="TestSelect(this.options[this.selectedIndex].value)">
    <option selected >1</option>
    <option>2</option>
    <option>3</option>
  </select>
</form>
0856nobodyさん2009/08/13(木) 04:25:57ID:???
value無くね?
0857nobodyさん2009/08/13(木) 05:01:57ID:???
>>855
すごくスレ違いな気がするけど・・
とりあえずIE8でsubmit()の箇所に関してはどちらの方法も動作する。
省略している部分に問題があると思われる。

続きは
+ JavaScript の質問用スレッド vol.72 +
http://pc11.2ch.net/test/read.cgi/hp/1247911761/l50
0858nobodyさん2009/08/13(木) 14:58:14ID:???
$a[0] = "password=zdrup91=";

$s = explode( "=", $a[0] );

こうやると $a[0]の最後の = も消えちゃうけど、
消さずに分離するにはどうしたらよい?
0859nobodyさん2009/08/13(木) 15:13:32ID:???
>>858
そりゃ消えるだろ
デリミタを変えろとしか言いようがない
0860nobodyさん2009/08/13(木) 15:14:40ID:???
正規表現で ([^=]+)=(.*) とかで切り出したら
0861nobodyさん2009/08/13(木) 15:15:27ID:???
もしpassword=が固定ならそれ消すだけでいいし
0862nobodyさん2009/08/13(木) 15:41:40ID:???
>>860
d。でもその正規表現でpreg_split() やったら = だけ切り出されたよ…
0863nobodyさん2009/08/13(木) 15:58:40ID:???
正規表現ならシンプルに下記でいいんじゃない
/^password=(.+)$/
0864nobodyさん2009/08/13(木) 16:07:02ID:???
preg_matchでいいだろ
08658582009/08/13(木) 16:52:21ID:???
みんな、ありがとう。
↓これでいけた。

$s = preg_split( "/=/", $a[0], 2 );
0866nobodyさん2009/08/13(木) 19:07:28ID:???
"France '40" を urlencode() した "France+%2740" を渡して
受け側でGETすると "France+%5C%2740" とかバックスラッシュが
入ってるのはなぜ?
0867nobodyさん2009/08/13(木) 20:11:40ID:???
つmagic_quotes_gpc = Off
0868nobodyさん2009/08/13(木) 21:59:50ID:???
最近magic_quotesの事を知らない人が多いような気がする。
自分もそうだったけど、ハマるとなかなか難しいよね。
0869nobodyさん2009/08/13(木) 22:29:31ID:???
最近はデフォルトでOffじゃないのか?
6ではもう削除されるし
0870nobodyさん2009/08/14(金) 00:21:29ID:???
> 最近magic_quotesの事を知らない人が多いような気がする。

( ´,_ゝ`)プッ
0871nobodyさん2009/08/14(金) 20:37:22ID:WKlKHJBl
""や''の中で使われている{}ってどういう意味なんでしょうか?
0872nobodyさん2009/08/14(金) 20:41:09ID:???
''の中では無いでしょう
0873nobodyさん2009/08/14(金) 20:44:50ID:???
>>431
0874nobodyさん2009/08/14(金) 22:17:30ID:???
$a=1;
$aa=2;

こんなとき、もし

print $aaa;


とかってあったら、PHP君は、

「これって、$aなのかなぁ?$aaなのかなあ?$aaaなのかなぁ?」

って、わけわかんなくなって、
「下半身のクスリなので見せられない」
とかってふぁびょって、逃亡してしまうのです。

それを防ぐための{}です。
0875nobodyさん2009/08/14(金) 22:44:12ID:???
それじゃ$aaaしか解釈されねーよ
0876nobodyさん2009/08/14(金) 23:26:44ID:???
それじゃあ$aや$aaを使いたいときにはどうすんだよ、って話だろ
どんだけ脳味噌腐ってるんだ
機械なんだから、最終的には1通りに決定するに決まってんだろ
0877nobodyさん2009/08/14(金) 23:48:55ID:???
$aか$bのどちらかにカタカナの「ア」が含まれているかどうか判定するのに

if ( mb_ereg( "/ア/", $a . $b ) )

こんな風に書いたら正常に動作しないんだけど、なぜ?
0878nobodyさん2009/08/15(土) 00:09:31ID:???
if( mb_ereg( "[ア]", $a . $b ) )
0879nobodyさん2009/08/15(土) 00:20:10ID:???
>>877
つmb_strpos($a . $b, 'ア');
0880nobodyさん2009/08/15(土) 00:20:40ID:???
>>874==>>876の場合にのみ>>876が成り立ちます。
0881nobodyさん2009/08/15(土) 01:09:05ID:???
>>880
>>>874==>>876の場合にのみ>>876が成り立ちます。
>

ごめん意味がわからない
0882nobodyさん2009/08/15(土) 01:13:14ID:???
>>874==>>876の場合にのみ>>876が成り立ちます。

>>876
>どんだけ脳味噌腐ってるんだ

つまり>>874>>876は脳味噌腐ってる、そういうことです
0883nobodyさん2009/08/15(土) 01:34:00ID:???
>>876
$aaaしか解釈されない話を書いておいて、
>それじゃあ$aや$aaを使いたいときにはどうすんだよ
という話に結びつくわけねーだろアホが
結びつけたいなら例示が誤り
0884nobodyさん2009/08/15(土) 10:47:55ID:kMv36QGK
とりあえず>>874>>876が同一人物ならば、こいつが一番バカだっていうことがわかる。
0885nobodyさん2009/08/15(土) 19:39:15ID:???
date()でタイムゾーンの Z ってどういう風に指定するの?
date("y/m/d H:i:sZ32400",time())
とかやったらダメだった…
0886nobodyさん2009/08/15(土) 19:44:38ID:???
ん?こっちの環境で実行してみたらちゃんとZの所に32400が表示されるけど?
0887nobodyさん2009/08/15(土) 19:50:31ID:???
>>886
ごめん、聞き方が悪かったというか勘違いしていた。

西海岸の鯖を借りていて、time()で取った時間を記録しているんだけど、
それを日本時間で表示したかったの。
夏時間なんかもあるし、他の鯖に引っ越したときのことも考えると
単純に時差を足すのもダメなんで悩んでます。
0888nobodyさん2009/08/15(土) 19:54:23ID:???
タイムゾーン設定すればいいと思うが
0889nobodyさん2009/08/15(土) 21:50:12ID:lF+0GJeW
PHPって単体テストやるんですか?
やるとしたらどうやるんでしょうか?
0890nobodyさん2009/08/15(土) 22:14:56ID:???
やるかどうかはその人次第
ちなみにPHPコアはロクなテストをしていない気がする
ハーネスは普通にPHPUnitがある
0891nobodyさん2009/08/15(土) 22:16:04ID:lF+0GJeW
その人次第ってことは業務でも強制されないってことですか?
0892nobodyさん2009/08/15(土) 23:20:10ID:???
>>887
date()の代わりにgmdate()を使って、9時間分の秒数を足せばいいと思う。
0893nobodyさん2009/08/15(土) 23:22:02ID:???
会社による。
0894nobodyさん2009/08/15(土) 23:50:25ID:???
php.iniなりdate_default_timezone_set()なりで設定するのがベストでしょ?
0895nobodyさん2009/08/16(日) 00:06:27ID:???
time()で取得したデータがあるのに今さら変えてどうなる?w
0896nobodyさん2009/08/16(日) 17:03:40ID:???
php.iniて、そろそろxmlにならないの?
0897nobodyさん2009/08/16(日) 17:09:30ID:???
なんで?
0898nobodyさん2009/08/16(日) 17:42:34ID:???
だいぶ前にPerl本当にちょっとだけやって最近PHP始めたんだけど
Perlだとユーザー定義関数内でユーザー定義関数外の変数が使えたような気がするんだけど
PHPだとできない?ファイルごとにかいてrequireするしかないのかな?
0899nobodyさん2009/08/16(日) 17:45:29ID:???
>>898
global
0900nobodyさん2009/08/16(日) 17:48:09ID:r7x0SQCa
globalは知ってたんだけどglobalの意味をなんかはき違えてたみたいです。ありがとうございました
0901nobodyさん2009/08/16(日) 18:26:29ID:???
>896
現状レベルの設定項目ならXML化など必要ない。
XMLが必須になるような複雑な設定が必要ならば、それは環境依存バグの温床でしかない。
「設定が原因」って問題が、現状ですらこのスレの質問の何割ってレベルに達してる。複雑化させようとか脳味噌涌いてる。

むしろphp.iniっていつになったら削除するの?と言いたい。
0902nobodyさん2009/08/16(日) 22:09:37ID:???
コンフィグの類をXMLにしたがるのって、XMLって言ってみたかっただけだよね?
と思ってしまう。
0903nobodyさん2009/08/17(月) 04:25:59ID:???
ゆとりC#ユーザなんですよ
察してやれ
0904nobodyさん2009/08/17(月) 06:31:09ID:???
いわゆる「全角の法則」ってやつですね。
0905nobodyさん2009/08/17(月) 14:56:46ID:???
PHP始めたくて環境整えたいんですけど、
うちのPCは容量不足でした。
で、ネカフェで一度試そうと思うんですけど、
環境整えるのに30分もかかりませんか?
0906nobodyさん2009/08/17(月) 14:59:27ID:???
使う環境が無ければ始める必要はないのでは。
0907nobodyさん2009/08/17(月) 15:01:29ID:???
Apache+PHPが入らないほど容量が逼迫してるPCってどんだけ
0908nobodyさん2009/08/17(月) 15:15:54ID:???
すいません。容量減らしてみます。

で、30分はかかりませんかね?
0909nobodyさん2009/08/17(月) 15:17:34ID:???
君だとかかりそう
0910nobodyさん2009/08/17(月) 15:24:55ID:???
普通の人なら30分以下ってことですね?
ありがとうございました。
0911nobodyさん2009/08/17(月) 15:33:23ID:???
ネカフェのPCって無法地帯なんですね
0912nobodyさん2009/08/17(月) 15:36:04ID:???
ネカフェのPCは再起動をすると、インストールしたものやダウンロードしたものはすべて消去されるからね。
レス数が900を超えています。1000を超えると表示できなくなるよ。