【PHP】下らねぇ質問はID出して書き込みやがれ 85
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/06/15(月) 22:53:52ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0686nobodyさん
2009/07/20(月) 02:00:05ID:???ファイルがアップロードされたかどうかを判定する為にだけ使用する、という認識で良いですか?
$_REQUEST["up"]
0687685
2009/07/20(月) 02:00:29ID:81Sgp9590688nobodyさん
2009/07/20(月) 02:03:45ID:???0689nobodyさん
2009/07/20(月) 02:06:06ID:???そりゃそのスクリプト書いた人の意図によると思うけど
おそらくはGETかPOSTでupを送っておいて
処理先のスクリプトでupを確認してアップロード処理を行うっていう
よくある手法じゃないかな
>>687
A田A男さんは1行目とか決めておいて更新が来たら1行目を書き換えればいいんでね?
0690nobodyさん
2009/07/20(月) 18:51:36ID:LTJd3lAbPHPでjavascriptにあるsettimeoutみたいなのありませんか?
ある時間になるとその時間に合わせて、PHPで作成したデータを元に表を更新するというものです
javascriptで作成した時計の部分はsettimeoutを使って1秒ごとに更新されていいのですが、
当然ながらその部分だけ更新されて、ページ全体は更新されないので・・・
何かいい方法はないですか?お願いします
0691nobodyさん
2009/07/20(月) 19:10:37ID:???0693nobodyさん
2009/07/20(月) 19:28:53ID:???crond用のプロセスを作って、そこが参照する設定ファイルをPHPから
更新するなどの方法はある。けど、ブラウザ上の再読み込みを行いた
いなら、やっぱり settimeout をPHPで吐くか、または、
<meta http-equiv="refresh" content="時間,URL">
などのヘッダを使って強制的に再読み込みをするなどがいいと思う。
0694nobodyさん
2009/07/20(月) 20:02:55ID:LTJd3lAb>>693
>settimeout をPHPで吐く
というのはどのようにすればよいですか?
最悪metaで強制的にしますかねー ヘッダを全ページで共有して使っているので考え物ですが
0695nobodyさん
2009/07/20(月) 20:12:54ID:???metaタグのrefreshでリロードさせるか、javascriptでリロードさせるしかない。
ヘッダを全ページ共有ってtitleとかも共有なのか?titileはページ毎に置換してない?
つまりそのページだけrefreshのmetaタグを置換して入れればいい
0696nobodyさん
2009/07/20(月) 20:16:56ID:mGSM8h71あなたにとってPHPが
「とりあえず今回動けばいいブラックボックス」ではなく、
「難しいけど今後とも活用していきたい道具」であるならば、
以下を参考にがんばるか、以下を理解できるようになるまで本を読もう。
http://jp.php.net/manual/ja/language.variables.external.php
http://jp.php.net/manual/ja/language.types.array.php
http://jp.php.net/manual/ja/book.filesystem.php
http://jp.php.net/manual/ja/function.print-r.php
0697nobodyさん
2009/07/20(月) 20:22:42ID:LTJd3lAbヘッダとフッタはそれぞれ1つのファイルを共有して各ページは中身(コンテンツ)だけ変更するような形でやってるんですよ
ちょっと特殊ですが なんでタイトルとかは全部同じです
今試しにmetaでやってみたんですが、更新ボタンを押してる感じがあるんでちょっと
上にも書いたんですけど今はjavascriptの時計の関数をonload=settimeout1秒ごとという仕組みにしてるんですけど、
全体は難しいですよね PHPとjavascriptじゃサイドが違うんで・・・
0698nobodyさん
2009/07/20(月) 20:44:06ID:???0699nobodyさん
2009/07/20(月) 20:46:49ID:???リロードさせるんだから、更新ボタンを押してる感じがあるのはしょうがない。
それが嫌なら、>>698 さんが言うようにajaxになるな。
0700nobodyさん
2009/07/20(月) 20:51:21ID:LTJd3lAb聞いたことはあるんですけど、全然知らないんですよね^^;
とりあえず調べてみます
参考になるページがあればお願いします
0702nobodyさん
2009/07/20(月) 21:47:10ID:???連想配列じゃなくて配列の配列
これは ArrayAccess のシグネチャと Zend Engine の参照渡し・戻しに関する問題らしい
配列の要素がオブジェクトなら常に参照扱いなので気にしなくて済む
// ○5.2.0, ○5.1.6
$a = new ArrayObject();
$a[0] = new ArrayObject();
$a[0][0] = 1;
// ○5.2.0 ×5.1.6
$a = new ArrayObject();
$a[0] = array();
$a[0][0] = 1;
0703nobodyさん
2009/07/22(水) 15:49:48ID:4ehWfJJ0PHPをパースする全てのページのフッタに著作権を自動挿入したいです。
mod_layout以外で何か方法はありますか?
0704nobodyさん
2009/07/22(水) 16:04:30ID:8OvKTpgg小手先でやるならregister_shutdown_function()とか。
0705nobodyさん
2009/07/22(水) 19:17:52ID:???複雑なJOINとかができる必要はないのですが、
プリペアドステートメントを使って、安全にWHERE文を追加していけるものがいいです。
Zend_DBとかSymfonyのDoctrineとかいろいろあると思うのですが、
独立して組み込めるものが望ましいです。
SQL文だけ組み立てて、実行自体は今まで使ってきたMDB2でできればなおいいです。
よろしければ教えていただければと思います。
よろしくお願いします。
0706nobodyさん
2009/07/22(水) 19:31:26ID:???もっと抽象的にやりたかったらこれ使ってさらに関数でも
クラスでも作ればよかろ
0707nobodyさん
2009/07/22(水) 20:00:53ID:???0708nobodyさん
2009/07/22(水) 23:44:43ID:???今はDoctrineがナウい
もちろんこいつ自体は独立して組み込める
ZendFramework+Doctrineも流行っている
0709nobodyさん
2009/07/23(木) 00:02:49ID:???0710nobodyさん
2009/07/23(木) 06:38:49ID:3HKcBquf説明不足の部分まで汲んでもらってありがとうございます!
なるほどです…。
PHP5.1 or 5.2の辺りで世間のインストール状況に一つ壁があると思うので
動作テストうんぬん考えるとArrayObjectってちょっと使いにくい感じかもですね。
0711nobodyさん
2009/07/23(木) 09:40:42ID:???QueryToolはプリペアドステートメントが使えないんですよね…。
もちろん、これを自分用に改修することはさほど難しくはないと思いますが、
既に実用に耐えているライブラリがあれば、そちらを使いたいと思いました。
>>707
Zend_Dbは、オブジェクト生成の際にホストまで設定しないといけないのが、
私にとってはネックになります。
自分で使う分にはすごくいいライブラリだと思うのですが、
現在会社で使っているフレームワーク上、それができないのです…。
(できなくはないけど、記述があちこちでばらけて後々面倒)
なので、SQL文を動的に生成し、それを文字列として取り出せるものが必要なのです。
>>708
Symfonyはセットアップが面倒なイメージがあったのですが、
独立して組み込むこともできるんですね。
ドキュメント等読んで調べてみようとお見ます。
皆さんありがとうございました。
0712nobodyさん
2009/07/23(木) 13:34:09ID:afGBhoweforeach ($var_names as $key => $value ) {
global $$value;
if (!isset($_SESSION[$value])){
$_SESSION[$value]= $$value;
}
}
}
というコードがあるんですけど、これは
・register_globals が設定されてなければ(つまりoffであれば)、
・配列$var_namesに入っているグローバル変数名を調べて、
・その名前と値を$_SESSIONに追加する
という理解でよろしいでしょうか。
またこの理解が正しいとして、なぜこんなことをしているのか分かる方はいませんか。
register_globalsがonのときなら、このような動作もわからなくはないのですが、
offのときにあえてこんなことをする理由がわかりません。
0713nobodyさん
2009/07/23(木) 13:43:15ID:???0714nobodyさん
2009/07/23(木) 14:28:45ID:t5/aDE1Aあれってsmatyとかフレームワークとか使ってんの?
小遣い稼いでる奴いたら教えて。
普通に働いてる奴も教えて。
0715nobodyさん
2009/07/23(木) 14:31:54ID:???0716nobodyさん
2009/07/23(木) 14:33:05ID:???0717nobodyさん
2009/07/23(木) 14:48:42ID:???0718nobodyさん
2009/07/23(木) 14:50:48ID:???まともなとこならフリーのもの(cakeとか)は使わない
自社製(他社製)のもの使うね
自社サイトの開発業務とかならなんでもあり
0719nobodyさん
2009/07/23(木) 14:52:49ID:t5/aDE1APHPできるって言われてもフレームワークやその他のプラグインも使えないで、
HTMLにだだ書きしてる奴とかいるのかな?と思って俺もほぼ変わんないけど。
派遣って給料高いし一回働いてみたいよな。
0720nobodyさん
2009/07/23(木) 15:01:14ID:???0722nobodyさん
2009/07/23(木) 15:09:56ID:???書き方が悪かったね
他社といっても関連企業のことね
ライセンスがらみの問題もなく
意見もちゃんと反映できる範囲にいる企業
0723712
2009/07/23(木) 15:32:53ID:afGBhowe>それは、たまに避妊したいときに利用することがある。
すみませんが、もうすこし詳しく教えていただけませんでしょうか。
#もちろんコンドームのことではないですよ?
0724nobodyさん
2009/07/23(木) 15:54:56ID:???ttp://d.hatena.ne.jp/keyword/register_globals
0725nobodyさん
2009/07/23(木) 15:59:07ID:???0726軟式PHP
2009/07/23(木) 16:00:48ID:???0727712
2009/07/23(木) 17:27:30ID:afGBhoweregsiter_globalsについては知っています。
質問はそこではないんですけど。
0728nobodyさん
2009/07/23(木) 17:36:31ID:???register_globals on のように
外部から来た変数を $xxx のように使いたいからでしょ。
0729nobodyさん
2009/07/23(木) 18:21:33ID:???当事者にどういうつもりでこんな糞コーディングしたのか頬をビンタしながら問い詰めなさい
0730nobodyさん
2009/07/23(木) 18:34:42ID:???>offのときにあえてこんなことをする理由がわかりません。
こんなことかかれて知ってますといわれてもな
offだからこそだろ
0731nobodyさん
2009/07/23(木) 18:35:31ID:t5/aDE1A0732nobodyさん
2009/07/23(木) 18:43:12ID:???0733nobodyさん
2009/07/23(木) 18:53:40ID:???該当部分のコード削除するか自分の考えるものに変更して
register_globalsをoffにして動作させてみた?
挙動比較してみて同じようなら意味のないコードなんでしょうよ
何か問題があったからそのコード入れたかもしれないし
ほかの人のソースをただコピペしたようなものかもしれない
人のソース見て勉強するのはいいがコメントがないようなものはお勧めしない
0734nobodyさん
2009/07/23(木) 20:12:49ID:???0735712
2009/07/23(木) 20:13:54ID:???すみません、書き忘れてましたが、これはPHPLibのコードの一部なんです。
PHPLib の php/session4.inc にある Session クラスの regsiter() メソッド定義において
>>712のようなコードがあり、読んでもよくわからなかったので質問しました。
PHPLibは有名なライブラリであり、挙動もみなさんよくご存知だろうと思いますが、
register_globalsがoffのときに限りグローバル変数を$_SESSIONに代入するという仕様が、
ぼくにとってまったく意味不明な仕様なので、これにどういう意味があるのか
教えていただければと思います。
0736712
2009/07/23(木) 20:15:43ID:???function register ($var_names) {
if (!is_array($var_names)) {
// spaces spoil everything
$var_names = trim($var_names);
$var_names=explode(",", $var_names);
}
// If register_globals is off -> store session variables values
if(!(bool) ini_get('register_globals')) {
foreach ($var_names as $key => $value ) {
global $$value;
if (!isset($_SESSION[$value])){
$_SESSION[$value]= $$value;
}
}
}
else {
return session_register($var_names);
}
} // end func register
0737nobodyさん
2009/07/23(木) 22:07:23ID:???これをやってるんでなくて?
0738nobodyさん
2009/07/23(木) 22:17:18ID:oVStTj1j正規表現などで後方から数えて最初にある"."で切り分けたいのですがどのように記述すればいいのでしょうか
要は拡張子を切り出せればいいんです
0740nobodyさん
2009/07/23(木) 22:25:04ID:???http://www.php.net/manual/ja/function.pathinfo.php
0741738
2009/07/23(木) 22:36:25ID:oVStTj1jこんな関数あったんですか
ありがとうございます
0742やや
2009/07/23(木) 22:44:20ID:i1eDkP4Fファイル数が100万位ある中から一つを読み込みたいのですが、1000個のフォルダに1000個のファイルを入れようか、
それとも1000個のフォルダに1000個のフォルダを作りそれぞれにファイルを一個ずつ入れようか迷っています。
どちらの方が、高速にファイルにアクセスできると思いますか?
ちなみにデータベースは使えないので、txtファイルを使っています。
0743nobodyさん
2009/07/23(木) 22:51:15ID:???疑問ならダミーファイルつくって試してみ
0744nobodyさん
2009/07/23(木) 22:52:35ID:???その程度の処理時間の差を気にする案件ならPHPを使うな。以上。
0745nobodyさん
2009/07/23(木) 22:55:12ID:???0746やや
2009/07/23(木) 23:11:53ID:i1eDkP4Fありがとうございます。試してみます。
>>744
ありがとうございます。速度を測ったところ、ファイルの読み込みが足引っ張っているようなのですが、
プログラムにあまり詳しくないのですが、他のプログラムで読み読みが速いプログラムを
教えてもらえないでしょうか。
0747やや
2009/07/23(木) 23:13:37ID:i1eDkP4Fすいません。読み読みは、読み込みの間違いです。
0748738
2009/07/24(金) 00:04:41ID:w4nZ/YW/if (move_uploaded_file($_FILES["file"]["tmp_name"], "files/$filen.$x")) {
chmod("files/" . $filen, 0644);
//files.txtへの書き込み
$res_file = fopen( 'files.txt', 'w+' );
$time = data("Y/m/d (D) G:H:s");
$data = array("number" => $filen,"name" => $_FILES['file']['name'],"comment" => $_POST['comment'],"extension"d => $x,"size" => $_FILE['file']['size'],"data" => $time,"dl" => "0","dllimit" => $_POST[dllimit]);
unset($x);
foreach( $data as $x ){
fwrite($res_file,$x)
unset($x);
}
fwrite($res_file,"\n");
fclose( $res_file );
} else {
echo "upload失敗";
}
}
またお願いします
これを出力したところ
Parse error: parse error, expecting `')'' in X:\index.php on line 46
とエラーが出ました
自分が見たところでは問題点が見つかりませんお願いします
ちなみに一番長いところが46行目です
0749nobodyさん
2009/07/24(金) 00:07:32ID:???セミコロン
0750nobodyさん
2009/07/24(金) 00:08:18ID:???つうか記述ミスぐらいIDE使えばすぐわかるんだからEclipseあたり使いなさいよ
0751nobodyさん
2009/07/24(金) 00:10:00ID:???ここも変
''で囲まないと$_POST['dllimit']
0752nobodyさん
2009/07/24(金) 00:12:48ID:???0753738
2009/07/24(金) 00:22:29ID:w4nZ/YW/PHPの構文て結構厳しいんですね
エラーや警告のでないスクリプトを目指して頑張ります
0754nobodyさん
2009/07/24(金) 00:30:02ID:???パースエラーだよアホ
0755nobodyさん
2009/07/24(金) 00:30:48ID:???誰がファイルの読み込みは足を引っ張らないと言ったよ
どっちを取っても差はない、としか書いてないのだが?
ファイルのI/Oはどの言語でも足を引っ張る
0756nobodyさん
2009/07/24(金) 00:32:07ID:K8XyGptT文字列処理/日本語関係 がダルくてしかたありません
0757nobodyさん
2009/07/24(金) 00:35:36ID:???0758nobodyさん
2009/07/24(金) 01:36:48ID:???0760nobodyさん
2009/07/24(金) 11:26:52ID:???マニュアルに載ってるのはonとoffのエミュレート
>>736のコードは指定した変数をセッションに追加
0761nobodyさん
2009/07/24(金) 11:44:11ID:???0763nobodyさん
2009/07/24(金) 11:49:18ID:???0765nobodyさん
2009/07/24(金) 12:55:26ID:???これをクッキーやデータベースに保存するよう変更したいのですが、できますか。
独自にクラスを作ったりすればできますけど、レガシーコードが大量に
$_SESSIONを使っているので、できれば$_SESSIONを使ったままで、
セッションデータの保存先をクッキーとかに変更したいのですが可能でしょうか。
0766nobodyさん
2009/07/24(金) 13:06:54ID:???スレタイ
セッションデータをクッキーに保存って本末転倒だな。
なぜそういう事をしたいのか書くとレスを返しやすい。
0767nobodyさん
2009/07/24(金) 14:45:14ID:???CodeIgniterとかRailsとか。
#利点は、サーバの台数が増えてもスケールしやすいことダッタかな。
なんで本末転倒なんでしょうか?
0768nobodyさん
2009/07/24(金) 15:26:42ID:???railsも2.0(?)からデフォでcoockieらしいな。
で、本末転倒とはイミフだった、すまん。
個人的にクライアント側にデータが保存されるのが嫌で$_SESSION使ってるから
そのセッションデータがcoockieに入ったら意味無いなと思い、本末転倒と書いてしまった。
0769nobodyさん
2009/07/24(金) 15:27:16ID:???0770nobodyさん
2009/07/24(金) 15:35:26ID:???0772nobodyさん
2009/07/24(金) 15:56:51ID:???セッションはHTTPのステートレスな性質を補う技術で
データをクラサバどっちに持たせるかは本質じゃないし
そもそもの質問が”できますか?”なんだから茶々入れずに答えろよボケ!
あと>>1読まずに質問してサーセン!
って765さんが言ってました
0774nobodyさん
2009/07/24(金) 17:40:22ID:???0777nobodyさん
2009/07/24(金) 18:07:25ID:moawRAWq自作しないと無理でしょうか?
0778nobodyさん
2009/07/24(金) 18:29:14ID:???0779685
2009/07/25(土) 02:17:25ID:eE6Kfkku【OS名】CentOS
【PHPのバージョン】php5.26
【連携ソフトウェア】なし
【質問内容】
>>696さんのWebサイトを参考にし、もう少しコードを簡単し、以下の用に動作する物を書いてみました。
(テキストフォームに文字を入力し、保存ボタンを押すと、書いた内容が別テキストファイルに保存される。
PHPのWebページを開くたびに別テキストファイルが呼び出され、その内容がテキストフォームに
value=として設定される。簡易やることリスト的なPHPスクリプト。)
テキスト入力フォームがひとつの場合は問題なく動作するのですが、
複数のテキスト入力フォームを用意した場合、どうやらテキストファイルを読み込んでいないみたいで
ページを開くたびに保存してある内容が消えてしまいます。
ここの修正だけで数時間以上悩んでいるのですが、ここだけ解消できれば完成するので
どのように修正すればよいかご教示願えないでしょうか?
これが書いたスクリプトです。oneディレクトリに入っているものが、テキスト入力フォームがひとつの場合、
arrayディレクトリに入っているものが、複数のテキスト入力フォームを用意した場合です。
http://kissho1.xii.jp/7/src/7jyou24055.zip.html
0780nobodyさん
2009/07/25(土) 03:00:06ID:t/OU2yuM> ページを開くたびに保存してある内容が消えてしまいます。
ここが誤りです。
最初にページを表示した際に、以下の流れになっています。
1. 26-33行目で、$POSTが空っぽのため、空っぽの$test配列が生成される。
2. 36行目で、空配列と文字列""を混同しているためif条件を通過してしまう。
3. 空っぽの$testを元に、空っぽのtxtファイルが作られてしまう。
とりあえず最小限で動かすには36行目を次のように書き換えればいいと思います。
if(isset($_POST['test'][0])){
しかし動くからといって満足せず、
ヒマを見つけて本を買うなりしてステップアップされることをおすすめします。
わたしの個人的な印象では、
この手の「サンプルコード」なるものを載せてるサイトの8割は初学者にはおすすめできません(苦笑)。
0781nobodyさん
2009/07/25(土) 08:06:09ID:TYwYBgIMmysql1クエリ送信するたびにSET time_zoneを付け加えているのですが、
例えば
$sql1 = "SET time_zone = '+09:00'";
$sql2 = "SELECT * FROM test";
$sql = $sql1.";".$sql2;
として最終的にfetchAllでSELECTした結果を得たいのですが、
SET time_zone = '+09:00'の部分の結果が得られてしまいます。
実際のSELECT文にはDATE(NOW())などを使うので、
どうしてもSET time_zoneが必要なのですが、
できればSELECT部分の結果だけを得るにはどうしたらいいでしょうか
($sql2だけならSELECTの結果が得られます)
またphp内でmysqlのタイムゾーンまでをも指定できる方法が
あれば教えてくださいよろしくおねがいします。
0782nobodyさん
2009/07/25(土) 08:12:04ID:???0783nobodyさん
2009/07/25(土) 08:48:33ID:eE6Kfkkuありがとうございます。ご指摘の箇所を修正したら普通に動作するようになりました。
しかし、”1. 26-33行目で、$POSTが空っぽのため、空っぽの$test配列が生成される。”で、
空っぽの$test配列が生成されないようにするためにはどのようにすればいいのでしょうか?
書籍の方ですが、オライリー社のプログラミングPHP 第2版を購入して読んでいっています。
Webで公開されているサンプルコードはあまり為にならないのですね。
0784nobodyさん
2009/07/25(土) 13:34:23ID:t/OU2yuM$test配列の問題はオライリー読んでれば解決できるようになるでしょう。
> Webで公開されているサンプルコードはあまり為にならないのですね。
あくまで、8割です。いいコードもあります。が、初学者には見分けられない(苦笑)。
0785nobodyさん
2009/07/25(土) 18:25:38ID:???■ このスレッドは過去ログ倉庫に格納されています