くだすれPHP(超初心者用)5
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/11/22(土) 06:36:02ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0773nobodyさん
2009/02/19(木) 23:52:31ID:???ファイルそのものを削除するならcronなんかを走らせておくのでしょうが、
ファイルを直接DLではなくCGI/PHP経由でのみDL許可にすれば
期日後はユニークIDをDBから取り出せなくするだけで実現できるのでは?
0774nobodyさん
2009/02/20(金) 04:23:24ID:???閉じタグ打たなかったら、ページの最後まで
適用されてしまうんでない?
<h1>おはよう
↑こんなの。ひろゆきがあめぞうを
つぶしたときに、「スタイルシート破壊攻撃」というのを
使ったのだ。「あめぞうウイルス」でググるとわかる。
0775760
2009/02/20(金) 08:00:28ID:???アドバイスありがとうございます。
その期日後にPHPを起動(?)させる方法を知りたいのです。
だれもその期日(後)にPHPにアクセスしなければ、PHPは動作しないので。
あっ誰かがアクセスする時に、期限のチェックをすれば済む話ですね。
なんか自動的に削除処理しなきゃと思い込んでました。
超初心者ということで許してください。ありがとうございました。
0776nobodyさん
2009/02/20(金) 08:15:05ID:???PHP内でcrontabを書き換えられるかどうかは知らんけど。
0777nobodyさん
2009/02/20(金) 15:07:58ID:???0778nobodyさん
2009/02/21(土) 00:09:46ID:???scriptタグを埋め込まれると、ページ内の全表示内容、クッキーを外部のURLに送信される可能性がある。
onloadなどのJavaScriptを実行されるものは全て同じ。
多くのシステムがタグを回避するのはこの脆弱性対策のため。
imageタグによる画像貼り付けや、objectタグによるFlash貼り付けなど、考慮しないといけない事は山のようにある。
脆弱性対策ってのは、猿真似してりゃいいってもんじゃない。
「何故」HTMLタグに警戒しないといけないのかを理解し、適切な対策を自分で考える必要がある。
勘違いするといけないのではっきり言うが、その処理を挟んでもセキュリティは一切向上しない。無駄だ。
0779nobodyさん
2009/02/21(土) 06:29:21ID:wFQNH0340780nobodyさん
2009/02/21(土) 06:30:12ID:wFQNH034perl X
PHP ○
0781nobodyさん
2009/02/21(土) 07:16:06ID:???0782nobodyさん
2009/02/21(土) 07:51:36ID:???0783779
2009/02/21(土) 10:59:46ID:???ブラウザーアドベンチャーゲームなんだけど。
300行分を10本ね
連絡先 adobentya@hotmail.com
0784nobodyさん
2009/02/21(土) 11:05:48ID:???0785779
2009/02/21(土) 11:11:58ID:???0786nobodyさん
2009/02/21(土) 11:20:40ID:???入場者名と退場者名を同じ1ページ内で、上下のスパン(上半分が入場者名、下半分が退場者名)
にしてPDF出力したいと考えています。
プログラムはそれぞれ"nyuujyou.php"、"taijyou.php"が用意されています。
このように別々のプログラムの結果を、同じページ内でPDFで同時に表示させることはできますか?
共通の変数は日付$ymdだけです。
0787nobodyさん
2009/02/21(土) 11:54:46ID:???入場.php、退場.phpを、出力結果をechoするのではなく、出力結果を文字列として返す関数に書き直すのが正しい道。
こういう事は非常によくあるので、「出力結果を組み立てる」部分と「書き出す」部分は明確に分けたほうがいい。
「入場者名や属性の配列をDBから取ってくる部分」→「それを使ってHTML文字列を組み立てる部分」→「それを受け取って書き出す部分」
の三段階に分けると使い回しが効く。ロジックの殆どは最初の部分に来て、変更が多いのは簡単な後半だからな。
例えばCSVでファイルに書き出したい場合、最初の難しい部分にはノータッチで後ろの2つだけ書き換えればよくなる。
前から順に「モデル」「ビュー」「コントロール(の一部だが)」層と呼ぶ。
で、レシピだが。
<?php
$ymd = '2009/02/21';
ob_start();
require_once("入場.php");
$result1 = ob_get_flush();
ob_start();
require_once("退場.php");
$result2 = ob_get_flush();
でresult1、$result2に両phpの実行結果が文字列として入る。PDF変換はライブラリを自分で漁れ。
0788786
2009/02/21(土) 11:59:35ID:???わかりました、丁寧にありがとうございました。
0789nobodyさん
2009/02/21(土) 12:59:33ID:???厳しいご意見どうも
前段に関してはセキュリティ関連のサイトとか見てるんで
scriptを仕込まれてとかはまあ理解してます(というかこんなことがあると把握してる程度というか)。
その上で>>772が全くの無駄となるとhtmlspecialcharsが意味を成さないんでしょうか
それとも関数の後に置換をしてるからダメになるんでしょうか。
これで100%対策してるとはもともと思ってませんが、htmlspecialcharsで
ある程度の対策になるという考えは間違ってるでしょうか。
>>772も置換パターンが読まれたらアウトですが、どういった部分がだめなのか1例だけでも
教えてもらえないでしょうか。
0790nobodyさん
2009/02/21(土) 14:46:55ID:???自信ないけど、こんなの入れたらどうなるでしょうか。
0791nobodyさん
2009/02/21(土) 15:18:21ID:???つまり789の最後に言ってるように@<が<に変換されるのが
ばれているということが前提ですか?
ならば置換を行わずにhtmlspecialcharsのみなら問題ないということでしょうか。
当初の一部タグを有効にしたいというのはとりあえず置いときますが。
0793nobodyさん
2009/02/21(土) 15:51:07ID:???万一、SQLインジェクションされて、不正なデータを注入されても htmlspecialchars が出力時に噛ませてあればほんの少しダメージを軽減できる。
# まぁ、SQLインジェクションが起こった時点でいろいろ見直すべきだと思うけど。
装飾のタグが使えるのは素敵な機能だと思うけど、自力で組むのは難しいんじゃなかろうか。
自分ではどんなに完全だ、と思ってても意外なところに穴があったりするし。
ここで「大丈夫でしょうか?」って聞くくらいならば、そんなものは実装しないのが一番。
少なくとも str_replace() とかの単純な手法で実装できるような機能ではないと思う。
置換パターンが読まれてなければ云々については、
攻撃するときは攻撃者はいろんなパターンの文字列をスクリプトに投げてみて、置換や変換のルールを推測した上で攻撃するんだろうから、
あんまり考える意味がない。
0794nobodyさん
2009/02/21(土) 15:54:51ID:???ttp://phpspot.net/php/man/php/function.strip-tags.html
この関数は、allowable_tagsで許可した全てのタグ の属性を修整しません。
これには、style お よび onmouseover属性が含まれており、悪意のあるユーザが他のユーザに見せるようなテキストを投稿する際に危険な行為を行う可能性があります。
0795791
2009/02/21(土) 16:08:04ID:???ちょっと忙しくなったので夜に反応します。
0796nobodyさん
2009/02/21(土) 19:23:46ID:???設計はすでにできていてあとはコードを書くだけ?
それなら設計の読み方わかるニートがやってくれるかもね
普通の人に頼むならまぁ無理だと思ったほうがいいわ
時給換算して300行400円はわりにあわない
10分で300行かけるような超人がいたとしたら
人の○倍仕事量こなすから○倍よこせってなるのでますます無理
設計書くなら値段は跳ね上がるから設計書いらないっていうのが
PHPクライアントなわけだけど
それだとお金にならないからスルーするというのが業界の流れ
0797nobodyさん
2009/02/21(土) 21:09:34ID:1h/i9qY8<?php
$numbers = range(1, 20);
shuffle($numbers);
for($i = 0; $i < 20; $i++) {
echo $numbers[$i]."<br>\n";
}
?>
0798nobodyさん
2009/02/21(土) 21:19:21ID:???$CountLogFile = "カウントログへのファイルパスを指定";
session_save_path("セッション情報を記録するディレクトリパスを指定");
session_start();
if(!file_exists($CountLogFile))
{
touch($CountLogFile);
}
$File = fopen($CountLogFile , "r+" ) or exit("FileOpenError...");
flock($File , 2);
if(empty($_SESSION["Count"]))
{
$_SESSION["Count"] = "1";
$Count = fgets($File , 16);
$Count = $Count + $_SESSION["Count"];
}
else
{
$Count = fgets($File , 16);
}
rewind($File);
fwrite($File , $Count);
flock($File , 3);
fclose($File);
?>
<?php echo "AccessCount : $Count"; ?>
0799nobodyさん
2009/02/21(土) 21:19:50ID:???0800nobodyさん
2009/02/21(土) 21:35:22ID:???0801772
2009/02/21(土) 21:58:27ID:???wiki風なキーワード+対象文字っていうのも考えてたんですけど、それはそれで抜き出しのための正規表現とかで
>>793でも言われているどんな抜けがあるかが想像つかないものでして。
とりあえず今回はあきらめることにします。ありがとうございました。
0802nobodyさん
2009/02/21(土) 22:35:15ID:???万一、SQLインジェクションされて、不正なデータを注入されても htmlspecialchars が出力時に噛ませてあればほんの少しダメージを軽減できる。
お前、いろいろと混同してないか?
0803nobodyさん
2009/02/21(土) 22:42:59ID:q8fBHhcW<?php
if( $_POST['insert'] == 'insert' ) {
echo "インサート";
}
?>
・・・
<form action="test.html">
<input type="text" name="text">
<input type="submit" value="送信">
<input type="hidden" name="insert" value="insert">
</form>
送信を押したときにだけ、インサートを表示するようにしたいのですが、リロードした場合も表示されてしまいます。
POSTされた中身が保持されているからだと思うのですが、
送信を押したときにだけ表示するにはどうしたらよいでしょうか?
0804nobodyさん
2009/02/21(土) 22:45:45ID:???つまり、そういう事だ。
0805nobodyさん
2009/02/21(土) 23:01:17ID:???不正に注入されたデータがJSとかのスクリプトを含むもので、html..を噛ませてなかったら、出力時に実行されてScriptInsertionにならない?
そこで、データの出力時にhtml..を噛ませてあれば、JSの実行は防げるから多少は軽減できる、って意味。
別にSQLInjectionが防げるっていう意味のつもりじゃないよ。
0806nobodyさん
2009/02/21(土) 23:42:58ID:???file_get_contents()って第一引数にファイル名を指定しなければならないと聞きましたが、ファイル名を変数に代入してそれを指定しても動きますでしょうか?
0807nobodyさん
2009/02/21(土) 23:48:15ID:???0809nobodyさん
2009/02/22(日) 00:11:37ID:???いやそこでSQLインジェクションが出てくるのがおかしいよ。
意図したとおりのSQLが実行されて、意図したとおりDBに保存されるんでしょ?
文字型のカラムに入るデータがHTMLだろうとJavaScriptだろうと
DB的にはなにも問題ない。
それを取り出して表示するときにHTMLならHTML用の処理が必要ってこと。
。。。ほかのとこにいた人?
0811nobodyさん
2009/02/22(日) 00:23:28ID:???インジェクションが万一、起こってしまった場合の話。
html..が対策になるなんて思ってないよ。
データベースから引っ張ったデータでも信用せずに、出力時にhtml..をかけておけば万が一、JSとかの意図しないデータを混入させられても少しは安全になるだろう。
って言いたかった。
間違えたこと言ってたらすまない。
0812811
2009/02/22(日) 00:34:57ID:???言いたいことは>>809と同じのつもりなんだけど……。
ぐちゃぐちゃにしてしまった、申し訳ない。
IDスレのほうも似た話題になってるけど別の人です。
失礼しました。
0813nobodyさん
2009/02/22(日) 00:39:28ID:???俺に読解力がないんだろうか
0814nobodyさん
2009/02/22(日) 00:43:08ID:???配列の値をカンマで繋げたいんですがそういった関数はないでしょうか。
配列関数のところにはなさそうなんですがforeachでループさせるぐらいしかないんでしょうか。
0815nobodyさん
2009/02/22(日) 01:09:34ID:???0816nobodyさん
2009/02/22(日) 01:23:04ID:???0818nobodyさん
2009/02/22(日) 01:28:17ID:???はい、しかと覚えました。
ていうか今回はこちらの調べ方不足だったけど
関数多すぎでいまいちマニュアルから探しづらい・・・
0819nobodyさん
2009/02/22(日) 01:32:17ID:???0821nobodyさん
2009/02/22(日) 01:50:01ID:???php 配列 値 繋げる
今回は悪かったって
たいていググルで見つかるけどマニュアル内検索でヒットしたらいいんだけどね
とまた転嫁
0822nobodyさん
2009/02/22(日) 02:26:36ID:???マニュアル全部読みとか無理
0825nobodyさん
2009/02/22(日) 10:31:23ID:???私は、今のところサクラを考えていますが既に使われている方は
実際の使い勝手は如何でしょうか?
選択する上でのポイント
・月額料金が1000円未満
・ローカルで作成したphpスクリプト+DB(MySQL)を簡単に使える(UI操作でOK)
0826nobodyさん
2009/02/22(日) 10:32:38ID:???板違い
0827nobodyさん
2009/02/22(日) 15:33:49ID:???PDOもPEARもmysqliも使ってなくて、
いまだにmysql関数使っててマイッタ。
インジェクションはエスケープ文字をあらかじめ
全部全角に変換することで対応してるみたい。
これってどうよ?
0828nobodyさん
2009/02/22(日) 16:01:03ID:???0829nobodyさん
2009/02/22(日) 16:06:55ID:???どんな環境・設定でも対応できるからネイティブ関数だけで使いやすいようにクラス化しておけば使いやすいし
0830nobodyさん
2009/02/22(日) 16:14:47ID:???やっぱそういうことか。
たしかにどネイティブだからサクサク動いてるんだよな〜これが。
デグレ起こしたらいやだし、今回は実装あわせてサクッと終わらせよ。
0831nobodyさん
2009/02/22(日) 16:47:38ID:???起動しようとすると、
「指定されたファイルが見つかりません。No Installed service named "Apache2"」
となって起動できませんでした。
UACはオフにしているのですが…、どなたか教えて下さい。
0832nobodyさん
2009/02/22(日) 16:57:39ID:???0833nobodyさん
2009/02/22(日) 16:58:16ID:???PCにキックをすると直ったよ。
0834nobodyさん
2009/02/22(日) 17:15:38ID:???あ!skype起動してました!これオフラインにすると正常にインストールすることができるんですかね?
あとIISってのが分らないです。調べてみます…
0835nobodyさん
2009/02/22(日) 17:32:49ID:???0836nobodyさん
2009/02/22(日) 17:34:31ID:???皆さんのおかげです。ありがとうございました!
0837nobodyさん
2009/02/22(日) 17:39:03ID:???0838nobodyさん
2009/02/22(日) 17:54:25ID:???apacheのバージョンは2.0、PHPのバージョンは5なんですが2.0には最初から書いてないんですかね?
0839nobodyさん
2009/02/22(日) 18:06:50ID:???0840nobodyさん
2009/02/22(日) 18:10:00ID:???0841nobodyさん
2009/02/22(日) 18:11:04ID:???エスパーじゃないんだから、チミがAddModuleするかなんて
アパッチ様が知るわけないだろ
0842nobodyさん
2009/02/22(日) 18:13:45ID:???アパッチ様がエスパーじゃないという前提で、LoadModule mod_php5.cと記述してみました。これで合ってるでしょうか
0843nobodyさん
2009/02/22(日) 18:29:41ID:???0844nobodyさん
2009/02/22(日) 18:31:48ID:???AddModule mod_php5.c
いらないってことですかね?
0845838
2009/02/22(日) 23:02:42ID:???みなさんありがとうございました。自分で解決してみます
0846nobodyさん
2009/02/23(月) 01:21:02ID:???value をからにしておいて、ボタン押したら
document.forms[0].elements['insert'].value = 'insert';
document.forms[0].submit(); とか、phpじゃないけど、、
0847nobodyさん
2009/02/23(月) 09:53:42ID:???初心者用でおすすめの技術書はありますか?
できれば1行ごとに、「//変数を配列[a]にセットする」・・などといった解説がついているといいのですが。
おねがいします。
0848nobodyさん
2009/02/23(月) 12:40:12ID:???0849nobodyさん
2009/02/23(月) 12:52:59ID:???0850nobodyさん
2009/02/23(月) 14:11:13ID:???なんか他の言語でプログラムはしたことあるの?
0851nobodyさん
2009/02/23(月) 15:26:41ID:???RSSのURLをIEでクリックすると、ちゃんとitemsを拾ってXMLにしてくれるんですけど、
RSSリーダーやFirefoxでクリックするとitemsを拾ってくれません<items>要素が空になってます。
IEとFirefoxでは挙動が違うのでしょうか?
0852nobodyさん
2009/02/23(月) 15:39:23ID:???原因がわかりました。お騒がせしました。こちらのプログラム上のミスでした。
0854nobodyさん
2009/02/23(月) 16:23:08ID:frx8oxrAってありますか?
どこ調べても旧バージョンしかないんですが。
0855nobodyさん
2009/02/23(月) 16:25:24ID:???0857nobodyさん
2009/02/23(月) 16:51:00ID:???インストールはバイナリーから?ソースからビルド?
旧と手順変わらないと思うけどね。確実なのは添付されてるドキュメント
0858nobodyさん
2009/02/23(月) 16:55:07ID:???OSぐらい書いといた方がいいと思うよ。
WindowsとLinixがやり方違うし。
最新版は
Apache: 2.2系
PHP : 5.2.8
でおk?
0859nobodyさん
2009/02/23(月) 17:49:03ID:frx8oxrAそうです。OSはウィンドウズです。
0861nobodyさん
2009/02/23(月) 17:56:31ID:???XAMPP入れた方が早いよ >>windows
0862nobodyさん
2009/02/23(月) 18:01:35ID:???まったく経験なしに等しいです。
>>853
ありがとうございます。とりあえずXAMPPはインストールしました
0863nobodyさん
2009/02/23(月) 18:05:24ID:frx8oxrAありがとうございました。
0864nobodyさん
2009/02/23(月) 19:28:01ID:???0866nobodyさん
2009/02/23(月) 19:40:36ID:???じゃあ秋葉原にいくな
CPUを買うときと、ハードディスクを買うときと、
ソフトを買うときと、マウスを買うときと、
それぞれ全部違う町にいけ。
0867nobodyさん
2009/02/23(月) 19:57:12ID:???0869nobodyさん
2009/02/23(月) 21:18:58ID:???0870nobodyさん
2009/02/23(月) 21:38:57ID:???八割がた後になってハマるんだがw
必要になったらそのとき勉強する?はいはい。
0871nobodyさん
2009/02/23(月) 21:41:24ID:???どんだけものぐさなんだよ。
0872nobodyさん
2009/02/23(月) 21:52:11ID:???馬鹿か?
駄目なやつは何を使っても駄目
ようは使う人の問題だろ
それにXAMPPは何も設定できないと思ってんのか?これだから低脳は
■ このスレッドは過去ログ倉庫に格納されています