【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等)・フレームワークは各該当スレへ
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:???0786nobodyさん
2009/07/25(土) 18:27:46ID:???0788nobodyさん
2009/07/25(土) 23:33:48ID:???0789nobodyさん
2009/07/26(日) 03:54:04ID:VnzjqimA36進法(a〜zと0〜9)を作ってデーターを入れることを考えています。
たとえば、最高1億の数値を36進法にすれば、何桁でOKになるのでしょうか?
多分、高校で習った対数とか使うと思うのですが、もうすっかり忘れてしまって、
計算の仕方が分かりません。教えてください。お願いします。
0790nobodyさん
2009/07/26(日) 04:06:51ID:???36進数1が10進数36^0=1
36進数10が10進数36^1=36
36進数100が10進数36^2=1296
36進数1000が10進数36^3=46656
0791nobodyさん
2009/07/26(日) 04:38:18ID:VnzjqimA次どうぞ↓
0792nobodyさん
2009/07/26(日) 04:52:09ID:/+Zib1Pr1296
46656
1679616
60466176
2176782336
0793nobodyさん
2009/07/26(日) 04:56:01ID:VnzjqimA分かりやすい説明ありがとう。
0794nobodyさん
2009/07/26(日) 05:09:20ID:???0795nobodyさん
2009/07/26(日) 05:26:48ID:o1BXfd9yスコープが変わるごとに別のファイルにあるfunc( )を呼び出したいのですが、
うまく行きません。
スコープ内でのみ有効なincludeみたいなのは無いのでしょうか?
// やりたいのはこんな感じ。
for( $i=0; $i<10; $i++ ){
include("func" . $i . ".php");
func();
}
0796nobodyさん
2009/07/26(日) 05:33:04ID:???そんなことやっても自滅するだけ
0797nobodyさん
2009/07/26(日) 05:36:24ID:???なんかエラーが出てるの?出てるならだしなよ
それともfunc0のfunc()しか実行されないとか?
もっと詳細なこと書いてくれないと困っちゃうよ
0798nobodyさん
2009/07/26(日) 05:47:36ID:/+Zib1Pr誰も知らないことだが、その技は俺が先に発案した技だからな
0799nobodyさん
2009/07/26(日) 05:49:18ID:???スコープが変わるごとにってそれ同じスコープだけどな
どうしてもやりたいなら
http://jp.php.net/manual/ja/function.runkit-function-remove.php
とか
0800nobodyさん
2009/07/26(日) 05:56:24ID:???どういうケースを想定してるのかぜひ教えてほしい
0801798
2009/07/26(日) 05:56:36ID:/+Zib1Prついでに書いとく
その技はWEBサイトにおいて極めて有効
その技を完璧に操れば、どんな巨大なサイトでも構築できる
頑張れ
0802nobodyさん
2009/07/26(日) 09:53:04ID:adDNcXgh【PHPのバージョン】5.2.9
【連携ソフトウェア】MySQL,Apache
【質問内容】 先に自鯖板の方で質問させて頂き、webprogでやれと怒られたのでこちらで質問させて頂きます。
> 先ほどPHP5.2.9にpeclを使ってAPCを導入、設定したのですが
> PHPの実行時にPHP Startup: apc.shm_segments setting ignored in MMAP mode in Unknown on line 0と表示されるようになってしまいました。
> どうもMMAPモードなのにもかかわらずapc.shm_segmentsを設定しているのを警告してくれているようなのですが
> メモリを大量に積んでいるので、自分はshmで動作させたいと思っています
> ですが、ドキュメントを見る限り[apc.mode]という設定項目は現在のバージョンでは削除されているようなのです
> この場合、動作モードをMMAPからshmに変更するにはどの様にすれば良いのでしょうか?
あちらへ書いた文章の引用ですが、宜しければお願いします。
0803nobodyさん
2009/07/26(日) 11:06:09ID:LoPusb4z$num_org = $_GET['num'];
ってしておいて
echo $num;
で値が取れてしまうんだが・・
php5
0804nobodyさん
2009/07/26(日) 11:06:53ID:???0805nobodyさん
2009/07/26(日) 11:09:41ID:LoPusb4zwindowsならいけたんだが
linuxでやったらなぜかダメだった
見間違いかもしれないから
もっかいみてみるけど・・
0806nobodyさん
2009/07/26(日) 11:13:46ID:LoPusb4z<?php
$num_org = $_GET['num'];
echo "num=".$num;
?>
かなり端折ったけど、これで確認できた・・
test.php?num=10
でやったら$num_orgじゃないのにnum=10って表示されました。
windows2000 php5.2.6 localhost
0807nobodyさん
2009/07/26(日) 11:17:53ID:LoPusb4z0808nobodyさん
2009/07/26(日) 11:19:07ID:LoPusb4z0809nobodyさん
2009/07/26(日) 11:21:30ID:???$_GET['num'];をechoのところと同じにしてるからなんだろうけどなぜなんでしょうか
0810nobodyさん
2009/07/26(日) 11:51:29ID:???0811nobodyさん
2009/07/26(日) 12:00:10ID:???0812nobodyさん
2009/07/26(日) 12:04:35ID:???だろ
0813nobodyさん
2009/07/26(日) 12:26:44ID:???php5.2.6ってデフォでregistar_globalsってoffじゃないのか?
0814nobodyさん
2009/07/26(日) 12:40:45ID:LoPusb4zぐぐってみました
こんなのがあったなんて知りませんでした。
すっきりしましたありがとうございました。
0815nobodyさん
2009/07/26(日) 12:47:38ID:VnzjqimAデータベースの仕様上、字数オーバーのため、
どうしても圧縮しないとできないのです。
その苦肉の策が、36進法という最適解です。
>>796
少なくても、質問に答えられないあなたが、そのようなことを資格はありませんね。
0817nobodyさん
2009/07/26(日) 13:07:32ID:???0818nobodyさん
2009/07/26(日) 13:09:36ID:VnzjqimAもちろん、integerやlongも考えました。
しかし、それらの型は浮動小数計算のため、
利子計算などを色々やると誤差が出ます。
金融系の開発をしておりますので、これは致命傷です。
0819nobodyさん
2009/07/26(日) 13:55:19ID:???0820nobodyさん
2009/07/26(日) 15:22:00ID:???123.12.1みたいな変なのはもう数値ではないんだから
0821795
2009/07/26(日) 15:56:02ID:???>>799
>>800
>>801
ありがとうございます。
説明不足で申し訳ありませんでした。
例では示しませんでしたが、
func( )は巨大な配列(16000個)を返す関数です。
func0.php〜func9.php内には、サイズは同じで中身の違う配列が定義されています。
0〜9の選択はユーザの次第です。
このとき、0〜9の1個だけを呼ぶ場合もあれば、
0〜9の中から2個を呼んで、関数から返ってきた2つの配列を足し合わせる、といったこともします。
ファイルを別々にしているのは、1個1個のファイル自体が巨大なため、
必要なfunc[0-9].phpのみを必要な時のみインクルードして、無駄な資源確保を避けたいと考えたからです。
func( )と名前を統一しているのは、インターフェースの統一のためです。
for文で例より、もっとシンプルに書くなら以下のような感じです。
===========================================
{
include("func0.php");
$A = func();
}
// スコープを抜けたので、func0.phpはメモリから開放
===========================================
0822nobodyさん
2009/07/26(日) 16:17:49ID:???func0()呼んで
適当な配列にでも入れとけばいいじゃん
インタフェースの統一ってのが意味不明
0823nobodyさん
2009/07/26(日) 17:56:26ID:???こいつはとんだしったかだな
算数の質問しにくるような馬鹿が金融系開発?
釣りもほどほどにしとけ
0824nobodyさん
2009/07/26(日) 17:59:23ID:???アイディアを盗まれる前に起業すべき
http://itpro.nikkeibp.co.jp/article/COLUMN/20080104/290425/
>>821
*** data.php
<?php return array(1, 2, 3);
*** main.php
<?php $a = include 'data.php';
データをわざわざ実行コードにする必要性は?なければ別のフォーマットを選ぼう
serialize()/unserialize(), json_encode()/json_decode(), fgetcsv()/fputcsv()
0825nobodyさん
2009/07/26(日) 18:33:08ID:???・ファイル名に変換
・VisualBasic
・ストップウオッチを片手に処理速度を計測
あたりが凄まじくネタっぽいな
0826nobodyさん
2009/07/26(日) 18:47:06ID:???0828192.168.0.774
2009/07/26(日) 19:51:13ID:+70USpznechoのリファレンスを見ました。でも、↑のようなものについては見当たりませんでした。
これは、どのように解釈したらいいんでしょうか?また↑の出力結果は同じになりますか?
これと似た構文でC言語にもありますか?
よろしくお願いします。
0829nobodyさん
2009/07/26(日) 19:57:38ID:???0830nobodyさん
2009/07/26(日) 20:58:41ID:???function call_func($func_number){
require_once('func' . $func_number . '.php');
$result = func();
// おぞましい黒魔法でfunc()の定義を削除
return $result;
}
黒魔法の詳細は
ttp://jp2.php.net/manual/ja/function.runkit-function-remove.php
引数以外のもの(環境変数などのスーパーグローバルなど、関数からアクセスできるもの)で処理を分けるなら、勿論それでもいい。
まあ、オススメできない。俺なら、func1 - func9で定義される関数func()には別名を使っておく。
そうすりゃ、衝突を気にしなくていいからな。
OOP的なプログラム構造にするなら、まずメソッドfunc()を持つ別個のクラスを10個用意する。
で、上記call_func()は、直接結果を返すのではなく、引数などに応じて適切なファイルをrequireしてクラスのインスタンスを返す。
呼び出し側は$obj->func()を呼べば、望む結果が得られる。
メモリ消費を気にするなら、そもそも16,000なんて大きさの配列を作るべきではない。
毎回16,000個の変数を全部使う、ってんなら話は別だけどな。
0832nobodyさん
2009/07/27(月) 12:02:48ID:TX4gysr6しかしユニットテストを書いて実行すると、
Cannot send session cookie - headers already sent
というエラーが出てテストできません。
まあ当たり前と言えば当たり前なんですけど、でもテストできないのも困ります。
こんなとき、どうすればいいでしょうか。
つまり$_SESSIONを扱うライブラリで、Cannot send session cookie エラーを回避しつつテストするにはどうしたらいいでしょうか。
0833nobodyさん
2009/07/27(月) 12:13:13ID:???>サンプルデータ約110万件のデータ検索時間は約1秒になった
たった110万件のデータの中から特定のものを抽出するのに1秒掛かるの?速いの?
0834nobodyさん
2009/07/27(月) 12:29:27ID:???実行開始と終了で引き算して結果をどっか隅っこにでも出力すればいいのに
なんでそんなとこでアナログマなんだよ
0835nobodyさん
2009/07/27(月) 12:36:51ID:???問い合わせが来るだろうが。
夏休みは、学生の知ったかばかりだな。
0836nobodyさん
2009/07/27(月) 12:46:59ID:???0838nobodyさん
2009/07/27(月) 13:10:36ID:???aho の検索結果 約 4,440,000 件中 1 - 10 件目 (0.12 秒)
おまえはこれを否定してるんだな
それこそ知ったか、もし社会人なら恥ずかしくて自殺するレベルだぞ?
0839nobodyさん
2009/07/27(月) 13:13:54ID:???検索エンジンという特殊事例を出してきて、
しかもgoogleの一例だけで全てを語るこの薄っぺらい脳みそwww
0840nobodyさん
2009/07/27(月) 13:23:46ID:???検索エンジンの何が特殊事例なんだ?やってることは同じだろ
指摘を素直に認められないなんて、なんてちっぽけな人間なんだよ
0841nobodyさん
2009/07/27(月) 13:26:02ID:???0842nobodyさん
2009/07/27(月) 13:32:02ID:???0843nobodyさん
2009/07/27(月) 13:34:04ID:???0844nobodyさん
2009/07/27(月) 13:34:15ID:RGhhhkQisystem('ls')で望む結果は取得できたのですが
system('history')では何も出力されません(エラーも)
ソース下記状態です
<?
ini_set ( "display_errors", "1" );
ini_set('error_reporting', E_ALL);
system('history');
?>
サーバの/bin/以下をみるとlsがあるのにhistoryがありませんでした
これが関係していると思うのですが、コンソールからhistoryとうつと問題なく履歴が表示されます
そしてwhereis historyとうつと
[root@www bin]# whereis history
history: /usr/share/man/man1/history.1.gz /usr/share/man/man3/history.3.gz
のようにmanしかひっかからないのですが
historyはどこにあるのでしょうか?
また、そもそも
system('history');
が無反応なのは/bin/にhistoryがないから、で合ってるんでしょうか?
0846nobodyさん
2009/07/27(月) 13:37:12ID:???ケンカすんなよw
>>835氏は、通常のwebサイトやシステムで、実行時間を隅っこに表示するのはおかしい。
>>838氏は、実行時間を隅っこに表示する事は珍しい事ではない(検索エンジンなど)
と言ってると俺は読んだ。そして両方言ってることは間違ってないと思った。
0847nobodyさん
2009/07/27(月) 13:37:37ID:???historyは通常のコマンドじゃなくて、shell内のみで利用可能な命令。
cdとかと同じで、system()では実行できないと思うよ。
もし$HOME/.bash_history とかあれば、それを読み込んで表示するしかないと思う。
0848nobodyさん
2009/07/27(月) 13:39:54ID:???Manpage of BASH_BUILTINS
http://www.linux.or.jp/JM/html/GNU_bash/man1/builtins.1.html
historyは組み込みコマンド。
0849nobodyさん
2009/07/27(月) 13:44:50ID:???0850nobodyさん
2009/07/27(月) 14:26:50ID:RGhhhkQiありがとうございました
$HOME/.bash_historyから読み込めそうです
後学の為に組み込みじゃないコマンドをしっておきたいのですが
【組み込みじゃない】のをぐぐるときのキーワードを教えて頂けますでしょうか
0851nobodyさん
2009/07/27(月) 14:31:28ID:???0853nobodyさん
2009/07/27(月) 14:37:36ID:???文中でしても作法的におかしくはない?
0854nobodyさん
2009/07/27(月) 14:40:06ID:???0855nobodyさん
2009/07/27(月) 14:45:33ID:jUhtLxSqどうもです〜。
0856nobodyさん
2009/07/27(月) 14:57:47ID:???そして、たいてい代替案はある。
0857853
2009/07/27(月) 15:15:40ID:???設定ファイルを外部ファイルにしててそれを読み込もうとしてるんですけど
phpファイルの変数として定義されてるものです。
<?php
$hoge=13
?>
みたいな。
改修なので設定ファイル自体のフォーマットはかえられないので
includeしかないかなと
0858856
2009/07/27(月) 15:21:36ID:???0859nobodyさん
2009/07/27(月) 15:22:45ID:???0860nobodyさん
2009/07/27(月) 15:25:35ID:???0861nobodyさん
2009/07/27(月) 15:32:56ID:???0862856
2009/07/27(月) 15:56:32ID:???読み込むファイルが以下のような内容なんだけど、
局所化したほうがいいかと思って
Class hoge1{
Function hoge2(){
//ここで使う
}
Function hoge3(){
//ここで使う
}
Function hoge4(){
//ここでは使わない
}
}
0863nobodyさん
2009/07/27(月) 16:19:15ID:???0864nobodyさん
2009/07/27(月) 16:20:14ID:???importとincludeじゃ意味あいが違うけど
■ このスレッドは過去ログ倉庫に格納されています