【PHP】下らねぇ質問はID出して書き込みやがれ 84
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/04/27(月) 21:39:11ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 83
http://pc11.2ch.net/test/read.cgi/php/1238958898/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0301nobodyさん
2009/05/12(火) 23:20:04ID:???0302nobodyさん
2009/05/12(火) 23:29:48ID:???試した感じheaderでアンカー付きで飛ばした時、IE8でも正常に動作するっぽいけどなぁ。
>>300
使ったこと無いけどcurlとかどうなの?
0303nobodyさん
2009/05/12(火) 23:42:50ID:KBOzcqjj同じスクリプトで調べると、1分置きに24時間計測して大体0.20秒です。
(2) 他に別のプロバイダーからそのスクリプトにアクセスしてレスポンスが帰ってくるまでの時間を
1分置きに24時間計測して大体0.40秒です。
この0.2のタイムラグは、通信関係の遅延だと思いますが、
1日に20回程度(2)で測ったタイムの中で5秒を超えるものがあります。
(1)では、3回程度です。
この違いは、どこから来るのでしょうか?
改善する方法はありますか?原因が不明で困っています。
宜しくお願いします。
0304nobodyさん
2009/05/12(火) 23:53:15ID:???webサーバーで定期的に何らかのプログラムが動いていて、その際に一時的に高負荷になっているんだろう。
例えばアクセスログの集計プログラムとかな。
つうか、実行時間計測なら素直にxdebugでプロファイル取れ。
0305nobodyさん
2009/05/13(水) 04:40:45ID:???アンカーはブラウザが解釈する物なのでjavascriptのようにクライアントサイドでないと本来意味ないらしい
0306nobodyさん
2009/05/13(水) 04:48:46ID:???こういうのもあるみたい →nameは廃止されるからidで
ttp://q.hatena.ne.jp/1226298159
0307nobodyさん
2009/05/13(水) 11:18:33ID:43iecwOZ【PHPのバージョン】php5.26
【質問内容】
whois情報から、登録者名とドメイン更新期限日のみを取り出したいのですが
各問い合わせサーバーから返ってくるwhois情報から、文字列検索する
しか方法はないのでしょうか。
非常に困っています。。。教えてください。
0308nobodyさん
2009/05/13(水) 16:20:33ID:???RFC読んでないからわからんけど、たぶんWhoisサーバのリプライに決まった形式はない。
更新期限も Expires On: だったり、Expire-Date: だったりマチマチ。
日付の形式もバラバラ
だから公開されてるライブラリがあったとしても、どれだけ使えるかは
どっちみち自分で確認しないとダメだろう。
なので、レジストリごとに自分で書くのが確実だと思う。
gTLDと.jpとかだけでいいなら楽。
TLD全部引かなきゃいけない場合は...ご愁傷様です。
0309nobodyさん
2009/05/13(水) 17:15:40ID:DEsX7p4Wログインしているかどうかの確認を
if(!$_SESSION["login_id"]){
//ログインしていない場合はトップページに戻す
}
のようなチェックを入れているだけなのですが、
これで問題ないでしょうか?
0310nobodyさん
2009/05/13(水) 17:16:30ID:???セッションの中身は全てサーバーサイドでの管理なので問題ありません
0311nobodyさん
2009/05/13(水) 17:39:08ID:43iecwOZレスありがd、しかしやっぱりそうですか、、、
TLD全部なんですよ。。。チーン
0312nobodyさん
2009/05/13(水) 17:54:45ID:???0313軟式PHP
2009/05/13(水) 18:04:41ID:???何をもって問題ないかにもよるが、セッションハイジャックには弱いな。
とりあえずこのサイトでも読んどけ。
ttp://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html
0314nobodyさん
2009/05/13(水) 20:17:56ID:???(1)exit;を入れる
(2)session_regenerate(true)を入れる
(3)php.iniのuse.cookie.onlyとかを1にする
0315309
2009/05/13(水) 22:50:31ID:DEsX7p4Wありがとうございます。もう少し勉強します。
0316nobodyさん
2009/05/14(木) 12:10:48ID:YD/DCKSf「出力時にもhtmlspecialcharsをしろ」とありますが、
それはデータベース内のデータを出力する際もでしょうか?
それともデータベースにINSERTする時に行えば問題ないのでしょうか?
0317nobodyさん
2009/05/14(木) 12:21:02ID:???_______ __
// ̄~`i ゝ `l |
/ / ,______ ,_____ ________ | | ____ TM
| | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>>
\ヽ、 |l | | | | | | | | ``( (. .| | | | ~~
`、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二=''
ヽヽ___// 日本
_____ _____ ______ _______
| ウェブ | | イメージ | | グループ | | ディレクトリ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
._________________
|XXS PHP │・検索オプション
└────────────────┘・表示設定
| Google検索 | I'm Feeling Lucky | ・言語ツール
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
○ウェブ全体から検索 ◎日本語のページを検索
0321nobodyさん
2009/05/14(木) 19:17:47ID:jJzNEQqbaaa,sss,ddd,fff
zzz,xxx,ccc,vvv
というファイルtest.txtがあって
それを読み込んで$ALという二次元配列に入れるところまではできたのですが($AL[2][2]がcccです)、この$ALを再び同じ形式でtxtファイルに書き込むにはどうすればいいでしょうか?
txtファイルに書き込むデータの形式は上記のような感じで、1つの行の要素間はカンマでくぎって、行が終わったら改行します
本来はtest.txtを読み込んで、ソートしてから別ファイルに書き込むのですが、2次元配列のソートは覚えるのに時間がかかりそうなので、まずは読み込んで、読み込んだデータを別ファイルに書き込みたい状態です
0322nobodyさん
2009/05/14(木) 19:20:32ID:???これの逆をやればいいのでは?
0323nobodyさん
2009/05/14(木) 22:15:18ID:???当然、どこかのタイミングではする必要がある。
どちらでも問題ないといえば問題ない。
ただし、普通は画面に出力するその瞬間に行なう。何故なら、その方が忘れにくいからだ。
一年前にエスケープして保存したか、そのまま保存したかを覚えている自信はあるか?
保存先が複数になった場合はどういうポリシーにする?セッション変数は?ファイルに書き出したアレはどうしたっけ?
この関数の引数ってエスケープした奴?まだの奴?
保存する場所や、プログラムのほかの場所でエスケープする場合、画面出力するコードを見ただけではXSS対策がなされているかを確認できない。
画面出力をするその場でエスケープする方針ならば、そこを見れば間違いなくXSS対策がなされている事を確認できる。
だいいち、">"という文字列を含むレコードを検索したい時にはどうしたらいいんだっけ?とかいちいち悩みたくないだろ。
保存は生データ、加工は必要な奴が必要な場所でする、が基本。
0324nobodyさん
2009/05/14(木) 22:17:07ID:jJzNEQqb繰り返し文で1行ずつ書き込むのはできそうなのですが、fputs(ファイルハンドル,$AL)みたいにまとめてやることは出来ないでしょうか?
0325nobodyさん
2009/05/15(金) 00:24:41ID:???0326nobodyさん
2009/05/15(金) 01:20:02ID:???0327nobodyさん
2009/05/15(金) 02:18:52ID:???fputs($sp, implode("\n", array_map("joincsv", $AL)));
function joincsv($arr) {
return implode(",", $arr);
}
0328nobodyさん
2009/05/15(金) 02:25:56ID:???おまけ
$text = file_get_cotents("test.txt");
$AL = array_map("splitcsv", explode("\n", $text));
function splitcsv($rec) {
return explode(",", $rec);
}
0329nobodyさん
2009/05/15(金) 15:59:24ID:aGJ1dXbD【PHPのバージョン】php5.29
Apache2.2を使用しています。
PEARはgo-pear.batを叩いてインストールしました。smartyも入っています。
【質問内容】
httpd.confでphp.iniの参照個所を任意の場所に変更してもphpinfoで確認すると
Configuration Fileがc:\Windows配下になっています。
それじゃあということでc:\Windowsにphp.iniをおいてそれを編集しているのですが
それも反映していない気がします。
(c:\Windows\php.iniのinclude_pathを任意の場所に変更してもphpinfoで確認すると
C:\php5\pearになってしまう)
Apacheは毎回再起動しています。
環境変数はちゃんとPHPインストールしたフォルダを指定しているのですが
ほかに何か設定が必要なのでしょうか。
超初心者質問ですみません・・・。
0330nobodyさん
2009/05/15(金) 16:05:16ID:???0331nobodyさん
2009/05/15(金) 16:06:41ID:???http://pc11.2ch.net/test/read.cgi/php/1167984858/の1から見てインストールしていけばいいよ
0332nobodyさん
2009/05/15(金) 16:23:16ID:???>【OS名】windowsVista
virtualstoreに反映されてない?
エディタを管理者権限で動かしてから編集してみて。
0333nobodyさん
2009/05/15(金) 16:55:20ID:wv3qSkZj【PHPのバージョン】php5
【質問内容】
AB01、PC002などの品番をAB-01、PC-002のように変換するにはどうすればいいですか?
正規表現で簡単に書けますか?
0334nobodyさん
2009/05/15(金) 17:21:02ID:???0335軟式PHP
2009/05/15(金) 17:28:22ID:???あえて正規表現で書きたいなら以下。
$string = "AB01";
$string2 = "PC002";
echo preg_replace("/^([A-Z]{2})([0-9]+)$/","$1-$2",$string)."<BR>";
echo preg_replace("/^([A-Z]{2})([0-9]+)$/","$1-$2",$string2);
0336nobodyさん
2009/05/15(金) 17:43:45ID:wv3qSkZjありがとう。
↓これでいけた。
preg_replace("/[A-Z]+/","$0-",$str);
0337nobodyさん
2009/05/15(金) 18:22:06ID:???数字の変数って使えましたっけ?
0339nobodyさん
2009/05/15(金) 18:30:44ID:???○$test
×$1test
○$test_1
×$_test1
0340nobodyさん
2009/05/15(金) 18:33:00ID:???例えば
preg_replace("/^([A-Z]+?)-([0-9]+?)$/", "$1-$2");
があったとする
この場合、([A-Z]+?)の部分が$1に、([0-9]+?)の部分が$2に代入されるんだ
全部ひっくるめたのが$0だったっけ?$0は使ったことないからわかんね
0343nobodyさん
2009/05/15(金) 20:02:45ID:???他の言語では昔から使えるけど。俺もいまだに癖で\\1書いちゃうな
0344nobodyさん
2009/05/15(金) 20:44:02ID:???最近って、化石すぎだろ。
http://jp.php.net/manual/ja/function.preg-replace.php
>replacement では、 \\n 形式または $$n 形式(PHP 4.0.4 以降)で参照を指定することができます。
0345nobodyさん
2009/05/15(金) 20:47:15ID:???英語版は
>replacement may contain references of the form \\n or (since PHP 4.0.4) $n, with the latter form being the preferred one.
だし。
0346nobodyさん
2009/05/15(金) 22:09:39ID:???function test(){
動作確認した文字を描くだけのコード
}
test();
てユーザー定義関数にしてみると壊れてますと表示されるんですが?
0347nobodyさん
2009/05/15(金) 22:19:09ID:???0348nobodyさん
2009/05/15(金) 22:27:44ID:???サンクス
0349346
2009/05/15(金) 22:37:58ID:???0350nobodyさん
2009/05/15(金) 23:21:06ID:/0bJTUf0$aが空かどうかを調べたいのですがどうすればいいでしょうか。
<?php
$a=AAAFFDJ;
if($a==0){
print "a";
}
else{
print "b";
}
?>
0351nobodyさん
2009/05/15(金) 23:27:02ID:???結論から言えば、
$aに文字が入っていない。
'シングルクオーテーションか、
"ダブルクオーテーション
でくくられていない文字列は数値として扱われる。
もし文字列として扱いたいのなら、
$a='AAAFFDJ';
か、
$a="AAAFFDJ";
とすべき。このようにクオーテーションで囲われていると、
「あ、これは文字列なんだな」
ってPHP君がわかって、文字列として扱ってくれる。
0352nobodyさん
2009/05/15(金) 23:29:56ID:???if($a===0){
とすればかんぺき。
期待どおりの結果になるはず。
0353nobodyさん
2009/05/15(金) 23:31:40ID:???クオーテーションいれないでも、PHPでは
自動的に文字列型になってました。
var_dumpしたら確認できました。ごめんなさい
なので>>351は忘れてください
0354nobodyさん
2009/05/15(金) 23:36:04ID:???よって変数がカラかどうかを調べるには
emptyをつかうのがいいと思います。
<?php
$a=AAAFFDJ;
$b=empty($a);
var_dump ($b);
?>
0355nobodyさん
2009/05/15(金) 23:37:49ID:???なんとかならんのか。
0356nobodyさん
2009/05/15(金) 23:38:06ID:???trueを返してしまうのか。
だからみんなisesetを使うんだな。
0357nobodyさん
2009/05/15(金) 23:39:12ID:???定数として評価した後にだからな
0358nobodyさん
2009/05/16(土) 00:14:43ID:???Noticeは出るだろ。
開発環境でNoticeを切ってる奴はウンコだから勝手に死ね。
0359nobodyさん
2009/05/16(土) 00:33:18ID:???0360nobodyさん
2009/05/16(土) 00:35:35ID:???0361nobodyさん
2009/05/16(土) 00:54:47ID:???とか一度はやるよな
0362nobodyさん
2009/05/16(土) 01:03:32ID:???すべきなんだろうけど、やらないねぇ。
それって noticeを抑制する以外、意味あるの?
正直どうでもいいとしか思ってない。
0363nobodyさん
2009/05/16(土) 07:39:00ID:???0364nobodyさん
2009/05/16(土) 09:30:53ID:???さておき、そもそもコード内で$_POSTに直接アクセスするのが良くない。テストできなくなる。
多くのフレームワークでスーパーグローバルがどっかに格納されるのはこういう理屈。
実行の早い時点で
$post = new Post($_POST);
$post->get('hoge');
とかにラップすべき(実際はGETとかも放り込んで$request->getPost('hoge')とかいう形が便利)。
まあ、別に配列を引数として直接渡していっても構わないけどな。
0365nobodyさん
2009/05/16(土) 09:54:18ID:???0366gugurekasu
2009/05/16(土) 10:56:24ID:SaZzzxwNブラウザー側で保存されているセッションIDを
ユーザーが適当に書き換えたとします。
サーバーがブラウザーのセッションIDを読み込み
tmpファイルの中に、新規にセッションIDに対応したファイルを作成。
これってセキュリティー問題ありなんですか?
0367nobodyさん
2009/05/16(土) 11:01:06ID:???0368nobodyさん
2009/05/16(土) 17:35:33ID:G930vyQ9いろいろやったけどなんかうまくいかないんだよね。
$img=getimagesize($infile);
$scale=($img[1]>$img[0])?'120':'x120';
exec("/usr/bin/convert $infile -resize $scale -gravity center -crop 120x120+0+0 output.jpg");
0369nobodyさん
2009/05/16(土) 17:40:55ID:raJP1QPzrequire_once "/HTML/QuickForm.php";という記述のところで
Fatal error: require_once() [function.require]: Failed opening required '/HTML/QuickForm.php' (include_path='C:\xampp\php\PEAR') in
というエラーが出ます。
どうすればいいのでしょうか?
0370nobodyさん
2009/05/16(土) 17:43:01ID:???あとincludeパスが通ってないのかもしれんし
0371nobodyさん
2009/05/16(土) 17:48:40ID:???参考にしているものってあります?
0372nobodyさん
2009/05/16(土) 17:51:27ID:raJP1QPzphp.iniには、以下のとおりに設定しています。
; Windows: "\path1;\path2"
;include_path = ".;c:\xampp\php\includes;C:\xampp\php\PEAR"
0373nobodyさん
2009/05/16(土) 17:54:59ID:???0374nobodyさん
2009/05/16(土) 18:08:29ID:raJP1QPz0375nobodyさん
2009/05/16(土) 18:12:10ID:raJP1QPz0376nobodyさん
2009/05/16(土) 18:36:07ID:???はそういう絶対パスだが。
先頭に.を加えればいいんじゃない?
0377nobodyさん
2009/05/16(土) 18:39:57ID:???require_once "HTML/QuickForm.php"; // スラッシュ削除
なら、
C:\xampp\php\PEAR\HTML\QuickForm.php
か
c:\xampp\php\includes\HTML\QuickForm.php
か
.\HTML\QuickForm.php
にあればいい。
0379nobodyさん
2009/05/17(日) 00:18:22ID:k2N5f3/Wどうすればいいですか?
0380nobodyさん
2009/05/17(日) 00:25:17ID:???0381nobodyさん
2009/05/17(日) 00:32:04ID:dGMXPYwm0382nobodyさん
2009/05/17(日) 00:36:15ID:???0383nobodyさん
2009/05/17(日) 00:43:09ID:???0384nobodyさん
2009/05/17(日) 00:46:18ID:???0385nobodyさん
2009/05/17(日) 11:35:53ID:TGtMBjDr$data = file_get_contents($url);
$count = count($data);
echo $count;
たったこれだけのソースでPHPのバージョンも同じなので、
file_get_contents以外に思い当たることがなく、
php.iniが間違ってるのかもしれないのですがご存じの方いらっしゃらないでしょうか
PHP4.42
0386nobodyさん
2009/05/17(日) 11:49:05ID:???ところで機能しないってのは具体的にどんな状態?
0387nobodyさん
2009/05/17(日) 11:59:15ID:???ページに何も表示されず、HTMLソースも空っぽな状態です
php.iniのそれっぽい箇所は
allow_url_fopen = On
にしてあります
けっこう複雑なことをやってるスクリプトはローカルで問題なく動いているので、
file_get_contentsだけが機能してないようです
0388nobodyさん
2009/05/17(日) 12:12:58ID:???0389nobodyさん
2009/05/17(日) 15:52:40ID:xCE67DMNマニュアル読んで
ttp://www.php.net/manual/ja/features.file-upload.post-method.php
1. <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
で最大サイズを指定しろよ。
2. サーバー側には upload_max_filesize で最大サイズがあるからな。
という2点は理解した。
で今仮に(1.) が1M (2.)が32Mとしよう。
俺の中では5Mのファイルをアップしようとしたら
(1.)に引っかかるので速攻で処理が終わるのかと思ったら
結局5M全部アップするまで終わらないのよ。
(2.)の最大サイズを超える50Mをアップしたとしても同じ。
『しかしそれでも MAX_FILE_SIZE を指定すべきです。
なぜなら、 巨大なファイルを転送しようとして、実はそれが大きすぎて
転送できないということを長時間待ったあとで知らされるのを 防げるからです。』
MAX_FILE_SIZE を指定する意味と↑の言葉がわからん。
0390nobodyさん
2009/05/17(日) 16:01:55ID:???うpっても長時間待たせずに知らせてくれる
という風に読めるけど違う?
0391nobodyさん
2009/05/17(日) 16:04:16ID:qM+VaA+V下記にあるサンプルは動いたのですが、
http://codezine.jp/article/detail/3492?p=2
下記のソースは動きませんでした。
http://php.s3.to/net/get1.phps
何が問題でしょうか?
0392nobodyさん
2009/05/17(日) 16:05:52ID:???0394nobodyさん
2009/05/17(日) 16:17:46ID:qM+VaA+V説明不足で申し訳ありません。下記に設置されているサンプルは
ボタンを押すと他のページを読み込んで表示しますが、ボタンを
押しても何も表示されませんでした(初期画面のまま)
http://php.s3.to/net/get1.php
サンプルと同じ動作を期待しています。
0395nobodyさん
2009/05/17(日) 16:26:28ID:???それ、呼び出し元がphp.s3.toかどうかチェックしてるじゃない。
自分の設置したサイトがphp.s3.toじゃないのなら、その部分書き換えないと
0396nobodyさん
2009/05/17(日) 16:31:27ID:qM+VaA+V動きました。早速の回答、ありがとうございました。
0397389
2009/05/17(日) 17:14:50ID:xCE67DMNファイルサイズをいろいろと用意して
サーバーにアップロードしてみたけど
実際、よくわからん orz
・わかったこと
a) MAX_FILE_SIZE を指定してそのサイズを超えてもアップロードは止まらない(?)
>>392
とりあえず(1.)を指定したからと言って
ブラウザー側で止まってくれるようなものではまずなさそう。
>>390
そんな感じかと思うんだけど、
(1.)の設定有りと無しで終わるまでの時間を計ってみても
どうも変わらないっぽいんだわ。
とりあえず俺が期待していた
「MAX_FILE_SIZE を越える場合、速攻で接続が切れる」
っていうのはなさそう。
0398nobodyさん
2009/05/17(日) 17:39:30ID:???「MAX_FILE_SIZE を越える場合、速攻で接続が切れる」
これはないんだよね。アップした後でないとわからんってこと。
IEだけはvbscriptで事前チェックできるけどセキュリティのためとはいえファイルサイズもわかんないのは面倒だよね。
0399nobodyさん
2009/05/17(日) 17:55:42ID:???マルチパートでPOST送信するわけだから<form>の直後にMAX_FILE_SIZE書いてもダメかな?
0400nobodyさん
2009/05/17(日) 18:19:45ID:???MAX_FILE_SIZEもしょせんはフォームの1データであって、ブラウザがそれをつかって何やするわけでないから。
■ このスレッドは過去ログ倉庫に格納されています