08/11/22 18:09:23
CakePHPのデフォルトってSHA256だろ?
だったら複合化は無理だろ
可逆暗号に変える必要があるが、セキュリティを落としてまで複合化する必要性ってなんだ?
698:696
08/11/22 18:25:21 qo4yapkz
>>697
ユーザ自身にパスワードの変更をさせたいのですが、
入力フォームのデフォルトに、復号化した値を入れたいなーと思ったんです。
699:nobodyさん
08/11/22 21:10:29
すみません、細かい質問なのですが、
controller.php のソースで、
$this->{$this->modelClass}
という記述がよく見つかります。
これは何をしているのでしょう?
そもそも、$this->{何か} という記述がどのような動作になるのか、わかりま
せん。教えていただけないでしょうか?
700:nobodyさん
08/11/22 21:13:10
ちょっと補足します。
$this->プロパティ名 なら、どういう動作かはもちろんわかります。
$this->{何か評価される式} というのが、どういう振る舞いをするのかわから
ないのです。
ためしにこんなことをしてみましたが、エラーになりました。
$x = "hoge";
$this->{$x}; // エラー
701:nobodyさん
08/11/22 21:19:42
マニュアルくらい読んでからやろうよ
702:nobodyさん
08/11/22 21:31:35
>>701
マニュアルとは、PHPマニュアルのことでしょうか?
一応見たのですが、該当箇所がわかりませんでした。
URLリンク(search.net-newbie.com)
ちなみにさっきの件は、少し不正確でした。$this だとうまく行きますが、そ
れを代入した変数だとうまく行きません。
class Test {
; ;var $hoge = 1;
; ;function fuga() {
; ; ; ;$x = "hoge";
; ; ; ;var_dump($this->$x);
; ;}
}
$test = new Test();
$test->fuga(); // int(1)
var_dump($test->"hoge"); // error
$thisだけ、プロパティ名自体を変数にできるようです。
703:nobodyさん
08/11/22 21:32:18
あ、余計な ; が入ってしまった…。
704:nobodyさん
08/11/22 21:32:34
単なる可変変数です
705:nobodyさん
08/11/22 21:38:19
>>704
可変変数って、$$x という風に、$が多重になっているものだと思うのですが…。
URLリンク(search.net-newbie.com)
>>702のコードには、$$ は一つもありません。
706:nobodyさん
08/11/22 21:42:30
$this->{$this->modelClass}
あるじゃん
707:nobodyさん
08/11/22 21:49:23
>>706
??すみませんが、おっしゃることがわかりません。
grep "$$" で一行も返ってこないのですが、それでも可変変数なのですか?
そして、もし単なる可変変数なのなら、
class Test {
var $hoge = 1;
function fuga() {
$x = "hoge";
var_dump($this->$x); //これはOK。
}
}
$test = new Test();
$test->fuga();
$x = "hoge"
var_dump($test->$x); // これはNG.
こうなるのはなぜなのでしょう?
708:nobodyさん
08/11/22 21:52:16
{$this->modelClass}
この部分が可変なんだろ
709:nobodyさん
08/11/22 22:04:46
$$が書いてあれば可変か
字面しか理解できない阿呆の典型だな
710:nobodyさん
08/11/22 22:22:44
URLリンク(jp.php.net)
ここのnote欄に、膨大な試行錯誤が見つかりました。
可変変数には、undocumentedな振る舞いがたくさんあるようです。
どうやらこれが答えですね。
こういうundocumentedな挙動って、いつ廃止されるかわからないものでしょう
に、フレームワークに利用するとはすごい話だと思うんですが、考えてみたら
documentedな関数の振る舞いもPHPはしょっちゅう変わるんでしたっけ。
711:nobodyさん
08/11/22 22:25:32
うちらに聞かれても
712:nobodyさん
08/11/22 23:27:45
>>707
書き方も間違ってるし変数のスコープが分かってない。
コンストラクタやセッター的なもので
オブジェクトから見える場所に代入してないんだから
fugaメソッドを呼ぶまで、testインスタンスの中からは$xは見えない。
713:nobodyさん
08/11/22 23:46:37
初心者さんかもしれないけど、OKとNGだけでなく
何のエラーが出るのか、そのエラーは何が原因なのか、そのエラーの解決方法は何か
って辿っていくのがプログラミングのコツだよ
714:nobodyさん
08/11/23 03:34:16
>>698
何も入力してなかったら変更しない
してあったらそれに変更だろJK
715:696
08/11/23 04:48:20 l1Rm9lxO
>>714
うーん、まぁそうですね。
しかしAuth compornent使うと、パスワード一覧表とか表示するのも結構大変てことなんすかね
716:nobodyさん
08/11/23 05:06:33
どんだけセキュリティポリシー甘いんだよお前の会社は
717:nobodyさん
08/11/23 06:16:38
paginateでcurrent_date以前の物だけ表示みたいのってどうやるのかな?
array('hogehoge' => current_date)
array('hogehoge' => '日付')
みたいな感じだと `hogehoge` = `日付` みたいにしかならないよね?
current_dateはともかく日付指定でも不等号条件は使えないのかな?
718:696
08/11/23 06:19:23
>>716
いえ、仕事じゃないです。ていうか、このレベルでphpの仕事出来ないかと…
でもあれですね、こういうことは普通しないってことは解りましたです。
もし、やりたいなら入力時に別のカラムに生のパスワード入れる方法を思いつきましたので、
そうすることにします。皆さんお相手くださってありがとうございました。
719:nobodyさん
08/11/23 06:47:23
>>717
array('hogehoge <=' => current_date)
720:nobodyさん
08/11/23 07:45:49
>>719
ズバリです
ありがとうございます
('hogehoge' => '<= current_date')
とか最初やってて悩んじゃいました
721:nobodyさん
08/11/23 12:17:59
>>718
AuthComponentは、暗号化の方法を変えられるよ。
もし(セキュリティ的に問題なくて)、パスワードを可逆にしたいなら。
URLリンク(d.hatena.ne.jp)
722:nobodyさん
08/11/23 12:39:53
質問です。
Controller::paginate() の第一引数 $object が与えられなかった場合、
paginate()の戻り値は、controllerのデフォルトのmodelのインスタンスになる
と思うのですが、それって公式なドキュメントのどこに書いてあるのでしょうか?
APIドキュメントには、$object = null, と書いてあるだけで、実際nullだった場合の
paginate() の挙動については書かれていません。
URLリンク(api.cakephp.org)
723:nobodyさん
08/11/23 12:54:38
>>722
ソースはそうなってるね。
00882 } elseif (empty($object) || $object == null) {
00883 if (isset($this->{$this->modelClass})) {
00884 $object = $this->{$this->modelClass};
ドキュメントが必要?
724:nobodyさん
08/11/23 13:28:06
>>723
やっぱりソースを読むしかないのでしょうか?
> ドキュメントが必要?
あってほしいですね。ドキュメントに載ってない機能って、いつ廃止変更され
るかわからないから。
725:nobodyさん
08/11/23 17:29:12
ソースコード見れば、すぐにわかるんだから
詳細なドキュメントあってもなあ
該当記事を探すのに時間かかるし、英語だら翻訳とか余計手間だ
726:nobodyさん
08/11/23 17:30:39
>>712
> >>707
> 書き方も間違ってるし変数のスコープが分かってない。
>
> コンストラクタやセッター的なもので
> オブジェクトから見える場所に代入してないんだから
> fugaメソッドを呼ぶまで、testインスタンスの中からは$xは見えない。
別に間違っていないと思うのですが。
最終行の$xは、その一行前で定義されたグローバル変数です。
function fuga() の中で定義されているローカル変数とは
別のものです。
$y = "hoge"
var_dump($test->$y); // これはNG.
変数名を変えたら紛らわしくなかったかもしれません。
727:nobodyさん
08/11/23 17:34:04
>>726
クラスの初歩的な質問なら、スレが違う気がする。。。
728:nobodyさん
08/11/23 17:35:34
>>724
ドキュメントに載っていようが、RCの場合は変更されてもしょうがない。(事実findをはじめ変更多々あり)
paginateは、もう変更は無いだろうが
729:nobodyさん
08/11/23 17:37:43
>>726
該当と思われるスレ
【PHP】下らねぇ質問はID出して書き込みやがれ 76
スレリンク(php板)
PHPでOOP
スレリンク(php板)
730:nobodyさん
08/11/23 17:44:50
>>712氏への反論なのでここに書いたのですが、
確かにスレ違いなので、こちらに移りましょう。
【PHP】下らねぇ質問はID出して書き込みやがれ 76
スレリンク(php板)
731:nobodyさん
08/11/23 17:44:59
fuga内の$xはfugaの単なるローカル変数。Testのメンバ変数ではない。
732:nobodyさん
08/11/23 17:51:46
>>731
それはわかってますし、>>726でも「ローカル変数」って書いてます。
取り合えず>>730のスレにお越しください。
733:nobodyさん
08/11/23 18:08:06
喧嘩がしたかったようだね('A`)
734:nobodyさん
08/11/23 18:12:23
わざと喧嘩腰でデタラメ書いて、
顔真っ赤にした人が正解を書くのを釣るタイプ。
このタイプはもう飽きたよ。
735:nobodyさん
08/11/23 18:12:48
>>733
> 喧嘩がしたかったようだね('A`)
なんでそうなるのかぜんぜん理解できない。
誤解を訂正して誘導しただけじゃん。
736:nobodyさん
08/11/23 18:14:32
>>734
ぜんぜん釣りじゃないよ。
どこがデタラメなのか真剣に知りたいんだけど。
737:nobodyさん
08/11/24 17:47:59 V2OhDKFB
Cakeで開発されたアプリをUMLのシーケンス図などで記述するとどのように
書けるのか、サンプルをご存知のかたいませんか??
738:nobodyさん
08/11/24 18:21:36
CakeというかMVCモデルでさがしたほうがいいよ。
739:nobodyさん
08/11/24 23:29:29
シーケンス図なら考えるまでもないような気がしないでもない
740:nobodyさん
08/11/26 15:03:25
画像フォルダをアプリ毎に分けたくて、下記の様な構成でimgフォルダの下にフォルダを切ってファイルを置きました。
/cake/app/webroot/img/hoge/icon/aaa.gif
Viewではヘルパーを使って、$html->image('hoge/icon/aaa.gif', array('border' => 0))として呼んでいます。
これをPHP4が乗っているサーバー上で実行すると、画像が表示されず、
ソースを見てイメージタグのsrcに指定されているアドレスを直接叩くと下記のエラーが出てしまいます。
Missing Controller
Error: ImgController could not be found.
また元々/cake/app/webroot/img/にあった、cake.power.gifは正常に画像が表示され、
イメージタグのソースに表示されているアドレスを直接叩いても画像が表示されています。
ローカル環境では事情によりPHP5を使用しているのですが、こちらでは正常に表示されています。
PHP4だとこの画像管理方法は出来ないのでしょうか?それとも設定でしょうか?
741:740
08/11/26 15:17:25
書き忘れ。cakephpは1.2.0.7692 RC3です。
742:nobodyさん
08/11/26 16:03:06
>>740
htaccess は、正常に動作しているの?
webroot/img が存在するなら、index.phpに飛ばない(missing controllerにならない)
php4だと/img 以下にディレクトリを作れないということはないね。少なくとも
743:nobodyさん
08/11/26 16:09:19
>>740
追加
webroot/hoge が存在していなくても、missing controller にはなる
(ディレクトリ名のtypoとかも、あやしいかな)
744:nobodyさん
08/11/26 16:10:13
ごめん
webroot/img/hogeだった
745:740
08/11/26 16:30:50
>>742
htaccessは正常に動作していると思っています。
理由は、URLリンク(www.hogehoge.ne.jp)
だと正常にアクセス出来ているからです。
これをURLリンク(www.hogehoge.ne.jp)
にすると、Missing Controllerになるので、違う原因だと考えていました。
この考え方自体が変ですかね・・・。
.htaccessは元のファイルに下記の様にRewriteBaseを追加しています。
cake直下 RewriteBase /php/cake
cake/app直下 RewriteBase /php/cake/app
cake/app/webroot直下 RewriteBase /php/cake/app/webroot
dispatchがPHP4だとうまく動かないのかと考えていましたが違うみたいですね。
後、typoはローカルで動作しているファイルを全てアップロードしているので無いと思います。
実際にFTPで確認しても間違ってなさそうでした。
746:740
08/11/26 16:46:48
すいません。分かりました。
ファイル名が全角なのがダメみたいでした。
$form->selectに画像入れたフォルダ配下のファイル名から拡張子を除いた物を表示させて
アイコンを選択させようと手抜きをしたのがダメでした。
ローカルで出来たのはWindowsだからですかね。(サーバーはLinux)
747:nobodyさん
08/11/26 16:51:43
>>745
やっぱりhtaccessっぽいね。
webroot直下のやつを見直すと幸せになれそうな気がする
RewriteBaseは必要なのかい?
748:740
08/11/26 17:36:45
>>747
ありがとうございます。
調べてみて、webroot直下のhtaccessに、下記を追加することで、「Missing Controller」は出なくなりました。(404エラーになります)
RewriteCond %{REQUEST_URI} !\.(cgi|css|gif|jp?g|png)$
原因はやっぱり日本語ファイル名で、これをffftpでアップロードしていたことだと思います。
UTF-8対応版のftpクライアントでアップロードすることで、正常にアクセス出来る様になりました。
RewriteBaseはググってみて、共有サーバーで使用する時の設定に書かれていたので無いとダメなのかと思って入れています。
749:nobodyさん
08/11/26 19:22:08
cakePHP1.1使ってるんですけど、
debugモードを0にしたらセッションが切れる!みたいな
現象に出くわした方っています?
750:nobodyさん
08/11/26 21:58:19
>>749
URLリンク(cakephp.jp)
これかな?
751:749
08/11/26 22:15:23
>>750
情報ありがとうございます。
うーん、securityはmediumでやってるんですよねぇ。なんなんだろう・・。
752:nobodyさん
08/11/27 12:33:29
>>751
セッションが切れるという症状を詳しく
753:nobodyさん
08/11/27 23:19:45
cakePHP を使いはじめたところで、さっそくどうしていいかわからなくて
困ってしまったんですが、
css を webroot/css 配下においた時、views/layouts/default.ctp で その css を読み込ませたい
のですが、これはヘルパを使うべきですか?
<link href="css/base.css" rel="stylesheet" type="text/css" />
こんな感じで直書きしてもよんでこないのですが、これは /css/base.css のように絶対パスで
書くべきなのか、ヘルパをかますべきなのか、はたまた何か設定がまずいのが
よくわかっていません。
アドバイスをお願いします。
754:nobodyさん
08/11/28 00:28:08 dURk+lTo
>753
>これは /css/base.css のように絶対パスで
試してみた?おそらく結果でわかるはず。
また、ヘルパ使うかどうかはどっちでもいいような。 個人的にはヘルパ使うけど。
755:nobodyさん
08/11/28 02:37:47
いつ1.2は製品版になるん?
756:nobodyさん
08/11/28 03:12:08 8hLcD3C8
1.1と、1.2の実行速度ってどう?
1.2が遅いので1.1を新規でも使ってる人はいる?
757:nobodyさん
08/11/28 03:16:26
1.2の方がはやいんじゃないの?
パフォーマンスの改善がメインでしょ1.2て
758:nobodyさん
08/11/28 03:17:57
これから作るところなんだけど
1.2がRCだから1.1つかってる
759:nobodyさん
08/11/28 03:40:07
cakephpってバージョンに依存しない確立されたバージョンアップ手順ってあるの?
このバージョンではこうする、とかじゃなくて
常にこうすれば確実にバージョンアップ出来るみたいな
760:nobodyさん
08/11/28 06:36:27
1.2の日本語マニュアルだけど
1.1のマニュアルに比べて日本語が変なところが多い
コピーしてきたらいいのにね
761:nobodyさん
08/11/28 14:02:15
CakePHPに限った話じゃないかもしれないのですが,
<?php e($html->css('my_css_1')); ?>
<?php e($html->css('my_css_2')); ?>
を出力した場合, HTMLソース上では改行されずに出力されます.
動作に支障はないとはいえ気持ち悪いので, 改行させたいのですが
何かよい方法はないでしょうか?
762:nobodyさん
08/11/28 14:54:05
>>761
間に空行を空ける
or
?>の横にTabを入れる
763:nobodyさん
08/11/28 16:02:50
Windows vista に XAMPP をインストールして cakephp の稼動環境を作りました。
1つうまくいかない事がありますのでご教示頂けるとうれしいのです。
mod_rewrite は有効にし、.htaccess も設定しました。
/htdocs/test/ 配下を環境とします。
/htdocs/test/app/webroot/js/ にいくつか javascript を入れました。
/htdocs/test/app/views/layouts/post.ctp を作り、その中で、
<script src="js/hoge/hoge.js" type="text/javascript"></script>
のような記述がしてあります。
次に post という、コントローラ、ビュー、モデルが作ってある状態で、
post_controller.php には var $layout ="post"; としてあります。
ここで、
URLリンク(localhost) にアクセスすると、apache の accesslog に、
"GET /test/post/js/hoge/hoge.js HTTP/1.1" 200
とログが残ります。
どのように webroot/js/ の中身を参照すればいいでしょうか?
764:nobodyさん
08/11/28 16:12:45
>>763
10個前のレスと同じじゃんね。
俺ならヘルパー使うけど。vendorsに突っ込んだJSとかCSSも読んでくれるし。
765:nobodyさん
08/11/28 16:30:47
>>763
app/views/layouts/default.ctp を読みましょう。
766:763
08/11/28 16:36:33
>>764
そうか、css も javascript も同じ考え方なんですね。10個前のレスが同じ
問題だと理解できていませんでした。
さっそくヘルパーを調べ、使ってみました。意図したように動作しました。
ありがとうございます。
1つ不安な所があるのでちゃんと理解したいと思うのですが、
layouts や elements の中にある .ctp などで、javascript のヘルパーを使った場合、
それを呼び出す全てのコントローラーに、
var $helpers = array('Html', 'Javascript');
の記述を行なう、という事であっていますでしょうか?
767:nobodyさん
08/11/28 17:46:08
>>766
app_controller.php に記述すれば全controllerで読み込まれる
'Html'は指定せずとも読み込まれる
768:nobodyさん
08/11/28 23:02:30
cakephpってなれてくると vendor 使わないよね。
最初の頃使いまくってたけど最近全然使わなくなった。
その代わりコンポーネントを使うようになってく。
769:nobodyさん
08/11/29 13:54:28
そのうち、モデルとビヘイビアが多くなっていくよw
770:nobodyさん
08/11/30 23:56:45
1.2RC3
class HogeController extends AppController {
var $name = 'Hoge';
var $uses = array("Fuga","Hage");
のようにコントローラと違うモデルを指定して
function index() {
$this->set('data', $this->paginate("Fuga"));
}
とやるとページングが使えなくなってしまうのは仕様なんでしょうか…
771:nobodyさん
08/12/01 00:30:15
訂正
コントローラと同じ名前のモデルでもなる所はなるな…
scaffoldで生成しなおした画面は大丈夫だからもう一回見てみるか
772:nobodyさん
08/12/01 00:51:17
自己解決
1ページ内でpaginateを2つ以上やると片方死ぬのね…
773:nobodyさん
08/12/01 15:03:11 uBVWzlfV
webrootに置いたphpファイルに、viewの結果を差し込む方法ってありますか?
別途DBのライブラリ使って直接DBから検索するのが一般的なんですかね
774:nobodyさん
08/12/01 15:38:36
>>773
file_get_contents()とかつかえばできるんじゃない?
部分的ならajaxで読み込むとか。
775:nobodyさん
08/12/01 17:08:02
>>773
質問の意味が理解できていないかもしれないけど、
Object にある requestAction メソッドはどう?
776:nobodyさん
08/12/01 18:58:54
>>773
通常はwebroot直下にオリジナルのphpファイルは置かない。
一般的には、DB読むようなファイルなら、pages以下に持ってくる。
(必要ならURL書き換えれば良いし)
777:nobodyさん
08/12/01 22:26:27
>>772
それ、なんだっけ。2つ以上つくれるよ。
実際俺つくったし。やり方忘れた。がんばれ。
778:nobodyさん
08/12/01 23:13:14
それ解説してるサイトってないから手順確立したらヒーローになれるな
779:nobodyさん
08/12/02 10:27:07
ビヘイビアって実際どうなの?
メール送信ビヘイビアってあるでしょ。
結局コントローラーで qbmailとか使わないといけないからさほど
メリットがないような気が。
英語だけならビヘイビアでいけるだろうが、日本語だからな。
文字化けが。。。
インクリメント・デクリメント以外の便利な使い道を師匠。教えて下さい。
780:nobodyさん
08/12/02 14:29:46
cakephpって世界で最も使われてるとか言うけど
結構下火だよね
関連開発しょぼいし
本家すら
781:nobodyさん
08/12/02 14:34:47
symfonyとcakephp使ったけど
cakephpはコード生成が弱すぎ
masterbakeやpowerbakeがあるけど本家開発に組み込まれてるわけじゃなく
バージョンアップ追いついて無いし
標準のbakeだとテーブル一つ毎にモデル作れとかフィールド一つ毎にバリデーション指定しろとかやってられん
機能少ない割にsymfonyより遅いし
782:nobodyさん
08/12/02 14:57:00
これはものすごい誤認識の方がいらっしゃいました
783:nobodyさん
08/12/02 19:51:38
>>781
こういうこと言いに来る時点でCakePHPを評価してるって思われるのにな。
784:nobodyさん
08/12/02 20:15:49
例えば新規作成を行なう add と、登録済みデータを修正する edit を
コントローラに用意するとき、view は、add と edit と2つのファイルを用意すると
思います。
ただ、add の時も edit の時も入力項目は同じで、ページ遷移後の状態が、
空白か、呼び出したデータが表示されているか?程度の差しかないような画面の時でも、
add, edit の view は用意しておくものでしょうか?
それとも、add と edit の両方をまかなえる view を作って、コードで処理させるほうが
いいのでしょうか?
785:nobodyさん
08/12/02 20:40:05
>>782
「僕すごい事知ってるよ」
じゃなくて具体的な例を出せ
>>783
言いに来てるのは既に仕事で使ってて使わざるを得ないからなのと
こういう事が書かれてれば最初から使わなかったってことだな
786:nobodyさん
08/12/02 21:19:32
そういう事は仕事場で提案してみればいいんじゃないかな。
確かに参考にはなるけど。
787:nobodyさん
08/12/02 21:55:16
>>784
たぶん1.2からだけど、bakeして吐き出されたviewは、editとaddを共通化している
それを知ってから、すべてのadd.ctpを削除した
admin_edit とかもすべて共通化したら、viewの数が激減してすっきりしたよ
788:nobodyさん
08/12/02 23:36:54
symfonyよりCake重いとか
789:784
08/12/02 23:43:37
>>787
情報ありがとうございます。1.2 を使っているので早速 bake してみましたが、
add, edit は別にはきだされました…。
1.2.0.7692 なので、最新だと思うのですが…。
790:nobodyさん
08/12/02 23:58:07
そういう意味じゃなくてaddとeditで吐き出されてるものはほぼ同じだから
どっちか消してどっちかだけ使えば?って話じゃないの?
791:nobodyさん
08/12/03 01:04:53 WkUpG3Q2
ベロベロベロベロオオオオオオオオオオオ
んんー、ほんのりオシッコの味がするよ!!
792:nobodyさん
08/12/03 01:06:12
誤爆った
793:nobodyさん
08/12/03 01:43:34 o3/nvN5X
俺がきたよ
URLリンク(f.hatena.ne.jp)
794:nobodyさん
08/12/03 01:45:36
また誤爆った
795:nobodyさん
08/12/03 09:35:31
>>789
あれ?そうなの?
と、思ったら、記憶違いでscaffold使ったときのことだったかも
/cake/libs/view/scaffolds にはadd.ctp無かったから(rc3で確認)
でも、どっちか消したほうがオススメなのは確か
$form-> create , input は共通で使えるだろうから
796:nobodyさん
08/12/03 13:24:13
cakephpってfkのインデックスの名前にも規約ある?
797:nobodyさん
08/12/03 13:45:22
id
798:nobodyさん
08/12/03 13:48:04
それはフィールド名じゃなくインデックスの名前もってこと?