【PHP】下らねぇ質問はID出して書き込みやがれ 81
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2009/02/18(水) 21:09:16ID:xNLzAD7T過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0002nobodyさん
2009/02/18(水) 21:09:49ID:xNLzAD7T・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0003nobodyさん
2009/02/18(水) 21:10:57ID:xNLzAD7T【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
【PHP】下らねぇ質問はID出して書き込みやがれ 79
http://pc11.2ch.net/test/read.cgi/php/1231850905/
【PHP】下らねぇ質問はID出して書き込みやがれ 78
http://pc11.2ch.net/test/read.cgi/php/1230026935/
【PHP】下らねぇ質問はID出して書き込みやがれ 77
http://pc11.2ch.net/test/read.cgi/php/1228667259/
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
【PHP】下らねぇ質問はID出して書き込みやがれ 74
http://pc11.2ch.net/test/read.cgi/php/1221909788/
【PHP】下らねぇ質問はここに書き込みやがれ 73
http://pc11.2ch.net/test/read.cgi/php/1220440493/
【PHP】下らねぇ質問はここに書き込みやがれ 72
http://pc11.2ch.net/test/read.cgi/php/1218855685/
【PHP】下らねぇ質問はここに書き込みやがれ 71
http://pc11.2ch.net/test/read.cgi/php/1216291372/
【PHP】下らねぇ質問はここに書き込みやがれ 70
http://pc11.2ch.net/test/read.cgi/php/1214356448/
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
【PHP】下らねぇ質問はここに書き込みやがれ 66
http://pc11.2ch.net/test/read.cgi/php/1205655807/
0004nobodyさん
2009/02/18(水) 21:11:25ID:xNLzAD7T■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル http://framework.zend.com/manual/ja/
■Smartyマニュアル http://www.smarty.net/manual/ja/
(以下英語)
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smarty http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0005nobodyさん
2009/02/18(水) 21:11:49ID:xNLzAD7T1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→ http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0006nobodyさん
2009/02/18(水) 21:12:14ID:xNLzAD7T→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
0007nobodyさん
2009/02/18(水) 21:12:52ID:xNLzAD7T不備があれば追記してください
0008nobodyさん
2009/02/18(水) 21:32:51ID:???0009nobodyさん
2009/02/19(木) 01:04:54ID:DyMy4w1ihttp://mixi.jp/view_bbs.pl?id=39866490&comm_id=244081&page=all
0010nobodyさん
2009/02/19(木) 01:13:59ID:???0011nobodyさん
2009/02/19(木) 01:28:40ID:???0012やまは ◆2ch.net/cU
2009/02/19(木) 07:17:48ID:+vYGjReTディレクトリの中身を全て表示するスクリプトを作っています。
もし、そのディレクトリの中にディレクトリがあればそれも表示するというスクリプトを書きたいのですがうまくいきません。
open.php
/test/index.php
log.dat
test2/test.php
例えば、こうなっているとします。
現在はopen.phpにいて、test2のディレクトリのtest.phpを表示したいです。【続く】
0013やまは ◆2ch.net/cU
2009/02/19(木) 07:23:16ID:+vYGjReT<?php
$dir = "./";
$i=0;
while($allfile = readdir($dir)){
if($allfile !== "." && $allfile !== ".."){
#これで、現在のディレクトリ表示
echo $allfile."<br>";
if(is_dir(($dir.$allfile)){
echo $allfile;
}
}
}
?>
これでは、現在のディレクトリにある、
『test』ディレクトリと『open.php』しか表示されません。
どうすればいいでしょうか?
よろしくお願いします
0015nobodyさん
2009/02/19(木) 09:39:52ID:???わざわざ再帰とかありえない
WINの場合はdirだったか?find部分をおきかえれ
$path = dirname(__FILE__);
echo str_replace($path,"",shell_exec("find ".$path));
0016nobodyさん
2009/02/19(木) 09:43:41ID:???わざわざシェルコマンドとかありえない
0018nobodyさん
2009/02/19(木) 10:44:37ID:???0019nobodyさん
2009/02/19(木) 10:48:03ID:???わざわざ再帰とかありえない
0020nobodyさん
2009/02/19(木) 11:01:36ID:???損はない
0021nobodyさん
2009/02/19(木) 11:08:49ID:vF1JGCVl両方ともPHPっぽいから Wordpress だろうか?
http://gigazine.net/
http://jp.techcrunch.com/
0022nobodyさん
2009/02/19(木) 11:17:46ID:???0025nobodyさん
2009/02/19(木) 11:23:02ID:???Gigazineはともかく下のTechCrunchはヘッダに書いてあるじゃん
generator WordPress 2.7って
0026nobodyさん
2009/02/19(木) 11:25:02ID:???TechCrunch の方はコメント欄空でポストしたら WordPress のエラーメッセージが出た。
いろいろ改造してるのかも。
>>25
なんだ、ヘッダに書いてたか
0027nobodyさん
2009/02/19(木) 11:28:57ID:???0028nobodyさん
2009/02/19(木) 11:30:07ID:???その辺のCMS使ってるかもしれないしな
0029nobodyさん
2009/02/19(木) 11:41:17ID:???0031nobodyさん
2009/02/19(木) 11:55:59ID:PiBlHerA0032nobodyさん
2009/02/19(木) 11:59:37ID:2O78I8s0私はVirtualPCでvineを使って開発しているのですが
OpenSSLをアンインストールできなく、自分の入れたいバージョンが扱えないので不満です
同じようにlinuxを使用している方はどのディストリビューションをご使用されていらっしゃいますか?
0033nobodyさん
2009/02/19(木) 12:02:03ID:???でもOpenSSLアンインストールできないってどういう事?
いくらでも消せると思うんだが・・・
0034nobodyさん
2009/02/19(木) 12:08:22ID:???オブジェクト指向は理解してますか?
理解していて最初から学びたいのなら、本を買った方が早いかも。
サイトはいっぱいあるので適当に2〜3個見てみて具体的に分からないところを質問した方が良い。
>>32
PHPの質問?
0035nobodyさん
2009/02/19(木) 12:39:05ID:???0036nobodyさん
2009/02/19(木) 12:57:34ID:???MVCのサンプル入り解説サイトは見たことがないね
本でも一冊しか知らない
0037nobodyさん
2009/02/19(木) 13:01:34ID:???$this-> こんな感じですね
0039nobodyさん
2009/02/19(木) 13:05:03ID:???0040nobodyさん
2009/02/19(木) 13:05:21ID:???0041nobodyさん
2009/02/19(木) 13:12:59ID:???0042nobodyさん
2009/02/19(木) 13:14:22ID:???0043nobodyさん
2009/02/19(木) 13:22:32ID:DiCiMFeXできればWebで確認できるやつがあればいいんですが
0044nobodyさん
2009/02/19(木) 13:23:03ID:???0046nobodyさん
2009/02/19(木) 13:26:02ID:???MVCとは、初心者でもうm
0047nobodyさん
2009/02/19(木) 13:30:04ID:???その次のアーキテクチャについて話しようぜ
0048nobodyさん
2009/02/19(木) 13:37:13ID:???http://pc11.2ch.net/test/read.cgi/php/1229960175/
0049nobodyさん
2009/02/19(木) 14:49:45ID:Y6HkRPoJなぜか /usr/share/php にインストールされてしまいます。
これを /usr/share/php/PEAR にしたいのですが、どのように設定すればよいのでしょうか?
0050nobodyさん
2009/02/19(木) 14:51:13ID:???0051nobodyさん
2009/02/19(木) 14:59:40ID:4v4/gEqfprint $str;
とした場合、
8
になってしまいますが、
'11111111'
のように出力させるにはどうすればよいでしょうか?
0053nobodyさん
2009/02/19(木) 15:11:16ID:???$str = '1' * 8
これで
'11111111'
が出力されるだろうという発想が凄い。俺には無いわ。
0057nobodyさん
2009/02/19(木) 15:26:43ID:???Javaでやろうと思ったらめんどくさくてしょうがない
0058nobodyさん
2009/02/19(木) 15:37:45ID:???マジでか!
世の中何があるかわからねーな。
>>56
すまん、勉強不足だ。
C/Java/PHPしかわからないんだ、許してくれ。
0059nobodyさん
2009/02/19(木) 15:38:26ID:???$str = '1' x 8;
うう〜ん直感的にわかりやすい
0060nobodyさん
2009/02/19(木) 15:40:00ID:???計算式であればintになるし、連結であればstringになるからなぁ
0061nobodyさん
2009/02/19(木) 15:40:47ID:???vb/c/c++/java/cobol/python/ruby/perl/php/basic
これぐらい勉強してからでなおしてこい
006749
2009/02/19(木) 15:58:00ID:Y6HkRPoJ毎回指定するということでしょうか?
どこかに設定ファイルがあるのでしょうか?
0068nobodyさん
2009/02/19(木) 16:02:26ID:???いや、インストールする場所を指定しろってことだよ
何がしたいの?
/usr/share/php/PEARにインストールしたいんじゃないの?
0072nobodyさん
2009/02/19(木) 16:22:50ID:???http://q.hatena.ne.jp/1195018503
perlだと'1' x 8 で '11111111'で、
ruby、pythonだと'1' * 8 で '11111111'だな。
0073nobodyさん
2009/02/19(木) 18:53:18ID:wRj5eNSW何かそのような関数はありませんでしょうか?
007573
2009/02/19(木) 19:12:43ID:wRj5eNSW先ほどから見てますが検討がつきません
一度文字列に格納してから調べろということなのでしょうか?
007773
2009/02/19(木) 19:21:27ID:wRj5eNSWファイルをPHPの内部エンコードにあわせるのが目的です
mb_convert_encodingの第三引数にautoを渡したところ
うまく動作しなかったので
取得したものを第三引数にセットしようと思った次第です
007973
2009/02/19(木) 19:23:17ID:wRj5eNSW外部から第三者ガアップロードするものなので不可能なんです
0080nobodyさん
2009/02/19(木) 19:33:59ID:???ファイルを読み込む前にチェックするっていうのは現実的じゃない。
それはわかるよな?
判定コードを書くのが面倒だったら nkfに通すとか。
0081nobodyさん
2009/02/19(木) 19:40:07ID:???"SJIS,EUC-JP,UTF-8,JIS"みたいに書いてみそ
0082emi
2009/02/19(木) 19:46:09ID:62n5TebmPHPとjavascriptを連携させるにはどうしたらいいのでしょうか。
<?php
$fp = fopen('http://自分のHP/GPS/20090109.txt', 'r');
$count = 0;
$remove_row_list = array(1, 2, 3, 4);
while ($data = fgetcsv($fp, 10000)) {
if (!in_array($count % 5, $remove_row_list)) {
echo $data[1] ."<br>\n";
echo $data[2] ."<br>\n";
echo $data[4] ."<br><br>\n";
}
{
$count++;
}
}
fclose($fp);
?>
008482
2009/02/19(木) 19:53:50ID:/38upbVh<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=[APIkey]" type="text/javascript"></script>
<script src="c.php" type="text/javascript">
//<![CDATA[
function load() {
if (GBrowserIsCompatible()) {
//表したい場所の地図の表示
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(○,△), 16);
//○=PHPのデータ $data[2]、△=PHPのデータ $data[4] を出したい
//特定の箇所にピンを立てる
var marker = new GMarker(new GLatLng(○,△));
map.addOverlay(marker);
}
}
//]]>
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 500px"></div>
</body>
</html>
これらをまとめてHTMLで表したい場合どのようにすればよいのでしょうか。
0085nobodyさん
2009/02/19(木) 19:54:13ID:???連携してJavaScriptに何やらせたいのか書かないとわからん
サーバでPHP処理→ブラウザでJavaScript実行の順番はわかってるのか?
0086nobodyさん
2009/02/19(木) 19:56:22ID:???var data4=<?=$data[4]?>;
//表したい場所の地図の表示
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(data2,data4), 16);
//○=PHPのデータ $data[2]、△=PHPのデータ $data[4] を出したい
//特定の箇所にピンを立てる
var marker = new GMarker(new GLatLng(data2,data4));
map.addOverlay(marker);
でOK
008773
2009/02/19(木) 19:56:55ID:???レスどうもありがとうございます
kccコマンドが使えるのですができればコマンドラインは回避したいです
>>81
どうもありがとうございます
JISだとだめみたいだったのでISO-2022-JP,SJIS,EUC-JP,UTF-8
とやったところ4種類に対応することができました
全てに対応させるのは限界がありそうなので妥協してこの方法にしたいと思います
皆さんどうもありがとうございました
0088nobodyさん
2009/02/19(木) 19:56:58ID:???その手の質問はよくあるけど、結論「無理」
できても、PHPでJavaScriptを書き出すくらい(変化に応じて書き出せる)
PHPから動的に読み込むにはAjaxを使えばできる
ちなみにその辺使うなら、ある程度JavaScriptは勉強しておいたほうがいい
関係ないが、無駄にAjax使いすぎるやつがいてうぜぇ・・・
しかも、JavaScriptをPHPのechoで吐き出してるから修正すらダルい
0089nobodyさん
2009/02/19(木) 20:04:10ID:???まるっとキャプチャしちまえばいいじゃねぇか
0090nobodyさん
2009/02/19(木) 20:05:07ID:nJvgqLn9echo "あ";
echo 'あ';
というを"と ' を使ったら書き方をするとクロスサイトスクリプティングが発生するみたいなのですが
これはなぜでしょうか?
009182
2009/02/19(木) 20:06:16ID:/38upbVhPHPのほうのテキストデータはサーバから読み込んだものなので
ブラウザからPHPで処理できるのかと…
>>88
やはり無理なのでしょうか?
すみません初心者なものなので知識はないのですが↓
でしたらPHPで出力したデータをjavascriptで扱うにはどうすべきなのでしょう?
0092nobodyさん
2009/02/19(木) 20:06:50ID:???0093nobodyさん
2009/02/19(木) 20:08:25ID:???PHPでJavaScriptを書き出せばいいんじゃね?一番簡単な方法なら
function javascript() {
<?php
for($i = 0 ; $i < 5 ; $i++) {
echo "var test[$i] = '{$array[$i]}'\n";
}
?>
}
009590
2009/02/19(木) 21:13:27ID:???echoを使うとき「"」で文字列を囲むのと、「'」で文字列を囲む記述がありますが
この"と'を統一せず、入り組んで使うとsjisとeucではクロスサイトスクリプティングになるのですがなぜなんでしょうか?
例
echo "テスト";
echo "こんにちは";
echo 'はじめまして';
echo "ありがとう";
0096nobodyさん
2009/02/19(木) 21:17:53ID:???その質問は間違っている。
その例に出てきたもので、XSSが起きるわけじゃない。
しかし、君にそのクイズを出した人が言わんとしていることには二つ以上の可能性がある。
一つは、htmlspecialcharsのENT_QUOTESとENT_COMPATの動作の問題
もう一つはSJISの5Cの問題。
他になんか意図があるかもしれんが、仮定が間違ってるので、何を言っても意味がないだろう。
0097nobodyさん
2009/02/19(木) 21:19:55ID:???009890
2009/02/19(木) 21:24:50ID:???ttp://d.hatena.ne.jp/harupu/20060328#p1
どなたかお願いします
0099nobodyさん
2009/02/19(木) 21:25:53ID:SUg9mjPG0100nobodyさん
2009/02/19(木) 21:26:33ID:???0103nobodyさん
2009/02/19(木) 21:32:32ID:???シングルクォートとダブルクォートをミックスすると表示は崩れるがXSSはできない。
0104nobodyさん
2009/02/19(木) 22:20:00ID:???echo htmlspecialchars($data[1])
echo htmlspecialchars($data[2])
0105nobodyさん
2009/02/19(木) 22:25:13ID:NhJwmPwv0106nobodyさん
2009/02/19(木) 22:27:41ID:???0107nobodyさん
2009/02/19(木) 22:42:26ID:???データベースとか楽に構築できるしね
0108nobodyさん
2009/02/19(木) 22:56:12ID:???スレチと思ったが開発環境スレが落ちてるな
Eclipseのいいところは、
クラスや関数のアウトライン参照、コンテキストに沿ったコード補完、リファクタリング(まだまだ貧弱だが)、
ブレークポイントやステップ実行、その際の変数参照、
プラグインを導入すればバージョン管理システムやDBMSともIDE上から作業できる
これらに興味がなければ無理して乗り換える必要もないかな
0109nobodyさん
2009/02/19(木) 23:01:15ID:???PDT使ったら、DWには戻れない。
まぁ、でも、サイトにすぐアップできるとか、いいよね。
でも、コードカラーリング崩れない? > DW
0110nobodyさん
2009/02/20(金) 00:57:08ID:???使ったことないから知らないけどデバッガとかついてないでしょ?
011182
2009/02/20(金) 01:21:04ID:w405pQbs>>104
ありがとうございます。
あと、たとえば$data[2]はたとえば3645.5218のような数字なのですが
桁を変えて36.455218にしたうえで10進から60進にしたいんです。
度 = int(36.455218) = 36
分 = int(0.455218 * 60) = int(27.31308) = 27
秒 = int(0.31308 * 60 *1000) / 1000 = 18.7848
= 36°27′18.7848″といったような感じにしたいんです。
0112nobodyさん
2009/02/20(金) 01:37:44ID:r16tK4jFテンプレートを表示する時
$smarty->display("index.html");
で表示できますが、display()の中を変数にする事って出来ないでしょうか?
それが出来たら、DBに保存しているHTMLをSmartyに反映させることが
出来るのですが、$smarty->display($html);とする方法では無理でした。
0113nobodyさん
2009/02/20(金) 02:41:12ID:???0114nobodyさん
2009/02/20(金) 05:22:05ID:nLAMcH0Pデストラクタでunsetとかしないでも大丈夫ですか?
0115nobodyさん
2009/02/20(金) 07:29:32ID:???無闇にunsetすると非効率になることが多いらしい
が、処理時間の長いジョブとかの場合は開放した方がいい場合もある
0116nobodyさん
2009/02/20(金) 08:38:58ID:???http://www.smarty.net/manual/ja/template.resources.php#templates.from.elsewhere
これでできないか?
0117nobodyさん
2009/02/20(金) 09:18:57ID:???$template = 'index.html';
$smarty->display($template);
で普通にできるのでは?
0118nobodyさん
2009/02/20(金) 10:16:20ID:P+ZCl9Zr<html><body>
<?php
if(!適用条件)
{ echo "適用外"; exit;}
// 適用条件内
...
?>
</body></html>
と書くと適用条件外の場合"</body></html>"が出力しないようなのですが仕様なのでしょうか?
その場合回避策としてタグの終りにジャンプとか抜けるみたなことは出来るのでしょうか?
(適用条件内を1スコープにして括弧で括る、は出来ればしたくないので…)
0120nobodyさん
2009/02/20(金) 10:39:43ID:???5.3以降でしか使えない変な物を教えるな
>>118
条件外の時はexitしてるからそれ以降が実行されないので
それ以降の</body></html>が出力されない
そういう風に書くなら
if (適用条件) {
条件内処理
}
else {
条件外処理
}
にすればいい
あと、こっちのスレのがオススメ
http://pc11.2ch.net/test/read.cgi/php/1227303362/
0121nobodyさん
2009/02/20(金) 10:45:06ID:???せめて、
{ echo "適用外</body></html> "; exit;}
だな。
0122nobodyさん
2009/02/20(金) 11:05:37ID:???中級者向け:テンプレエンジン使え
上級者向け:フレームワーク使え
0124nobodyさん
2009/02/20(金) 11:06:54ID:/aL6hv6c逆じゃない?PHPで自分で作れないからフレームワーク使うんだろ?
0125nobodyさん
2009/02/20(金) 11:06:57ID:???0126nobodyさん
2009/02/20(金) 11:08:20ID:???0130nobodyさん
2009/02/20(金) 11:23:24ID:P+ZCl9Zr取りあえず出来る書き方で書いて、天に祈りが届いたと思ってPHP5.3を待つ事にします。
>>128
Cで例外処理の場合はgoto文を使いたい(条件文が増えるとネストが深くなったりコードが重複したりするので)
みたいなものです、プログラム思想みたいなものなので余りこれ以上の突っ込みはご勘弁を…
0131nobodyさん
2009/02/20(金) 11:25:54ID:???0132nobodyさん
2009/02/20(金) 11:34:03ID:???0133nobodyさん
2009/02/20(金) 11:39:58ID:???0136nobodyさん
2009/02/20(金) 11:56:21ID:???0137nobodyさん
2009/02/20(金) 11:59:50ID:???0138nobodyさん
2009/02/20(金) 12:55:37ID:???困るんだわ…w
0139nobodyさん
2009/02/20(金) 13:12:10ID:???0140nobodyさん
2009/02/20(金) 15:34:00ID:???主にコマンドラインプログラムが対象です
attachの機能(すでに起動しているものを乗っ取れる)が
必須なんですが
0141nobodyさん
2009/02/20(金) 16:27:31ID:DGCUxhS+// 赤の他人の尻拭い中
識者いらっしゃいましたら助けてください。
よろしくお願いします。
【OS名】Linuxカーネル 2.6.18-92 (RHEL5.3)
【PHPのバージョン】php5.1.6
【連携ソフトウェア】Akelos
【質問内容】
XHTML 1.0 / UTF-8 な日本語ページ(タイトルも日本語)を出力する view があります。
IEやFireFoxなどのブラウザ、docomo iモードでは期待する内容が表示されます。
が、ezwebで文字化けします。
UTF-8が問題かと思ったのですが、同ページをPCブラウザ上で表示させ、
ソースを xx.html として保存。
このxx.html をezwebで表示すると、文字化けせずに期待通りの表示になります。
ezweb のブラウザ側の問題の可能性もあるかもしれませんが、回避策など
ありましたら、教えてください。
--- xx.html の内容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>たいとる</title>
// 以下略
0142nobodyさん
2009/02/20(金) 16:33:21ID:???ezwebだけ出力するときだけsjisに変換したら?
0143nobodyさん
2009/02/20(金) 16:35:22ID:???http://www.au.kddi.com/ezfactory/tec/spec/4_2.html
> また、EZwebでサポートする文字コードはShift-JISです。
0144141
2009/02/20(金) 16:44:08ID:???返答ありがとうございます。
Shift-JISに変換して出力するようにします。
ですが、.html拡張子のUTF-8なページは文字化けしないのが疑問のままなのは
ちょっとモヤモヤが残ります。
識者いらっしゃいましたら、引き続きよろしくお願いします。
0146nobodyさん
2009/02/20(金) 18:58:54ID:QkuM0xlTバッチファイル的に使われているのか(シェル上で、php hoge.php)を
判断する方法を教えて下さい
0148nobodyさん
2009/02/20(金) 19:12:40ID:???ありがとうございます
それをヒントにして$_SERVERを比較したところ
SHELLというキーが、シェルから呼んだ場合には設定されていました
0149nobodyさん
2009/02/20(金) 19:17:35ID:???もろそういう用途の関数がありますよ
0150nobodyさん
2009/02/20(金) 20:55:16ID:???http://pear.php.net/go-pear
0151nobodyさん
2009/02/20(金) 21:07:24ID:???自分の才能がコワイお(´・ω・‘)
0152nobodyさん
2009/02/20(金) 21:09:59ID:???0153nobodyさん
2009/02/20(金) 21:34:19ID:JGeRmwBmstr系の関数組み合わせて3個目の/が何文字目で4個目が何文字目で…
ってやれば出来るでしょうが、非効率というかアホっぽいので、正規表現でバキっと出す方法を
教えてください
よろしく御願いします
0154nobodyさん
2009/02/20(金) 21:37:09ID:???scandirが使えるバージョンならドメイン直下のディレクトリ名を取得すればおk
使えないならopendirとreaddirでググレカス
0156nobodyさん
2009/02/20(金) 22:16:34ID:???文字コードがshift-jis、Euc-jpだとSQLインジェクションされる
かといってutf-8は安全?というとそうでもない。
0157nobodyさん
2009/02/20(金) 22:24:54ID:???氏ねや
0158nobodyさん
2009/02/20(金) 22:27:27ID:???0159nobodyさん
2009/02/20(金) 22:37:43ID:???世の中にはいくらやっても報われないことが二つある
ひとつは賽の河原の石積み
もうひとつはお前のPHPの勉強だ
0160nobodyさん
2009/02/20(金) 23:27:51ID:r16tK4jF基本的に外部入力値をhtmlspecialcharsしていれば良い
って考えは間違い?
0162nobodyさん
2009/02/20(金) 23:34:48ID:???>>161はhtmlspecialcharsを使用しても抜けられる穴について説明よろ
0163nobodyさん
2009/02/20(金) 23:39:40ID:???htmlspecialchars(,ENT_QUOTES)で防げるのは「Script Injection」。
Javascript埋め込みとかそんなヤツ。
「SQLインジェクション」は別問題。
「PHPサイバーテロの技法」を買って読んどけ。
0164nobodyさん
2009/02/20(金) 23:47:18ID:???LIKEのとこに%とか*突っ込んでみるとか。
select * from table where name like '%' ;
0165nobodyさん
2009/02/21(土) 00:28:20ID:???$str = '<font size="10">でっかい</font>';
$smarty->assign('tag', $str);
$smarty->display('hoge.tpl');
---hoge.tpl---
<body>
{$tag}
</body>
とかいう意味だったら笑う。
>162
>164の変数名のところに「' OR 1=1」と入れるとレコードが全件変数に入り個人情報大暴露大会。
「'; DROP なんたらかんたら」と書くとテーブルがぶっ飛ぶ。レプリケーション先も全部死ぬからサービス復旧不能で店じまい、会社は倒産。
MySQLの設定が甘いと、管理テーブルを書き換えられてroot奪われるとかもあるな。
0166nobodyさん
2009/02/21(土) 00:32:30ID:???0169nobodyさん
2009/02/21(土) 01:19:11ID:???0171nobodyさん
2009/02/21(土) 01:47:18ID:???クエリの9割以上はカバーできるはずだ
0172nobodyさん
2009/02/21(土) 02:05:10ID:???0173nobodyさん
2009/02/21(土) 02:17:42ID:???ありえねーな
likeを使ってなかったらだいじょうぶ?
0174nobodyさん
2009/02/21(土) 02:35:53ID:60WB0UqAある本にmysql_escape_stringより良いって書いてあったのに、早いって。。
純朴な素人をバカにしやがって
0175nobodyさん
2009/02/21(土) 02:37:42ID:???本にWebに書いてあることを鵜呑みにすることが「勉強」じゃないぞ?
0176nobodyさん
2009/02/21(土) 02:44:35ID:???だいたいこの関数はSQLステートメントとして成立する文字列リテラルを作るためのものだ
%を勝手に殺したりする用途に使うもんじゃない
0177nobodyさん
2009/02/21(土) 02:45:52ID:???エスケープする必要ない
0178nobodyさん
2009/02/21(土) 02:46:31ID:???0180nobodyさん
2009/02/21(土) 02:49:17ID:RWcdEiGuprintしているのですが、これってもしreadonlyに対応していない
ブラウザとかだったら変更可能ですかね?ブラウザとか関係なく、
もし確実じゃなければ、それに代わる確実な方法を実現したいのですが
何か方法があれば教えてください。
0183nobodyさん
2009/02/21(土) 12:05:11ID:???そもそも、ブラウザなんぞ無くともデータは送受信可能だ。
HTTPなんて、テキストデータを送受信してるだけだからな。
クライアントに渡した全ての値は改竄され得るし、クライアントから送信される値は全て信用ならない。
input type="select"の中に、選択肢にない文字列が入ってくるなんてのはよくある事だ。
0184nobodyさん
2009/02/21(土) 12:05:51ID:???0185nobodyさん
2009/02/21(土) 13:04:41ID:???SELECT * FROM test WHERE name='".htmlspecialchars($_POST["name"],ENTQUOTES)."'
としていれば大丈夫なんじゃないのか?
「%」の件もlike使わなければいいわけだし。
like使う用途って「検索」が多いだろうから、表示されても良いデータだろうし。
0187nobodyさん
2009/02/21(土) 13:10:58ID:???そのセンス、感服するわ。
htmlspecialcharsで変換される文字君たちは検索にかからなくなるわけだが、
SQLにlikeを使わなきゃいいって制約を追加するわけだが、
0188nobodyさん
2009/02/21(土) 13:14:04ID:???mysqlなら何も考えずmysql_real_excape_stringが一番安全確実簡単だろ。
htmlspecialchars使うと、<や>、&のような文字が全部変換されてDBに入力されてしまう。
検索なら対象がうまくヒットしなくなるし、画面表示文字列だとエスケープ/アンエスケープのタイミングを考慮しないといけない。
DBからCSVに書き出したくなったらどう変換すればいいんだ?JavaScriptに渡す時は?
mlsql_real以下略なら、入力データはそのままの形でDBに格納されるし、そのままの形で検索される。この上なく分かりやすい。
0189nobodyさん
2009/02/21(土) 13:16:13ID:???うん?クラスの処理とかすべて書けば良かったか?
単純かしたことに「こいつ馬鹿だwww」と感服したのかもしれないが。
そもそも、出力する時もフィールド指定するだろ。
だから、like使ってもパスワードが漏れないよな。
全件出力されるとか書いてたけど、普通limit指定するし。
>htmlspecialcharsで変換される文字君たちは検索にかからなくなるわけだが
かからなくていいんじゃないか?検索させない場合は、変換入れるだろうが。
0190nobodyさん
2009/02/21(土) 13:16:27ID:???基本的には「'」と「\」だけでいいんだぜ
0191nobodyさん
2009/02/21(土) 13:19:03ID:???「そのままの形で格納されると困る」んだよ。
お前、WEBアプリケーション作ったことあるか?
または、会員制サイト作って誰かに利用させたことあるか?
その際、htmlspecialcharsで変換されない文字があるとどうなるかわかるだろ。
それに、htmlspecialcharsだけでも、CSV出力やJavascript(AJAX)の利用は出来る。
0193nobodyさん
2009/02/21(土) 13:26:33ID:???人柱だれかよろ
ttp://sourceforge.jp/magazine/09/02/19/2316221
0195nobodyさん
2009/02/21(土) 13:27:36ID:???よく開発続けられるよなwwwww不人気なのにwwwwwww
0196nobodyさん
2009/02/21(土) 13:29:18ID:???後輩とかに指摘されて恥かくまでずっとやってろ
0197nobodyさん
2009/02/21(土) 13:30:31ID:???先輩は「フォー・イーチ」って読んでた
別に恥ずかしくないんだからねっ!これからも「フォレーチ」って読むわ
0198nobodyさん
2009/02/21(土) 13:32:44ID:???なぁ、ちょっと確認していいか?
入力->フィルター->エスケープ->DB -> 取り出し-> フィルター -> html適合化 -> 表示
おまえこの流れは理解してるってことでいいんだよな?
0199nobodyさん
2009/02/21(土) 13:34:46ID:???0200nobodyさん
2009/02/21(土) 13:35:45ID:???ネーミングが悪かったかもしれない
XAMPPは初心者もなじみやすい名前だから、暫くはそっちが流行ると思うな
0201nobodyさん
2009/02/21(土) 13:36:24ID:???会員制の課金の発生する、バックエンドでCSVとTSVでレポートを吐くwebアプリを仕事で書いてるが、
・DBに渡す際にPDOのプレースホルダで渡す、あるいはmysql_real_escape_stringなどでクエリを構成する
・画面表示する際にはビューに渡す時点で原則全ての値をhtmlspecialcharsでエスケープ
(タグを書き出さないといけない箇所や、HTML以外の箇所などの例外は慎重に検討したうえでエスケープせず渡す)
・DBには、例えばフォームからの入力なら入力値がそのままの形で格納される
このルールが一番分かりやすいし、安全だし、汎用性がある。
出力部で「この文字列はDBから来た値だからhtmlspecialcharsは不要、こっちはクライアントからの入力値だから必須…」とかやってると、絶対変換ミスが発生する。
何も考えずルールにさえ従ってさえいれば脆弱性が発生しない事をシステムが担保してくれる形にするのが一番安全なんだよ。
俺はMySQLでの危険文字を全て列挙すら出来ない低能だし、職場には俺以下の屑が溢れているが、このルールに従う限り絶対安全だとシステム側で保障できるコードを組める。
0203nobodyさん
2009/02/21(土) 13:41:54ID:???それでOKなんだけど、>>191はフィルターやバリデーターとDB登録時のエスケープを混同してるらしいからw
0204nobodyさん
2009/02/21(土) 14:03:40ID:???俺が使ってるサービスで
↓を混同してるプログラマがコード書いてませんように・・・
・DB入力時(SQLインジェクション)
・画面出力時(Scriptインジェクション)
0205nobodyさん
2009/02/21(土) 14:14:16ID:???雑談はネタ不足気味な雑談スレで。
http://pc11.2ch.net/test/read.cgi/php/1200314111/
0206nobodyさん
2009/02/21(土) 14:20:49ID:???ああ。実際に>>201が書いているようなことはしているよ。
例として>>185みたいな簡単な1行ソース出したから
「こいつ何も知らない馬鹿だなwww」と煽りたい気持ちも分かる。
だが、1から10までここに書けないだろ。
入力時、出力時にそれぞれ適切に変換するのは、初歩中の初歩だと思う。
201がああだこうだ書いてるが、俺は自作クラス作ってDB処理をしているから
変換ミスがどうのこうのはない。
ま、そういう自分の事はどうでも良くて、>>185の意見を出しただけなんだが
なぜか俺自身を煽りたい馬鹿がいるな。そんな事しても無駄だろ
0208nobodyさん
2009/02/21(土) 14:26:20ID:???>だが、1から10までここに書けないだろ。
ちゃんと読めよ・・・わかりやすいように簡単に書いたって言ってるだろ
それに、htmlspecialcharsで変換しないでそのまま格納したとする
その場合、phpMyAdminなどで管理する時。どうなるかわかるよな?
0209nobodyさん
2009/02/21(土) 14:27:37ID:???こんだけ書かれてまだわかんないのか。
そこでhtmlspecialcharsはおかしいってことだろ。
代わりに何を使うべきか考えてみろ
0211nobodyさん
2009/02/21(土) 14:28:10ID:???>>206が仕事ではなく趣味でPHPいじってるだけであることを祈る
0212nobodyさん
2009/02/21(土) 14:28:18ID:???うん、あれはhtmlspecialcharsで変換されて出力されるね
ってかphpMyAdminなんか使ってるのかよ
0213nobodyさん
2009/02/21(土) 14:28:48ID:???わかる・わかんないの、俺に対しての批判はどうでも良いんだよ。
「なぜhtmlspecialcharsは駄目なんだ」って事だ
0214nobodyさん
2009/02/21(土) 14:29:08ID:???phpMyAdminをなめてんの?
別にスクリプトが混入したって何もおきないよ。
もし、そこでスクリプトインジェクションされんならIPA行きだお
0216nobodyさん
2009/02/21(土) 14:30:27ID:???「phpMyAdminなんて使ってるの?」って言葉がここで出てくると思わなかったぜw
ここのスレの役割考えろや。どうせ個人叩きしかできないくせに。
0217nobodyさん
2009/02/21(土) 14:30:31ID:???全部わかったうえで一部分だけ簡単に書いてます、って言ってるやつの文章じゃないよそれ
結局DB格納時にhtmlspecialchars使ってるんじゃん
0219nobodyさん
2009/02/21(土) 14:32:07ID:???> 俺は自作クラス作ってDB処理をしているから変換ミスがどうのこうのはない。
変換とか言ってる段階で、その自作クラスが穴だらけに1000カノッサ
0220nobodyさん
2009/02/21(土) 14:36:47ID:???> その場合、phpMyAdminなどで管理する時。どうなるかわかるよな?
phpMyAdminは出力時サニタイズをすっかり忘れてる、ってこと?
0221nobodyさん
2009/02/21(土) 14:38:07ID:???0222nobodyさん
2009/02/21(土) 14:38:47ID:???ENTQUOTES
ENTQUOTES
ENTQUOTES
ENTQUOTES
ENTQUOTES
ENTQUOTES
ENTQUOTES
ENTQUOTES
0223nobodyさん
2009/02/21(土) 14:40:08ID:???0224nobodyさん
2009/02/21(土) 14:40:18ID:???>>201が「俺はMySQLでの危険文字を全て列挙すら出来ない低能」と
言ってる意味を理解できていない、に1000カノッサ上乗せ
0226nobodyさん
2009/02/21(土) 15:07:41ID:???http://www.yahoo.xxco.jp/
0227nobodyさん
2009/02/21(土) 15:11:56ID:???SQLとHTMLでは、特殊な扱いになる文字が違うよってことだけど。
htmlspecialchar()でも問題なく見えるのは、たまたま、だと思ったほうがいいよ。
偶然にも、置き換え対象になる文字がSQLでエスケープが必要な文字と同じだったってこと。
ついでに言えば、エスケープの仕方は実際はDB依存だから
addslashes()じゃなく、DB専用の関数を使ったほうがいい。
0228nobodyさん
2009/02/21(土) 15:13:44ID:???・DBに渡す際にPDOのプレースホルダで渡す、または専用関数(mysql_real_escape_string)でクエリを構成。
・html出力時にhtmlspecialchars(,ENT_QUOTES)をする。
※DBに渡す際にhtmlspecialcharsするのは間違い。
→ 理由 >>188
→ それでも分からない。 >>163の本を読め。
0229nobodyさん
2009/02/21(土) 15:18:48ID:???GET / HTTP/1.1
Host: www.yahoo.xxco.jp
(略)
HTTP/1.x 302 Found
Date: Sat, 21 Feb 2009 06:15:31 GMT
Server: Apache/2.2.9 (Fedora)
X-Powered-By: PHP/5.2.6
Location: http://www.google.co.jp/
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8
0230nobodyさん
2009/02/21(土) 16:10:53ID:???0231nobodyさん
2009/02/21(土) 16:11:49ID:???xxco.jpの管理人が、
www.yahooo.xxco.jpへアクセスした場合に
「Location: http://www.google.co.jp/」へリダイレクト(302)するようにしているだけ。
<?php
header('Location: http://www.google.co.jp/', True, 302);
?>
0233nobodyさん
2009/02/21(土) 16:35:25ID:???僕レンタルサーバー使ってるからね!
エスケープしなくても安全よっ!
0234nobodyさん
2009/02/21(土) 19:59:23ID:230PJjNE【PHPのバージョン】php5.2.5
【連携ソフトウェア】mysql
【質問内容】
Webアプリケーションで、ウィンドウ毎に違う情報を引き継いで処理をしていく物を作っています。
uniqid()でセッションIDを割り振って、formのhiddenに入れると引き継げるのは分かりました。
しかしこれだと、link(aタグ)で機能を選択した場合に、セッションIDが引き継げないように
思います。ですよね??何か良い方法はありませんか?
リンクのパラメータに追加するとなると、全部のリンクに書き足す必要があって大変だし、
POSTとGETの両方の評価が必要になると煩雑だし、そもそもurlにセッションIDを出すのが
微妙に避けたいので・・・。
お知恵を拝借したいです。よろしくお願いいたします。
0235教えて
2009/02/21(土) 20:15:36ID:1h/i9qY8<?php
$numbers = range(1, 20);
shuffle($numbers);
for($i = 0; $i < 20; $i++) {
echo $numbers[$i]."<br>\n";
}
?>
0236nobodyさん
2009/02/21(土) 20:16:32ID:???ケータイの場合はGET渡ししかない
0238nobodyさん
2009/02/21(土) 20:21:23ID:???モバゲーではこの程度の言語障害者珍しくも無い
マジ日本はどこへ向かうんだ
$numbers = range(1, 20);
shuffle($numbers);
echo array_pop($number);
// なんか処理
echo array_pop($number);
// なんか処理
echo array_pop($number);
…
1ページ内の処理ならこれでいける。
2枚以上の画面にわたって変数を持って行きたいならセッションを使うしかない。
0239234
2009/02/21(土) 20:33:28ID:230PJjNECOOKIEですか・・・ちょっと調べてみます。ありがとうございます。
クライアントはパソコンなので、GETでもPOSTでも使えます。
COOKIEでもウィンドウ毎って可能なんですか?
0240nobodyさん
2009/02/21(土) 20:38:24ID:???パソコンならhiddenを使う必要ない。セッションはクッキーが勝手に確立してくれる
GETやらPOSTも意識する必要ない。セッションに少し慣れればすべて解決する
別ウインドウのことを言ってるのだとしても
リンクやフォームから作成された別ウインドウは同一セッションとなる
0243242
2009/02/21(土) 20:58:18ID:???同一セッションで別ID発行してもセッションが上書きされるだけだからダメか
0244nobodyさん
2009/02/21(土) 20:59:36ID:???で質問。
入力->フィルター->エスケープ->DB -> 取り出し->
ここまではわかるが。
その後なんでまたフィルタにかけるの?
while文でたとえば
<? while ( $item = mysql_fetch_array( $result ) ) { ?>
<tr>
<td><?= $item['item_id'] ?><?= $item['item_id2'] ?></td>
<td><?= $item['item_name'] ?></td>
<td><?= $item['author_name'] ?></td>
<td><?= $item['publisher_name'] ?></td>
<td><?= date( 'Y年m月d日', strtotime( $item['release_date'] ) ) ?></td>
<td><?= $item['list_price'] ?></td>
<td><?= $item['sale_price'] ?></td>
<td><?= get_category_name( $link, $item['category_id'] ) ?></td>
<td><?= $item['quantity'] ?></td>
<td><?= $item['state'] ?></td>
<td>
<nobr>[<a href="admin_edit_item.php?item_id=<?= $item['item_id'] ?>">編集</a>]</nobr>
<nobr>[<a href="admin_del_item1.php?item_id=<?= $item['item_id'] ?>" onClick="return confirm( '完全に削除されます。よろしいですか?' )">削除</a>]</nobr>
</td>
<? $n ++; } ?>
でまわしてはいかんのかね?
0245nobodyさん
2009/02/21(土) 21:09:52ID:???俺も取り出しのあとのフィルターってのはよくわからん
DBには正しいものが入ってるはずだしな
でもhtml適合化は必要だろ。そのコードだとScript実行されるよ
0246234
2009/02/21(土) 21:10:06ID:???そうなんです。>234の様にformかurlに入れれば、
とりあえずウィンドウ毎に別の情報を引き継げます。
だけど、formとurlの両立が難しい。
何か、簡単にウィンドウ毎を識別する方法があれば・・・
0247244です。
2009/02/21(土) 21:15:34ID:???0248nobodyさん
2009/02/21(土) 21:17:49ID:???まったく同一のページを2ウィンドウ開くのならば、URLかPOST値にセッション情報を含めないとダメだな。
手を抜くならセッションキーGET渡しで
・Smarty使ってるならポストフィルタで全サイト内リンクにセッションキーを追加する
・JavaScript経由で全リンクをセッションキー付きに書き換える
辺りか。
リンクを書き換えないなら、複数ウィンドウシステムに入った時点で
index.php/hogehoge/
index.php/fugafuga/
のような固有URLを割り振り、これをセッションキーにするのも手。
index.php/hogehoge/menu から <a href="./information">で
index.php/hogehoge/information に遷移させられるから記述が多少楽になる。
ただし、セッション情報がリクエストヘッダでだだ漏れだし、外部リンクに気を払う必要も出てくる(REFERERで漏れる)。
0249nobodyさん
2009/02/21(土) 21:20:12ID:???>入力->フィルター->エスケープ->DB -> 取り出し-> フィルター -> html適合化 -> 表示
どこにそんなことが書いてある?
入力 -> エスケープ -> DB -> 取り出し -> サニタイズ -> 表示
これでいい
0250nobodyさん
2009/02/21(土) 21:26:33ID:???サニタイズってのは、入力値に不正な値や壊れた文字列が入っていないかをチェックするもの。
やるなら、入力の直後だが、サニタイズって言うと、>>249みたいな誤解をするやつがいるから、
入力後にやるのが、バリデート+フィルター。
0251nobodyさん
2009/02/21(土) 21:28:51ID:???DBってのはデータストア。
収録されたデータをすべて出力していいとは限らないし、
形式によってはフィルターをかける必要がある。jk
0252nobodyさん
2009/02/21(土) 21:33:13ID:???入力段階でチェックするのはvalidate
sanitizeは表示段階で、浄化、つまり悪意のあるスクリプトやタグを無効にするもの
0253nobodyさん
2009/02/21(土) 21:43:54ID:???エスケープやサニタイズとは別の話題。
0254nobodyさん
2009/02/21(土) 21:44:23ID:???まぁ、そう思っててもいいけどな。
それは、htmlspecialcharsをサニタイズだと思っている子たちの誤解
悪意と善意を確実に識別できるのはどこかを考えれば正解はどっちかわかるはずだが、
困ったことに、サニタイズ≒出力フィルタだと書いちまってるサイトやら本があるからなぁ。
要するに、サニタイズなんて曖昧なメタファーでプログラムを語るなってことだ。
0258234
2009/02/21(土) 21:48:33ID:???そうですよね。ありがとうございます。
固有URLの実装方法は分かりませんし、
そもそもフレームワークにCakePHPを使うので、そういうURLなのです。
リンクじゃなくて、全てformのボタンにするのも手ですかねぇ・・・。
0259nobodyさん
2009/02/21(土) 21:49:18ID:???放禁みたいなNGフィルター、SNS用の権限フィルター
多端末対策で文字コード変換フィルター
スクリプト許可端末、スクリプト拒否端末用の変換フィルター
タグ許可・不許可
まぁ、なんでもいいでしょ
0260nobodyさん
2009/02/21(土) 22:00:32ID:???検証。入力値などに問題が無いかをチェックする(チェックした後どうするかは知らない)。
フィルタ
入力値をチェックし、ヤバいものは除去する、ないし弾く(エラーにする、無視する)。
サニタイズ
消毒。転じて無害化。害の無いものにする。変換・置換など無害化の方法は多数あるが。。
エスケープ
ある環境で特殊な意味を持つ値(HTMLならば<など)を、その環境のルールで規定された別の表現(<)に置き換える。
ダブルクォート中で"の前にバックスラッシュを置くのもエスケープ。
どれがベストかというと、どの表現も曖昧さが残るので使うべきではない。
DBへの入力の無害化処理と、HTML出力への無害化処理は違うし、無害化の方法も1通りではない。
設計初期などで抽象度を残した表現をしたい時くらいしか使わないな。
>259は文脈を意図的に曲解した例。
0261nobodyさん
2009/02/21(土) 22:01:28ID:???htmlspecialchars=html適合化っていう具体的かつ正確な言葉があるのに、
曖昧かつ誤解に満ちて見解が分かれるサニタイズなんて言葉にする必要はないだろ。
0262nobodyさん
2009/02/21(土) 22:01:39ID:???> 別の表現(<)に置き換える。
な。
0263nobodyさん
2009/02/21(土) 22:05:41ID:???> ダブルクォート中で"の前にバックスラッシュを置くのもエスケープ
PHPとかJSならエスケープだが、HTML中でこれができると思ってしまう奴もいるらしいからな。
HTML出力時にaddslashesするやつとか、
DBに入れる前にhtmlspecialcharsする奴とか、
入力時に両方処理する奴とか、
ほんと、ウンコだな
0266nobodyさん
2009/02/21(土) 23:33:28ID:???0269nobodyさん
2009/02/22(日) 00:00:19ID:???良く分からないけどやーいやーいうんこうんこー
0270nobodyさん
2009/02/22(日) 00:13:17ID:???0271nobodyさん
2009/02/22(日) 00:31:09ID:bY3v8MvVのせいで、便秘ではないがうんこが止まらない。
この1時間で4回うんこにいっている
0272nobodyさん
2009/02/22(日) 00:34:34ID:???0273234
2009/02/22(日) 00:46:35ID:JUr+Er3M何か無いかな・・・って考えてたら・・・$_SERVER['HTTP_REFERER']が使え
ないかなぁ?って思ったのですが。どうでしょうか?
例えばheaderのmetaとかでreferer urlを変更して、セッションIDを追加したり
とか出来ないでしょうか。
他にも、何か使えそうなデータって無いでしょうか?
0274nobodyさん
2009/02/22(日) 01:01:49ID:???refererは自由に変えられるし、飛ばさないブラウザもあるし信用ならないよ
まず別セッションにしたい理由がわからん
ユーザーに複数セッションを使わせたいという状況は想像できないし
自分が複数セッション使いたいならブラウザもうひとつ立ち上げればよいだけ
0275234
2009/02/22(日) 01:27:54ID:JUr+Er3Mrefererが信用ならないのはおっしゃる通りです。ご指摘ありがとうございます。
リファラ出さないブラウザは対象外って事で良いのです。
複数セッションを使うために、別のブラウザを立ち上げれば済むのもご指摘通り。
自分だけで使うなら、その方が簡単なのですが。
例を挙げると、ウィンドウ1つに一人分の情報を表示/編集できる、マルチ・
ウィンドウの住所録ソフトみたいなものを想定しています。
ウィンドウ毎に別セッションにしないと無理じゃないかと思いました。
他に、定石があるようでしたら教えて下さい。
よろしくお願いいたします。
0276nobodyさん
2009/02/22(日) 02:04:13ID:???なんで質問に回答するときはえらそうな
態度なの?
0277nobodyさん
2009/02/22(日) 03:06:25ID:3nGhqmkB1つ目のプロセスがトランザクション張ってて、
2つ目のプロセスがトランザクション張ろうとして、
当然1が既にデーターベースをロックしてるから、
2はロックを取得できなくて、そんで
SQLITE_BUSYが帰ってきて、
database is locked
ってわかったとき、
しばらくsleepさせて、リトライ
って処理、どうやって書けばいいの?
どっかにサンプルコードある?
0279nobodyさん
2009/02/22(日) 18:00:44ID:???ユーザ登録(ユーザ名をuserで登録)して、ページを開設する
↓
tp://test.jp/user/ みたいに自分のページができる
↓
このページを誰もがある程度操作できる(お絵かき掲示板とか、ブログのコメ投稿とか)
mixiなどのようにログインページがいらないので次回からこのページは
tp://test.jp/user/が存在する限り、だれもがこのurlから訪問することができる。
みたいなサイトみて思ったのですが、
1./user/の部分は実際にサイトの鯖でuser専用のディレクトリやそこに.phpなどを作っているのでしょうか?
2.それとも、apacheだったらhttpd.confなんかで、
tp://test.jp/mypage.php?userid=user → tp://test.jp/user/ みたいな変換をしているのでしょうか?
しかし2.の方法だと、userというページがあるかどうかをどうやって判断しているんでしょう・・
適当に、userid=tekitouとかしてみたときに、tp://test.jp/tekitou/となってしまい、そのページが
あるかないかの判断はいろんな方法でできると思うのですが、ユーザ登録が増えれば増えるほど
その判断する速度は落ちるような気がしてしまうのです・・
そもそも2の時点で他の方法でユーザを管理しているかもしれません、
上のようなサイトの、ユーザ管理とその引き出しはどう管理しているのか、
大体でもいいので教えていただけないでしょうか
よろしくお願いします
0280278
2009/02/22(日) 18:01:32ID:euIhPE010281nobodyさん
2009/02/22(日) 18:03:04ID:???今の主流は動的URLを性的URLに変化する
http://example.com/user/→http://example.com/id=user
DBにデータを保存しておいてページのIDで呼び出す
0282nobodyさん
2009/02/22(日) 18:09:47ID:euIhPE01>>281
なるほど、DBを使ってユーザーのページに誰かが訪れるその度に
検索呼び出ししているということでしょうか。
なんかすっきりしましたありがとうございました
0283nobodyさん
2009/02/22(日) 18:12:49ID:???ちなみに毎回DBから同じ情報ひっぱってくるのは負荷かかるから
キャッシュを使ってるのが多いと思う
(ここはまたSmartyとか覚えたときにやってみるといい)
0284nobodyさん
2009/02/22(日) 18:16:29ID:euIhPE01Smartyですか、参考に調べてみます
ありがとうございました!
0285nobodyさん
2009/02/22(日) 21:21:50ID:3nGhqmkBwhile で書いたけど、
deadlockになるのです
0286nobodyさん
2009/02/22(日) 21:47:52ID:???恥ずかしがらないで
0287nobodyさん
2009/02/22(日) 21:50:36ID:3nGhqmkB1.php と 2.php と2つのファイルを用意して、
以下のテストを行いました。
「テスト1」
1.phpを単独で実行する -> OK
「テスト2」
2.phpを単独で実行する -> OK
「テスト3」
1.php -> 2.php という順番で実行する -> deadlock発生
こういう状況です。
0288nobodyさん
2009/02/22(日) 21:52:30ID:3nGhqmkBsleep(10);
をかませて、ゆっくり実行するようにしてあります。
このゆっくりタイムに、いそいで2.phpを実行する、という
テストです。
0289nobodyさん
2009/02/22(日) 21:53:36ID:3nGhqmkBデーターベース構造は、
id | name| value
1 | bond | 5
database name = test1
table name= tb1
です。
0290nobodyさん
2009/02/22(日) 21:54:35ID:3nGhqmkB<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die("Error connecting to DB");
}
$bUpdatePending = true;
while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
sleep(10);
$oDbCxn->commit();
$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
// Update failed. Wait a while before trying again in the next loop
}
}
?>
0291nobodyさん
2009/02/22(日) 21:55:09ID:3nGhqmkB<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die("Error connecting to DB");
}
$bUpdatePending = true;
while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
$oDbCxn->commit();
$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
// Update failed. Wait a while before trying again in the next loop
sleep(15);
}
}
?>
0292nobodyさん
2009/02/22(日) 21:57:20ID:3nGhqmkBそれ以外は全部同じです。
SQLiteはトランザクション中に、別のトランザクションを発生させようとすると
1秒も待たずに「database is locked」になるので、
ウエイト->リトライ、という処理を自分で書かないといけません。
これがイマイチ普及しない最大のポイントだと思いますが、
その処理の書き方についての質問です。
なぜかデッドロックになってしまうのです
0293nobodyさん
2009/02/22(日) 21:57:20ID:???0294nobodyさん
2009/02/22(日) 21:57:55ID:3nGhqmkBだってリトライしないといけないわけだから。
なんか間違ってる?
0295nobodyさん
2009/02/22(日) 22:01:33ID:???0296nobodyさん
2009/02/22(日) 22:03:13ID:3nGhqmkB例外は発生しないにょ
ずーーーっと実行中のままになって、
最後にはタイムアウトになるんだにょ
PHPのデフォルトタイムアウトが60秒だから
60秒でタイムアウトになるにょ
0297nobodyさん
2009/02/22(日) 22:04:43ID:???おいおい、
例外にならなかったら、falseが設定されるでしょうが。
例外をcatchして捨ててるだけでしょうが。
0298nobodyさん
2009/02/22(日) 22:06:21ID:???execに失敗する。
もう一度、beginTransactionをかけるが、既にbeginされてるので例外発生
で、またループ。
beginをループの外に出すかcatchしたときにロールバックしてみたらどうかね
0299nobodyさん
2009/02/22(日) 22:13:32ID:???ちなみに1年、5人担当
0300nobodyさん
2009/02/22(日) 22:15:02ID:3nGhqmkBそしたら、catchの中で、
例外をprintするように改造して
もう一回試してみるよ
0301nobodyさん
2009/02/22(日) 22:15:38ID:3nGhqmkB一人当たり200万円しかもらえないじゃん
0302nobodyさん
2009/02/22(日) 22:17:17ID:3nGhqmkB一番下のところに
catch (PDOException $e) {
print( $e->getMessage());
}
って入れただけですけど。
そしたら、以下のようになりました。
0303nobodyさん
2009/02/22(日) 22:19:02ID:3nGhqmkBFatal error: Maximum execution time of 60 seconds exceeded in
C:\1.php on line 21
(さっきと同じ結果)
--------------------------------------------------------
2.php
SQLSTATE[HY000]:
General error: 5
database is locked
There is already an active transaction
There is already an active transaction
There is already an active transaction
Fatal error: Maximum execution time of 60
seconds exceeded in C:\2.php on line 28
--------------------------------------------------------
2.phpについて、いままで出ていなかった
例外がレポートされるようになりました。
0304nobodyさん
2009/02/22(日) 22:22:34ID:3nGhqmkBexec ってオートコミットモードがONでないと使えないのですか?
もしかして、
$sql="UPDATE tb1 SET value = value + 1 WHERE id = '1'";
$sth = $dbh->prepare($sql);//プリペアードステートメント
$sth->execute();//エクスキュート
とかってやればOK?
0305nobodyさん
2009/02/22(日) 22:26:36ID:???1.phpで例外が出ないで無限ループするのはおかしいからチェックしてみ
0306nobodyさん
2009/02/22(日) 22:29:18ID:3nGhqmkBbiginをループの外に出したら意味ないのでは?
だってリトライできなくなるし。
0308nobodyさん
2009/02/22(日) 22:34:36ID:3nGhqmkB改造済みのコードを改めてはります。
0309nobodyさん
2009/02/22(日) 22:35:58ID:3nGhqmkB<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die("Error connecting to DB");
}
$bUpdatePending = true;
while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
sleep(10);
$oDbCxn->commit();
$bUpdatePending = false; // Exit the loop now the update has been done
sleep(1);
}
catch (PDOException $e) {
print( $e->getMessage());
$oDbCxn->rollback();
}
}
?>
0310nobodyさん
2009/02/22(日) 22:46:19ID:???実行中のsleepだけでいいことにして、ループ外した方がよさげ。
それから、ロック以外の例外の時も無限ループしちゃうわけで・・・
まぁ、テストだからいいけど。
0311nobodyさん
2009/02/22(日) 22:47:07ID:???0312nobodyさん
2009/02/22(日) 22:48:00ID:???0313nobodyさん
2009/02/22(日) 23:08:50ID:3nGhqmkBそしたらループはずしてみようかな?
0314nobodyさん
2009/02/22(日) 23:17:01ID:3nGhqmkBだってdatabase is lockedっていうエラーが出ているわけだから、
トランザクションをゲットできていないわけだから、
そもそもロールバックなんかしないわけで。
0315nobodyさん
2009/02/22(日) 23:19:21ID:3nGhqmkB3.phpと4.phpということにしました。
3.php
<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die("Error connecting to DB");
}
$bUpdatePending = true;
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
sleep(10);
$oDbCxn->commit();
$bUpdatePending = false; // Exit the loop now the update has been done
sleep(1);
}
catch (PDOException $e) {
print( $e->getMessage());
$oDbCxn->rollback();
}
?>
0317nobodyさん
2009/02/22(日) 23:20:13ID:3nGhqmkB<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die("Error connecting to DB");
}
$bUpdatePending = true;
while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
$oDbCxn->commit();
$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
// Update failed. Wait a while before trying again in the next loop
print( $e->getMessage());
$oDbCxn->rollback();
}
}
?>
0318nobodyさん
2009/02/22(日) 23:22:14ID:3nGhqmkBという順番で実行する流れです
3.php −>10秒待つ
4.php −>待たないですぐに実行
0319nobodyさん
2009/02/22(日) 23:22:53ID:3nGhqmkB3.php エラー無し
カウントアップは成功している
4.php
SQLSTATE[HY000]: General error: 5 database is locked
カウントアップは成功している
0320nobodyさん
2009/02/22(日) 23:36:10ID:3nGhqmkBもしかして、完成?
成功している??
0322nobodyさん
2009/02/23(月) 00:01:27ID:DYtiHKsN7.php −> 8.php
7.php wait 10seconds
8.php wait 0
7.php
<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die("Error connecting to DB");
}
$bUpdatePending = true;
while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
sleep(10);
$oDbCxn->commit();
$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
sleep(3);
$oDbCxn->rollback();
}
}
?>
0323nobodyさん
2009/02/23(月) 00:02:02ID:DYtiHKsN<?php
try {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die("Error connecting to DB");
}
$bUpdatePending = true;
while ($bUpdatePending) {
try {
$oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
$oDbCxn->commit();
$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
sleep(3);
$oDbCxn->rollback();
}
}
?>
0324nobodyさん
2009/02/23(月) 00:03:11ID:DYtiHKsNsleep(3);
$oDbCxn->rollback();
これなんだけど、せっかくsleepを入れたのに、
sleepしているようすが見られない。
7.phpの実行が終わると、即座に
間髪いれずに、8.phpの実行も終了している。
なんでだ?
3秒待ってからロールバックしてるんじゃないのか?
0325nobodyさん
2009/02/23(月) 00:03:49ID:DYtiHKsNロールバックするという意味がわからん。
いったいどこに戻っているというのだ?
0326nobodyさん
2009/02/23(月) 00:16:50ID:???その中のUPDATE文に対してのエラーである。
なので、トランザクション自体は開始されているので、
一旦ろーるばっくでトランザクションを改めてトランザクションを開始している。
0327nobodyさん
2009/02/23(月) 00:17:43ID:???一旦ろーるばっくでトランザクションを閉じて、改めてトランザクションを開始している。
0328nobodyさん
2009/02/23(月) 00:19:44ID:DYtiHKsNなるほどねー
ようやくわかってきたわぁ
きたわぁ
きたわぁ
0329nobodyさん
2009/02/23(月) 00:22:06ID:DYtiHKsNSQLiteの4つのロックのうち、
すぐにロックを獲得できるのを、
明示的に書かないとだめだな。
$oDbCxn->beginTransaction();
↑これがダメってこと。
なぜなら、↑だと、デフォルトのロックが選択される。
SQLiteにおける、デフォルトのロックとは、defferd lockである。
これだと遅延するから、4つの処理をトランザクションではさみたい、
などという場合には不向き。
0330nobodyさん
2009/02/23(月) 00:29:36ID:???0331nobodyさん
2009/02/23(月) 00:45:25ID:DYtiHKsNやったことある?
0332nobodyさん
2009/02/23(月) 00:58:26ID:DYtiHKsNSQLiteはNFSというファイルシステムを使っているマシンで実行すると
ぶっこわれるらしい。
NFSとはおもにUNIXで使われるファイルシステムらしい。
特にfreeBSDでよく使われるらしい。
自分が借りているレンタルサーバーはfreeBSDなので、
ひょっとしてSQLiteは使えないんじゃないか?
0333nobodyさん
2009/02/23(月) 01:02:31ID:???0334nobodyさん
2009/02/23(月) 01:02:40ID:???>ヒント
>NFSパーティションにマウントされたSQLiteデータベースを処理すること は推奨されません。
>ロックに関してNFSは著しい問題があるので、 データベースを全くオープンすることさえできない可能性があります。
>ま た、成功した場合でも、ロックに関する動作は予測できない結果を生む可 能性があります。
だってさ。こっち調べるのが先じゃない?w
0335nobodyさん
2009/02/23(月) 01:02:48ID:DYtiHKsNdeferred,
immediate,
exclusive
という3つの種類のロックがあるが、
どれを使うべきか?というのは、考えなくていいの?
$dbh->beginTransaction();
これを使うと、自動的に、デフォルトの、ロックが
選択される。SQLiteにおけるデフォルトのロックとは
deferred ロックである。
もし銀行口座などの実装をしたい場合、
exclusiveにしないとダメなのではないか?
また、immediateって、なんのためにあるんだ?
いつ使うんだ?
0336nobodyさん
2009/02/23(月) 01:03:21ID:DYtiHKsNよかった
0337nobodyさん
2009/02/23(月) 01:07:02ID:???0338nobodyさん
2009/02/23(月) 01:07:46ID:???0339nobodyさん
2009/02/23(月) 01:29:03ID:???通報しましたとかsqlite関連で腐るほど書き込んでた
0340nobodyさん
2009/02/23(月) 01:29:11ID:???0342nobodyさん
2009/02/23(月) 01:38:00ID:???WikiもCMSの一種だよ
Wikiが他のCMSと違うのは、不特定多数によるサイト構築を主体とした構成になっている
つかPHP関係ないじゃん
0343nobodyさん
2009/02/23(月) 02:23:27ID:DYtiHKsNsleepしてrollbackだけでいいんじゃないか?
0344nobodyさん
2009/02/23(月) 03:33:25ID:???http://pc11.2ch.net/test/read.cgi/tech/1232712334/284-
0345nobodyさん
2009/02/23(月) 03:44:00ID:???私の趣味は豊富で下記のとおりです。
・アニメ、エロゲ、同人誌、アニソン
・風俗、ストリップ鑑賞
・声優、秋葉系アイドルイベント参加
しかし、これを言うと、おそらくひかれてしまいます。。。
なんて言えばよいのでしょうか?
休みの日は何をしてる?と聞かれても、声優ライブの最前線で
サイリウムをもって、跳んでいるなんて言えません。
0346nobodyさん
2009/02/23(月) 04:39:47ID:cBNbBaFXif(preg_match("/^[0-9]+$/",$a) == true){
echo "ok";
}else{
echo "dame";
}
でdameになってくれるのに(if(preg_match("/^[0-9]+$/",$a)でもいけた)、
if(preg_match("/^[0-9]+$/",$a) !== false){
echo "ok";
}else{
echo "dame";
}
だと$aを何にしても全部okになる・・
なんで><
0347nobodyさん
2009/02/23(月) 04:40:33ID:cBNbBaFX0348nobodyさん
2009/02/23(月) 04:52:33ID:???http://jp.php.net/preg_match
0349nobodyさん
2009/02/23(月) 05:29:48ID:DYtiHKsNtry {
$oDbCxn = new PDO('sqlite:test1');
$oDbCxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
die("Error connecting to DB");
}
$bUpdatePending = true;
while ($bUpdatePending) {
try {
$oDbCxn->query("BEGIN EXCLUSIVE TRANSACTION");
// $oDbCxn->beginTransaction();
$oDbCxn->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
$oDbCxn->commit();
$bUpdatePending = false; // Exit the loop now the update has been done
}
catch (PDOException $e) {
print $e->getMessage();
$oDbCxn->rollback();
}
}
?>
0350nobodyさん
2009/02/23(月) 05:30:39ID:DYtiHKsN実行すると、なんでエラーになるの?
PHP5 + PDO + SQLite3
----------------------------------
database structure
id | name| value
1 | value| 5
-------------------------------
database name = test1
table name= tb1
0351nobodyさん
2009/02/23(月) 05:33:14ID:DYtiHKsN$oDbCxn->query("BEGIN EXCLUSIVE TRANSACTION");
はダメで、
$oDbCxn->beginTransaction();
なら良い、というのはおかしい。
なぜエラーになるの?
0352nobodyさん
2009/02/23(月) 06:48:25ID:c878IibKtest.txt というutf-8のファイルがあって中に文とかphpの変数とかが書いてあります。
これをsjisのtest.phpで読み込み表示させたいのですがincudeだと文字化けします。
どうすれば表示できますか?
0353nobodyさん
2009/02/23(月) 06:59:44ID:???を吐いてやる
0355nobodyさん
2009/02/23(月) 07:20:40ID:cBNbBaFX自分なりに調べてみました><
mb_eregでは !== false でいけたので、それも一緒に比べてみたら
返り値のとこが、
mb_ereg
>正規表現に一致しないか、 エラーを発生した場合に FALSE を返します。
preg_match
>preg_match() は、エラーが発生した場合にFALSEを返します。
でした。
preg_matchは正規表現に一致しないときはfalseを返してくれないので、
!== falseがスルーされたということでよいのでしょうか?><
今まで全部!== falseでできると思っててそれでやってたので変更が大変ですが
preg_matchのときは==とか何もつけないバージョンでやっておきます><
ありがとうございました
0357nobodyさん
2009/02/23(月) 16:02:31ID:???PHP ver 5.2.5
連携 とくになし
<?
//------------------------------------------------
//ペット可否
//------------------------------------------------
function GetPet_F($int)
{
$res = "";
if($int=="0") $res = "不可";
else $res = "可能";
return $res;
}
print GetPet_F(0);
?>
以上ソースコードでsyntax error, unexpected $end出るんですが何が原因なんでしょうか・・・
0358357
2009/02/23(月) 16:02:51ID:yJ3BEx4Z0359nobodyさん
2009/02/23(月) 16:12:39ID:???0360nobodyさん
2009/02/23(月) 16:31:29ID:???eval(mb_convert_encoding(file_get_contents('test.txt'), 'Shift-JIS', 'UTF-8'));
>>357
構文に間違いはないから
スクリプトのエンコーディングが mbstring.script_encoding と合ってないんでしょう
0361nobodyさん
2009/02/23(月) 16:37:17ID:yJ3BEx4Zなんなのだろう
0362nobodyさん
2009/02/23(月) 16:46:30ID:???原因は、Shift Jisの5C問題だね。
能のShift Jisのコードが94 5C
5Cはバックスラッシュ(Shift Jisだと¥)なので、
PHPのパーサが、終わりのダブルクォーテーションを文字列と認識してしまう。
結果、文字列が閉じられていないと判断されて、エラーになる。
0363nobodyさん
2009/02/23(月) 17:31:12ID:???話は変わるが
echo '<table 〜'.
'〜〜〜〜〜〜〜〜〜'.
'〜〜〜〜〜〜〜〜〜'.
'〜〜〜〜〜〜〜〜〜'.
'〜〜〜〜〜〜〜〜〜';
引継ぎでプログラムのソースコード見たらこうなってた
まじ簡便してくれ・・・orz
あと、同じ要領でechoでJavaScriptとか吐き出してるのもやめてくれ
クエリはまだ許せる
仕事でプログラムするときはほかの人にわかりやすいコードにしてください
これまじでお願い
0364nobodyさん
2009/02/23(月) 17:59:46ID:???Shift-JISだろうが何で書こうがそいつの自由だ
雑談スレに行けクズ
0365nobodyさん
2009/02/23(月) 21:03:10ID:cBNbBaFX$aa = "AA";
$bb = "bb";
$sql = "SELECT * FROM v001upfile WHERE :AA = :BB";
$result = executeQuery($sql);
$result->bindParam(":AA",$aa,PDO::PARAM_STR);
$result->bindParam(":BB",$bb,PDO::PARAM_STR);
$result->execute();
$row = $result->fetchAll();
$rows = count($row);
のようにすると、whereに該当するデータがなく、$rowsも0になってしまいます。いろいろしていると、
$sql = "SELECT * FROM v001upfile WHERE AA = :BB";
とするとデータが得られました。
どうやらwhere :AAのbindのパラメータ、PDO::PARAM_STR
で、'AA'とされてしまっているから?、だめのような気がするのですが、
解決策ありましたらよろしくおねがいします
0366nobodyさん
2009/02/23(月) 21:21:42ID:???それ駄目だ、俺も悩んだ
WHERE $AA = ?か、 ? = ?にしたよ
SELECTでbindValueとbindParamは使わない方がいいって
グーグル先生が言ってた
0367nobodyさん
2009/02/23(月) 21:33:37ID:???0368nobodyさん
2009/02/23(月) 21:36:22ID:???アホかw
0369nobodyさん
2009/02/23(月) 22:03:46ID:ikSisMyc【PHPのバージョン】php5.2
【連携ソフトウェア】JavaScript Smarty
【質問内容】
ユーザがログインに成功したときにセッションに値をセットして
次にページにアクセスしてきた時にSmartyで値があるか確認して初期化処理
例:
{{if $smarty.session.foo == 'bar'}}
init(); //これはJScriptの関数
{{/if}}
をしたいんですけど、ブラウザを終了するとセッションまで破棄されてしまいます。
ご教授お願いいたします。
0370nobodyさん
2009/02/23(月) 22:06:30ID:cBNbBaFXsql文に直接変数入れる方法でしました。できました。
ありがとうございました
>>367,368
やってみたのですが、反応としては356とほぼ同じでした
マニュアルのパラメータ一覧のものをいろいろ代えてやってみたのですが
どうもうまくいきませんでした。
0372nobodyさん
2009/02/23(月) 22:28:00ID:???そのいろいろかえてやってみた、の中に正解が入ってないわけだな。
ビット和はとったのか。まぁ、いいや。メンドクセ
0373nobodyさん
2009/02/23(月) 22:55:40ID:DYtiHKsNジャーナルファイルを作成しないのか?
0374nobodyさん
2009/02/23(月) 22:59:36ID:???0376nobodyさん
2009/02/24(火) 00:24:39ID:r/vu3Jnx〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <ココまでアホばかり
彡、 |∪| /
/ __ ヽノ /
(___) /
0377nobodyさん
2009/02/24(火) 07:08:35ID:???エラーなしで何事もなく終わってるのに肝心のinsertだけできていない・・
0378nobodyさん
2009/02/24(火) 07:37:15ID:???何もいじってないのに意味不明
0379377
2009/02/24(火) 07:41:12ID:???そっちでやったらカラムの数と値の数が合ってないよってエラーが出てきた!
凡ミスだった。dクス
0380nobodyさん
2009/02/24(火) 10:11:31ID:MqsJKVm4$_['FILE']に入っているtypeはブラウザが送信するもので、
信用できないと聞きました。
そこで、アップロードされたファイルがJPEG、BMP、PNGであることを確認する方法を教えてください。
自分なりに考えてみたのは、
imagecreatefrom〜で、作成できるか確認するというものなのですが、これでもいいのでしょうか?
0381nobodyさん
2009/02/24(火) 10:38:47ID:???ttp://docs.sun.com/app/docs/doc/817-6000/6mldto822?l=ja&a=view
こういう記事を参考にして
phpでmimeタイプのチェッカーを作成するか
面倒なら外部アプリケーション(コマンド)を使用して
取得できる環境なら(おそらく色々制限がある)そうしたほうが確実で手っ取り早い
0382nobodyさん
2009/02/24(火) 10:42:58ID:???0383nobodyさん
2009/02/24(火) 10:46:06ID:???Powered by 俺 って書けたらいいな><
0384nobodyさん
2009/02/24(火) 10:52:41ID:???0385380
2009/02/24(火) 11:16:50ID:MqsJKVm4>>381
恥ずかしながら、私には難しすぎて理解できません;
MIMEタイプについて学ぶ必要がありそうですね;;
>>382
>>384
なるほど、画像ファイルの場合はこういう専用の関数を使うといいのですね。
はじめの質問からちょっとずれてしまうのですが、画像以外の場合ではどんな方法があるのでしょうか?
たとえば、MP3ファイルの場合など。
PECLのFileinfo関数なんかは使えるのでしょうか?
後学のために教えてください。
0386nobodyさん
2009/02/24(火) 11:24:58ID:???0387nobodyさん
2009/02/24(火) 11:29:20ID:???0388nobodyさん
2009/02/24(火) 12:52:56ID:???$str = file_get_contents("example.mp3");
if (substr($str, 0, 3) == "ID3") { ... }
0389nobodyさん
2009/02/24(火) 13:06:52ID:???$mimetype = `file -bi $file`;
0390380
2009/02/24(火) 14:25:53ID:MqsJKVm4それはそうなのですが、
たとえば、finfo_file()で得られる値は信用してよいのか、などがわからなくて;
>>388
なるほど、MP3の場合は、先頭にID3 タグの情報があるかどうかで判断できるわけですね。
しかし、MP3以外にも対応できる、もっと汎用的な方法はないのでしょうか?
>>389
linuxコマンドで取得するということでしょうか?
こんな方法もあるんですね!勉強になります。
続けて質問になってしまうのですが、ファイルサイズやファイル名などに関しても、
$_FILEの値は信用してはいけないのでしょうか?
その場合、安全な方法を教えてください。
0391nobodyさん
2009/02/24(火) 14:56:33ID:???画像だけならfreadして、どんな文字列から始まるかで判別する方法でいいんじゃないかな
JPG→\xff\xd8
PNG→\x89PNG\x0d
GIF→GIF87a or GIF89a
ビットマップは…しらねぇ('A`)
0392nobodyさん
2009/02/24(火) 17:27:52ID:???0393nobodyさん
2009/02/24(火) 18:57:41ID:TovVFkKx照合(決済できるクレジットカードかどうか)するというASPってありますか?
普通にZEROとかの決済会社とかでは、決済せずに照合のみってできるんでしょうか?
0395nobodyさん
2009/02/24(火) 19:03:02ID:TovVFkKx早速ありがとうございます
調べてみます
0396nobodyさん
2009/02/24(火) 20:13:38ID:???各データをくっつけるときについでに ' ' でくくりたい。
foreach( $data1 as $d )$data2[]="'$d'";
$str = implode( ',', $data2 );
とかやってるんだけど、これダサくね? 字の数も多いし。
もっとかっこよくやりたい。
0397nobodyさん
2009/02/24(火) 20:16:29ID:???0398nobodyさん
2009/02/24(火) 20:17:21ID:???> 配列の各データをimplodeでくっつけたいんだけど
> 各データをくっつけるときについでに ' ' でくくりたい。
>
> foreach( $data1 as $d )$data2[]="'$d'";
> $str = implode( ',', $data2 );
> とかやってるんだけど、これダサくね? 字の数も多いし。
> もっとかっこよくやりたい。
0401nobodyさん
2009/02/24(火) 20:56:11ID:9Iv6lmqOこれらはPHP5ではバイナリセーフの関数ということであってますか?
色々調べたのですがバイナリセーフではないという記事が多くて困惑してます
マニュアルにはfileはPHP4.3でバイナリセーフになり
file_get_contentsはバイナリセーフとは書いてませんが
バイナリデータに対応してると書いてます(バイナリデータ対応=バイナリセーフ?)
実際にテストもしてみましたがヌル文字もちゃんと表示されているようでした
バイナリセーフではないというのは過去のこと(記事が古い)ということでしょうか?
0402nobodyさん
2009/02/24(火) 22:07:03ID:???PHP5.xxまでならバイナリに対応してる
PHP6以降、バイナリを突っ込めなくなるモードに設定できるようになる
0403nobodyさん
2009/02/24(火) 22:33:58ID:gE9pwkM6pngの場合に透過部分が透過されずに塗りつぶしになってしまいます。
png-8でもpng-24でも透過できるようにしたいのですがどうすればいいのでしょう?
環境はphp5です。できればImageMagickは使わずにやりたいのですが…
現在のソースはこんな感じです。
$size = getimagesize('./front.png');
$back = imagecreatefromjpeg('../back.jpg');
$front = imagecreatefrompng('./front.png'); //fromjpgだったりgifだったり
imagetruecolortopalette($front, false, 256);
imagecopymerge($back, $front, 0, 0, 0, 0, $size[0], $size[1], 100);
header('Content-Type: image/png');
imagepng($back);
0404nobodyさん
2009/02/25(水) 01:09:50ID:Ndqi56nAみたいに.php無いのにそのページ開いてしまいます
sample.phpの場合だけ開くようにしたいのですがよろしくおねがいします
0405nobodyさん
2009/02/25(水) 01:23:53ID:Ndqi56nA0406nobodyさん
2009/02/25(水) 01:43:31ID:aIiX70rdその3つのロックを開放するときの順番で、ロックをした順番ですか?
それともロックをした順番の逆順にロック開放するべきですか?
0407>>406
2009/02/25(水) 01:44:45ID:aIiX70rdflockで、3つのファイルを、排他ロックしたときに、
その3つのロックを開放するべき順番は、ロックをした順番ですか?
それともロックをした順番の逆順にロック開放するべきですか?
以上です
0408nobodyさん
2009/02/25(水) 03:48:51ID:lXxF9gdp$b,
$c;
という書き方と、
private $a;
private $b;
private $c;
という書き方、どっちが適切ですか?
0409nobodyさん
2009/02/25(水) 03:58:40ID:???0410nobodyさん
2009/02/25(水) 04:00:27ID:???順番は関係ない
>>408
目的もなしに手段だけ見せて適切か不適切かなんて下せる訳ない
あえて言えばコーディングスタイルの問題
宗教論争になるから好きにしろ
0411nobodyさん
2009/02/25(水) 12:11:48ID:???答えられないんじゃないの^^;
0412nobodyさん
2009/02/25(水) 12:54:52ID:Bh8pwxYs商品名をクリックするとクッキーに商品名と金額を記録するようにしたのですが
クッキーに配列で記録することはできるのでしょうか?
$_COOKIE['sinamono']にカートの中身が全部入ってるとして解説1のような構造で取れるようにしたいですが
現在方法が分からず解説2のようにやってます
解説1のようにクッキーに記録するにはどのようにしたらよろしいかアドバイスお願いしまsう
「解説1」
$_COOKIE['sinamono'][0]['name'] これは商品Aの名前
$_COOKIE['sinamono'][0]{'okane'] これは商品Aの金額
$_COOKIE['sinamono'][1]['name'] これは商品Bの名前
$_COOKIE['sinamono'][1]{'okane'] これは商品Bの金額
以下続く・・・
「解説2」
$_COOKIE['sinamono_0_name'] これは商品Aの名前
$_COOKIE['sinamon_0_okane'] これは商品Aの金額
$_COOKIE['sinamon_1_name'] これは商品Bの名前
$_COOKIE['sinamono_1_okane'] これは商品Bの金額
0413nobodyさん
2009/02/25(水) 13:30:48ID:???商品データベースは持っていないのかな?
データベースがあるなら、記録するのは商品コードだけでよいと思う。
記録方法は、COOKIEにそのままなら配列は無理だから、CSV形式とかにする。
だが、一番手っ取り早くて、効率的なのはセッションを使うことだと思う。
0414nobodyさん
2009/02/25(水) 13:33:30ID:???0415nobodyさん
2009/02/25(水) 13:42:15ID:???データベース(テーブル1)
abcdefg 商品ID
abcdefg 商品ID
abcdefg 商品ID
abcdefg 商品ID
データベース(テーブル2)
商品ID 商品名 値段 更新日
商品ID 商品名 値段 更新日
商品ID 商品名 値段 更新日
商品ID 商品名 値段 更新日
0416nobodyさん
2009/02/25(水) 13:44:07ID:???マニュアルの例3に配列での保存方法がある
http://www.php.net/manual/ja/function.setcookie.php#function.setcookie.examples
0417nobodyさん
2009/02/25(水) 13:50:34ID:???おまえかわいいなw
0418nobodyさん
2009/02/25(水) 14:11:49ID:ZVMHOF39pppp.phpファイルが実行され、pppp.phpファイルに書かれた仕様でdata.txtの内容をIEに表示させる。
という、pppp.phpファイルを書く事は可能でしょうか?
可能だとすれば、どんな関数を使えばいいのか教えて下さい。
0419nobodyさん
2009/02/25(水) 14:31:57ID:???0420418
2009/02/25(水) 14:38:39ID:ZVMHOF39phpでは不可能ですか?
0422nobodyさん
2009/02/25(水) 14:45:58ID:???PHPはサーバーサイドってことを理解したうえでの質問と見ておk?
0423nobodyさん
2009/02/25(水) 14:48:21ID:???処理するわけだから関数以前にやることありありだな
0424nobodyさん
2009/02/25(水) 14:52:22ID:???デスクトップにPHPファイルを置いておいて、ドラッグ&ドロップでデータを受け入れて処理して、ブラウザを起動する。
0425418
2009/02/25(水) 14:55:02ID:ZVMHOF39> Windowsでいいんだよな?
はい。
>>422
> ごめん、何がしたいのか理解できない
2ちゃんのスレッド情報の"mail""name""time""id""res"の情報がdata.txtにcvs形式で書かれています。
それを、pppp.phpファイルを使い、自分の好みの表示方法でIEに表示させたいのです。
0426418
2009/02/25(水) 14:56:48ID:ZVMHOF39>テキストファイルをドラッグ&ドロップしてphpファイルを起動させて引数情報を得て処理する
そうです。 これがやりたいのです。
0427nobodyさん
2009/02/25(水) 14:58:55ID:???できなくもないが
色々しないといけない
基本的にPHPはサーバーサイド向けに作られてるから
そういうのしたいならCなりJavaなり使おうな
0428nobodyさん
2009/02/25(水) 15:05:02ID:???はぁ?
デスクトップ環境でPHPが動かないとでも?
レンサバユースしてないアフィリエーターらしい考え方だな。
できなくもないってなら、できる方法を教えてやれよ。知ってるならだが。
0429418
2009/02/25(水) 15:05:11ID:ZVMHOF39了解しました、あきらめます。
0431nobodyさん
2009/02/25(水) 15:27:40ID:???php pppp.php %1
とか書いておけばいいんじゃないの?
0432418
2009/02/25(水) 15:28:03ID:ZVMHOF39じゃあ、ここにあるような、『参照』のボタンでdata.txtを読み込み、↑に書いた作業をさせるのは可能でしょうか?
0434nobodyさん
2009/02/25(水) 15:37:03ID:???0435418
2009/02/25(水) 15:42:27ID:ZVMHOF39こういう風に、data.txtの選択&読み込みが出来たら嬉しいんだけど、htmlにはそういう機能はないのでしょうか?
0439nobodyさん
2009/02/25(水) 16:42:17ID:???成功例はロールバックって書いてあるところかな?
0440nobodyさん
2009/02/25(水) 17:03:04ID:???0441nobodyさん
2009/02/25(水) 23:16:51ID:???オンクリックの中にさらにクオーテーション入ったときとか、functionしても、引数使うから
結局''で囲うからどうにもならね
0442nobodyさん
2009/02/25(水) 23:23:13ID:???0443nobodyさん
2009/02/25(水) 23:28:33ID:+kmtnISzツールなどで未定義の関数や引数の間違いを静的に検出する方法はないですか?
0444nobodyさん
2009/02/25(水) 23:33:06ID:???0445nobodyさん
2009/02/25(水) 23:36:40ID:???function hoge(){
echo 'hoge';
}
hage();
?>
とかあったときに、実行前に関数hageが無い事を検出したいって事だろ。
静的解析とかダセェ事せずに自動テスト使おうぜ。
0446nobodyさん
2009/02/25(水) 23:41:51ID:LSqAU6YZ$dbh->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
以外の書き方って、ある?
------------------------
【環境】
PHP5 + PDO + SQLite3
ようはexec以外のやり方で、って意味。
0447nobodyさん
2009/02/25(水) 23:43:15ID:???クオーテーションがネストしてしまうときに、
どう対処したらいいですか、って意味だろ?
行間読もうぜ
さもないと、30才でホームレスだにょ
0450nobodyさん
2009/02/26(木) 00:27:28ID:tryMdVBhphp.iniのphp_mysql.dllをコメントをはずせばつかえるのでしょうか?
0451nobodyさん
2009/02/26(木) 01:06:52ID:???0452nobodyさん
2009/02/26(木) 01:23:01ID:???自宅でのテスト環境だったら、たぶんそれでいける。
確認はphp.infoを見る。
無料のレンタルサーバーではほとんど
ドライバが入っていない(ので無理)
0453nobodyさん
2009/02/26(木) 01:55:08ID:???スクリプト中でechoとかprint()使ってるのかなぁ。。
なら、heredocにすれば少しは気を使う部分が減るかもしれない。
$text = 'ちんこ' ;
echo <<<__E_O_T__
<button name="tinko" onclick="alert( '{$text}' ) ;" />
__E_O_T__
HTMLとかJavaScriptは完全に別ファイルにして
<button name="tinko" onclick="alert( '<php echo $text ?> ' ) ;" />
のほうがいいと思うけど。
0454nobodyさん
2009/02/26(木) 02:05:21ID:91pUGaxV<input type="text" name="test" value="">←に、test'sと入力して送信すると、
PHP4だと、
$_GET["test"]の値は、test'sとなりますが、
PHP5だと、
$_GET["test"]の値は、test\'sとなります。
送信された時点でエスケープされているのですが、これはphp.iniで変更可能でしょうか?
0455nobodyさん
2009/02/26(木) 02:08:20ID:???マジックなんちゃらやね
0456nobodyさん
2009/02/26(木) 02:20:57ID:???SQLインジェクションの対策で
そういう変なオプションがある。
自動的に'とかを勝手にエスケープしてくれるっていう。
0457nobodyさん
2009/02/26(木) 03:45:51ID:91pUGaxV0458418
2009/02/26(木) 04:00:48ID:GtV/r+inhttp://www.stackasterisk.jp/tech/php/php02_06.jsp
【form.html】
<html><body>
<form action="display.php3" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>
【display.php3】
<html><body>
<?
print $fName;
?>
</body></html>
今日はこれにチャレンジしてみたのですが、うまく動きません。
どこが悪いのかご指摘下さい。
0459nobodyさん
2009/02/26(木) 04:06:33ID:???そこの情報古すぎるから違うとこのほういいよ
0461nobodyさん
2009/02/26(木) 04:08:51ID:7qsKyuky5分ごとに1減らす、ってどう書けばいいの?
cronとかじゃなくて。
0462418
2009/02/26(木) 04:08:56ID:GtV/r+in有り難うございます。
> $_POST['fName']
をドコと入れ替えるのでしょうか?
0463418
2009/02/26(木) 04:10:48ID:GtV/r+inあ、なるほど。.php3ってそういう意味なんだ。
私の環境はPHP Version 5.2.6でしたw
0464nobodyさん
2009/02/26(木) 04:10:55ID:7qsKyuky計算してるようなんだけど。
だから、例えばページが過疎ってて、
3日間アクセスがなかったら、その間は
計算しない感じ。
そんで3日ぶりにアクセスがあったら、
「えーーっと、、、、前回のアクセスから
3日だから、3(日)X24(時間)X12(5分の単位)
減らせばいっかな、、、」
とかって計算しているようなんだけど??
0465418
2009/02/26(木) 04:17:39ID:GtV/r+in0466nobodyさん
2009/02/26(木) 04:21:18ID:???<html><body>
<form action="display.php3" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>
【display.php3】
<html><body>
<?
print $_POST['fName'];
?>
</body></html>
0468nobodyさん
2009/02/26(木) 04:24:25ID:???【form.html】
<html><body>
<form action="display.php" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>
【display.php】
<html><body>
<?
print $_POST['fName'];
?>
</body></html>
0470418
2009/02/26(木) 04:42:12ID:GtV/r+in有り難うございます。
form.htmlこれで入力枠が表示されます。
で、aaaaaとか入力して、ボタンを押すと、真っ白の画面に変わり何も表示されません。
どうしたらいいでしょうか?
0471nobodyさん
2009/02/26(木) 04:44:09ID:???この行はあってる?
それと、
display.php
ファイル名これに変更したから。
0473nobodyさん
2009/02/26(木) 04:51:12ID:???アパッチは起動してる?
ブラウザのURL欄に
http://localhost/form.html
とかって入力しないとだめだよ
ダブルクリックしてブラウザで見たらだめってこと
今はURL欄に
file:///C:/display.php
とかって表示されてるでしょ?それだとだめ
0474418
2009/02/26(木) 04:56:26ID:GtV/r+inつーか、この状態でソースを表示させると、
<html><body>
<?
print $_POST['fName'];
?>
</body></html>
これがマンマ表示されます。
だから、変数の中に何も代入されてなくて、print関数でnullを表示してるのではないでしょうか?
0475418
2009/02/26(木) 04:57:41ID:GtV/r+inhttp://localhost/php/phpinfo.php
これを入れると、紫色の表がずるずる出て来ます。
0476418
2009/02/26(木) 05:01:07ID:GtV/r+inこれではなく、
http://localhost/php/display.php
これになってて、真っ白の状態です。
0477418
2009/02/26(木) 05:24:06ID:GtV/r+in<?
を
<?php
としました。
有り難うございました。
0478418
2009/02/26(木) 06:41:16ID:GtV/r+indisplay.phpが表示されなくて、ファイルのダウンロードってのが表示されるようになったw
0479nobodyさん
2009/02/26(木) 06:56:40ID:zwlsZYIS外部とのIOはどうなりますか?
たとえば、オープンしてあるファイルとか、
DBとの接続とか。
複数プロセスからファイルがオープンされているような状態になるのはまずいんじゃないかと
思うのですが・・
0480418
2009/02/26(木) 06:57:27ID:GtV/r+inちゃんと、http://localhost/php/form.htmlと打つと。
0481nobodyさん
2009/02/26(木) 07:10:01ID:???0482nobodyさん
2009/02/26(木) 08:12:14ID:WDGjNsPdtxt、cgiや、datファイルなどなどに書き込めることがわかったのですが、
ふと、.phpにもインサートできるのかな?と疑問におもいました。
phpに書き込んで、それぞれ変数に格納していって、参照〜
みたいなのを1000件くらいしたときtxt cgi dat などと比べて速度は変わらないでしょうか?
0483nobodyさん
2009/02/26(木) 09:10:36ID:???拡張子が変わったところでプレーンテキストのデータということには変わりないんだろ?
0484nobodyさん
2009/02/26(木) 09:45:22ID:???DBが使えないといっても、txtが使えるならSQLiteぐらい使えるんじゃない?
まぁ、それが無理として、更新が重ならないという条件が付くなら、phpファイルに
var_export($hoge, true);の結果を書きこむ手はある。
速いよ。
しかし、一気に読み込むからメモリは食うけどな。メモリ割り当て次第。
0485nobodyさん
2009/02/26(木) 10:20:05ID:???なんでvar_export?
取り出すときevalすんの?しかも遅いじゃん
serializeの方が安全で高速
0486nobodyさん
2009/02/26(木) 10:24:40ID:???マイクロ秒単位の誤差などどうでもいい
好きにしろ
0487nobodyさん
2009/02/26(木) 10:36:38ID:???0488nobodyさん
2009/02/26(木) 10:45:56ID:???0489nobodyさん
2009/02/26(木) 12:49:24ID:???0490nobodyさん
2009/02/26(木) 12:49:59ID:???dw8から乗り換えるわwwwwwwwww
0491nobodyさん
2009/02/26(木) 12:50:37ID:???0492nobodyさん
2009/02/26(木) 12:54:45ID:hOiLi7h5文字列を1byteじゃなく1bitを取得することってできますか?
0493nobodyさん
2009/02/26(木) 13:06:37ID:???0494nobodyさん
2009/02/26(木) 13:15:31ID:???0495nobodyさん
2009/02/26(木) 13:22:02ID:???はぁ?
試したのかよ。$data = 付けて保存したら、includeするだけだぜ。
unserializeの方が遅いよ。
0496nobodyさん
2009/02/26(木) 14:12:33ID:YD+Z+nCMしかしPHP内で
header("Not Found", true, 404);
と書くと、設定している404エラー画面ではなくブラウザの404エラー画面が出ます。
設定しているエラー画面を表示させるにはどう書けばいいでしょうか?
0497nobodyさん
2009/02/26(木) 14:15:08ID:???0498nobodyさん
2009/02/26(木) 14:22:20ID:???404エラーのファイルになりませんか?
0500nobodyさん
2009/02/26(木) 14:28:09ID:???そのheaderを出した後、自前のエラー画面をreadして出力。
ブラウザは404ヘッダーと404用のソースを受け取る
0501nobodyさん
2009/02/26(木) 14:35:56ID:???その問題に関係あるか分からないけど
IEだと512バイト?以下のエラーファイルは無視して
自前のエラーファイル使うらしい。
インターネットオプションの詳細設定から変えられるけど。
0502nobodyさん
2009/02/26(木) 15:03:08ID:???まとめて失礼します。
たくさん教えてくださってありがとうございます。
無事できるようになりました。
>>501
それは知りませんでした。デザイン頑張ります。
0503nobodyさん
2009/02/26(木) 15:32:12ID:6qh6YAhfなるべく3人グループができるようにします
関数にて処理したいと思います
よろしくおねがいします
function get_group (n) {
/*
計算するところ
*/
return array('3' => ? ,'2' => ?);
}
n=2の場合
array('3' => 0 ,'2' => 1);
n=7の場合
array('3' => 1 ,'2' => 2);
n=9の場合
array('3' => 3 ,'2' => 0);
n=11の場合
array('3' => 3 ,'2' => 1);
0505nobodyさん
2009/02/26(木) 15:35:02ID:???0506nobodyさん
2009/02/26(木) 15:37:50ID:???0507nobodyさん
2009/02/26(木) 15:38:09ID:???0509nobodyさん
2009/02/26(木) 16:03:26ID:6qh6YAhfありがとうございました
function get_group ($n) {
if((int)$n < 2) return false;
$total = (int)$n;
$sannin = 0;
$futari = 0;
$amari = $total % 3;
if($amari === 1) {
$sannin = floor(($total / 3)) - 1;
} else {
$sannin = floor($total / 3);
}
$futari = ($total - ($sannin * 3)) / 2;
return array('3' => $sannin ,'2' => $futari);
}
0510nobodyさん
2009/02/26(木) 16:04:28ID:???0511nobodyさん
2009/02/26(木) 16:06:21ID:???0512nobodyさん
2009/02/26(木) 16:11:53ID:???n=7のときは2人グループが二つできるの?
0513nobodyさん
2009/02/26(木) 16:18:30ID:???0514nobodyさん
2009/02/26(木) 16:21:51ID:???switch ($n) {
case 1 : return false;
case 2 : return array(0, 1);
case 3 : return array(1, 0);
case 4 : return array(0, 2);
case 5 : return array(1, 1);
case 6 : return array(2, 0);
case 7 : return array(2, 1);
・・・略
}
}
0515nobodyさん
2009/02/26(木) 16:32:40ID:???print_r(getGroup($n));
function getGroup($n) {$a=floor($n/3);$b=fmod($n,3);switch ($b) {case 0:return array('3'=>$a,'2'=>0);break;case 1:return array('3'=>$a-1,'2'=>2);break;case 2:return array('3'=>$a,'2'=>1);break;}}
0516nobodyさん
2009/02/26(木) 16:33:56ID:???0517nobodyさん
2009/02/26(木) 16:35:59ID:???あとは好きにしろ
0519nobodyさん
2009/02/26(木) 16:44:24ID:???ループ処理内にreturnもなんか違和感を感じる
0521nobodyさん
2009/02/26(木) 16:53:00ID:???ttp://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&hs=9eG&q=return+switch+%E6%B0%97%E6%8C%81%E3%81%A1%E6%82%AA%E3%81%84&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
0522nobodyさん
2009/02/26(木) 16:59:46ID:???0523nobodyさん
2009/02/26(木) 17:02:39ID:???0525nobodyさん
2009/02/26(木) 17:14:45ID:???もしかして、まじでオレだったりしてな。
0526nobodyさん
2009/02/26(木) 17:21:44ID:???それは、そういう奴をさっさと見抜いてクビにできなかった上司の責任。
ふつうに考えればよいコードを書く方がクビになりにくいのは自明だから、
それができなくて辞めた奴を憎んでもしょうがないべ
逆に、良いコード書いても評価されないならとっとと辞めたほうがよさげ
0527nobodyさん
2009/02/26(木) 17:24:01ID:???0528nobodyさん
2009/02/26(木) 17:29:28ID:???$fp=fopen($filename1,"a");
flock($fp,LOCK_EX);
fwrite($fp,$str)
fclose($fp);
$fp=fopen($filename2,"w");
flock($fp,LOCK_EX);
fwrite($fp,$str)
fclose($fp);
0531nobodyさん
2009/02/26(木) 17:33:13ID:???雑談でネタ振りしてろカス
0532nobodyさん
2009/02/26(木) 17:38:21ID:???function ahoaho( $filename, $filemode, $str ){
$fp=fopen($filename, $filemode); flock($fp,LOCK_EX); fwrite($fp,$str) fclose($fp);
}
ahoaho( $filename1, "a", $str1 );
ahoaho( $filename2, "w", $str2 );
0533nobodyさん
2009/02/26(木) 18:02:42ID:???0534nobodyさん
2009/02/26(木) 18:07:13ID:???class sql {
function getUser() {}
}
class subsql extends sql {
function getParam(){}
}
class sub2sql extends subsql
0535nobodyさん
2009/02/26(木) 18:12:54ID:???この3つからgetUserを呼び出す際
呼び出しを統一のクラスで管理したいのですがsql,subsql,sub2sqlとクラス名が違うためできません。
クラスを上書きみたいなことはできないのでしょうか?
subsqlではなくsqlの追加ファンクションとして別ファイルで定義したいのです
途中で送信してしまい変な分になってます。ごめんなさい
0536nobodyさん
2009/02/26(木) 18:40:47ID:???おまえさん、スレタイが読めないように、クラスのこともわからないんだろうなぁ。
自分が何を聞きたいのかもう一度整理して、ID出してやりなおしてみたらどうよ
0538nobodyさん
2009/02/26(木) 21:31:11ID:???契約の金額が増えるほど
ディスクの容量が減る
ステキなヤフーのホスティングサービス
0539nobodyさん
2009/02/26(木) 22:27:45ID:???俺は逆にswitchの中には極力return以外を置かないようにしてる。
breakも不要になるからbreak忘れ防げるし、全てのcaseが即returnになってれば読みやすい。
0540nobodyさん
2009/02/26(木) 23:09:38ID:???って英語で質問したら、いっぱい回答きて
収拾つかなくなったよ
たすけて
どうしたらいい?
http://stackoverflow.com/questions/590464/how-do-you-write-a-process-to-do-something-every-24-hours
0542nobodyさん
2009/02/26(木) 23:46:35ID:lNT2RMd9http://example/test/
と言う場合、このディレクトリを取得する方法ってないでしょうか?
0545nobodyさん
2009/02/27(金) 00:44:14ID:???そのURL叩いて何らかのPHPスクリプトが実行されるのなら、__FILE__でそのスクリプトへのパスが取得出来る。
そのパスから親ディレクトリ取ってくる。
これで回答になってる?
0547nobodyさん
2009/02/27(金) 01:05:50ID:JrfelggM自分でビルドするしかないんでしょうか?
アプリを配布するにあたって、環境はなるべく本家(に近いところ)から落としてもらおうと思ってたんですけど。
0548nobodyさん
2009/02/27(金) 02:00:01ID:GwQuSr9T0549547
2009/02/27(金) 02:42:59ID:???試しにスクリプトとして実行しても、ヒット数増えなかったし。(一応古いバージョンのなら手元にバイナリがある)
PHPのコンパイル、ワケがわからん。
試しにPHP本体も作ってみるかと思ったんだが、
http://jp.php.net/manual/ja/install.windows.building.php
≫ the Windows build tools をダウンロードし、それを C:\work に展開する
ってあるのも、いきなりリンク切れしてるし。
apcも、とりあえずVCでコンパイルしようとしたら、VCのヘッダファイルでサイズが0の配列ってエラーが出るし。
どこから手をつけたらいいものやら。
0550nobodyさん
2009/02/27(金) 04:12:18ID:lL0tvrw7このページなんだけど、
getにしたのに、リロードしたら
カウントアップしてしまうんだよ
なんで?POSTだったら、そうなるってわかるけど、
getだったら、ならないはずなのに?
0551nobodyさん
2009/02/27(金) 04:15:05ID:???| ここでボケて!! |
|_________|
∧∧ ||
( ゚д゚)||
/ づΦ
0552nobodyさん
2009/02/27(金) 04:18:21ID:lL0tvrw7慎重に選考を進めてまいりましたが、
残念ながらご希望に添えない結果と
なりましたのでご連絡申し上げます。
今後ますますのご健康とご活躍をお祈り申し上げます。
0553nobodyさん
2009/02/27(金) 04:24:52ID:lL0tvrw7<form method=post action=2.php>
そこから元ファイルに飛ばせばフォームデータ消えるから、F5更新しても大丈夫
header("Location: http://example.com/1.php");
↑こんなめんどくさいこと
しないとだめなの?
0554nobodyさん
2009/02/27(金) 04:37:23ID:???HTTPの仕様とブラウザの仕様をもう少し勉強したほうがいい
0555nobodyさん
2009/02/27(金) 05:00:02ID:lL0tvrw70556nobodyさん
2009/02/27(金) 05:01:29ID:???0558nobodyさん
2009/02/27(金) 07:02:13ID:fK1SPmyApcntl_forkを使いフォークして複数プロセスにタスクを分配させました。
memcacheを共有メモリに使った簡易的なmap-reduceです。
プロセスを増やすほど速くなると思ったのですが、
個々のタスクの速度が落ちるだけで、
合計時間が縮まりません。
フォークを高速化目的に使うのは間違っているのでしょうか?
0559nobodyさん
2009/02/27(金) 08:55:05ID:YTPFMmJEmysql_fetch_arrayでやると$row[0]["TEST"]でデータが出てこないというか
[1]["TEST"]なら1、[2]["TEST"]なら2、・・・な値が出てくるんだけどそういうもんなの?・・
0561nobodyさん
2009/02/27(金) 09:25:13ID:???本命はmemcache。memcacheは相当遅いからボトルネックになってもおかしくない。
文字列と数値以外はシリアライズされるからその分重くなる。
単純にタスクが小さすぎるか、多すぎる可能性もある。タスクが小さすぎると、タスク分割/統合のオーバーヘッドが、分割による高速化を超える。
デュアルコアなら2分割以上の分割は無駄。たとえ100分割しても、働く人間が2人なら2つずつしか捌けん。
googleが速いのは、物理的に大量のサーバーに処理を分割してるのと、オーバーヘッドになるタスクの分割/統合自体も分散処理してるから。
いっぺんボトルネックがどこか測定してみ。
xdebugかzend debuggerを使えば、どの処理が時間を食っているか見られる。
0563nobodyさん
2009/02/27(金) 10:51:58ID:???フォークを高速化目的に使うのは基本的には間違いじゃね?
map reduceが目的にしているのは、大量のリソースを使えるという利点。
リソースの余剰がない1サーバー内でフォークしても重くなるだけ。
むしろ、高速化したいならフォークしてしまう処理を減らしたほうがいい。
0564nobodyさん
2009/02/27(金) 11:00:56ID:???ときぐらいだろ
待ち状態(サーバ側負荷ほとんど無し)のあいだに別プロセスで並行して通信できる利点
0565nobodyさん
2009/02/27(金) 13:02:18ID:vxQr4xVsclass sql {
function getUser() {}
}
class subsql extends sql {
function getParam(){}
}
class sub2sql extends subsql{
function getAge(){}
}
sqlしか必要がないファイル、sql,subsqlが必要なファイル、全部必要なファイル
この3つからgetUserを呼び出す際
呼び出しを統一のクラスで管理したいのですがsql,subsql,sub2sqlとクラス名が違うためできません。
クラスを上書きみたいなことはできないのでしょうか?
subsqlではなくsqlの追加ファンクションとして別ファイルで定義したいのです
途中で送信してしまい変な分になってます。ごめんなさい
0566nobodyさん
2009/02/27(金) 13:12:19ID:???$sql_obj = getSqlObj();// 必要に応じて sql,subsql,sub2sqlのインスタンスを返すメソッドね。
$sql_obj->getUser();
0567nobodyさん
2009/02/27(金) 13:13:08ID:/gqrgIY6値として受け取る方法ってありますか?
ソースはこんな感じです↓
class hoge{
private $hoge = array('h','o','g','e');
public function & refHoge(){ return $hoge }
}
$hogeCls = new hoge();
$rtn = $hogeCls->refHoge();
// $rtnをごにょごにょしたいが、$hogeは変えたくない
// 今は↓の処理をやってますが、もっと良いやりかたがあったら教えてほしいです
foreach($hogeCls->refHoge() as $key => $val){ $rtn[$key] = $val; }
0568nobodyさん
2009/02/27(金) 13:14:25ID:laCA4GxDfwriteすると、なぜか「\"」とバックスラッシュが入ってしまいます。
なぜでしょうか?
0573nobodyさん
2009/02/27(金) 14:16:10ID:???array型を参照で受け取る時は、メソッドと代入する側両方が & をつけないとならない
逆に言えば何も修飾せずに代入するだけでコピーになる
$ref = &$hogeCls->refHoge(); // 参照
$copy = $hogeCls->refHoge(); // 値
http://www.php.net/manual/ja/language.references.php
0574nobodyさん
2009/02/27(金) 15:39:39ID:/lC62y00例えば「61.195.146.164」と入力した場合、
「jp.php.net」「pobox.packetbusiness.com」などが返ってくるイメージです。
gethostbyaddr('61.194.146.164')だと
「pobox.packetbusiness.com」しか返って来ませんでした。
0575nobodyさん
2009/02/27(金) 15:47:10ID:???0577574
2009/02/27(金) 15:55:56ID:/lC62y00すみません、言い直します。
IPアドレスからホスト名を取得する方法が
gethostbyaddr以外にありますでしょうか?
0580nobodyさん
2009/02/27(金) 16:42:32ID:???0581574
2009/02/27(金) 16:57:55ID:???逆引きが一意であることと、正引きが複数設定可能なことくらいです。
DNSサーバに「このIPアドレスに正引きされるホスト名を教えてくれ」っていう
問い合わせはできないってことでOKですか?
0583nobodyさん
2009/02/27(金) 17:18:56ID:???「pobox.packetbusiness.com」しか返って来ませんでした。
あたりまえだろ
0584nobodyさん
2009/02/27(金) 17:21:27ID:???0586574
2009/02/27(金) 18:26:24ID:???ありがとうございます、自分の間違えが分かりました。
>>584
はい、そのとおりです。
SPAMメールの処理周りでそのようなことが出来るかどうか
疑問に思ったので質問いたしました。
---
DNSの初歩レベルの質問になってしまい失礼しました。
ありがとうございました。
0587nobodyさん
2009/02/27(金) 20:20:35ID:0buNRA0u$obj2=$obj1;
だと$obj1の参照になってしまうらしい。
$obj2=clone $obj1;
ってやっても、参照が渡されてしまった。助けて欲しい。
0590nobodyさん
2009/02/27(金) 21:56:28ID:kc9E5JKd$encoding[]=mb_detect_encoding($txt,'UTF-8,EUC-JP,SJIS,JIS');
$encoding[]=mb_detect_encoding($txt,'EUC-JP,SJIS,JIS');
$encoding[]=mb_detect_encoding($txt,'SJIS,JIS');
$encoding[]=mb_detect_encoding($txt,'JIS,UTF-8');
print("<pre>");var_dump($txt,$encoding,mb_convert_encoding($txt,'UTF-8','JIS'));die();
↓こうなる
array(3) {
[0]=>
string(5) "UTF-8"
[1]=>
string(6) "EUC-JP"
[2]=>
string(4) "SJIS"
[3]=>
string(3) "JIS"
}
0591nobodyさん
2009/02/27(金) 21:58:31ID:???$txtをそおまま表示しようとすると$とか矢印みたいなのが混ざったような文字化けで表示され、
mb_convert_encoding($txt,'UTF-8','JIS')するときちんと元に戻ります。
4.4.9とXAMPPの5.2.8で確認。
これはどうすれば?
0592590
2009/02/27(金) 22:00:28ID:kc9E5JKdあとvar_dumpの行間違えました。
var_dump($encoding)
です
0593nobodyさん
2009/02/27(金) 22:09:50ID:DvviDUUZ0595nobodyさん
2009/02/27(金) 23:43:16ID:???レガシーシステムも2年以内にはほぼ絶滅すると思う。
ttp://labs.cybozu.co.jp/blog/akky/archives/2008/12/php5-usage-stats.html
人口比だと2008年末時点で10%を割ってる。
0596nobodyさん
2009/02/28(土) 02:50:55ID:1Mc3y2O0正規表現ほど高度でない、
ある程度融通が利く文字列検索をしたいのですが(具体的には文字列から携帯絵文字を探す)
PHPで書くと、正規表現より遅かったり速かったりです。
Cで書かれていれば確実に正規表現より速くなるのではと思うのですが、
そういうextensionありますか?
0597nobodyさん
2009/02/28(土) 02:54:37ID:???0598nobodyさん
2009/02/28(土) 08:05:42ID:???0599nobodyさん
2009/02/28(土) 09:48:19ID:4FEE2no0ライブラリかサンプルコードとかってありますか?
0600nobodyさん
2009/02/28(土) 10:04:08ID:???0601nobodyさん
2009/02/28(土) 10:19:27ID:???パスワードは4文字以上10文字以内にしてくださいということにして
4文字→低
5〜7文字→単一種類の文字(数字or小文字or大文字)での構成は低
2種の文字しか混ざってない場合も低 3種の文字が混ざってる場合は中
8〜10文字→単一種類または2種類の文字での構成は中
3種の文字が混ざってる場合は高
例外として
記号などの特殊文字が混ざってる場合は5文字からでも高
全て同じ文字だと10文字でも低
とまぁこんな仕様を考えて実装すればいいんじゃないでしょうか
0603nobodyさん
2009/02/28(土) 10:35:26ID:???こんな関数あるのかーと思ったが辞書用意しないといかんのね
a
aa
aaa
aaaa
b
bb
bbb
bbbb
こんなん用意してたらキリがないよな
0604nobodyさん
2009/02/28(土) 10:36:33ID:???フリーで配布されているこちらのアップローダを見つけました。
ttp://php.eweb-design.com/1502_up.html
遣ってみたところとてもシンプルで気に入ったのですがphpに関しては
素人で分からないことだらけです。
そこで質問なのですが、アップロードできるファイルを .txt だけに限定する方法
を教えていただけないでしょうか?
それと容量オーバーのときだけに表示されるコメントも付けていただければ幸いです。
現在は1Mまでの制限でそれを超えると「アップロード失敗」とだけ表示されるようです。
次レスにソース部分を明記します。よろしくお願いします。
0605nobodyさん
2009/02/28(土) 10:39:19ID:????>
<?php htmlHeader(); ?>アップロード結果<BR><BR>
<TABLE border="0" width="350" cellspacing="1" cellpadding="3" bgcolor="#999999">
<TR><TD>ファイル名</TD><TD>サイズ</TD><TD>タイプ</TD></TR>
<?php
for($i=0;$i<sizeof($_FILES['fl']['name']);$i++) {
if($_FILES['fl']['name'][$i]=="") continue;
if(file_exists($updir.mb_convert_encoding($_FILES['fl']['name'][$i],"SJIS","EUC-JP"))==TRUE && $_POST['frb']=="true") {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">上書きできません</FONT></TD></TR>
<?php
} elseif(!is_uploaded_file($_FILES['fl']['tmp_name'][$i])) {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">アップロード失敗</FONT></TD></TR>
<?php
} else {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="right"><?php print($_FILES['fl']['size'][$i]); ?>Byte</TD>
<TD align="right"><?php print($_FILES['fl']['type'][$i]); ?></TD></TR>
<?php
move_uploaded_file($_FILES['fl']['tmp_name'][$i],$updir.mb_convert_encoding($_FILES['fl']['name'][$i],"SJIS","EUC-JP"));}
}
?>
</TABLE><BR>
<?php htmlFooter(); ?>
<?php function htmlHeader() { ?>
0606nobodyさん
2009/02/28(土) 10:52:03ID:tCRdHOmU0607nobodyさん
2009/02/28(土) 10:52:36ID:4FEE2no0自力で作ってみます
ありがとうございましたー!
0608nobodyさん
2009/02/28(土) 10:54:20ID:???} else {
の上に下記のように挿入
↓
} elseif( substr( $_FILES['fl']['tmp_name'][$i], strlen($_FILES['fl']['tmp_name'][$i])-4, 4 ) != ".txt" ) {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">拡張子が.txt以外はアップロードできません</FONT></TD></TR>
<?php
} else {
0609nobodyさん
2009/02/28(土) 10:54:41ID:???PHPじゃなくJavaScriptになるが
Extの拡張ライブラリにPasswordMeterってのがあってそれが便利だぞ
http://testcases.pagebakers.com/PasswordMeter/
0610nobodyさん
2009/02/28(土) 11:00:43ID:???0611nobodyさん
2009/02/28(土) 11:11:33ID:tCRdHOmU出来ました!ありがとうございます!
もうひとつだけよろしいでしょうか?
>>605のソースだと何バイトのファイルであったかアップロード後に表示されるのですが、
何行あるのかを表示させる場合はどのようにしたらよいのでしょうか?
つまり、アップロード後にファイル名、バイト数、行数を表示したいのです。
よろしくお願いします。
0612nobodyさん
2009/02/28(土) 11:22:21ID:???<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="right"><?php print($_FILES['fl']['size'][$i]); ?>Byte</TD>
<TD align="right"><?php print($_FILES['fl']['type'][$i]); ?></TD></TR>
↓
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="right"><?php print($_FILES['fl']['size'][$i]); ?>Byte</TD>
<TD align="right"><?php print(count(file($_FILES['fl']['tmp_name'][$i]))); ?>行</TD>
<TD align="right"><?php print($_FILES['fl']['type'][$i]); ?></TD></TR>
未検証だけどたぶん動く
0613nobodyさん
2009/02/28(土) 11:23:55ID:O2VO0P3W拡張子をチェックはします
それとバイナリを見て判断したいと思うのですが、これは完ぺきなチェックができないみたいで困ってます。
どのようなチェックを取り入れたらよろしいでしょうか?
0615nobodyさん
2009/02/28(土) 11:49:31ID:l4IqP0fMまだ使われてるの?
0616nobodyさん
2009/02/28(土) 12:11:52ID:tCRdHOmU本当にありがとうございました。きちんとカウントされてました。
ところで、さきほどの>>608がアップできたと思ったら
テキストでもhtmlでもアップできないんです・・・。
} else { の上にそのまま貼り付けたのですが、、、
<TR bgcolor="#eeeeee">
<TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">アップロード失敗</FONT></TD>
</TR>
<?php
} elseif( substr( $_FILES['fl']['tmp_name'][$i], strlen($_FILES['fl']['tmp_name'][$i])-4, 4 ) != ".txt" ) {
?>
<TR bgcolor="#eeeeee"><TD><?php print($_FILES['fl']['name'][$i]); ?></TD>
<TD align="center" colspan="2"><FONT color="#ff0000">拡張子が.txt以外はアップロードできません</FONT></TD></TR>
<?php
} else {
?>
0619nobodyさん
2009/02/28(土) 12:17:57ID:???あれ、一時ファイルってファイル名変わっちゃうんだっけ?これでどう?
} elseif( substr( $_FILES['fl']['tmp_name'][$i], strlen($_FILES['fl']['tmp_name'][$i])-4, 4 ) != ".txt" ) {
↓
} elseif( substr( $_FILES['fl']['name'][$i], strlen($_FILES['fl']['name'][$i])-4, 4 ) != ".txt" ) {
.htmlがアップできないのはおまえさんの仕様だぞ
0621nobodyさん
2009/02/28(土) 12:27:20ID:tCRdHOmUありがとうございました。バッチリでした!
0622nobodyさん
2009/02/28(土) 13:06:03ID:B+Uhif0K利用者が入力するところはなし、強いて言えばリンクが○○.php?a=○&b=○の形なのでそこをいじることはできますが、
値は1桁の数字のみ通るようにしてかつそれを直接クエリに使うわけではなくswichでWHERE句用の値を選ぶようにしています。
検索もなし、セッションやクッキーは使いません。
DBはSQLiteなので.htaccessで見えないように。
エラー表示も.htaccessでphp_flag display_errors Offに。
こんな感じにしたとして、鯖自体がハッキングされたとかはのぞいてphp(html)やDBの改竄は行われる可能性はありますか?
0623nobodyさん
2009/02/28(土) 13:25:32ID:iUikJcgx$buf=socket_read($out,2048);
で読むことはできるのですが、データが2048byteに足りていないとここで処理がブロックされてしまい、
データが2048byteの倍数でないと必ず最後でとまってしまいます。
長さを1にすれば数万回の無限ループみたいになって処理が遅いし、
長さはともかくいま届いているデータを全て読む、ブロックしない読み込み方法が見当たらなかったです。
socket_recvというメソッドもあるみたいですが、ドキュメントもまだないし
これがない時代も当然できていたはずのことなので、きっとreadで何とかする方法があるんだと思いますが…。
0624nobodyさん
2009/02/28(土) 13:35:50ID:???悪魔の質問だな。
脆弱性の存在を示す事は可能だが、脆弱性が存在しない事を証明するのは至難の業。
セキュリティ対策の多くが「入力時点で全ての値を検証」「出力時点で全てエスケープ」のようにシステマチックなのはその辺に理由がある。
書かれている部分は安全に思える。ツボも押さえているし、他の部分で変な事をしない限り問題ないだろう。
強いて言うなら「入力する場所はなし」という言い方が若干不安かな。
hiddenだろうがなんだろうが全ての値は自由に改竄される、という前提でコーディングする必要がある。
0625nobodyさん
2009/02/28(土) 13:47:32ID:Ho2Fi0s+今まではサーバーとルータだけでやっていたのですが今回ハブを使いPCをもう一台LAN内に追加しました。
そしたら自分のサイトの表示が極めて遅くなり
ページを切り替える毎に3秒位かかります。
LAN内だけかと思いネットカフェで試しましたがやっぱり遅かったのです。
ちなみにサーバーからLANケーブルを抜くと今まで通り高速で表示されます。
そのため初めはLANの設定の問題だと思ったのですが
同じサーバー内のPHPを使ったページでも速いページと遅いページがある事に気がつきました。
しかし遅いページがなぜこれ程遅いのかが色々いじってみたのですが分かりません。
おそらくPHPの使用関数なんかの問題だと思うのですが。
何で?知ってるやつ教えてや。
逆引きとかはしてないです。
0626nobodyさん
2009/02/28(土) 14:06:43ID:???0627nobodyさん
2009/02/28(土) 14:09:33ID:B+Uhif0Kありがとうございます。
>強いて言うなら「入力する場所はなし」という言い方が若干不安かな。
付け加えるとjavascriptも使わないのでプルダウンで選択とかもありません。
ほんとにリンクをクリックしていくぐらいです。
ただまあ思い当たるところは列挙しましたが洩れもあるかもしれませんし、
どちらにしろhtmlspecialchars他一応の処理はしています。
完全にとはいえないが大まかに改竄の入り口は認識できてるとみていいもんでしょうか。
0629nobodyさん
2009/02/28(土) 14:46:51ID:AWhVh/M4ありがとうございます
getimagesizeでは不十分と認識しておりますので他にチェックする方法をご存知でしたらご教示おねがいします
0630613
2009/02/28(土) 14:47:33ID:8fTqh/0P0631nobodyさん
2009/02/28(土) 15:04:01ID:???いや、getimagesizeでいいんだよ
それに加えて、画像の保存先ではスクリプトの実行ができないようにすればおk
0634nobodyさん
2009/02/28(土) 16:05:48ID:???哲学的な言い方をすると、
不安に思うようなら、脆弱性はあるかもしれないね。
他人に保証を求めるとしたら、それもまた脆弱性のひとつかもしれん。
セッションでもクッキーでも環境変数でも、それぞれがどんな形で渡ってくるか、
そして渡しているか、ブラウザの挙動はどうか、そういう理解度を深めていくしかないんじゃないか?
0637nobodyさん
2009/02/28(土) 17:01:27ID:???0638nobodyさん
2009/02/28(土) 17:05:42ID:???きょうび、CMSのコミッターですらその程度の認識をしてたりするから困るよな。
実行権限をはく奪って、もともとPHPは読み込み権限で動くわけだし。
画像ファイルにスクリプトインジェクションされるってのをケアしないんだろうし。
0639625
2009/02/28(土) 17:18:45ID:Ho2Fi0s+いや、最初はそう思ったのですがどうやらPHPの関数により速度が遅くなってるようなんです。
というのもPHPの関数が少ないページは高速に表示するからです。
ただ、何の関数が遅い原因なのかが割り出せません。
何なのか分かる奴よろしく。
0640nobodyさん
2009/02/28(土) 17:19:10ID:???ttp://websec-memo.blogspot.com/2007/06/php-getimagesizephp.html
0641nobodyさん
2009/02/28(土) 18:04:55ID:???つ xdebug.profiler_enable = 1
あと、Windows機があるならWinCacheGrid
0642nobodyさん
2009/02/28(土) 18:05:36ID:???0643nobodyさん
2009/02/28(土) 19:42:43ID:Lzy3hD4E画像のファイルサイズが0kb になって 保存できない・・・orz
ファイル名指定
header("Content-Disposition: attachement; filename=foo.jpg");
をつけても0kb・・・
どうしたらいいんだぁ・・・
0644nobodyさん
2009/02/28(土) 20:27:57ID:???ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!出てこい>>635-636
「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
0646nobodyさん
2009/02/28(土) 22:32:57ID:???拡張子は別にして
0647nobodyさん
2009/02/28(土) 22:35:26ID:???そこから、
> それ以外にヘッダで判別できるところあんの?
っていう展開が意味不明
0649nobodyさん
2009/02/28(土) 22:49:44ID:???0650nobodyさん
2009/02/28(土) 22:54:24ID:???ヘッダの一部しか見てない って、他にも判別できる部分があるようにとれない?
ヘッダの(他にも判別するところはあるけど)一部しか見てない なのか
ヘッダの一部(で)しか見てない なのかってことね
0654nobodyさん
2009/03/01(日) 00:31:01ID:???これで回避できるとも読めるわけだが、どうなんだろう。
0655nobodyさん
2009/03/01(日) 00:31:30ID:???0658nobodyさん
2009/03/01(日) 01:09:42ID:???最終的にブラウザで表示できるんだから何でもいいだろ
0659nobodyさん
2009/03/01(日) 01:18:56ID:???0660nobodyさん
2009/03/01(日) 02:35:03ID:eUPI6W900661nobodyさん
2009/03/01(日) 03:05:47ID:ircjQ+OXtxtファイルや、htmlファイルは、
ユーザーにrを渡さないと
ブラウザで閲覧したときに見れないんだけど、
.phpファイルは、なぜか
ユーザーに渡す権限が0でも
ブラウザでアクセスしたときに、
動作してしまうんだけど、これってなんで?
0663nobodyさん
2009/03/01(日) 03:47:49ID:ircjQ+OXオーナー | グループ | 末端ユーザー
こういう概念です
0664nobodyさん
2009/03/01(日) 03:50:25ID:ircjQ+OX「CGIに関しては純粋にSuExecでの動作」
「CGI版をラッパーを使用し所有者の権限にて動作させる」
と書いてあります。
0665nobodyさん
2009/03/01(日) 04:31:12ID:???答えが書いてあるよ〜。
Webサーバの一番基本的な動きは分かってるかな?
ブラウザが「このファイルくれ!」ってWebサーバにいうと
Webサーバは自分の中から探して、読みこんで、「処理して」、結果をブラウザに返す。
このときWebサーバもユーザとして動いてる。
こんだけ。
0666nobodyさん
2009/03/01(日) 06:55:07ID:ircjQ+OXMySQLの例ばっかりなのだが、
これってSQLiteでもできるんだよね?
コードはどう書けばいいのかな?
特にDSNのあたり。
http://oshiete1.goo.ne.jp/qa3008843.html
このサンプルで、DSNをSQLiteに変更したものを
書いてもらえますか?
0667nobodyさん
2009/03/01(日) 06:59:03ID:ircjQ+OXpear::authを使うことの是非についても
意見を述べてもらえますか?
pearのページ見たら、認証のカテゴリだけで7つも
モジュールあるじゃないですか。
0669nobodyさん
2009/03/01(日) 11:45:18ID:???質問
の人な気がするぜ
0670nobodyさん
2009/03/01(日) 13:13:02ID:???0671nobodyさん
2009/03/01(日) 13:42:43ID:???0672nobodyさん
2009/03/01(日) 14:46:48ID:lFCp+aHu(ググろうにも「<?=?>」のようなワードでは検索できなくて・・・)
0673nobodyさん
2009/03/01(日) 14:50:54ID:lFCp+aHu0674nobodyさん
2009/03/01(日) 17:35:53ID:Jolk/1HKが含まれているかどうかを調べるにはどのようにするのがよいのでしょうか?
0675nobodyさん
2009/03/01(日) 17:41:35ID:???foreach
preg_match
0676nobodyさん
2009/03/01(日) 17:43:35ID:???strstrあたりでいいと思う
0677nobodyさん
2009/03/01(日) 17:43:53ID:???0678nobodyさん
2009/03/01(日) 17:46:03ID:Jolk/1HK0680nobodyさん
2009/03/01(日) 17:51:32ID:???0681nobodyさん
2009/03/01(日) 18:02:38ID:qwqgUI7e$list = file("hoge.txt");
for ($i = 0; $i < count($list); $i++) {
if (strpos($list[$i]), "hogehoge") {
echo $i . "行目にhogehogeが見つかりました<br>\n";
}
}
これと同じことをできるのなら俺もぜひ教えてもらいたい
0682681
2009/03/01(日) 18:04:25ID:???$i行目じゃなくて$i+1か
0683nobodyさん
2009/03/01(日) 18:20:01ID:???なんじゃこりゃ?
0685681
2009/03/01(日) 18:38:49ID:???for ($i = 0; $i < count($list); $i++) {
if (preg_match("/hogehoge/", $list[$i])) {
echo $i+1 . "行目にhogehogeが見つかりました<br>\n";
}
}
それじゃこれで
0686nobodyさん
2009/03/01(日) 18:41:12ID:???動作には問題ないけど
for内にcount($list)を入れると、ループ毎にcountが実行されるので、
$cnt = count($list);
$i < $cnt
みたいにするといいよー
0687nobodyさん
2009/03/01(日) 19:29:13ID:???preg_matchじゃだめだった
無駄にfileとforeachしなくてもpreg_match_all使えば一行で住む
0688nobodyさん
2009/03/01(日) 19:42:54ID:???0689nobodyさん
2009/03/01(日) 20:20:12ID:???0690nobodyさん
2009/03/01(日) 22:47:16ID:Jolk/1HKdatファイル(数字10桁)かどうかを調べるにはどうすりゃいいの?
これだとダメポ。
$datfile = 1234567890.dat;
$number = str_replace(".dat", "", $datfile);
if ($number != \d{10}){
print "2chのdatじゃない";
} else {
print "おk";
}
0691nobodyさん
2009/03/01(日) 22:52:53ID:???0692nobodyさん
2009/03/01(日) 22:54:09ID:???$datfile = "1234567890.dat";
if (preg_match("/^\d{10}\.dat$/", $datfile)) echo "おk";
else "2chのdatじゃない";
0693nobodyさん
2009/03/01(日) 22:59:06ID:Jolk/1HK0694nobodyさん
2009/03/01(日) 23:04:31ID:???0695nobodyさん
2009/03/01(日) 23:16:30ID:A3j42u8WPHPにZIPを解凍する関数ってあるのでしょうか?
やっぱり、フォームのfile要素をいくつも用意して
1つずつ選択して送信する方法しかないのでしょうか?
0696nobodyさん
2009/03/01(日) 23:21:54ID:???zipだけでもArchiveTarとかArchiveZipとかpecl zipとか色々
0697nobodyさん
2009/03/01(日) 23:26:26ID:???0698nobodyさん
2009/03/01(日) 23:27:29ID:???0700nobodyさん
2009/03/01(日) 23:38:13ID:???暗号化ZIPには対応してないようだけど
0701nobodyさん
2009/03/01(日) 23:40:37ID:???0702nobodyさん
2009/03/01(日) 23:50:07ID:???回答もらったらお礼ぐらい書けよksg
0706nobodyさん
2009/03/02(月) 00:56:54ID:???0707nobodyさん
2009/03/02(月) 06:17:58ID:???一部の文を変更するプロキシみたいなの
作りたいんだけど、できる?
「この商品を買った人はこんな商品も買っています」
↓これを
「この商品を買ってしまったかわいそうな人はこんな商品も買っています」
みたいに変更して表示したいんだけど。
チラ見だと気がつかないって言う。
よーく見ると違いがわかるっていう。
0709nobodyさん
2009/03/02(月) 06:36:54ID:xA87Qrbu指定したMD5(またはSHA-1)の値を持つファイルを取得したいのですが、
なにかよい方法はないでしょうか?
やはり、一度全部取得して、
ひとつひとつ確認する必要があるのでしょうか?
よろしくお願いします。
0710nobodyさん
2009/03/02(月) 08:01:04ID:Kxwrby6q$i = 2;
while($files[$i] != null ):
$files_end = $i;
$i++;
endwhile;
と、docフォルダに入っているファイル数をしらべるスクリプトですが、
while($files[$i] != null ):
の行で
Notice: Undefined offset: 5
と、Noticeが出て来ます。
この、Noticeを消すにはどうしたらいいでしょうか?
0712nobodyさん
2009/03/02(月) 08:05:07ID:???使えたらかっこいいんだろうなと思って
使いたい使いたいと思ってるけど結局使わないまま終わってしまう
0715nobodyさん
2009/03/02(月) 10:10:58ID:???OUT => while($files[$i] != null ):
IN => while( isset($files[$i]) ):
0716nobodyさん
2009/03/02(月) 10:18:29ID:???無理して使わなくていいよ
所詮プログラミング手法の1つに過ぎない
世の中には全てオブジェクトにしないと扱うことができない
言語も存在するがPHPはそうではない
使いどころを意識してるうちは概念も理解できないはずだ
オブジェクト指向が何かとかは考えないで
まずはオブジェクトにしないとプログラムが動かないと思ってはじめてみるといい
0717nobodyさん
2009/03/02(月) 12:30:23ID:???0718nobodyさん
2009/03/02(月) 12:39:55ID:???0719nobodyさん
2009/03/02(月) 13:33:46ID:qotKuiB9class hello
{
function asa(){$word="おはよう";return $word;}
function hiru(){$word="こんにちは";return $word;}
function yoru(){$word="こんばんは";return $word;}
}
これを呼び出して挨拶を表示するときにこのように書きました
$obj=new hello;
echo $obj->asa;
クラスの使い方としてこのような用途で使用するのは正しいでしょうか?
0720nobodyさん
2009/03/02(月) 13:47:22ID:yL43OBtlやはり、どうしてもクラス数が膨大になり、1ファイル1クラスにするので、
読み込むファイル数も膨大になってくるのですが、余程のことがない限り速度は気にするほど変わらないと考えても構いませんか?
0721nobodyさん
2009/03/02(月) 13:56:03ID:???0722nobodyさん
2009/03/02(月) 13:56:47ID:???0723nobodyさん
2009/03/02(月) 14:02:29ID:Kxwrby6qおお、ありがとうございます。 noticeが消えました!!
0724nobodyさん
2009/03/02(月) 14:03:01ID:???class hello {
function greeting(){ return $this->word; }
}
class asa extends hello {
var $word = "おはよう";
}
class hiru extends hello {
var $word = "こんにちは";
}
$obj = new asa(); echo $obj->greeting();
$obj = new hiru(); echo $obj->greeting();
こういうほうがより現実的。挙動を変えたければgreetingだけをいじればよいので。
0725nobodyさん
2009/03/02(月) 14:13:16ID:???0726nobodyさん
2009/03/02(月) 14:29:02ID:Be8+CZVlPDO::PARAM_STRとPDO::PARAM_INTを同じbindで使いたくて
PDO::PARAM_STR|PDO::PARAM_INTてやってみたのですが、
こちらでエスケープしたエラーになってしまいます。
int、str片方づつならデータが取得できるのですが・・
どのような手段でできますでしょうか
よろしくお願いします
0727nobodyさん
2009/03/02(月) 14:53:55ID:yL43OBtl勉強がてらのものなので、クラス分けなどが、まだうまくできてないのかもしれません。
ありがとうございました
0728nobodyさん
2009/03/02(月) 14:55:08ID:v7Ja9zye<form>
<input type="radio" name="s" value="0" />ページ1
<input type="radio" name="s" value="1" />ページ2
<input type="radio" name="s" value="2" />ページ3
</form>
http://www.example/?s=1でアクセスしてきたとき、ページ2のラジオボタンを選択済みにさせたいのですが
どのように書けばよろしいのでしょうか?
0729nobodyさん
2009/03/02(月) 15:00:03ID:???0730nobodyさん
2009/03/02(月) 15:00:07ID:???<input type="radio" name="s" value="1" <?if($_REQUEST["s"]=="1"){ echo "checked"; }?> />ページ2
<input type="radio" name="s" value="2" <?if($_REQUEST["s"]=="2"){ echo "checked"; }?> />ページ3
0731nobodyさん
2009/03/02(月) 15:02:03ID:v7Ja9zyeありがとうございます
0732nobodyさん
2009/03/02(月) 15:13:43ID:Hva8cjMKSJISに対応する文字がない時はU+XXXXという文字列に変換されますが、
このXXXXはどういう法則に従って算出されているのでしょうか?
0734nobodyさん
2009/03/02(月) 16:54:20ID:v7Ja9zyeキャッシュの作り方は以下のやり方でよろしいでしょうか?
キャッシュファイルがなかったら→キャッシュファイル作成→出力
キャッシュファイルがあったら→キャッシュファイル読み込み・出力
0735nobodyさん
2009/03/02(月) 19:33:12ID:???PDO::PARAM_STR|PDO::PARAM_INTなんて指定が仮に出来たとして
どんなSQL文になるのが望みなんだ
>>734
ok
後はキャッシュの有効期限やキャッシュの保存手段を設定できるようにしたりと
使いやすいようご自由に
0736nobodyさん
2009/03/03(火) 00:38:28ID:ttnGHap+サンプルを真似しながら、何とか自分なりに扱えるようにはなったのですが、
見たことの無い記述法に戸惑ってます。
$DB = NewADOConnection($sql_type);
$DB->PConnect($server, $user, $password, $dbname);
$result = $DB->Execute('SELECT * FROM blog_articles');
echo "<pre>";
print_r($result->GetArray());
echo "</pre>";
↑このコードの中の、
$result->GetArray();
の部分です。
メソッド(変数);
とかだったら普通に見慣れた形なのですが、
変数->メソッド();
となっているようで、よくわかりません。
これはどういう記述なのでしょうか?
0737nobodyさん
2009/03/03(火) 00:42:29ID:???その本に書いてないの?
0738nobodyさん
2009/03/03(火) 01:07:31ID:???0739nobodyさん
2009/03/03(火) 01:11:49ID:???$DB->PConnect($server, $user, $password, $dbname);
も一緒じゃんw
var_dump($result);してみ
$resultが何なのか分かるから
0740736
2009/03/03(火) 02:10:24ID:ttnGHap+自分の知っているパターンと勘違いしていたようです。
クラススメソッドの呼び出しというと、例えば
// インスタンスの作成
$obj = new MyDBClass();
// メソッドの呼び出し
$obj->ConnectDB();
// プロパティの呼び出し
var_dump($obj->tables);
みたいなのはわかります。
ですが、ADODBのサンプルコード(>>736のような)を見ても、
newを使ってのインスタンスの作成をしているようには見えません。
それにも関わらずアロー演算子を使うのは、どのような場合なのでしょうか?
0741736
2009/03/03(火) 02:15:34ID:ttnGHap+ADODB_mysql Object
(
[databaseType] => mysql
[dataProvider] => mysql
// 中略
)
というようになってました。
普通の配列だと
Array
(
[0] => 20081231
[1] => 20090101
)
のようになると思うんですが、変数の型自体が違うようです。
0743nobodyさん
2009/03/03(火) 02:33:15ID:???配列は関係ない
class Ichiro{
function getResult(){ return "5タコ"; }
}
class Samurai{
function getCaptain(){ return new Ichiro(); }
}
$obj = new Samurai();
$obj2 = $obj->getCaptain();
echo $obj2->getResult(); ←これ
↑こんなんと同じ。つまり
$result = $DB->Execute('SELECT * FROM blog_articles');
でインスタンス(newされたクラス)が返ってきてるんだよ
0744736
2009/03/03(火) 02:46:22ID:ttnGHap+ありがとうございます!
自分の理解力の無さから、まだ飲み込めてはいませんが、
何となく道筋は見えた気がします。
ゆっくり理解していきたいと思います。
0745nobodyさん
2009/03/03(火) 02:53:56ID:???0746nobodyさん
2009/03/03(火) 10:47:55ID:???0748nobodyさん
2009/03/03(火) 10:58:02ID:???phpは旧世代の遺物だよな
0749nobodyさん
2009/03/03(火) 11:15:43ID:???0750nobodyさん
2009/03/03(火) 11:36:15ID:???0751nobodyさん
2009/03/03(火) 11:38:44ID:e2rK5fJ7で、れっつPHPの写メール掲示板を設置すると500エラーになります。
他の鯖だと大丈夫なんですが、この場合php.iniの設定を変えないといけないのでしょうか?
0752nobodyさん
2009/03/03(火) 11:41:40ID:EqwXxIO6パーミッションの問題かと思われ
どこの鯖かわからんが、スクリプトに実行権限与えてる?
話変わるけど、PHPのswitchって数値以外にも文字列で判別できるけど皆使ってる?
Javaで数値での判別に慣れてしまったせいか、PHPのswitchって何か違和感あるなぁ
0753nobodyさん
2009/03/03(火) 11:44:42ID:???0754nobodyさん
2009/03/03(火) 11:46:36ID:EqwXxIO6今ググったらできるのか、知らなかった
Javaの改造してたとき、switchで必ず数値ばかりだったからそういう仕様なのかと思ってた
0755751
2009/03/03(火) 11:47:00ID:e2rK5fJ7パーミッションも正しいと思うんですが、いろいろ変えてみてもエラーのままです。
0756nobodyさん
2009/03/03(火) 11:47:04ID:???0757nobodyさん
2009/03/03(火) 11:59:09ID:???switch ($hoge) {
case "1":
break;
}
?
switch (true) {
case ($hoge === "1"):
break;
}
0758751
2009/03/03(火) 12:04:16ID:???0759709
2009/03/03(火) 12:17:13ID:sEyF02beどなたかお願いできないでしょうか?
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
何かいいアイデアはないでしょうか?
0760nobodyさん
2009/03/03(火) 12:19:10ID:???方法2:値の入ったファイルを作成した時に、リストに書き込む
以上
あとはない
0761709
2009/03/03(火) 12:26:35ID:sEyF02beファイル名とMD5の値をデータベースに格納(方法2?)して
管理することにします。
ありがとうございました。
0762nobodyさん
2009/03/03(火) 12:28:02ID:???0763nobodyさん
2009/03/03(火) 12:28:24ID:???0764nobodyさん
2009/03/03(火) 12:29:04ID:???ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
ファイル名をMD5(SHA-1)にしてしまう、という方法以外で、
0765nobodyさん
2009/03/03(火) 12:55:24ID:???0766nobodyさん
2009/03/03(火) 14:43:30ID:qqtWuzToどうやって禁止にしているの?
ttp://nanapi.o0o0.jp/moemoe/
0767nobodyさん
2009/03/03(火) 14:44:33ID:???0768nobodyさん
2009/03/03(火) 15:09:32ID:???0771nobodyさん
2009/03/03(火) 15:22:13ID:???0772766
2009/03/03(火) 15:33:49ID:???だからそれを真似たいんだよ。
0773709
2009/03/03(火) 15:46:24ID:sEyF02beMySQLのカラムにPHPでserializeした配列を入れてあるとき、
たとえば、
array(
'id' => 1,
'username' => 'hogehoge',
'password' => 'fugafuga'
);
というような配列をシリアライズしたものがuserテーブルのdataカラムに入ってるとして、
dataのなかのusernameがxxxのものを取り出すといったことはできますでしょうか?
正規化しろ!というのはなしでお願いします。
スレ違いでしょうかね;;
よろしくお願いします。
0775nobodyさん
2009/03/03(火) 16:17:45ID:tFVuo7P+例えばこのスレは
http://pc11.2ch.net/php/dat/1234958956.dat
で、これをそのままコピーし任意のフォルダに保存するということです。
0777nobodyさん
2009/03/03(火) 16:22:28ID:???なんでそんなことをしようとするのか分からん
>>775
User-Agentにmonazillaが含まれないと駄目じゃなかったけ?
0779nobodyさん
2009/03/03(火) 17:59:07ID:???「ttp」だけを「http」に置換させたいのですが、単純に行うと
httpが「hhttp」と置換されてしまいます。
何かいい方法はないでしょうか?
0780nobodyさん
2009/03/03(火) 18:07:02ID:???0781nobodyさん
2009/03/03(火) 18:10:01ID:???2ch.net←これブラウザに貼り付けて来いよ
0783nobodyさん
2009/03/03(火) 18:12:54ID:???0786nobodyさん
2009/03/03(火) 19:38:44ID:P96ap3nl100円の商品がありまして、、この商品の消費税込みの料金を計算します
書き方は以下のような形でよろしいでしょうか?
ここはこうしたほうがいいなどありましたらご教示お願いします
class keisan
{
$tax=1.05;
function shouhizei($okane) {
return $kekka = $okane * $tax;
}
}
$obj = new keisan;
echo $obj->shouhizei(100);
0787nobodyさん
2009/03/03(火) 19:45:18ID:???0788nobodyさん
2009/03/03(火) 19:45:59ID:???0789766
2009/03/03(火) 19:50:41ID:???Irvineで取れるのかい?
スレッドを開始します
nanapi.o0o0.jpが見つかりました
nanapi.o0o0.jp(59.106.13.205):80にconnect成功しました
サーバへリクエスト送信
GET /moemoe/futaba.php?res=355430 HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Connection: close
Host: nanapi.o0o0.jp
Referer: http://nanapi.o0o0.jp/moemoe/
Accept: */*
サーバからのレスポンス
HTTP/1.1 302 Moved Temporarily
X-Powered-By: PHP/5.2.8
Location: http://nanapi.o0o0.jp/moemoe/index.html
Transfer-Encoding: chunked
http://nanapi.o0o0.jp/moemoe/index.htmlにリダイレクトします
0790nobodyさん
2009/03/03(火) 19:52:03ID:???0792nobodyさん
2009/03/03(火) 22:45:40ID:???配列をserialize()した結果は文字列だから
'username' => 'hogehoe'
のとこがどう表現されてるかがわかれば
その文字列使って like すれば列は取れるのでわ?
0793nobodyさん
2009/03/03(火) 22:50:46ID:???やや変態ちっくかも知れないけど
$a[ $_REQUEST['s'] ] = 'checked="checked"' ;
<input type="radio" name="s" value="0" <?php echo $a[0] ?> />ページ1
<input type="radio" name="s" value="1" <?php echo $a[1] ?> />ページ2
<input type="radio" name="s" value="2" <?php echo $a[2] ?> />ページ3
なんてしてみたり。
0794nobodyさん
2009/03/03(火) 22:51:52ID:???なんじゃこりゃ
0796nobodyさん
2009/03/03(火) 22:56:53ID:???0798nobodyさん
2009/03/03(火) 23:03:27ID:???なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
0800nobodyさん
2009/03/03(火) 23:10:56ID:???0801nobodyさん
2009/03/03(火) 23:18:39ID:???どういう経緯でそうなったのかは資料を漁れば可能だろうが。
0802nobodyさん
2009/03/03(火) 23:20:43ID:???それ$tax取れるんか?
class keisan
{
var $tax=1.05;
function shouhizei($okane) {
return $okane * $this->tax;
}
}
にするべき
0803nobodyさん
2009/03/03(火) 23:22:15ID:???なにか勘違いしてる気がするなぁ。。
例えば,optionタグなら
<option selected="selected">
だよ。
0804nobodyさん
2009/03/03(火) 23:26:33ID:???何故かって言われたら、XMLの決まりだからとしか答えられないかなぁ。。
http://www.w3.org/TR/xhtml1/#h-4.5
0805nobodyさん
2009/03/03(火) 23:29:28ID:???HTML なら checked だけでいいんだけど、XHTML はそういう仕様になってるだけのこと
「なんじゃこりゃ」って単に知らなかっただけでしょ
そんで記述に無駄があると後付けしてくるなんてかっこ悪いよ^^;;;;
0806nobodyさん
2009/03/03(火) 23:30:40ID:???動かすだけなら、3行目を>787、5行目はreturn $okane * $this->tax;
勉強中のようなので少しだけ高めのボールで返す。俺ならこういうクラスにする。
class Item{
private $tax_rate = 1.05;
private $price;
private $name;
function __construct($name, $price){
$this->name = $name;
$this->price = $price;
}
function taxedPrice(){
return $this->price * $this->tax_rate;
}
}
$i_phone = new Item('IPhone', 30000);
$x_box = new Item('XBOX', 40000);
echo $i_phone->taxedPrice(); // 31500
echo $x_box->taxedPrice(); // 42000
0807nobodyさん
2009/03/03(火) 23:31:51ID:???0808786
2009/03/03(火) 23:42:14ID:???どれも勉強になります
ありがとうございます
0809nobodyさん
2009/03/03(火) 23:42:41ID:???0810nobodyさん
2009/03/03(火) 23:48:56ID:???今ならアフィリエイトつけても許すから誰か講座サイトやってください
0811nobodyさん
2009/03/04(水) 00:52:53ID:TJHoC0pm自分のサーバーからだと別のページに飛んでくれます。
しかし外部のPCからそのページにアクセスすると、別のサイトには飛ばずにうちのサーバーのルートに飛びます。
何でですか?
0813nobodyさん
2009/03/04(水) 03:50:16ID:pWv0VEvt0814nobodyさん
2009/03/04(水) 03:51:03ID:???0815813
2009/03/04(水) 03:54:02ID:pWv0VEvt画面をクリア、真っ白にしたいのです。
0816nobodyさん
2009/03/04(水) 04:16:39ID:???0817nobodyさん
2009/03/04(水) 04:18:34ID:???0818813
2009/03/04(水) 04:24:16ID:pWv0VEvt0819nobodyさん
2009/03/04(水) 04:28:27ID:???0820nobodyさん
2009/03/04(水) 04:29:25ID:???0821813
2009/03/04(水) 04:39:39ID:pWv0VEvt具体的にどうすればいいのか教えて下さい。
0822nobodyさん
2009/03/04(水) 05:11:41ID:???0824nobodyさん
2009/03/04(水) 06:42:13ID:???/*
$hoge = "hoge";
・・・
・・・
・・・
*/
?>
0825nobodyさん
2009/03/04(水) 07:42:58ID:???<?php
$a=get_defined_constants();
foreach($a as $a=>$b){
print "[$a] => [$b]";
print "<br>";
}
?>
を実行すると大変なことになる
0826nobodyさん
2009/03/04(水) 11:21:01ID:fYg53wemSJIS-winをUTF8に変換した時に
W932+とかBAD+とかJIS+とかで始まる文字列になる場合がありますが、
そういう時どう処理していますか?
0827nobodyさん
2009/03/04(水) 11:30:23ID:???0828nobodyさん
2009/03/04(水) 13:02:05ID:???0829nobodyさん
2009/03/04(水) 13:14:42ID:???0830nobodyさん
2009/03/04(水) 13:17:13ID:???0831nobodyさん
2009/03/04(水) 13:30:50ID:???0832nobodyさん
2009/03/04(水) 13:38:25ID:???0833nobodyさん
2009/03/04(水) 13:44:27ID:???経験者のみ回答して下さい
0834nobodyさん
2009/03/04(水) 13:54:05ID:???0835nobodyさん
2009/03/04(水) 16:21:34ID:???0836nobodyさん
2009/03/04(水) 16:33:55ID:???0837nobodyさん
2009/03/04(水) 16:38:37ID:???|Back |
|space|
└──-┘
0838nobodyさん
2009/03/04(水) 19:20:19ID:F5lJuesophpはc:\php5にインストールしてます
このディレクトリの中にphp.exeがあります
コンソールでphpを使って「こんにちは」と表示させたいのですがパースエラーになってしまいます
c:\php5>php.exe -r echo "こんにちは";
どのように書き直したらよろしいでしょうか?
0839nobodyさん
2009/03/04(水) 19:26:35ID:???0840838
2009/03/04(水) 19:35:43ID:???コード自体を囲まないといけないのですね勉強になりました
0841nobodyさん
2009/03/04(水) 19:48:31ID:???UnicodeのPrivate Use Areaと相互変換したり
mbstring.substitute_character = none にしてばっさり切り落としてしまうなり
要求次第
0842nobodyさん
2009/03/04(水) 20:55:52ID:P0bBQCst0843nobodyさん
2009/03/04(水) 21:15:34ID:???送出するデータによるし、どっちが得意かにもよる。
例えばJavaScriptの比重を極限まで減らしたいなら、PHPでHTMLまで生成して送りつけたほうが当然JSでやる事が減る。
それと、変更が入った場合の修正の手間だな。
JSONだと、データが追加になったらJSとPHP両方修正が必要になる。
PHPでHTMLを書き出すと、画面表示の変更の際にPHPに手を入れないといけなくなる。
0844nobodyさん
2009/03/05(木) 09:51:15ID:HLFGjq1Sifの中で、デバッグ時、意図的に以降のコードを残したいとき等にifから抜けさせる方法はどうしたらいいでしょうか?
具体的には(実際にはbreakが通りませんが)下記のようなコードを書きたいです。
コメントアウトだとながーいif文の時に困りそうなので他の手段を考えています。
if(true){
echo "if no naka fuck ass\n";
break;
echo "mada naka my godness\n";
}
echo "detayo holy shit\n";
0845nobodyさん
2009/03/05(木) 10:04:29ID:???後藤に聞け
0846nobodyさん
2009/03/05(木) 10:06:31ID:???これでいいやん・・・
echo "if no naka fuck ass\n";
if(false){
echo "mada naka my godness\n";
}
echo "detayo holy shit\n";
0847844
2009/03/05(木) 10:17:06ID:HLFGjq1Sすみません、コメントアウトだとって書きましたが、ifで囲うのも同様に辛いです><
処理させないのではなくて抜けさせるコードが無いかなぁ、と思ったんです。
0849nobodyさん
2009/03/05(木) 10:29:40ID:???0850nobodyさん
2009/03/05(木) 10:39:14ID:???/*
* コメントアウト
*/
// コメントアウト
# コメントアウト
これでいいの?それとも別の何か?
0851nobodyさん
2009/03/05(木) 10:44:30ID:???for ($i=1;$i<10;$i++){
print microtime();
print "<br>";
}
?>
このコードを実行すると、
0.97075300 1236217379
0.97083700 1236217379
0.97084800 1236217379
0.97085700 1236217379
0.97086500 1236217379
0.97087300 1236217379
0.97088200 1236217379
0.97089000 1236217379
0.97089800 1236217379
ってなるんだけど、結局、1個のループ処理をするのに、
何マイクロ秒かかってるの?
0852nobodyさん
2009/03/05(木) 10:50:37ID:u8y4hmKRリファレンス読んだら分かるけど
0.97089800 1236217379
↑秒 ↑現在のPCの時間
半角スペースの前後で意味が違う
0853nobodyさん
2009/03/05(木) 10:58:03ID:???マイクロ秒とミリ秒って世間的に同じ意味なの?
10^-6と10^-3だと思っていたが
原語マニュアル見たりぐぐったりしてみるとどうも混同して扱われてる気がする
0855nobodyさん
2009/03/05(木) 11:12:14ID:???$a=0.97075300;
$b=0.97083700;
$c=$b-$a;
$d=sprintf("%.f", $c);
print $d;
?>
これを実行すると、
0.000084
ってなるんだけど、
0.000084秒
かかった、って理解でいいの?
0857nobodyさん
2009/03/05(木) 11:48:05ID:QryPG+0b以下の質問者のような状況なのですが
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1223035602
それに対する回答では「じゃ、どうすればいいのか」
と言う答えが書かれて無くて、自分でも解決策がわかりません。
どうすれば上記URLの方法で、リンク元を取得できるのでしょうか?
0859nobodyさん
2009/03/05(木) 11:50:35ID:???0860nobodyさん
2009/03/05(木) 11:51:59ID:???どっかの既存スクリプトのソースでも見てみればいいんでないかね
0861857
2009/03/05(木) 11:55:26ID:???WEBサービスなどの既存スクリプトを見ると
<script type="text/javascript" src="アクセス解析のURL">
となっているだけ、それでどうやって取得しているのか予測できないんです。。
0862nobodyさん
2009/03/05(木) 11:59:23ID:???0864nobodyさん
2009/03/05(木) 12:36:30ID:???0865857
2009/03/05(木) 12:37:02ID:???処理を予測すると、
Javascriptでアクセス情報を取得→PHPで受け取って→DBなどに保存
だと思います。
Javascriptでアクセス情報を取得する方法はわかりますが、
PHPに渡す方法がわかりません。AJAXで通信するというのは聞いたことありますが。。
かなり規模が大きくなりそうなので、別の方法を考えます。
0866nobodyさん
2009/03/05(木) 12:40:39ID:???0867nobodyさん
2009/03/05(木) 12:44:57ID:Ai8YQiii上記でアクセスし$_SERVER['PATH_INFO']を使って以下のようにします
$path1 // testを代入
$path2 //100を代入
1.この値をhtmlに出力するときにhtmlspecialcharsをするべきでしょうか?
2.この値を<a href="get.html?mode=<?php echo $path1;?>"?>のようにソースに書くときもhtmlspecialcharsは必要でしょうか?
3.この値を利用して$file=file($path1.".log") or die("エラー");とするとき、$path1をhtmlspecialcharsをするべきでしょうか?
0869nobodyさん
2009/03/05(木) 13:13:08ID:7kExiJxs$file=file("kokugo.log");
もしファイルが存在しなかった場合ワーニングになるのですが
file関数で開く前にkokugo.logが存在して読み込み可能かチェックしたほうがいいのでしょうか?
0870nobodyさん
2009/03/05(木) 13:16:09ID:???上2つは XSSになりえる。
html..でおk
残り1つは DirectoryTraserval になりえる。
これは html.. じゃ防げない。
パスに関する文字を消す処理を挟むべき。
0871870
2009/03/05(木) 13:18:10ID:???日本語だと ディレクトリ遡り攻撃ね。
0872nobodyさん
2009/03/05(木) 13:39:41ID:2sUk8Kdmhttp://www.example.com/index.php/../test/100とすると
ページがNot Foundになります
以下のようにしてみたのですがこれは対策になってますでしょうか?
$path = split("/",$_SERVER['PATH_INFO']);
print_r($path);
0873867
2009/03/05(木) 13:40:24ID:2sUk8Kdmすみません
0874nobodyさん
2009/03/05(木) 13:49:36ID:???ヒアドキュメントはSQLを書くためにあるものじゃないのかと
0875nobodyさん
2009/03/05(木) 14:16:58ID:???Call to a member function execute() on a non-object
とエラーが出ます。
クエリミスや引数ミスでこのエラーが出るのですが、
実行前にデバッグしたいのですが、クエリを参照する方法がわかりません。
$sth->execute($data);の段階でエラーが出るのですが、
それ以前にダンプしてもクエリが作成されてなく、確認ができません。
何か方法はないでしょうか
0876nobodyさん
2009/03/05(木) 14:17:30ID:???0877875
2009/03/05(木) 14:18:27ID:u8y4hmKR0878nobodyさん
2009/03/05(木) 14:35:56ID:UILw4QgF$kansu = hello();の時点で実行されてしまいます
どのようにしたらよろしいでしょうか?
function hello() {return "こんにちは";}
$kansu = hello();
〜他の処理〜
echo $kansu;
0881nobodyさん
2009/03/05(木) 14:58:09ID:???0882nobodyさん
2009/03/05(木) 16:47:02ID:hzERq96Aという、先輩が書いたコードがあるんですけど、これって
if ($var[0] != '#') { ... }
と等価でしょうか。
なにか違う点がありましたら教えてください。
0883nobodyさん
2009/03/05(木) 16:55:02ID:???下は配列の一つ目を取り出してる
意味は全く違う
0884nobodyさん
2009/03/05(木) 16:57:21ID:???$var = 123;
echo substr($var,0,1); #=> 1
echo $var[0]; #=> NULL
0886nobodyさん
2009/03/05(木) 16:58:05ID:???$varが配列や、ダブルバイトなら使えん。
素人はこれだから困るという先輩の顔が目に浮かぶw
0887nobodyさん
2009/03/05(木) 17:01:58ID:???0888nobodyさん
2009/03/05(木) 17:03:54ID:???0889nobodyさん
2009/03/05(木) 17:25:19ID:???0890nobodyさん
2009/03/05(木) 17:37:55ID:???0893nobodyさん
2009/03/05(木) 18:36:23ID:0C8jTvwAよろしくお願いします
0894nobodyさん
2009/03/05(木) 18:37:50ID:???0895nobodyさん
2009/03/05(木) 18:38:39ID:???0896nobodyさん
2009/03/05(木) 19:11:16ID:???0897nobodyさん
2009/03/05(木) 19:46:42ID:???substr() は mbstring.func_overload に影響を受ける
http://www.php.net/manual/ja/mbstring.overload.php
オフセット参照は変数の型に影響を受ける
http://www.php.net/manual/ja/language.types.string.php#language.types.string.substr
0898882
2009/03/05(木) 19:55:19ID:???ここでは$varは配列ではなく文字列です。
>>884
なるほど、$varが文字列以外の場合、substr() だと$varが自動的に文字列に変換されるわけですね。
参考になります。ありがとうございました。
>>885
おこるぐらいならもっとましなコード書いてください。
0899nobodyさん
2009/03/05(木) 19:57:58ID:???だったら、!is_string($var) ならexit()とか入れとけ。
ソースにないもんをエスパーできるかよw
にしたって、strposを使うケースだけどな。$var[0]とか狂ってる。
0901nobodyさん
2009/03/05(木) 20:29:27ID:???0902nobodyさん
2009/03/05(木) 20:33:26ID:???>>897を理解してる上で使う分には間違っちゃいない
$a = array(); $a[] = 1; は許すのに $a = ''; $a[1] = 'a'; は許さないとか
シンタックスシュガーを利用するしないはコーディング規約で決めるものだ
それにstrpos()は最悪文字列全体を見るまで処理を打ち切らないし
882をバカにできる奴が選ぶ手段じゃない
0904nobodyさん
2009/03/05(木) 20:41:26ID:???$str[0]は配列にも使える。
従って文字列へのアクセスならば、substrのほうが分かりやすい。
スレが軽く荒れたところを見ても、角括弧が混乱を招きやすい表記だという事は分かるだろ。
ちょっとコードの見た目がスッキリするとか、何ナノ秒処理が早くなるだとか、そんなメリットと引き換えにしていいレベルじゃない。
0905nobodyさん
2009/03/05(木) 21:11:52ID:???んなもん、strposが最適解だと思うだろjk
オライリの詳説正規表現の効率云々みたいに解説本でも欲しいところだなw
0907nobodyさん
2009/03/05(木) 21:24:16ID:???先輩乙
0908nobodyさん
2009/03/05(木) 21:27:44ID:Zs/6GWofそれともあくまでデバッグのみに使用しますか?
0909nobodyさん
2009/03/05(木) 21:28:33ID:???0910nobodyさん
2009/03/05(木) 21:43:17ID:l6IOt6/c配列についてなんですが、
$arr = $this -> fncName($aa);
foreach($arr as $key => $val){
$appArr[$key] = $this -> fncName2($val);
}
return $appArr;
で値を返し、ajaxでページに表示させると、何も表示されないのに、
$arr = $this -> fncName($aa);
$appArr['配列名'] = '';
foreach($arr as $key => $val){
$appArr[$key] = $this -> fncName2($val);
}
return $appArr;
と、$arr['配列名'] = '';のように初期化した値だけページに反映されるって状況の場合、
一体何が問題なのでしょうか?
当方PHP5.2.9をapache2.2.11を使用しております。
よろしくお願いいたします。
0915nobodyさん
2009/03/05(木) 22:42:02ID:l6IOt6/cそれしても、入力されません。
具体的に配列のkeyを直接入力しなければ入らないのです。
また、$arr['key']には、htmlの要素がいっぱい入っています
(<span>や<div><form>など)
それが入っていない場合は、普通に表示されます。
なぜなんでしょ?
0916nobodyさん
2009/03/05(木) 22:54:40ID:???$appArr = array();
foreach($arr as $key => $val){
$appArr[$key] = $this -> fncName2($val);
}
return $appArr;
↑でダメならvar_dumpかprint_rしながら
$appArrに求めてる値が入ってるか確認してみた方がいいかも。
0917nobodyさん
2009/03/05(木) 22:57:16ID:???$arrが空っぽ または $this->fncName2($val)が値を返さない
というか後者は $this->fncName2($key) じゃなくていいの?
0918nobodyさん
2009/03/05(木) 23:26:53ID:???このスレだけが俺の生きがいだからかそらないでくれたまえ
0919nobodyさん
2009/03/05(木) 23:28:36ID:???解説サイトとかつくって人呼べばいいじゃん^^
0920nobodyさん
2009/03/05(木) 23:35:44ID:???0921nobodyさん
2009/03/06(金) 02:07:01ID:???もしくは、どの関数のことを言ってるのか想像つきますか?
0923nobodyさん
2009/03/06(金) 02:32:04ID:cF17z8wj<img src="img.php">
PHP側
header("Content-type: image/jpeg");
とだけしました。しかし、IE6で見ると×が表示されて
画像として読み込めていないようです。
これはどうしてでしょうか?
0924nobodyさん
2009/03/06(金) 02:36:58ID:???0925nobodyさん
2009/03/06(金) 02:42:04ID:cF17z8wj>>923のようにしているのですが、
やはりimgタグの方にwidth="1" height="1"と指定するか、
readfileで透明な1ピクセルのファイルを読み込む方法しかないのでしょうか?
0927nobodyさん
2009/03/06(金) 03:08:35ID:???0928nobodyさん
2009/03/06(金) 03:08:41ID:???0929nobodyさん
2009/03/06(金) 03:11:50ID:???自分たちの領域に引き込む宗教本みたいだったぜ
どんだけJavaの生産性が低いかの説明ばっかり
0930nobodyさん
2009/03/06(金) 03:45:28ID:???ぐぐったらまさにそれっぽいんですが、関数の中身(文字列の結合、分解)とかにまで触れてた記事は無かったでしょうか?
0931nobodyさん
2009/03/06(金) 04:01:35ID:???宗教本っていうか、
rubyの作者自体がモルモン教徒だから。
(1)rubyをやらせる
↓
(2)モルモンに入信させる
↓
(3)ニュースキン、ニューウェイズをやらせる
こういうビジネスモデルだから。
0932nobodyさん
2009/03/06(金) 05:36:30ID:???<?php
echo exec('notepad.exe');
?>
これを実行するとメモ帳が起動する。
0933nobodyさん
2009/03/06(金) 05:40:42ID:6cUsAerc2ch かつ php かどうかを比較するにはこのようにしていいのでしょうか?
if ( $a == '2ch' && $sub != ''php'){
print "2chだけどphpスレではない";
}
0935nobodyさん
2009/03/06(金) 08:52:00ID:???>929
釣れませんね
0936nobodyさん
2009/03/06(金) 08:58:45ID:???というか事実だから釣りでも何でもないだろうけど
0937nobodyさん
2009/03/06(金) 09:03:29ID:???0938nobodyさん
2009/03/06(金) 09:05:57ID:???http://d.hatena.ne.jp/higayasuo/20080311/1205228639
0939nobodyさん
2009/03/06(金) 11:17:48ID:???0940nobodyさん
2009/03/06(金) 11:23:57ID:???それより、移るってどういうことよ。
おれはCだろうがPHPだろうが、適材適所で使い分けてるけど、
移ったらってことは、Cを捨てるのか、いや捨てられたのか。あ、そか。
きっとPHPも君を捨てるだろう。
0941nobodyさん
2009/03/06(金) 11:48:17ID:???0942nobodyさん
2009/03/06(金) 11:57:16ID:???0943nobodyさん
2009/03/06(金) 12:02:29ID:???0944nobodyさん
2009/03/06(金) 12:04:02ID:???面接官が言葉の端々で最近はRubyしか使わないを連呼してたので断ったわ
RoRで作っても後に痛い目に遭うのは確実だし
あんなメモリ食いまくる仕組みがなんで流行ってるのか理解に苦しむ
0945nobodyさん
2009/03/06(金) 14:03:24ID:???24時間つなぐぜ
http://irc.2ch.net/
#WEB制作板
0946nobodyさん
2009/03/06(金) 14:17:45ID:???0947nobodyさん
2009/03/06(金) 15:22:09ID:k96rJD9yclass keisan {
function tasizan($a,$b) {return $a+$b;}
function hikizan($a,$b) {return $a-$b;}
function kakezan($a,$b) {return $a*$b;}
function warizan($a,$b) {return $a/$b;}
}
$obj=new keisan;
$tasizan_kekka = $obj->tasizan(10+5);
$obj->kakezan($tasizan_kekka,20);
tasizan関数で足し算の結果をkakezan関数の$aに使いたいのですが
このような書き方でよろしいでしょうか?
もっと効率的・スマートな書き方がございましたらご教示お願いいたします。
0948nobodyさん
2009/03/06(金) 15:23:34ID:???0949nobodyさん
2009/03/06(金) 16:07:43ID:???計算結果を内部に持っても良いのなら、以下のようなのはどう?
class keisan {
private $result;
function __construct($a) {
$result = $a;
}
function tasizan($b) {
$this->result += $b;
retun $this;
}
function hikizan($b) {
$this->result -= $b;
return $this;
}
function kakezan($b) {
$this->result *= $b;
return $this;
}
function warizan($a,$b) {
$this->result /= $b;
return $this;
}
function kekka {
retun $this->result;
}
}
$obj=new keisan;
$kekka = $obj->tasizan(5)->kakezan(20)->kekka();
0950nobodyさん
2009/03/06(金) 16:10:52ID:???$obj=new keisan(10);
$kekka = $obj->tasizan(5)->kakezan(20)->kekka();
0951nobodyさん
2009/03/06(金) 16:21:58ID:ox3YTIPGFTPでいつも手動でディレクトリを作成してます
一つのディレクトリの中に10000ファイルためる場合、処理が遅くなりますか?
0952nobodyさん
2009/03/06(金) 16:23:10ID:???メソッドチェーン覚えました〜〜って香ばしい匂いが
0955nobodyさん
2009/03/06(金) 16:25:07ID:ox3YTIPGありがとうございます
手動で定期的にファイルを移動させます
0956nobodyさん
2009/03/06(金) 17:26:24ID:???ext3とかなら確実にアウトだ
0957nobodyさん
2009/03/06(金) 17:32:06ID:???いまどきlinuxでext3を教えてる教本があるから困る
いまはFATだろが
0958nobodyさん
2009/03/06(金) 18:17:51ID:???0960nobodyさん
2009/03/06(金) 23:38:33ID:???>もっと効率的・スマートな書き方
$tasizan_kekka = 10+5;
$tasizan_kekka * 20;
もっと格好いい書き方
ttp://pastie.org/409335
参考文献
ttp://d.hatena.ne.jp/masayang/20081211/1229033163
0964nobodyさん
2009/03/07(土) 11:57:49ID:???虎の子のライブラリとかどうしてる?暗号化する?
0965nobodyさん
2009/03/07(土) 12:02:37ID:???0966nobodyさん
2009/03/07(土) 12:18:42ID:???0967nobodyさん
2009/03/07(土) 12:26:47ID:???「ライセンスで規制されてても二次利用は当たり前、パクって何が悪い?」
ってドキュソがいたなwww
0968nobodyさん
2009/03/07(土) 16:03:58ID:???0969nobodyさん
2009/03/07(土) 18:45:33ID:???0970nobodyさん
2009/03/07(土) 18:49:09ID:???0971nobodyさん
2009/03/07(土) 18:59:23ID:???0973nobodyさん
2009/03/07(土) 19:21:18ID:???残念でしたw
0974nobodyさん
2009/03/07(土) 21:49:03ID:C+oqmm8hifで真なら「自分サイト」、偽なら「外部サイト」と表示させたいのですが
結果が逆になってしまいます
どこを直したらよろしいのでしょうか?
$myurl = "http://localhost";
$referer = "http://www.2ch.jp/";
#$referer = "http://localhost/link.php";
if (preg_match('{^https?://[^('.$myurl.'].*$}', $referer)) {
echo "自分サイト";
} else {
echo "外部サイト";
}
0975nobodyさん
2009/03/07(土) 21:55:17ID:???0976nobodyさん
2009/03/07(土) 22:06:13ID:???第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
975 名前:nobodyさん[sage] 投稿日:2009/03/07(土) 21:55:17 ID:???
第一ひきすうが{}で囲ってあるけどこんなのあったっけ?
0977nobodyさん
2009/03/07(土) 22:07:53ID:???ttp://www.akatsukinishisu.net/itazuragaki/perl/regex_delimiter_escaping.html
0980nobodyさん
2009/03/07(土) 22:34:36ID:???#とか
0981nobodyさん
2009/03/07(土) 22:37:12ID:???それだと
http://http://localhost
になるんじゃね?
0982nobodyさん
2009/03/07(土) 22:48:03ID:???でいいんじゃないの?
0983nobodyさん
2009/03/07(土) 22:52:31ID:???$mydomein = 'exsample.com';
if(strpos($_SERVER['HTTP_REFERER'],$mydomein)){
echo "自分サイト";
} else {
echo "外部サイト";
}
0984nobodyさん
2009/03/07(土) 22:53:01ID:???http://localhost/example.co.jp.html
でもひっかかる
0985nobodyさん
2009/03/07(土) 22:54:06ID:???>>983
http://www.yahoo.xxco.jp/?url=example.com
みたいなとこから飛んできたらどうするんだよ
せめて先頭マッチくらいしろよ
0986nobodyさん
2009/03/07(土) 22:55:59ID:???0987nobodyさん
2009/03/07(土) 22:56:23ID:???せめてここからはじめたほうがいいんじゃないか?
$myurl = $_SERVER['HTTP_HOST'];
$referer = "http://www.2ch.jp/";
#$referer = "http://localhost/link.php";
if (preg_match('{^https?://[^('.$myurl.'].*$}', $referer)) {
echo "自分サイト";
} else {
echo "外部サイト";
}
0989nobodyさん
2009/03/07(土) 23:24:25ID:???0991nobodyさん
2009/03/08(日) 01:30:25ID:???Subject : リファラ送出停止のお願いについて
お世話になっております。
私のサイトにアクセスする際は、当サイト内を相互移動する場合
リファラを送出しないようにお願い致します。
0992nobodyさん
2009/03/08(日) 03:00:38ID:???parse_url($_SERVER['HTTP_REFERER'])
とかしてからいろいろやった方がなにかと楽じゃない?
ちゃんとPHP使ってる?
0993nobodyさん
2009/03/08(日) 03:17:30ID:???だから今から敬語使えや
ここで上下関係はっきりさせようや
0994nobodyさん
2009/03/08(日) 03:21:31ID:???0995nobodyさん
2009/03/08(日) 07:09:54ID:3tsEMQzxAのDB切断が呼び出しもとのDBインスタンスにも反映されて
Cでエラーがでるようになったのですが、
これってpear::db仕様なんでしょうか?
回避方法あれば教えてほしいです。
<?php
require_once("DB.php"); // pear::db
class postage
{
function postage()
{
$db1 = new DBC;
$row = $db1->getRow("select * from session limit 1;");
print nl2br(print_r($row,1));// --------------@
print "@<br>\n";
$db1->disconnect(); // --------------A切断
}
}
0996nobodyさん
2009/03/08(日) 07:11:47ID:3tsEMQzxclass sess
{
function sess()
{
$db2 = new DBC;
$row = $db2->getRow("select * from session limit 1;");
print nl2br(print_r($row,1)); // --------------B
print "B<br>\n";
$postage = new postage;
$row = $db2->getRow("select * from session limit 1;");
print nl2br(print_r($row,1)); // --------------C
print "C<br>\n";
$db2->disconnect();
}
}
$c = new sess;
0997nobodyさん
2009/03/08(日) 07:13:48ID:3tsEMQzx{
var $connection;
function DBC(){
$this->connection =
DB::connect("mysql://root:pass@localhost/shop");
}
function getRow($sql){
return $this->connection->getRow($sql);
}
function disconnect(){
$this->connection->disconnect();
}
}
?>
0998nobodyさん
2009/03/08(日) 07:22:16ID:???0999nobodyさん
2009/03/08(日) 07:42:42ID:???1000nobodyさん
2009/03/08(日) 08:15:30ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。