【PHP】下らねぇ質問はここに書き込みやがれ 49
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/06/26(火) 03:03:40ID:ox2uyHLdPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45 (※実質48)
http://pc11.2ch.net/test/read.cgi/php/1180181033/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0633nobodyさん
2007/07/05(木) 00:28:48ID:zUNo1syV*.class.phpはどこかでみたことあるな
ウチの会社は何故か *.inc で統一されとる
>>632
いや、まあウチのボスと同じ思考だろうが
富豪プログラミングしようぜ
0634nobodyさん
2007/07/05(木) 00:30:24ID:???Javaっぽく書くよ
1. 内部クラス見たいな感じはたまにあるかも
2. Test.class.php とか
mb_convert_variables() を使うと思うのですが、キーまで変換してくれません。
ttp://cl.pocari.org/2006-11-04-1.html
キーが変わってしまうとかは置いといて、キーも一括で変換してくれる方法はないものでしょうか。
0637nobodyさん
2007/07/05(木) 00:52:01ID:zUNo1syV> 1. 内部クラス見たいな感じはたまにあるかも
あるある
>>635
> 2.当然.php。セキュリティ対策上も当然
ってことは、外部ファイル(?)もWebドキュメントルート以下に置いてるのかな
ウチの場合、直接は触れないとこに置いちゃうのよね
いろいろ回答サンクスコ
0638nobodyさん
2007/07/05(木) 00:56:51ID:???配列の値がユニークであれば
ttp://www.php.net/manual/ja/function.array-flip.php
と組み合わせでいけんじゃね
個人的な感想としては
ハッシュキーがマルチバイト文字列なのは気持ち悪い
0639635
2007/07/05(木) 01:01:22ID:???>Webドキュメントルート以下に置いてるのかな
仕様上、そんなバカなことはするわけない。
しかし万一、サーバ設定の変更のミスなどで、includeされる可能性すらありえるのを回避することが
大切。その程度のことも考えてない会社は先が知れてる。
0640nobodyさん
2007/07/05(木) 01:05:45ID:zUNo1syVおう?
んじゃなぜ拡張子を.phpにするのが「セキュリティ上当然」なんでう?
0641nobodyさん
2007/07/05(木) 01:47:55ID:okrNhbcx>tableなら、table で対象範囲を切り取り、 <tr>で改行(explode) した後<td>でexplodeして配列形式にする
>あとはゴミを取っ払って、foreachループでCSV形式に書き出し
どうやって ごみを取り払うのでしょうか?
0642nobodyさん
2007/07/05(木) 01:57:03ID:???0643nobodyさん
2007/07/05(木) 02:40:38ID:???知ったか乙。
何が危険かはっきり理解してない奴は
おっかなびっくり慎重になっても理解してないから危険。
「何となく危なそうなのでこうしておきましょう」って奴らと同じ。
こういう奴のコードで安全だったものを見たことがない。
0644nobodyさん
2007/07/05(木) 02:52:09ID:Ymm57H9Jhttp://www.phppro.jp/school/phpschool/vol2/3
上のサイトの通りにTeraPadの文字コードを設定したのですが
TeraPadでソース書いたやつをブラウザで確認するとどうしても文字化けしてしまいます。
メモ帳で同じようにソース書いてブラウザで表示すると文字化けは直ります。
でもTeraPadでソース書きたいです。
何か間違っているのでしょうか。
誰か助けてください。よろしくお願いします。
0645nobodyさん
2007/07/05(木) 03:05:39ID:???ブラウザの文字コードが何になってるか確認しる
IEだと表示->エンコード
IEの場合だと最近ではHTMLのメタタグで文字コード設定しておくと
大抵は化けないぞ
0646nobodyさん
2007/07/05(木) 03:26:42ID:???TeraPadは俺も文字コードでこけた経験あるけど
どういう条件で発生するのか忘れたw
まあ、慣れるとシンプルで使いやすいけど補完機能もないし
手っ取り早いく他のエディタを使うことをオヌヌメする
0647nobodyさん
2007/07/05(木) 03:35:06ID:???PDOはどうだか知らんがpearのDBだと
プリペアドステートメントを使う場合
値が勝手にエスケープされるようになってた
SQLを直書きする場合は
あたりまえだけど自分でやらなあかんよ
とりあえず参考まで
ttp://memo.blogdns.net/phpsecurity.html
0648nobodyさん
2007/07/05(木) 03:35:40ID:zJ6CpJHf危険な例を2,3あげて
0651nobodyさん
2007/07/05(木) 04:06:00ID:zJ6CpJHf期待してたのに。。。
0653nobodyさん
2007/07/05(木) 05:18:54ID:???ドキュメントルート配下以外なら、incでもphpでも好きに汁
0654nobodyさん
2007/07/05(木) 05:49:05ID:KW++BsLp「PHP」 はスクリプティング言語の名前でもありますし、 その処理系の名前でもあります。
「PHPをインストールする」 と言った場合、 その 「PHP」 はスクリプティング言語の処理系を指します。
うーん。値がユニークじゃないんだよな。これ…。
他人が書いたコードなので、私的にも気持ち悪いと思ってた。やっぱむりぽい?
0656nobodyさん
2007/07/05(木) 07:48:31ID:9+81epYjという条件文なんですが、
もっと綺麗な書き方はありませんか?
0657nobodyさん
2007/07/05(木) 07:56:31ID:???0659nobodyさん
2007/07/05(木) 08:21:07ID:???チーム内の新人とかがドキュメントルート下に置いてしまうなどの可能性がある。
そうなったときに.phpにしておかないと
直接アクセスされてソースが流出するってことでしょ。
0660nobodyさん
2007/07/05(木) 08:29:06ID:???0661nobodyさん
2007/07/05(木) 09:04:12ID:???.phpと.html系と画像系以外は直アクセス禁止にして
他はシステムにあわせて拡張子開放は方向にするもんじゃないの?
もしくはhtaccessに書く
でないと後任がファビョって何するかわからんじゃないか・・・
0664nobodyさん
2007/07/05(木) 10:21:13ID:???0667nobodyさん
2007/07/05(木) 10:36:55ID:???なにをいっとるんだ?
それとも何か君のところのWEBサーバーはリファラー偽装したら
.htaccessなんかに直接アクセスして読み込めるのか?
0670nobodyさん
2007/07/05(木) 11:51:54ID:???すぐにタイムアウトになる。
<?php
set_time_limit(100);
for($i=1;$i<=12;$i++){
f(strlen($i)==1){
$month = "0".$i;
}else{
$month = $i;
}
for($j=1;$j<=31;$j++){
if(strlen($j)==1){
$day = "0".$j;
}else{
$day = $j;
}
for($k=1;$k<=12;$k++){
$num = $k;
$url = "http://www.yourfilehost.com/media.php?cat=video&file=".$month.$day."sbs_".$num.".wmv";
$file = file($url);
if(count($file)==1){ //ファイルがない場合
break;
}else{
echo $url."<br>";
}
}
}
}
?>
0672nobodyさん
2007/07/05(木) 12:10:47ID:???0673nobodyさん
2007/07/05(木) 12:17:15ID:???f(strlen($i)==1){ → if(strlen($i)==1){
はおいておいて、
直リン禁止だったら、Referer をみてたり、UserAgentみてたりする可能性有り
とりあえず wget url名 で取得出来るんかどうか確認してみたら。
>>.671
やっぱライトウエイトな言語だから、民度が相当低い >>.671 みたいなのも混じるんだな。
IQとか学歴とか持ち出すやつに限って相当低かったりする罠
0674nobodyさん
2007/07/05(木) 12:47:14ID:???wgetってPHPの関数かと思ったらそうじゃないんだ。
使い方わからない\(^o^)/
とりあえず、これで何とかした
set_time_limit(0);
0677nobodyさん
2007/07/05(木) 13:07:34ID:???あぁ、基地外だから平常時でこれなのか。笑
0678nobodyさん
2007/07/05(木) 13:21:32ID:???コマンドラインのダウンローダー、画像とか一気にブッコ抜きたいときにつかう。
リンクが乗ってる一覧ページまでは、先にphpで取得しておいて、
そのリンクから取得したいリンクを1行ごとにファイルに書き出して
wget -i (書き出したファイルのパス)
みたいにする。ちなみにwindows用もある
0679nobodyさん
2007/07/05(木) 13:29:28ID:???0680nobodyさん
2007/07/05(木) 13:36:58ID:???"直接"アクセス禁止って書いてるから
リファラーで判断するのかなって思っただけ。
<Files>で完全に見えなくするのとはまったく別の話。
0681nobodyさん
2007/07/05(木) 14:39:50ID:???0682nobodyさん
2007/07/05(木) 14:43:23ID:???0683nobodyさん
2007/07/05(木) 15:09:41ID:???0684nobodyさん
2007/07/05(木) 15:19:52ID:???CSVからデータを取り出すのにせいこうしたのですが、
HTMLコードである<br>を取り除きたいのですが、いい方法がありますか?
お願いします。
0686nobodyさん
2007/07/05(木) 15:27:13ID:???ありがとうございます
strip_tags($text, '<br>');
ただ、これだと逆に<br>だけのこってしまいますが、削除するほうほうがないでしょうか?
0687nobodyさん
2007/07/05(木) 15:33:51ID:???0689nobodyさん
2007/07/05(木) 17:09:38ID:???0691nobodyさん
2007/07/05(木) 18:01:12ID:???str_replace("\n", "<br>", $text)
これだと改行された上に<br>が追加されてしまいます。
完全に置換するにはどうすればよいでしょうか?
0692nobodyさん
2007/07/05(木) 18:08:04ID:???str_replace(array("\r\n", "\r", "\n"), "<br>", $text)
0694nobodyさん
2007/07/05(木) 18:13:11ID:5ImFLVVzQ、確認画面にまでテキストフォームだけでなくアップロードフォーム結果を持っていき、
投稿ボタンを押して初めてアップロードさせたい。
A、無理。確認の時点で一時的にアップさせて、後で消すしかない。
mixiは テキスト+画像選択フォーム→確認画面(ローカルファイルのアドレス表示)→実質投降
となっていますが、やっぱり一時的にアップしてますよね?
>>691
\nじゃ足りない とりあえず nl2br()
0695nobodyさん
2007/07/05(木) 18:21:12ID:???mixi内部が実際どうなのかは知らんが、
フォーム→post→一時workディレクトリにmove_uploaded_file
→確認OKなら本当の保管場所に移動、
→途中中止ならworkディレクトリ内の該当ファイル除去、途中でブラウザブチ切りされたファイルはcronで定期的に除去
みたいにやるのが普通かと。途中で画像加工(crop,resize等)を挟む時もwork内で持ち回し出来るし。
0696nobodyさん
2007/07/05(木) 18:46:20ID:???js使えば一時的にアップしなくても、できるんじゃない?
ただmixiの場合は恐らく一時フォルダにアップしてる
0697nobodyさん
2007/07/05(木) 19:00:17ID:???<input type="file">にvalueを入力できるならできるだろうけど
無理だと思うのであきらめたほうがいいと思う
0698nobodyさん
2007/07/05(木) 19:06:40ID:5ImFLVVz>js
具体的に何をさせるのでしょうか?
0699nobodyさん
2007/07/05(木) 19:31:32ID:???0700nobodyさん
2007/07/05(木) 19:43:38ID:5ImFLVVz了解しました。
0701nobodyさん
2007/07/05(木) 19:45:06ID:5ImFLVVz>JavaScript が訪問者のローカルファイルにアクセスできるのは、クッキーだけです。
引き返してきました。
0702695
2007/07/05(木) 21:55:11ID:???input type='file'については hidden使ったり、javascriptで持ち回しは出来ないよ。
(かなり昔試したことある)
あきらめて一時的にワークに上げるように汁
一応下記も参照
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1854&forum=7
0703nobodyさん
2007/07/05(木) 22:12:22ID:???かなり無理やり技ならできんこともない
1. ユーザが入力フォームポチ
2a. upってきたファイルの内容をセッション変数にブチコム
2b. upってきたファイルの内容をbase64変換してhiddenタグにブチコミ=>確認画面に送り返す
3. ユーザが確認フォームポチ
4a. セッション変数から内容とりだしてファイル作成
4b. POSTで渡ってきたやつをデコードしてファイル作成
これなら2の時点でworkファイルを作成する必要はないが
本末転倒な気がするのは気のせいではない
0705nobodyさん
2007/07/05(木) 22:36:16ID:???一回サーバー側にデータが一時的に記憶されるだろ。
解答してる奴は質問自体がおかしい事に気づけよ。
tempフォルダに保存しないで持ち回したところで
無駄なメモリを大量に消費するだけ。
メモリ足らなくてswapしてれば実際HDDに
データが一時的に保存される。
0707nobodyさん
2007/07/05(木) 22:48:40ID:???0708nobodyさん
2007/07/05(木) 22:54:57ID:RGCqp4CWFile does not exist: /var/www/home/*****/public_html/favicon.ico
と出ています。(*****は伏せ字にしました)
自分でテストした限りではエラーは確認できなかったのですが
ほかの人の環境でエラーが出ているのでしょうか?
0709nobodyさん
2007/07/05(木) 23:16:31ID:SLYFGG6J共有サーバーでスクリプトを動かす際、
「どれだけCPUに負荷がかかった」とか「どれだけメモリをつかった」
みたいなのはPHPではわからないものですかね?
>File does not exist: /var/www/home/*****/public_html/favicon.ico
適当な答えですが、たしかIEが自動でアイコン(favicon.ico)をとりにいくから
アイコンがないとエラーログとして残るのでは?
0710nobodyさん
2007/07/05(木) 23:38:30ID:???*nix系ならば
php直なら、getrusage()とか
system経由なら、pid(getmypid()でとれる)指定でsar とか ps auxfとか (+ watchの組み合わせも)
詳しくは man で調べてみ
0712nobodyさん
2007/07/06(金) 00:44:44ID:???include("/home/xxx/www/test.php");
という風に長いので"/home/xxx/www/"の部分を省略して
include("/test.php");
のようにするには、どうすればいいですか?
ini_set("include_path", ".:/home/xxx/www");
とやってみても変化なしでした
根本的に使い方間違ってます?
0714nobodyさん
2007/07/06(金) 00:53:10ID:???include("/test.php");
↓
include("test.php");
0715nobodyさん
2007/07/06(金) 00:57:39ID:???1行目の記述通り相対じゃなくて絶対パスなら
define("HOGE", "/home/xxx/www");を共通のconfigファイルとかに宣言しておいて
include(HOGE."/test.php");
相対パス指定なら / イラネ
0716nobodyさん
2007/07/06(金) 01:43:51ID:???のほうが環境にやさしくね
0717nobodyさん
2007/07/06(金) 02:10:14ID:???0718nobodyさん
2007/07/06(金) 02:20:16ID:???0719nobodyさん
2007/07/06(金) 02:30:25ID:???0720nobodyさん
2007/07/06(金) 02:35:51ID:???設定ファイルがいじれるかどうか不明なので
define〜を記述したphpを置いてrequireなどで呼び出してみたらうまくいきました
include_pathの事をえらい勘違いしてたようなのですが、include_pathで設定した
下の階層を指定する場合は、絶対パスはNGで相対パスはOKって事になるんですか?
基点の設定ができたとおもって絶対パスでやるものだと思っていました
0721nobodyさん
2007/07/06(金) 03:07:15ID:???話はそれからだ
0722nobodyさん
2007/07/06(金) 03:49:08ID:???0723nobodyさん
2007/07/06(金) 04:55:35ID:i/Ome2c4phpをアップロードするとき755とか705とかファイルによって設定すると思うのですが、
どういうファイルにどう権限をつけていいのかわかりません。
よくphpスクリプトは755、データファイルは644というのを聞きましたがどういう意味なんでしょうか?
0724nobodyさん
2007/07/06(金) 05:15:44ID:???0725nobodyさん
2007/07/06(金) 05:19:03ID:???まずは、
ttp://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3
みてみ。
基本的には644 、 他者に読まれてはまずい設定ファイル系は 600
バッチ系は755(そもそもDocumentRoot配下に置くべきでない)
0726nobodyさん
2007/07/06(金) 09:58:12ID:???わからないとら一概に言えない。
0727nobodyさん
2007/07/06(金) 11:46:53ID:???phpとかjavaの本にファイルのパーミションの説明がほとんど出てこないように思うんだけど、どうよ?
0728nobodyさん
2007/07/06(金) 11:53:17ID:???0729nobodyさん
2007/07/06(金) 12:18:56ID:OGNgzj8J0730nobodyさん
2007/07/06(金) 12:58:01ID:X/pls0rOご存知でしたら教えてください
■ このスレッドは過去ログ倉庫に格納されています