【PHP】Smarty【Template】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/03/10 00:57ID:NhgrjNBT本家(英語)
http://smarty.php.net/
日本語マニュアルとか
http://sunset.freespace.jp/smarty/
0652nobodyさん
05/03/09 09:02:15ID:???> Install the Smarty library files which are in the /libs/ directory of the distribution.
[日本語訳サイト]
> ディストリビューションの/libs/ディレクトリにSmartyライブラリファイルをインストールして下さい。
[正しかろう訳]
配布物の/libs/ディレクトリにあるSmartyライブラリファイルをインストールします
(ここでいう配布物ってのは、Smarty-2.6.6tar.gzを解凍した物の事)
0653nobodyさん
05/03/09 10:14:49ID:???踏み台ってのは、君がここの回答者を踏み台にして…って話じゃなくて、
セキュリティの甘いサーバをネット上に放っておくと、そのサーバを”踏み台”にして、
悪事に利用されるよ、そしてそれは万人にとって迷惑な話だよ。って意味だよ。
ぼちぼちで、やったんさい。
0654nobodyさん
05/03/09 10:41:51ID:???申し訳ないが前提となる知識が足りなすぎる。
足し算がわからない人に因数分解は無理。
書店で入門書を買ってきてコツコツやりな。
どうしてもわからないことは質問してもいいから。
だいたいディストリビューションっていう単語がわからなければ、
Googleで調べればすむ話でしょ?
自分で調べもしないのに聞くのはイクナイよ。
先は長いけどがんばれー。
0655nobodyさん
05/03/10 11:16:13ID:1EPX/SpTsmartyのifでの比較演算なんですが、
{if "1010010001000110000115" eq "1010010001000110000115"}equals{/if}
と
{if "1010010001000110000120" eq "1010010001000110000115"}equals{/if}
の両方とも、出力がequalsになるんですが、
何故なんでしょうか?
0657nobodyさん
05/03/10 11:43:54ID:???{strip}命令って無効になったのですか?
そのまま{strip}って表示されてしまうのですが・・・。
0658655
05/03/10 11:44:28ID:???いや、たまたまじゃない。
つか、すげぇ下らない理由だった。
当然、文字列同士で比較していると思っていたのだが、
数字だけで構成しているとどうやら数値として比較するらしい。
で、有効な桁数以上の文字はカットされてしまい、
(俺のトコだと整数で18桁がボーダーのようだが、環境によって変わるかも。)
前方18桁だけ取り出して、数値としてみれば
両辺一致しているのでtrueになるようだ。
末尾にcatで"a"なんてくっつけてやれば、
文字列同士として比較するため、何の問題もでない。
そんな事にも気づかなかった俺って・・・orz
0660nobodyさん
05/03/10 15:16:46ID:???0661nobodyさん
05/03/10 15:25:45ID:???0662nobodyさん
05/03/10 17:46:21ID:8Bnn/FyNカスタムタグ使ってると、そーなるバグ
smartyのフォーラムよく見ろ
0664nobodyさん
05/03/11 11:29:21ID:???if( 0 == "test") とか多分true
そういうときに if( 0 === "test") ってやるんだっけか
0665641
05/03/12 09:17:24ID:???何日もかけて今頃やっとかよっ!って感じなのですが・・_| ̄|○
ご指導してくださった皆様ありがとうございました。
0666641
05/03/12 11:31:22ID:Eai46BlS何度もすみません。
Smartyをインストールできたのがうれしくて、書籍の
サンプルをそのまま使って、ローカルでテストしてみたのですが、
Fatal error: Cannot redeclare loginfunction()
(previously declared in C:\Program Files\Apache Group
\Apache2\htdocs\samples\chap5\mng\auth.php:12)
というエラーが出てきてしまいます。
0667641 続きです
05/03/12 11:31:40ID:Eai46BlS起きているエラーだ、という所まで検討がついたのですが、
いかんせん、書籍に乗っているサンプルを何もいじっていない
コードなので、なにが悪いのか、わからないのです。
もしかして、知らない間に、どこかいじってしまったのかも、と
思って、再度CD−ROMから該当ファイルをインストールしてみたのですが
同様のエラーのままでした。
コードの該当部分は、下記になります。
<?php
require_once("DB.php");
require_once("Auth/Auth.php");
require_once("chap5/MySmarty.class.php");
$dsn="mysqli://php:php@localhost/sample";
$params=array(
"dsn" => $dsn,
"table" => "mng_usr",
"usernamecol" => "uid",
"passwordcol" => "passwd");
function loginFunction(){
$o_smarty=new MySmarty();
$o_smarty->display("login.tpl");
}
<略> ?>
どこが悪いのか、ご指導いただけないでしょうか・・・・。
よろしくお願いいたします。
0668nobodyさん
05/03/12 11:47:33ID:???smartyとはもう関係無い話だと思うのだが。。
loginfunctionが二重定義されているという事ならば、
本当にそうなっているのか、
DB.php、Auth/Auth.php、chap5/MySmarty.class.phpの中や、
さらにその中でrequireやincludeされているファイルを
検索して確かめたらいいのでは?
その上で、どのfunction loginFunctionを使うかはそれを作った人の意向によるかと。
0669641
05/03/12 12:31:08ID:???ご指摘ありがとうございます。
ファイル内を、検索して探してみます。
おっしゃる通り よく考えたら、確かにSmartyとは直接
関係なかったですね・・_| ̄|○
すれ汚し、大変失礼いたしました。
0670nobodyさん
05/03/13 19:08:22ID:8WQj/L10http://www.amazon.co.jp/exec/obidos/ASIN/4798108839
買おうか迷っているので感想キボンヌ
0672nobodyさん
05/03/13 19:27:34ID:???立ち読みで十分な希ガス
0673nobodyさん
05/03/13 19:56:38ID:???0674nobodyさん
05/03/13 20:08:38ID:???・・・「かいてる」の変換候補一発目がなぜか「Keitel」でびびった。
0675nobodyさん
05/03/13 21:11:31ID:???PHP界隈でも結構書いてる。ライター一本でちゃんと食っていくのには
そのぐらい書かないと駄目なんだなと、いつも思い知らされる訳だが。
0676nobodyさん
05/03/13 22:03:03ID:???それともMojaviとか使ってるのかな?
0678nobodyさん
05/03/13 23:20:57ID:???$smarty->display([テンプレートファイル名]);
とやると標準出力(ブラウザ)にHTMLが出力されますが、
これをファイルに出力させることはできるのでしょうか?
0679nobodyさん
05/03/13 23:28:24ID:???ttp://d.hatena.ne.jp/nadi/20040215#1076810117
ttp://d.hatena.ne.jp/nadi/20040306#1078484912
0680nobodyさん
05/03/13 23:54:01ID:???でもこの人が書いた基礎PHPって本はホント良いよ。
初心者には超オススメ。
でもtemplate_cのパーミッションを777にしろって
書いてあったのはポカーンだったけど。
0681nobodyさん
05/03/14 00:39:54ID:???ゴミ同然。買うな。
だいたいPHP5とか明示しててちゃんとPHP5のスタイルで書いてる書籍なんて
いまのところ一冊もない。Smartyが覚えたかったらマニュアルみれ。
日本語に翻訳されたドキュメントもあるしぐぐれば使い方はたくさんでる。
PHP5関連の内容についてはマンモス本の劣化コピー。
>>674
まるごとPHPが有名なのはPEARパッケージの開発者とかが執筆してるから。
コミュニティに一切貢献してない彼が執筆メンバにいることがかなり不思議。
http://angelicwing.net/diary/index.php?mode=one&parent_id=3801
MVC自体わかってない。わけたらいいってもんじゃない。
valueobjectって、、便利だと思ってるの?
そしてコメント欄に注目。PHPにおけるmysqlのdisconnectについて
まったくわかってない。明示的に指定しないのは常識。
>>680
現場でPHPのコード書いた事ない人間の書籍でよく勉強できるよな。
そうやってマニュアル読んだだけの素人が書いた書籍で勉強した
ダメプログラマがダメコードを作る。
この程度のレベルの人間が書籍を書いていることが問題。
でも(趣味で触るだけの)初心者にはいいかもね。
どっちでもいいよ。
connectする -> プログラム終了とともに切断
pconnectする -> disconnectは無視する
だから、どちらにしろあまり意味ないと思うです。
0684nobodyさん
05/03/14 01:10:40ID:0xZUZ/dg0685nobodyさん
05/03/14 01:29:18ID:???PHP以外の言語にも手を出そうというならなおさら(GCが増えてきたにしろ)
致命的な差異が出ないなら、初心者の頃はそういう考えから身につけてもいいんジャマイカ
ちなみに漏れは書くのめんどいので閉じないことが多い
0686nobodyさん
05/03/14 02:11:46ID:???でも非機能要求を絶えず意識する癖なんて持っても PHP/web アプリで量的に重いコードを設計する人になられても困る。
ソレはソレ、コレはコレじゃないか。
原理原則やデータベース個々の基礎知識は弁えて当然というのはまた別のプロセスでしっかり身につける方が。
0687nobodyさん
05/03/14 02:56:18ID:???0688686
05/03/14 03:46:48ID:???0690678
05/03/14 11:14:44ID:???なるほど、検討してみます。ありがとうございます。
昨晩から試行錯誤を繰り返し、
現在のところoutputfilterで、出力直前の文字列を横取りし、
ファイルに吐き出すという、ややトリッキーな方法を行っています。
0691nobodyさん
05/03/14 11:51:06ID:???0692nobodyさん
05/03/14 21:41:11ID:???参照している範囲が明確になるという点もあるので「クローズ・削除
しない方が性能的に有利かつPHP的な使い方」というのはアホの理論。
0695nobodyさん
05/03/15 17:25:00ID:???http://www.lyricfathom.com/htmltemplate/
0696nobodyさん
05/03/16 10:24:48ID:???記述方法なんかは、スマーチーと似た感じ。ドットがスラッシュになった感じだったかな。
ロジックの追加とかも簡単、まあそれでも自由度が低い。elseとかやりたいなら2、3層前とかから書き直さないといけないから、意味ないし。
0697nobodyさん
05/03/16 18:40:40ID:???HTMLtemplateのくわしい話MLに、最近ひさびさに
メール流れた〜と思ったら。SPAMでした…orz
2年近く放置してる作者も、それに登録したまんまの俺もどうかしてますが。
あ、でも新しい系列になって発展してたんですな。
俺の感想も>>696に似たようなもんだけど、
元々の割り切りからも考えるに、プログラマからすると
どうしても物足りなさはある。かといって発展拡張を考えるなら
高機能な標準的なテンプレートを使っちまう方が良いし というところ。
でも自分用の軽量なテンプレには部分的にはパクらせてもらった。
テンプレートを使うんじゃなくて、テンプレートを作る上で
参考にするのは良いと思うよ。作りが簡単だし。
0698nobodyさん
2005/03/26(土) 16:50:17ID:9cvI6Qz8123456789
というデータをphpからうけとったのを
456
のところだけ切り取って出力するような・・・
0700nobodyさん
2005/03/26(土) 17:01:27ID:9cvI6Qz8なるべくなら使わないでいたいんですけど、
それがいいのかなぁ
0703nobodyさん
2005/03/26(土) 17:13:51ID:9cvI6Qz8レスありがとうございます。
http://sunset.freespace.jp/smarty/SmartyManual_2-6-3J_html/
にはsubstrは無いみたいですけど、>>699さんの方法か
何かで定義しなくても使えるものなんでしょうか?
教えて君で申し訳ないです。
0705nobodyさん
2005/03/26(土) 17:25:59ID:9cvI6Qz8まじすか。
ありがとうございます。使ってみます−
0706nobodyさん
2005/03/26(土) 17:32:21ID:???$securityをtureにしてると$security_settingで指定しないと使えないから気をつけろよ
0707nobodyさん
2005/03/26(土) 17:33:45ID:9cvI6Qz8と、書いてみたのですがエラーになってしまいます。
{$hoge}だと123456789と表示されます。
使い方間違ってるのでしょうか?
0708nobodyさん
2005/03/26(土) 17:34:13ID:9cvI6Qz8あ、それかも。みてみますー
0709nobodyさん
2005/03/26(土) 17:39:51ID:9cvI6Qz8もしかして、その設定はtpl上で変更するのは無理でしょうか?
私がいじれる権限があるのはtplのみなので鯖管理者に
お願いしないとだめでしょうか?
0712nobodyさん
2005/03/31(木) 01:53:29ID:D4Jqx9KWsmartyで読み込んだhtmlの<head></head>のなかに覧の文字が
あると、エラーになってしまいます。
\とか\""\などでかこってみたりしたのすが、駄目でした。
どなたか回避方法をご存知ないでしょうか・・・?
よろしくお願いいたします。
0714nobodyさん
2005/03/31(木) 02:34:14ID:D4Jqx9KWううぅ。このスレを通しで読んでみたのですが
わからなかったのです。
mbstring.http_output をSJISに、というのが
ソレかな、と思ったのですが、Smarty.class.php
の中に、mbstring.http_output なんてなかったぅ。
php.iniとhttpd.confはSJISに変えてみたのです。
0716nobodyさん
2005/03/31(木) 11:32:56ID:???みんなどうしてるの?
タグを変えてるとか?
はやくマルチバイトに
完全対応してくれないかな
0717nobodyさん
2005/03/31(木) 11:39:58ID:???0718nobodyさん
2005/03/31(木) 12:33:56ID:???0719nobodyさん
2005/03/31(木) 14:50:48ID:???テンプレートもコードもDBもすべてEUC-JPで統一。
出力の段階でSJISにして吐く、ってのは?
print mb_convert_encoding($smarty->fetch('index.tpl'), 'SJIS', 'EUC-JP');
とか、またはアウトプットフィルタで以下のようにするか。
function convert_to_sjis($output, &$smarty)
{
return mb_convert_encoding($output, 'SJIS', 'EUC-JP');
}
$smarty->register_outputfilter('convert_to_sjis');
$smarty->display('index.tpl');
0720nobodyさん
2005/03/31(木) 17:13:50ID:???同じ問題がでるだろ?
0721nobodyさん
2005/03/31(木) 22:31:52ID:???ttp://ns1.php.gr.jp/pipermail/php-users/2003-February/013592.html
デリミタを他の文字に変えても可。<% %>とか。
0722714
皇紀2665/04/01(金) 05:48:12ID:jghdOqLB出来ました!ありがとうございました。
0723714
皇紀2665/04/01(金) 21:04:31ID:jghdOqLBなんでしょうか。この現象は。びくびく。
0724nobodyさん
皇紀2665/04/01(金) 22:04:34ID:???0725nobodyさん
2005/04/02(土) 19:13:00ID:???0726nobodyさん
2005/04/03(日) 12:34:52ID:5tuC+LFkttp://www.netsecurity.ne.jp/1_2283.html より
▽ Smarty------------------------------------------------------------
Smartyは、regex_replace変換機能が適切なチェックを行っていないことが原因で
セキュリティホールが存在する。この問題が悪用されると、
攻撃者にテンプレートセキュリティコントロールを回避して任意のPHPコードを実行される可能性がある。 [更新]
2005/03/29 登録
危険度:高
影響を受けるバージョン:2.6.8未満
影響を受ける環境:UNIX、Linux、Windows
回避策:2.6.8以降へのバージョンアップ
っていうことは、regex_replaceを使ってないか、
勝手に他人がテンプレートを変更できる環境でなければ大丈夫ってことかな?
現状、平穏無事に動いているものをアップデートするって勇気がいるよね。。。
0727nobodyさん
2005/04/03(日) 14:50:09ID:???当たり前の事だと思うんだが。
0728nobodyさん
2005/04/03(日) 15:07:18ID:???当たり前の事だと思うんだが。
0730nobodyさん
2005/04/03(日) 16:56:18ID:???コンピュータ分野だとまぁその通りなんだけど、セキュリティーホールが見つかって
その穴を埋めないのは保守する上で過失にならないか?
0731nobodyさん
2005/04/03(日) 19:02:00ID:???むやみに変更しないというのは運営者としては正しい判断だろう
頭を使える人はアナウンスをよく見てどちらのリスクが高いか考えるはず、
Apacheにしたってバージョンアップで不具合が起こった事は何度もある
緊急以外の件に関してはしばらく様子をみてやるのが賢い人だと思うね。
0732nobodyさん
2005/04/04(月) 04:24:04ID:???自分側の仕様変更やらで、忘れた頃にあらまあなんて事もあるからね。
さっさとアップデートしておくのが無難だと思うけど。
0733nobodyさん
2005/04/04(月) 05:11:45ID:???それこそ「動いているものを無闇に変えない」を
自分の書いてるプログラムにも適用ですよ。
とはいえ、自分がPHPを使うメインは個人的な便利なツールの作成だから、
PHP環境は実験的実装上等「常に最新」ですけどね。
0734nobodyさん
2005/04/04(月) 11:47:50ID:???現状維持で保守的になっていくわけですね
0735nobodyさん
2005/04/04(月) 13:46:26ID:???Webアプリって個人やSOHOで開発されてるケースが多いけど
数年後に変更しようにも業者が倒産したとか会社はあっても開発者が退職したとか仕様書が無い、といった具合でよくわからなくなってるのが多いよ
たまになんとかなりませんか? って話が来るけど殆どは予算無いっていうから
根本的な解決はせず無理やりつじつま合わせで対処することも多いよ。
話題がかなりそれちゃったな、ごめん。
でもSmartyとはツール使ってれば有る程度は標準的な手法でつくられている事が多いのでまだマシだよね。
0736nobodyさん
2005/04/04(月) 15:53:31ID:???そういうのに限って中見たら
崩れかけのジェンガみたいになってるよな
これでよく動いてるなみたいな
見た目はお城だからクライアントは
すぐ直せるでしょみたいな雰囲気で持ちかけてくるしな
ってこれただの愚痴だな、、、
PEARやSmarty使ってるならまだいいよ。。。
0737nobodyさん
2005/04/04(月) 16:13:20ID:???0738nobodyさん
2005/04/21(木) 21:02:24ID:SxD/0C5USmartyってPHPの標準じゃないんだろ?
普通はPHPの標準ライブラリであるPEARのHTML_Template系を
つかうべきじゃないのか?
0739nobodyさん
2005/04/22(金) 01:38:38ID:???0740nobodyさん
2005/04/22(金) 05:01:10ID:xlQLPR84中規模程度以上のサイトでSmarty使ってる人いる?
将来開発が止まってしまうかもしれない、というリスクはあるから
中核に組み込むのはどうなのかと思ったりするんだけど
0741nobodyさん
2005/04/22(金) 05:02:58ID:???0742nobodyさん
2005/04/22(金) 07:43:32ID:NegODiovどなたか教えて下さい。
Smartyでテーブルを表示させているのですが、
テーブルセルの縦(height="25")の指定はちゃんと反映されて
いるのですが、横幅(width="100")が無視されてしまうのです。
日本語サイトなどをめぐってみたのですが、解決策が
見つからなくて・・・。
どうかご指導よろしくお願いいたします。
0744742
2005/04/22(金) 09:25:44ID:NegODiovいえ、それが、HTMLだと問題なく表示されるのですが、
PHPからSmarty(tplファイル)として読み込むと
とたんに横幅が無効になってしまうのです。
0745nobodyさん
2005/04/22(金) 09:55:43ID:???0747nobodyさん
2005/04/22(金) 12:02:00ID:1X8ubYE4pearに登録されているからって開発中止にならんという訳じゃないよ
メンテナがやる気をなくせば開発は止まるのは一緒。
0748nobodyさん
2005/04/22(金) 13:07:51ID:???複雑なものでもないし、自分で修正できるんじゃない?
つーか、もう安定して枯れてると思うし。
0749742
2005/04/22(金) 13:59:44ID:NegODiovレスありがとうございます。
テストしているのは、下記のコードで、拡張子をhtml から
tplに変えたのみなのです。
phpでは $smarty->display("test.tpl"); で読み込んで
います。
よろしくお願いいたします。
0750742 コードです。
2005/04/22(金) 14:00:16ID:NegODiov<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>新しいページ 1</title>
</head>
<body>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#C0C0C0" width="300">
<tr>
<td width="200" height="20" bgcolor="#8284CE"> </td>
<td width="50" height="20" bgcolor="#8284CE"> </td>
<td width="50" height="20" bgcolor="#8284CE"> </td>
</tr>
<tr>
<td width="200" height="20"> </td>
<td width="50" height="20"> </td>
<td width="50" height="20"> </td>
</tr>
<tr>
<td width="200" height="20"> </td>
<td width="50" height="20"> </td>
<td width="50" height="20"> </td>
</tr>
</table>
</body>
</html>
0751nobodyさん
2005/04/22(金) 14:11:23ID:???手元の環境ではそういう現象は起きなかった。
試すまでもなく、普通に考えても起きるわけないんだけどなぁ。
>>746が聞いてるけど、テンプレートとsmarty出力結果の差異はどうなのよ?
■ このスレッドは過去ログ倉庫に格納されています