【PHP】下らねぇ質問はID出して書き込みやがれ 97
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/07/23(金) 06:24:51ID:3G71fl8i過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
前
【PHP】下らねぇ質問はID出して書き込みやがれ 96
http://pc11.2ch.net/test/read.cgi/php/1275032024/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0758nobodyさん
2010/09/15(水) 18:01:43ID:???0759741
2010/09/15(水) 18:03:35ID:???0760nobodyさん
2010/09/15(水) 18:05:19ID:???0761nobodyさん
2010/09/15(水) 18:08:28ID:???>cookieとsessionは同じですか?
違う
簡単に言うと、cookieはクライアント側に、sessionはサーバ側に格納される
そのためセッションIDが盗まれる事はあっても、sessionの中身を直接見られる事は普通は無い
>>749で聞きたかったのは、パスワードをセッションに入れて持ち回す理由が知りたかった。
0762741
2010/09/15(水) 18:31:39ID:???0763nobodyさん
2010/09/15(水) 18:37:59ID:???0764741
2010/09/15(水) 18:41:01ID:???0768nobodyさん
2010/09/15(水) 20:14:43ID:tjiwRP0q0769646
2010/09/15(水) 20:17:24ID:KXuGaOGrアドバイスありがとうございました(´・ω・`)ノシ
0770nobodyさん
2010/09/15(水) 20:18:23ID:???セキュリティに拘るならsession IDとIPを紐付けしたりリクエスト毎にsession ID変えたりhttpsで丸ごと暗号化したり
0771741
2010/09/15(水) 21:36:18ID:???0772646
2010/09/15(水) 22:02:53ID:KXuGaOGr訪問者の方がブラウザでcookieを受け入れてもらうよう設定してくるのを望むほか無いんでしたっけ?
0774nobodyさん
2010/09/15(水) 22:21:48ID:???0775646
2010/09/15(水) 22:32:50ID:KXuGaOGr> hiddenでもたせれば?
http://www.yc.tcu.ac.jp/~yamada/doc/php/0802.html
のサイトの
> ■HTMLフォームのhiddenコントロールでセッションIDを引き渡す方法
で解説している方法ですね。
<form action="session_start6a.php" method="post">
<input type="hidden" name="<?=session_name()?>" value="<?=session_id()?>">
<input type="submit" value="次ページ">
</form>
確かにこの方法ですとcookieを拒否している人がリンクをクリックしてもURLにsession変数関係のゴミが
付くことはなくなりますがリンクは input で実現しなければならないんですね・・・
単なる画像リンクなんで input で表示するのはちと大げさかと・・・
普通の <a href="photo_hyouji.php?file=shashin_01.jpg">写真</a> という感じで、なおかつURLにゴミが
付かないようにセッション情報を渡せれば万々歳なんですが・・・
0776nobodyさん
2010/09/15(水) 22:35:54ID:???0777nobodyさん
2010/09/15(水) 22:47:26ID:???ならGETじゃなくてPOSTにすりゃいいんじゃね
0779646
2010/09/15(水) 23:08:36ID:KXuGaOGr> ならGETじゃなくてPOSTにすりゃいいんじゃね
<a href="photo_hyouji.php?file=shashin_01.jpg">写真</a>
の書式でGETではなくPOSTにする方法はありますか?
>>778
やはり管理上写真を表示するPHPファイルと、日記のPHPファイルは別ディレクトリの方がいいかと・・・
0780nobodyさん
2010/09/15(水) 23:15:11ID:???ただそれはjavascriptだからここじゃスレ違いになる
調べてみるといいよ
0781nobodyさん
2010/09/15(水) 23:17:14ID:???javascriptでならPOSTはできるが
javascript切ってる人がいるかもしれないのでだめだよな
質問時にもうちょっとやりたい事と現状を整理して書くべきだ
あと条件もあるなら条件も
リファラとれないやCOOKIE使えないなんて
WEB全体で考えると数%だろそれをフォローする労力と
その見返りからも考えるべきだな
まぁ仮に貴方のサイトでそれらの人が5割超えるとかって話なら別だが
0782nobodyさん
2010/09/15(水) 23:18:28ID:???> <a href="photo_hyouji.php?file=shashin_01.jpg">写真</a>
> の書式でGETではなくPOSTにする方法はありますか?
アホだとは思うが
hogehoge/photo_hyouji.php?file=shashin_01.jpg
fugafuga/photo_hyouji.php?file=shashin_01.jpg
hagehage/photo_hyouji.php?file=shashin_01.jpg
みたいにsessionidをディレクトリに含めて
rewriteでどのディレクトリにあっても同じCGI呼ぶようにすればいい
0783nobodyさん
2010/09/15(水) 23:31:30ID:???> やはり管理上写真を表示するPHPファイルと、日記のPHPファイルは別ディレクトリの方がいいかと・・・
どういう理由で?
そうしたせいで今困ってるわけじゃないの?
0784nobodyさん
2010/09/15(水) 23:45:43ID:???A.phpと同じディレクトリにB.phpを読み込むC.phpを置く。
■A.php
<a href="C.php?file=B.phpのパス">写真</a>
■C.php
<?php
require_once($_GET['file']);
?>
こんな感じにしておけば、B.phpで画像のパスは不要となり、ファイル名だけでいける。
0785nobodyさん
2010/09/16(木) 00:18:08ID:???クラス使えばいいでしょ
0788nobodyさん
2010/09/16(木) 00:45:53ID:???0790nobodyさん
2010/09/16(木) 03:42:09ID:???0791nobodyさん
2010/09/16(木) 06:23:15ID:???0792nobodyさん
2010/09/16(木) 06:53:56ID:???0793nobodyさん
2010/09/16(木) 09:11:39ID:???0795nobodyさん
2010/09/16(木) 10:29:11ID:???0798nobodyさん
2010/09/16(木) 12:01:55ID:/BVvHaMjfirefoxでは動作するのに、IEやChromeでは途中でセッションがなくなってしまうバグが起きていて悩んでいます。
※ ちなみにセッションの中身はこんな感じです。 (これが多すぎるのか、別に容量に問題が出ないレベルなのかは分かっておりません)
array
'total_page' => int 1
'totalItems' => int 9
'lastPageItems' => int 9
'lastPageSignal' => boolean true
'page_list' => //ここがたまに100行の配列になる時もある。
array
0 => int 1
'page_number' => int 0
'item_number' => int 0
'Config' =>
array
'userAgent' => string '7c0b362895da60915e17b51a0a55e3aa' (length=32)
'time' => int 1284607023
'timeout' => int 10
'category' => string '500592' (length=6)
'date' => string 'pubdate:after 08-2010 and pubdate:before 10-2010' (length=48)
0799798
2010/09/16(木) 12:06:53ID:/BVvHaMj0800nobodyさん
2010/09/16(木) 12:11:43ID:???セッションIDだけだから、中身の多い少ないでクライアント依存の問題
が出るとは普通考えられないな。
クライアント依存の問題は似たような問題で悩んだ人がいないかぐぐって
解決されてればラッキー、みつからなければ頑張って自分で追いかける
しかないよ。まずはクライアントーサーバ間のやり取りを追いかけてどっち
の問題か切り分けるのが第一歩だと思う。
0801nobodyさん
2010/09/16(木) 12:18:57ID:zCfQEIBbsyntax error, unexpected T_INCLUDE_ONCE, expecting T_FUNCTION in includeした行
と出てしまってうまくいきません。
ぐぐっても情報を見つけられないのですが、どうすれば良いでしょうか。
params.php
var $test = array(
array('id' => 1, 'name' => 'yui'),
array('id' => 2, 'name' => 'mio'),
...
);
test_model.php
<?php
class TestModel extends AppModel{
include_once('params.php');
...
}
0802798
2010/09/16(木) 12:38:34ID:/BVvHaMjレスありがとうございます。とても参考になります。
セッションIDの中の中身が多くなっても、影響はなさそうだということですね。
さらに、この程度なら上限のサイズにも達していないだろうということですよね?
実は、処理ごとにvar_dumpを何行試したりして、firefoxとIEでの違いを
チェックしているのですが、IEだとなぜかセッションの挙動が変わって原因がつかめないのです。。
かれこれ昨日からググったり、debugしたり、18時間ぐらいずっとやってて、かなり近いとこまでたどり着いたけど、
そもそも全部配列に格納して、hiddenでやればいいんじゃないか?と思ったわけです。
0804nobodyさん
2010/09/16(木) 12:59:09ID:???行数多くなるから詰めてあるけど
自分で整形して見やすいようにしてから見てね
■program.php
include "setting.php";include "class.php";$obj = new B();
echo $obj->text_A, "\n";echo $obj->text_B, "\n";$obj->setText();echo $obj->text_B, "\n";
$obj->hash = $ary;print_r($obj->hash);
■class.php
class A{public $text_A = "This is A.";public function getText(){return $this->text_A; }}
class B extends A{public $hash;public $text_B = "This is B.";public function setText(){$this->text_B = parent::getText();}}
■setting.php
$ary = array("1ch", "3ch", "4ch", "6ch", "8ch", "10ch", "12ch");
0805nobodyさん
2010/09/16(木) 13:01:45ID:???■program.php
<?php
include "include.php";
include "class.php";
$obj = new B();
echo $obj->text_A, "\n";
echo $obj->text_B, "\n";
$obj->setText();
echo $obj->text_B, "\n";
$obj->hash = $ary;
print_r($obj->hash);
0806nobodyさん
2010/09/16(木) 13:02:25ID:???class A
{
public $text_A = "This is A.";
public function getText()
{
return $this->text_A;
}
}
class B extends A
{
public $hash; // 外部ファイルに書いた配列データが入る所
public $text_B = "This is B.";
public function setText()
{
$this->text_B = parent::getText();
}
}
0807nobodyさん
2010/09/16(木) 13:03:54ID:???■setting.php
<?php
$ary = array("1ch", "3ch", "4ch", "6ch", "8ch", "10ch", "12ch");
0809808
2010/09/16(木) 13:07:16ID:???>>801ね
↓みたいにクラスの中にinclude使うのは今日からやめよう
class TestModel extends AppModel{
include_once('params.php');
...
}
0811nobodyさん
2010/09/16(木) 13:23:47ID:???0812nobodyさん
2010/09/16(木) 13:35:15ID:???0813nobodyさん
2010/09/16(木) 13:39:32ID:???0814nobodyさん
2010/09/16(木) 13:42:01ID:???あきらかに理解できてなさそうだなぁ。近くに聞ける人はいないの?
0816798
2010/09/16(木) 14:24:21ID:/BVvHaMjありがとうございます。
クッキーの容量制限とセッションの容量制限は同じだと思っていました。
>>814
恥ずかしながら、今回、セッションを一から勉強している段階です。
近くに聞ける人は今いないもので。。
カテゴリごとにそれぞれページ数があって、ボタンをクリックすると
画像の表示がぐるぐる変わるサイトを作っています。
そのページナンバーやカテゴリ、期間指定などをセッションでやりとりしていたのですが、
これを機会に全部hiddenにいれて、GETで受け渡し、それぞれのページをURLコピペできる
ようにすればいいのではないか?と考えました。
GETの制限文字数に余裕があるなら、この考えは悪くないでしょうか?
0817nobodyさん
2010/09/16(木) 14:27:43ID:???0818nobodyさん
2010/09/16(木) 14:42:28ID:???hiddenでやると構造もったデータはシリアライズしてエンコードデコード
してみたいな手間がかかるし、場合によっては改竄対策もいるし、
ページサイズでかくなるしといろいろあるから、あまりお勧めはしないな。
特に今回は配列いれてるみたいだし。
そもそもPHPのクッキー使ったセッション維持なんて世の中でものすごく
たくさん使われているのでIEでうまくいかないなんてことがあったら
大問題になってるはずだけどそんな話はきかんぞ。firefoxとIEじゃなくて
自分の環境の問題だったりしないか。片方にだけ変なセキュリティソフト
入れてるとかそういう類。
0819798
2010/09/16(木) 14:44:19ID:/BVvHaMjありがとうございます。序列です!
ただ、ページリストは長い配列になるので、hiddenの受け渡しにはそぐわないかもしれません。。
一応こういうやり方はあるにはあるみたいですが。
http://planetcakephp.org/aggregator/items/1532-cakephphidden%E3%81%A7%E9%85%8D%E5%88%97%E3%82%92%E6%B8%A1%E3%81%97%E3%81%A6%E3%82%B2%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%84
0820798
2010/09/16(木) 14:49:47ID:/BVvHaMjなるほど。どうもありがとうございます。
一から全部hiddenで書き直そうとする瞬間だったので、本当に助かりました。
もう少し、セッション周りで自分の環境の問題を調べてみます。
0821nobodyさん
2010/09/16(木) 14:57:16ID:???>カテゴリごとにそれぞれページ数があって、ボタンをクリックすると
>画像の表示がぐるぐる変わるサイトを作っています。
セッションもhiddenも使う必要ないと思うんだけど
0822798
2010/09/16(木) 15:25:14ID:/BVvHaMj本当ですか。、というと、どうやればいいのでしょうか。
ジャバスクリプトとかかな。。 いや、そんな難しいことしなくて、なにかあるのかな。
0823nobodyさん
2010/09/16(木) 15:38:43ID:???共通の処理をする場合はstaticメンバ関数でよいですかね?
0824823
2010/09/16(木) 15:49:38ID:???0826nobodyさん
2010/09/16(木) 16:06:34ID:???function __construct() {
echo "construct";
}
function __destruct() {
echo "destruct";
}
}
new Hoge();
これをしてみればわかる
0829823
2010/09/16(木) 16:49:46ID:???0832nobodyさん
2010/09/16(木) 17:26:09ID:???0834nobodyさん
2010/09/16(木) 17:51:04ID:???0835nobodyさん
2010/09/16(木) 18:11:38ID:UCptVaL2任意の深さを持つ配列を作成したいのですがどうすればよいでしょうか
例えば、
$key = array( 'k0', 'k1', 'k2' );
$value = 'v';
$array = get_array( $key, $value );
とした場合、
$array['k0']['k1']['k2'] = 'v';
と言う結果を得たいのです。
こんな関数 get_array の実装がわかる方おられましたら教えてください。
※もちろん、 $key の数は可変です
0836nobodyさん
2010/09/16(木) 18:18:38ID:???$r = $value;
foreach (array_reverse($key) as $k) {
$r = array($k => $r);
}
return $r;
}
0838nobodyさん
2010/09/16(木) 18:31:39ID:???0839nobodyさん
2010/09/16(木) 18:34:15ID:cwt3W9Qn1つの cmd.exe が約2.5MB、1つの php.exe が約13MBメモリを消費しているようで、
大量のプロセスを立ち上げることが出来ません。
HTTPd上で走らせた方がメモリが節約できたりするのでしょうか?
よろしくお願いします。
0840nobodyさん
2010/09/16(木) 18:37:24ID:???thread版とnon thread版のどちらの使ってるのかも書いてくれないと回答に困るかな
0842839
2010/09/16(木) 18:44:32ID:???PHP 5.2.10 (cli) (built: Jun 17 2009 16:16:57)
php-5.2.10-Win32.zip です。thread版だと思います。
0843nobodyさん
2010/09/16(木) 18:47:13ID:UCptVaL2ありがとうございましたm(__)m
徹夜で半分気を失ってたところです。
ほんとにすいません。
本当に気絶していました。
すいません。
すいません。
0846nobodyさん
2010/09/16(木) 19:13:55ID:???5.3.3に変えても、約11.3MB消費します。
減った分も、Unlha などのモジュールが無効になった為ではないかと思います。
0847nobodyさん
2010/09/16(木) 19:26:07ID:???0848nobodyさん
2010/09/16(木) 20:44:12ID:???ありがとう。
では自分の例だと、こういう風になるのかな。
params.php
<?php
$test = array(
array('id' => 1, 'name' => 'yui'),
array('id' => 2, 'name' => 'mio'),
...
);
test_model.php
<?php
class TestModel extends AppModel{
public $test;
...
}
test_controller.php
<?php
function some_func(){
include "params.php";
$testObj = new TestModel();
$testObj->test = $test;
...
}
つまりクラス内部でのincludeをやめて、外から代入してやると。
クラス内部でincludeしてはいけない理由は、PHPではできないからでしょうか?
0849804-809
2010/09/16(木) 20:59:07ID:???constructを使えばな
でもしないほうがいい
0850nobodyさん
2010/09/16(木) 20:59:56ID:1fMzrbORZend Server CE (ZendServer-CE-php-5.3.3-5.0.3-Windows_x86.exe) を入れようとしたんですが、
インストール途中で、「Error: -1622 インストールのログ ファイルを開くときに、エラーが発生しました。
指定されたログ ファイルの場所が存在し、書き込み可能であることを確認してください。」
というエラーメッセージが表示され、インストールに失敗します。
何か分かる方いますでしょうか?
0851nobodyさん
2010/09/16(木) 21:01:41ID:???0853804-809=EM111-188-45-97.pool.e-mobile.ne.jp
2010/09/16(木) 21:17:54ID:???いずれ分かるときがくるさ
ぽまえならたぶん意味が分かる日はそう遠くないと思う
0854nobodyさん
2010/09/16(木) 21:22:53ID:???http://www.youtube.com/watch?v=P5sWncFiYnA
0855nobodyさん
2010/09/16(木) 21:40:10ID:zUsTEVn5session情報が送られないという決まりがあります。
それをさらに突き進め、相対パスのリンクでも事前に指定した特定のリンクだけにsession情報を送り、
それ以外のリンクはたとえ相対パスの形であっても絶対パスのリンクと同様にsession情報は
送らないように設定することは可能でしょうか?
0856nobodyさん
2010/09/16(木) 21:41:08ID:???そのページにあるFormの〜番目にあるValue値を取得することは可能でしょうか
もし無理ならば 他の方法を教えてください
0857856
2010/09/16(木) 21:42:15ID:qlMmQX9a>>856です
0858nobodyさん
2010/09/16(木) 22:05:44ID:n8iVW5jh書き方がわからなくて困っています。
foreachでキー名は取れますが、新しいキー名を連想配列に戻す方法がわかりません・・・。
例
array(2)
{
["Name1.id"]=> int(1)
["Name1.param"]=> int(45)
}
をこうしたい
array(2)
{
["Name2.id"]=> int(1)
["Name2.param"]=> int(45)
}
■ このスレッドは過去ログ倉庫に格納されています