prototype.js
window.onload = function() {
$$('a.box').invoke('observe', 'click', function(){
alert('Hello world!');
});
}
jquery.js
$(document).ready(function(){
$("a.box").click(function(){
alert('Hello world!');
});
});
<a href="#" class="box" >link</a>
Wednesday, February 04, 2009
Sunday, December 07, 2008
Thursday, October 16, 2008
curlによるSSL sample
$ch=curl_init();
$url = "https://hoge.coom/authentication_email.php";
curl_setopt ($ch,CURLOPT_URL, $url );
curl_setopt ($ch,CURLOPT_POST,1);
$post = "email=".$_POST['email'];
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
// curl_setopt ($ch,CURLOPT_RETURNTRANSFER, FALSE);
curl_setopt ($ch,CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($ch);
if (empty($ret)) {
// some kind of an error happened
die(curl_error($ch));
curl_close($ch); // close cURL handler
} else {
echo $ret;
// $info = curl_getinfo($ch);
curl_close($ch); // close cURL handler
}
$url = "https://hoge.coom/authentication_email.php";
curl_setopt ($ch,CURLOPT_URL, $url );
curl_setopt ($ch,CURLOPT_POST,1);
$post = "email=".$_POST['email'];
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
// curl_setopt ($ch,CURLOPT_RETURNTRANSFER, FALSE);
curl_setopt ($ch,CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($ch);
if (empty($ret)) {
// some kind of an error happened
die(curl_error($ch));
curl_close($ch); // close cURL handler
} else {
echo $ret;
// $info = curl_getinfo($ch);
curl_close($ch); // close cURL handler
}
Wednesday, October 08, 2008
Sunday, September 21, 2008
Thursday, September 11, 2008
apache1.3とPHP4とPHP5
apacheとPHP4で運用していてphp5を試したいときにの方のための記述
php5(cgi)で行う。
インストールは例--with-apxs2や--with-apxsをつけないでインストールする。
その後以下のようにシンボリックリンクを張ります。
apache/cgi-bin/php5 -> /bin/php-cgi
php-cgiは コマンドラインから実行するとヘッダ (text/html)を出力する
apacheの設定ファイルを以下のようにします。
<Directory "/**/apache/cgi-bin">
Options +ExecCGI +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Directory "/home/tomo/htdocs">
AddHandler php5-script .php
Action php5-script /cgi-bin/php5
Options +ExecCGI +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
指定の場合
/home/tomo/htdocsの下のphpはphp5のcgiとして実行されます。
php5(cgi)で行う。
インストールは例--with-apxs2や--with-apxsをつけないでインストールする。
その後以下のようにシンボリックリンクを張ります。
apache/cgi-bin/php5 -> /bin/php-cgi
php-cgiは コマンドラインから実行するとヘッダ (text/html)を出力する
apacheの設定ファイルを以下のようにします。
<Directory "/**/apache/cgi-bin">
Options +ExecCGI +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Directory "/home/tomo/htdocs">
AddHandler php5-script .php
Action php5-script /cgi-bin/php5
Options +ExecCGI +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
指定の場合
/home/tomo/htdocsの下のphpはphp5のcgiとして実行されます。
Wednesday, September 10, 2008
mod_perl
apache2とmod_perl
perl Makefile.PL MP_APXS=/usr/bin/apxs2
make
make install
httpd.conf
AddHandler cgi-script .cgi .pl
LoadModule perl_module lib/httpd/modules/mod_perl.so
<Files *.pl>
SetHandler perl-script
# PerlHandler ModPerl::PerlRun
PerlResponseHandler ModPerl::Registry
PerlSendHeader On
Options +ExecCGI
</Files>
確認の方法
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
foreach $key (sort keys %ENV) {
print "$key = $ENV{$key}\n";
}
で $ENV{'MOD_PERL'}があればOK
perl Makefile.PL MP_APXS=/usr/bin/apxs2
make
make install
httpd.conf
AddHandler cgi-script .cgi .pl
LoadModule perl_module lib/httpd/modules/mod_perl.so
<Files *.pl>
SetHandler perl-script
# PerlHandler ModPerl::PerlRun
PerlResponseHandler ModPerl::Registry
PerlSendHeader On
Options +ExecCGI
</Files>
確認の方法
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
foreach $key (sort keys %ENV) {
print "$key = $ENV{$key}\n";
}
で $ENV{'MOD_PERL'}があればOK
Tuesday, September 09, 2008
Monday, September 08, 2008
USB HD(ハードディスク)の接続 for Linux
USBをPCに接続後に以下のコマンドを入力し、USBが正しく認識されているか確認する。
cat /proc/bus/usb/devices
cat /proc/scsi/scsi
(HDはscsi 扱い)
問題ない場合dmesgコマンドを実行し、認識されている情報を取得
SCSI device sda: 20028960 512-byte hdwr sectors (10255 MB)
sda: Write Protect is off
sda: Mode Sense: 23 00 00 00
sda: assuming drive cache: write through
sda: sda1 sda2
sda1とsda2で認識されている。
元々HDはLinuxで使用していたものなので
sda1はswap パーティンション
マウントの場所を作成
mkdir /mnt/usb (例)
mount /dev/sda2 /mnt/usb
アンマウントは以下になります。
umount /mnt/usb
cat /proc/bus/usb/devices
cat /proc/scsi/scsi
(HDはscsi 扱い)
問題ない場合dmesgコマンドを実行し、認識されている情報を取得
SCSI device sda: 20028960 512-byte hdwr sectors (10255 MB)
sda: Write Protect is off
sda: Mode Sense: 23 00 00 00
sda: assuming drive cache: write through
sda: sda1 sda2
sda1とsda2で認識されている。
元々HDはLinuxで使用していたものなので
sda1はswap パーティンション
マウントの場所を作成
mkdir /mnt/usb (例)
mount /dev/sda2 /mnt/usb
アンマウントは以下になります。
umount /mnt/usb
PHP キャッシュされないため
header("Content-type: text/html; charset=utf-8");
header("Expires: -1");
header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Expires: -1");
header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
Smarty 設定確認用PHP
単純にSmartyをインストールしたときに動作するかの確認
phpinfo();
で確認してから
---
<?php
require_once( 'MySmarty.class.php');
$objSmarty =& new MySmarty;
// $objSmarty->assign('name','Smarty man');
$objSmarty->display('hello.html');
?>
phpinfo();
で確認してから
---
<?php
require_once( 'MySmarty.class.php');
$objSmarty =& new MySmarty;
// $objSmarty->assign('name','Smarty man');
$objSmarty->display('hello.html');
?>
PHP mysqli_connectのサンプル
if (!($cn = mysqli_connect("localhost", "hoge", "hoge"))) {
die;
}
if (!(mysqli_select_db($cn,"test"))) {
die;
}
$sql = "select * from address";
if (!($rs = mysqli_query($cn,$sql))) {
die;
}
$i=0;
while ($item = mysqli_fetch_array($rs)) {
print "${item['id']} ";
print "${item['name']} ";
print "
";
$data[$i]['name']= $item['name'];
$data[$i]['tel']= $item['tel'];
$i++;
}
mysqli_close($cn);
die;
}
if (!(mysqli_select_db($cn,"test"))) {
die;
}
$sql = "select * from address";
if (!($rs = mysqli_query($cn,$sql))) {
die;
}
$i=0;
while ($item = mysqli_fetch_array($rs)) {
print "${item['id']} ";
print "${item['name']} ";
print "
";
$data[$i]['name']= $item['name'];
$data[$i]['tel']= $item['tel'];
$i++;
}
mysqli_close($cn);
Thursday, September 04, 2008
PHP 日本語送信
よくあるパターンなのですが、PEARとか使えない環境のため
<?php
mb_internal_encoding( "UTF-8");
mb_language("Japanese");
header("Content-Type: text/html; charset=UTF-8");
// UTF-8
if (my_email("atesaki@example.com")){
print "メールを送信しました。";
}else{
print "メールの送信に失敗。";
}
function my_email ($to) {
$from = mb_encode_mimeheader("送信者") . "<from@example.net>";
$sbj = "タイトル";
$msg = "本文です。";
$header = "From: {$from}";
return mb_send_mail($to , $sbj , $msg , $header);
}
?>
<?php
mb_internal_encoding( "UTF-8");
mb_language("Japanese");
header("Content-Type: text/html; charset=UTF-8");
// UTF-8
if (my_email("atesaki@example.com")){
print "メールを送信しました。";
}else{
print "メールの送信に失敗。";
}
function my_email ($to) {
$from = mb_encode_mimeheader("送信者") . "<from@example.net>";
$sbj = "タイトル";
$msg = "本文です。";
$header = "From: {$from}";
return mb_send_mail($to , $sbj , $msg , $header);
}
?>
Tuesday, August 26, 2008
Wednesday, August 20, 2008
mysql install
インストール
cd /home/**/app-src/mysql
wget mysql-**.tar.gz
./configure --prefix=/home/**/app/mysql
make; make install
DBの初期化
./scripts/mysql_install_db
サーバを起動
/home/**/app/mysql/bin/mysqld_safe &
パスワードを設定する
/home/***/app/mysql/bin/mysqladmin -u root password 'new-password'
パスワードはnew-passwordになる。
ユーザの追加
mysql -u root mysql
GRANT ALL PRIVILEGES ON *.* TO hogehoge@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
パスワードはpasswordとなる。
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'hogehoge' WITH GRANT OPTION;
サーバーの停止
./mysqladmin -u root -p*** shutdown
Create table の表示
SHOW CREATE TABLE ****;
エラーはログを見ること。
次のエラーの場合、
Table 'mysql.host' doesn't exist
mysql_install_dbをすると直るときもある。
http://kajuhome.com/mysql.shtml#n07
cd /home/**/app-src/mysql
wget mysql-**.tar.gz
./configure --prefix=/home/**/app/mysql
make; make install
DBの初期化
./scripts/mysql_install_db
サーバを起動
/home/**/app/mysql/bin/mysqld_safe &
パスワードを設定する
/home/***/app/mysql/bin/mysqladmin -u root password 'new-password'
パスワードはnew-passwordになる。
ユーザの追加
mysql -u root mysql
GRANT ALL PRIVILEGES ON *.* TO hogehoge@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
パスワードはpasswordとなる。
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'hogehoge' WITH GRANT OPTION;
サーバーの停止
./mysqladmin -u root -p*** shutdown
Create table の表示
SHOW CREATE TABLE ****;
エラーはログを見ること。
次のエラーの場合、
Table 'mysql.host' doesn't exist
mysql_install_dbをすると直るときもある。
http://kajuhome.com/mysql.shtml#n07
Monday, August 04, 2008
mysql 場所
インストールの方法によって異なりますが。。。
/usr/local/mysql/var
ls -la
drwx------ 17 mysql mysql 4096 2000-00-00 00:00 var/
/usr/local/mysql/var
ls -la
drwx------ 17 mysql mysql 4096 2000-00-00 00:00 var/
Sunday, August 03, 2008
phpPgAdmin でログインできない
cd phppgadmin/conf/
vim config.inc.php
$conf['extra_login_security'] = true;
以下のように変えます。
$conf['extra_login_security'] = false;
vim config.inc.php
$conf['extra_login_security'] = true;
以下のように変えます。
$conf['extra_login_security'] = false;
Wednesday, July 16, 2008
Javascript とHTMLの分離。
自分ひとりでWEBページをつくる場合はそれほど気にならないが、
デザイナーさんと同時につくるとき、HTMLとjavascriptの分離は必要かもしれない。
デザイナーさんのjavascriptに対する拒否反応はプログラマーには分からない。
というか分からなかった。
ちょっと調べてみると以下のサイトが見つかったので、参考にリンクを貼る。
イベントハンドラをHTMLから分離する
http://allabout.co.jp/internet/javascript/subject/msubsub_series_javascript06.htm
デザイナーさんと同時につくるとき、HTMLとjavascriptの分離は必要かもしれない。
デザイナーさんのjavascriptに対する拒否反応はプログラマーには分からない。
というか分からなかった。
ちょっと調べてみると以下のサイトが見つかったので、参考にリンクを貼る。
イベントハンドラをHTMLから分離する
http://allabout.co.jp/internet/javascript/subject/msubsub_series_javascript06.htm
Tuesday, July 15, 2008
Flash CS3 超初心者入門
Flash CS3 超初心者入門
新規>Flashファイル AS3.0を選択。
ボタンをドキュメントに配置する。
ボタンは「ウィンドウ」>「コンポーネント」>User Interfaceからドラックする
ボタンをクリックし、プロパティで「インスタンス名」に「btn1」とする
ウィンドウ>アクションで「アクションウィンドウ」を表示。
レイヤーをクリックし、アクション フレームに以下のように書く。
function hogehoge(e){
trace("hogehoge");
};
btn1.addEventListener(MouseEvent.CLICK,hogehoge);
デバッグを選択すると出力に traceの内容が表示される。
ファイル>パブリッシュプレビューを選択で確認もできます。
新規>Flashファイル AS3.0を選択。
ボタンをドキュメントに配置する。
ボタンは「ウィンドウ」>「コンポーネント」>User Interfaceからドラックする
ボタンをクリックし、プロパティで「インスタンス名」に「btn1」とする
ウィンドウ>アクションで「アクションウィンドウ」を表示。
レイヤーをクリックし、アクション フレームに以下のように書く。
function hogehoge(e){
trace("hogehoge");
};
btn1.addEventListener(MouseEvent.CLICK,hogehoge);
デバッグを選択すると出力に traceの内容が表示される。
ファイル>パブリッシュプレビューを選択で確認もできます。
Wednesday, July 09, 2008
Jquery HTML フォームの連携のサンプル
inputタグとFrom IDのサンプルです。
<head>
<script type="text/javascript" src="/js/jquery.js"></script>
<SCRIPT LANGUAGE="javascript">
$(function ()
{
$('#p').submit(function ()
{
if(!$('input[@name=email]').val()) {
alert("メールアドレスを入力してください");
return false;
}else{
return true;
}
});
});
</SCRIPT>
</head>
<body>
<form id="p" method=post action=hoge.php>
<input name="email" type="text" />
<input name="submit" type="image" src="images/btn.gif" alt="送信する" >
</form>
<head>
<script type="text/javascript" src="/js/jquery.js"></script>
<SCRIPT LANGUAGE="javascript">
$(function ()
{
$('#p').submit(function ()
{
if(!$('input[@name=email]').val()) {
alert("メールアドレスを入力してください");
return false;
}else{
return true;
}
});
});
</SCRIPT>
</head>
<body>
<form id="p" method=post action=hoge.php>
<input name="email" type="text" />
<input name="submit" type="image" src="images/btn.gif" alt="送信する" >
</form>
Saturday, June 14, 2008
MVC コントローラー URLによる動的にモジュールを呼ぶ
----- test.php
<?php
/*
e.g
test.php/c=user_proile/m=register/
*/
$path_info = explode('/', $_SERVER['PATH_INFO']);
while(list($cnt,$path) = each($path_info)) {
if ($path == "") continue;
list($key,$value) = explode('=', $path);
if ($key =="c") {
$MyClass = $value;
continue;
}
if ($key =="m") {
$MyMethod = $value;
continue;
}
$_GET[$key] = $value;
}
// overloading is also ok, if PHP5.
if ($MyClass != "" && is_file($MyClass.".php")) {
include_once($MyClass.".php");
if (class_exists($MyClass)) {
$MyModel = new $MyClass;
if (method_exists($MyModel,"dispatch")) {
$MyModel->dispatch($MyMethod);
}
}
}
?>
-----user_proile.php
<?php
class user_proile
{
function dispatch($action)
{
echo $action;
}
}
?>
refer to:
2008/03/php-mvc-controller.html
2005/01/pathinfo.html
<?php
/*
e.g
test.php/c=user_proile/m=register/
*/
$path_info = explode('/', $_SERVER['PATH_INFO']);
while(list($cnt,$path) = each($path_info)) {
if ($path == "") continue;
list($key,$value) = explode('=', $path);
if ($key =="c") {
$MyClass = $value;
continue;
}
if ($key =="m") {
$MyMethod = $value;
continue;
}
$_GET[$key] = $value;
}
// overloading is also ok, if PHP5.
if ($MyClass != "" && is_file($MyClass.".php")) {
include_once($MyClass.".php");
if (class_exists($MyClass)) {
$MyModel = new $MyClass;
if (method_exists($MyModel,"dispatch")) {
$MyModel->dispatch($MyMethod);
}
}
}
?>
-----user_proile.php
<?php
class user_proile
{
function dispatch($action)
{
echo $action;
}
}
?>
refer to:
2008/03/php-mvc-controller.html
2005/01/pathinfo.html
Thursday, June 12, 2008
PHP4 でのRSS リーダー sample
http://keithdevens.com/software/phpxml
からPHP XML Libraryをとってくる。
<?php // Load and parse the XML document
$url = 'http://hogehoge/blog/?feed=rss2';
$xml_data1 = file_get_contents($url) or die();
require_once('xml.php');
$xml_array = XML_unserialize($xml_data1);
$items = $xml_array['rss']['channel']['item'];
unset ($xml_array);
unset ($xml_data1);
foreach ($items as $item) {
echo "<h3><a href='" . $item['link'] . "'>" . $item['title'] . "</a></h3>";
echo "<p>" . mb_strimwidth($item['description'], 0, 60, "...",'utf8') . "</p>";
break;
}
unset ($items);
?>
からPHP XML Libraryをとってくる。
<?php // Load and parse the XML document
$url = 'http://hogehoge/blog/?feed=rss2';
$xml_data1 = file_get_contents($url) or die();
require_once('xml.php');
$xml_array = XML_unserialize($xml_data1);
$items = $xml_array['rss']['channel']['item'];
unset ($xml_array);
unset ($xml_data1);
foreach ($items as $item) {
echo "<h3><a href='" . $item['link'] . "'>" . $item['title'] . "</a></h3>";
echo "<p>" . mb_strimwidth($item['description'], 0, 60, "...",'utf8') . "</p>";
break;
}
unset ($items);
?>
php ファイル名の一覧の取得
<?php
$regex = "([^\/]+).mp3$";
$dir =".";
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if ( preg_match ( "/".$regex."/", $file, $matches) ) {
echo $file;
$files[] = $file;
// $matches[1]で名前だけとるのもあり。
}
}
closedir($handle);
}
?>
$regex = "([^\/]+).mp3$";
$dir =".";
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if ( preg_match ( "/".$regex."/", $file, $matches) ) {
echo $file;
$files[] = $file;
// $matches[1]で名前だけとるのもあり。
}
}
closedir($handle);
}
?>
Tuesday, June 10, 2008
rss reader by PHP5 (sample)
<?php
$feed = 'http://test.com/?feed=rss2';
$rss = simplexml_load_file($feed);
$title = $rss->channel->title;
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<?php
foreach ($rss->channel->item as $item) {
echo "<h3><a href='" . $item->link . "'>" . $item->title . "</a></h3>";
$pdate = $item->pubDate;
echo date("Y/m/d G:H:i",strtotime($pdate));
echo "<p>" . $item->description . "</p>";
echo "<p>" . $item->category . "</p>";
}
?>
</body>
</html>
$feed = 'http://test.com/?feed=rss2';
$rss = simplexml_load_file($feed);
$title = $rss->channel->title;
?>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<?php
foreach ($rss->channel->item as $item) {
echo "<h3><a href='" . $item->link . "'>" . $item->title . "</a></h3>";
$pdate = $item->pubDate;
echo date("Y/m/d G:H:i",strtotime($pdate));
echo "<p>" . $item->description . "</p>";
echo "<p>" . $item->category . "</p>";
}
?>
</body>
</html>
Wednesday, June 04, 2008
WordPressで独自ページをつくるサンプル
<?php
define('WP_USE_THEMES', false);
require('wp-blog-header.php'); // 共通関数を使うため
get_header();// テンプレートを仕様
$sql = "SELECT category_count FROM " .$wpdb->categories . " WHERE cat_ID=1" ;
echo $wpdb->get_var($sql);
get_footer(); // テンプレートを仕様
?>
-------------------------------
<?php
require('wp-blog-header.php'); // 共通関数を使うため
$option = 'cat=3&showposts=100&year=2008&order=ASC';
?>
<?php query_posts($option); ?>
<?php if(have_posts()):while(have_posts()):the_post(); ?>
<p><?php the_time('Y.m.d'); ?></p>
<p><a href="detail.php?id=<?php the_ID(); ?>"><?php echo $post->post_title ; ?></a>
</p>
<p><?php the_content(); ?></p>
<?php endwhile;endif; ?>
---------
カテゴリ指定の年ごとのリンクの作成
$category_id = 3;
$sort =" ASC";
$arcresults = $wpdb->get_results("SELECT DISTINCT YEAR(post_date) AS year, count(ID) as posts
FROM $wpdb->posts, $wpdb->term_relationships
WHERE
$wpdb->posts.ID = $wpdb->term_relationships.object_id
AND $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->term_relationships.term_taxonomy_id = '$category_id'
GROUP BY YEAR(post_date) ORDER BY post_date " . $sort);
foreach ($arcresults as $arcresult) {
echo "<li><a href=\"/?year=".$arcresult->year."\">".$arcresult->year."年</a></li>";
}
----
bloggerの投稿するときの文字の確認を入力、読めない。
define('WP_USE_THEMES', false);
require('wp-blog-header.php'); // 共通関数を使うため
get_header();// テンプレートを仕様
$sql = "SELECT category_count FROM " .$wpdb->categories . " WHERE cat_ID=1" ;
echo $wpdb->get_var($sql);
get_footer(); // テンプレートを仕様
?>
-------------------------------
<?php
require('wp-blog-header.php'); // 共通関数を使うため
$option = 'cat=3&showposts=100&year=2008&order=ASC';
?>
<?php query_posts($option); ?>
<?php if(have_posts()):while(have_posts()):the_post(); ?>
<p><?php the_time('Y.m.d'); ?></p>
<p><a href="detail.php?id=<?php the_ID(); ?>"><?php echo $post->post_title ; ?></a>
</p>
<p><?php the_content(); ?></p>
<?php endwhile;endif; ?>
---------
カテゴリ指定の年ごとのリンクの作成
$category_id = 3;
$sort =" ASC";
$arcresults = $wpdb->get_results("SELECT DISTINCT YEAR(post_date) AS year, count(ID) as posts
FROM $wpdb->posts, $wpdb->term_relationships
WHERE
$wpdb->posts.ID = $wpdb->term_relationships.object_id
AND $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->term_relationships.term_taxonomy_id = '$category_id'
GROUP BY YEAR(post_date) ORDER BY post_date " . $sort);
foreach ($arcresults as $arcresult) {
echo "<li><a href=\"/?year=".$arcresult->year."\">".$arcresult->year."年</a></li>";
}
----
bloggerの投稿するときの文字の確認を入力、読めない。
Tuesday, June 03, 2008
PHP memcache のインストール
簡単にインストールできると思ったら失敗したのでここに記す。
pecl download memcache
pecl install memcache-2.2.3.tgz << 落としたものにする
インストールに設定したら、php.iniの編集
extension=memcache.so
動かない場合は インストール成功時に表示されるパスを書けばOK
extension="/usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so"
最後にapacheの再起動
再起動をしないとphpは反映されません。
pecl download memcache
pecl install memcache-2.2.3.tgz << 落としたものにする
インストールに設定したら、php.iniの編集
extension=memcache.so
動かない場合は インストール成功時に表示されるパスを書けばOK
extension="/usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so"
最後にapacheの再起動
再起動をしないとphpは反映されません。
Thursday, March 27, 2008
PHP MVC controllerの勉強
class base {
function __construct() {
}
function dispatch($action){
try{
$this->$action();
}catch( Exception $e ){
$this->errorAction($e->getMessage());
}
}
function errorAction($str=null){
echo "overridden";
}
}
class Front extends Base {
function __construct() {
}
function page() {
throw new Exception( 'Template error.' );
echo "page";
}
function errorAction($str=null){
echo "Front:".$str;
}
}
$f = new Front;
$f->dispatch("page");
function __construct() {
}
function dispatch($action){
try{
$this->$action();
}catch( Exception $e ){
$this->errorAction($e->getMessage());
}
}
function errorAction($str=null){
echo "overridden";
}
}
class Front extends Base {
function __construct() {
}
function page() {
throw new Exception( 'Template error.' );
echo "page";
}
function errorAction($str=null){
echo "Front:".$str;
}
}
$f = new Front;
$f->dispatch("page");
Wednesday, January 16, 2008
mod_rewrite 特定のURLを対象外
<Directory "/***">
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !\.(cgi|css|gif|jpe?g|png)$
RewriteRule ^(.+)/bookmark/movie/list/([0-9]+)/?$ hoge2.php?page=$1&id=$2&%{QUERY_STRING} [L]
RewriteRule ^(.+)/movie/list/([0-9]+)/?$ hoge.php?page=$1&page2=$2&%{QUERY_STRING} [L]
</Directory>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !\.(cgi|css|gif|jpe?g|png)$
RewriteRule ^(.+)/bookmark/movie/list/([0-9]+)/?$ hoge2.php?page=$1&id=$2&%{QUERY_STRING} [L]
RewriteRule ^(.+)/movie/list/([0-9]+)/?$ hoge.php?page=$1&page2=$2&%{QUERY_STRING} [L]
</Directory>
Tuesday, January 15, 2008
直リンクの禁止 バーチャルドメインの場合
<VirtualHost 192.168.*.*>
ServerName example.com
DocumentRoot /home/example/htdocs
ServerAdmin webmaster@www.hoge.co.jp
ErrorLog logs/error_log
TransferLog logs/access_log
#<Files *.gif>
<Files ~ "\.(tbz|tgz|bz2|gz|tar|lzh|zip|mag|png|jpeg|jpg|gif)$">
SetEnvIf referer "^http://example\.com" RefOk
Order Deny,Allow
Deny from all
Allow from env=RefOk
</Files>
</VirtualHost>
ServerName example.com
DocumentRoot /home/example/htdocs
ServerAdmin webmaster@www.hoge.co.jp
ErrorLog logs/error_log
TransferLog logs/access_log
#<Files *.gif>
<Files ~ "\.(tbz|tgz|bz2|gz|tar|lzh|zip|mag|png|jpeg|jpg|gif)$">
SetEnvIf referer "^http://example\.com" RefOk
Order Deny,Allow
Deny from all
Allow from env=RefOk
</Files>
</VirtualHost>
Monday, January 07, 2008
年齢 MYSQL PHP
select (YEAR(CURDATE())-YEAR(birth))- (RIGHT(CURDATE(),5) <RIGHT(birth,5)) AS age from hoge
----
PHPの場合
<?php
$birthday = '1990-01-12';
$lapse = getdate(mktime()-mktime(0,0,0,substr($birthday,5,2),
substr($birthday,8,2),substr($birthday,0,4)));
$age = $lapse['year']-1990;
echo $age;
?>
~
----
PHPの場合
<?php
$birthday = '1990-01-12';
$lapse = getdate(mktime()-mktime(0,0,0,substr($birthday,5,2),
substr($birthday,8,2),substr($birthday,0,4)));
$age = $lapse['year']-1990;
echo $age;
?>
~
Thursday, January 03, 2008
javascript 日付チェック
if(!chkDate(document.form.year.value,document.form.month.value,document.form.day.value)) {
alert("日付を正しく入力してください。");
return false;
}
function chkDate(y,m,d){
var date1 = new Date(y,m-1,d);
if(date1.getFullYear() == y && date1.getMonth() == m-1 && date1.getDate() == d){
return true;
}
return false;
}
alert("日付を正しく入力してください。");
return false;
}
function chkDate(y,m,d){
var date1 = new Date(y,m-1,d);
if(date1.getFullYear() == y && date1.getMonth() == m-1 && date1.getDate() == d){
return true;
}
return false;
}
Thursday, December 27, 2007
PHP のCookie
"/" があると動かないときがある。
setcookie("TestCookie", $value, time()+3600, "/", ".example.com", 1);
その場合は なしで確認。
$expire = time()+60*60*24*180;// 180days
setcookie( COOKIE_U, $u_ca , $expire);
setcookie(COOKIE_U_COMMON , $c1 , $expire);
setcookie("TestCookie", $value, time()+3600, "/", ".example.com", 1);
その場合は なしで確認。
$expire = time()+60*60*24*180;// 180days
setcookie( COOKIE_U, $u_ca , $expire);
setcookie(COOKIE_U_COMMON , $c1 , $expire);
Thursday, December 20, 2007
javascript パスワード
function checkP() {
if(!document.formP.password.value){
alert("現在のパスワードを入力してください");
return false;
}else if(!document.formP.password1.value){
alert("新しいパスワードを入力してください");
return false;
}else if(!document.formP.password2.value){
alert("新しいパスワード確認を入力してください");
return false;
}else if(!document.formP.password.value.match(/^[a-zA-Z\d]+$/i)){
alert("今のパスワードには半角英数字しか使用できません。");
return false;
}else if(!document.formP.password1.value.match(/^[a-zA-Z\d]+$/i)){
alert("新しいパスワードには半角英数字しか使用できません。");
return false;
}else if(!document.formP.password2.value.match(/^[a-zA-Z\d]+$/i)){
alert("新しいパスワード確認には半角英数字しか使用できません。");
return false;
}else if(document.formP.password1.value.length < 4){
alert("新しいパスワードには4文字以上入力してください");
return false;
}else if(document.formP.password1.value.length < 4){
alert("新しいパスワードには4文字以上入力してください");
return false;
}else if(document.formP.password1.value != document.formP.password2.value){
alert("新しいパスワード確認が一致しません");
return false;
}else{
return true;
}
}
if(!document.formP.password.value){
alert("現在のパスワードを入力してください");
return false;
}else if(!document.formP.password1.value){
alert("新しいパスワードを入力してください");
return false;
}else if(!document.formP.password2.value){
alert("新しいパスワード確認を入力してください");
return false;
}else if(!document.formP.password.value.match(/^[a-zA-Z\d]+$/i)){
alert("今のパスワードには半角英数字しか使用できません。");
return false;
}else if(!document.formP.password1.value.match(/^[a-zA-Z\d]+$/i)){
alert("新しいパスワードには半角英数字しか使用できません。");
return false;
}else if(!document.formP.password2.value.match(/^[a-zA-Z\d]+$/i)){
alert("新しいパスワード確認には半角英数字しか使用できません。");
return false;
}else if(document.formP.password1.value.length < 4){
alert("新しいパスワードには4文字以上入力してください");
return false;
}else if(document.formP.password1.value.length < 4){
alert("新しいパスワードには4文字以上入力してください");
return false;
}else if(document.formP.password1.value != document.formP.password2.value){
alert("新しいパスワード確認が一致しません");
return false;
}else{
return true;
}
}
Monday, December 17, 2007
メールアドレスのチェック javascript
<SCRIPT LANGUAGE="javascript">
function check() {
var matchemail=/[!#-9A-~]+@+[a-z0-9]+.+[^.]$/i;
if(!document.step.mail.value) {
alert("メールアドレスを入力してください");
return false;
}else if( !(document.step.mail.value.match(matchemail))){
alert("メールアドレスが不正です。") ;
return false;
}else if(check_zenkaku(document.step.mail.value)){
alert("全角文字が使用されております。");
return false;
}else if( document.step.mail.value.match(/(docomo|ezweb|vodafone|softbank)\.ne.jp$/i)){
alert("申し訳ございませんが、携帯電話のメールアドレスはご使用できません。") ;
return false ;
}else{
return true;
}
}
function check_zenkaku(elm){
var txt=elm;
for(i=0;i<txt.length;i++){
if(escape(txt.charAt(i)).length>=4){
return true;
break;
}
}
return false ;
}
</SCRIPT>
function check() {
var matchemail=/[!#-9A-~]+@+[a-z0-9]+.+[^.]$/i;
if(!document.step.mail.value) {
alert("メールアドレスを入力してください");
return false;
}else if( !(document.step.mail.value.match(matchemail))){
alert("メールアドレスが不正です。") ;
return false;
}else if(check_zenkaku(document.step.mail.value)){
alert("全角文字が使用されております。");
return false;
}else if( document.step.mail.value.match(/(docomo|ezweb|vodafone|softbank)\.ne.jp$/i)){
alert("申し訳ございませんが、携帯電話のメールアドレスはご使用できません。") ;
return false ;
}else{
return true;
}
}
function check_zenkaku(elm){
var txt=elm;
for(i=0;i<txt.length;i++){
if(escape(txt.charAt(i)).length>=4){
return true;
break;
}
}
return false ;
}
</SCRIPT>
Friday, December 14, 2007
jquery.js でHTMLファイルのインクルード
PHPなどで使用しているHTMLファイルのインクルードをjquery.js
を使って行う例
これでfooterやheaderなど同じような箇所をコピペしなくてもよくなり、
メンテナンスが楽になります。
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript"><!--
$(function(){
$("#header_js").load("header.html");
});
// --></script>
</head>
<body>
<div id="header_js"></div>
を使って行う例
これでfooterやheaderなど同じような箇所をコピペしなくてもよくなり、
メンテナンスが楽になります。
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript"><!--
$(function(){
$("#header_js").load("header.html");
});
// --></script>
</head>
<body>
<div id="header_js"></div>
Wednesday, December 12, 2007
checkbox すべてをON・OFF PHPの場合
function checkAll() {
if(document.myForm.checkall.checked){
for(i=0;i if (document.myForm.elements[i].name == "ch[]"){
document.myForm.elements[i].checked = true;
}
}
}else{
for(i=0;i if (document.myForm.elements[i].name == "ch[]"){
document.myForm.elements[i].checked = false;
}
}
}
}
-----
<input type="checkbox" name="checkall" value="" onclick="checkAll(); ">
<input type="checkbox" name="ch[]" value="1">
<input type="checkbox" name="ch[]" value="2">
if(document.myForm.checkall.checked){
for(i=0;i
document.myForm.elements[i].checked = true;
}
}
}else{
for(i=0;i
document.myForm.elements[i].checked = false;
}
}
}
}
-----
<input type="checkbox" name="checkall" value="" onclick="checkAll(); ">
<input type="checkbox" name="ch[]" value="1">
<input type="checkbox" name="ch[]" value="2">
Sunday, November 25, 2007
prototype.js Ajax.RequestのonCompleteにパラメータ
はてなに出ていたソースをそのまま引用です。
http://q.hatena.ne.jp/1174489396
javascriptってすごいですね。
<html>
<head>
<title></title>
<script language="javascript" src="prototype.js" charset="utf-8"></script>
<script language="javascript">
<!--
function ajax1(id){
new Ajax.Request(
'test.txt',
{ onComplete : function(req){
Seiko(id, req);
}
});
}
function Seiko(id, req){
$(id).innerHTML = req.responseText;
}
//-->
</script>
</head>
<body>
<div id="test"></div>
<button onclick="ajax1('test');">TEST</button>
</body>
</html>
http://q.hatena.ne.jp/1174489396
javascriptってすごいですね。
<html>
<head>
<title></title>
<script language="javascript" src="prototype.js" charset="utf-8"></script>
<script language="javascript">
<!--
function ajax1(id){
new Ajax.Request(
'test.txt',
{ onComplete : function(req){
Seiko(id, req);
}
});
}
function Seiko(id, req){
$(id).innerHTML = req.responseText;
}
//-->
</script>
</head>
<body>
<div id="test"></div>
<button onclick="ajax1('test');">TEST</button>
</body>
</html>
Monday, October 29, 2007
プレビューのサンプル
<HTML>
<HEAD><TITLE>プレビュー</TITLE>
<script type="text/javascript" src="/prototype.js"></script>
<SCRIPT LANGUAGE="JavaScript">
<!--
function Preview()
{
// IE ONLY
// canvas.innerHTML =document.getElementById("body").value;
// prototype
var body = document.form.body.value.replace(/\x0D\x0A|\x0D|\x0A/g,'<br>')
$('canvas').innerHTML = body ;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<form name="form">
<textarea name="body" rows="10" onmouseup="Preview();" onkeydown="Preview();" onkeyup="Preview();" style="width:570px"></textarea>
</form>
<div id="canvas"></div>
</BODY>
</HTML>
<HEAD><TITLE>プレビュー</TITLE>
<script type="text/javascript" src="/prototype.js"></script>
<SCRIPT LANGUAGE="JavaScript">
<!--
function Preview()
{
// IE ONLY
// canvas.innerHTML =document.getElementById("body").value;
// prototype
var body = document.form.body.value.replace(/\x0D\x0A|\x0D|\x0A/g,'<br>')
$('canvas').innerHTML = body ;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<form name="form">
<textarea name="body" rows="10" onmouseup="Preview();" onkeydown="Preview();" onkeyup="Preview();" style="width:570px"></textarea>
</form>
<div id="canvas"></div>
</BODY>
</HTML>
Friday, October 19, 2007
mecab 0.96 インストール
tar xvzf mecab-0.96.tar.gz
cd mecab-0.96
./configure
./make
./make install
vi /etc/ld.so.conf
/usr/local/lib を追加
ldconfig を実行
tar xvzf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8 または ./configure --enable-utf8-only
make
make install
cd mecab-0.96
./configure
./make
./make install
vi /etc/ld.so.conf
/usr/local/lib を追加
ldconfig を実行
tar xvzf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8 または ./configure --enable-utf8-only
make
make install
Sunday, October 14, 2007
ペーストできない入力
<input type="text" name="mailaddress2" maxlength="256" size="100" value="" onpaste="return false;" >
Wednesday, June 20, 2007
Thursday, May 10, 2007
Smarty MySQLとの連携方法1のちょっと改造した場合
appendからassignにSmartyの呼び出し方法を変更しましたが、結果はそれほど変わらず、Smartyの場合、Smarty文法の方が優先されるようだ。
ちょっと改造した方法
require_once( 'MySmarty.class.php');
$objSmarty =& new MySmarty;
if (!($cn = mysql_connect("localhost", "hoge", "hoge"))) {
die;
}
if (!(mysql_select_db("test"))) {
die;
}
$sql = "select * from address";
if (!($rs = mysql_query($sql))) {
die;
}
$i=0;
while ($item = mysql_fetch_array($rs)) {
$arg[]=array(
'id'=>$item['id'],
'name'=>$item['name'],
'cell'=>$item['tel'],
'email'=>$item['email'],
);
}
mysql_close($cn);
$objSmarty->assign('contacts', $arg);
$objSmarty->display('hoge1.tmpl');
Smarty MySQLとの連携方法1
Smarty MySQLとの連携方法2
ちょっと改造した方法
require_once( 'MySmarty.class.php');
$objSmarty =& new MySmarty;
if (!($cn = mysql_connect("localhost", "hoge", "hoge"))) {
die;
}
if (!(mysql_select_db("test"))) {
die;
}
$sql = "select * from address";
if (!($rs = mysql_query($sql))) {
die;
}
$i=0;
while ($item = mysql_fetch_array($rs)) {
$arg[]=array(
'id'=>$item['id'],
'name'=>$item['name'],
'cell'=>$item['tel'],
'email'=>$item['email'],
);
}
mysql_close($cn);
$objSmarty->assign('contacts', $arg);
$objSmarty->display('hoge1.tmpl');
Smarty MySQLとの連携方法1
Smarty MySQLとの連携方法2
PHP-HTML::Templateを使った方法
http://phphtmltemplate.sourceforge.net/のPerlのHTML::Templateライクなテンプレートの方法を紹介します。
1回目のアクセスはSmartyより早いですが、2回目以降はSmartyの方が早いです。あたり前か
--php
include("template.php");
$f1 = "templates/htmlhtml.tmpl";// テンプレートファイル
if (!($cn = mysql_connect("localhost", "hoge", "hoge"))) {
die;
}
if (!(mysql_select_db("test"))) {
die;
}
$sql = "select * from address";
if (!($rs = mysql_query($sql))) {
die;
}
while ($item = mysql_fetch_array($rs)) {
$arg[]=array(
'id'=>$item['id'],
'name'=>$item['name'],
'cell'=>$item['tel'],
'email'=>$item['email'],
);
}
mysql_close($cn);
$options = array("filename"=>$f1, "debug"=>0, "die_on_bad_params"=>0);
$template =& new Template($options);
$template->AddParam('loop', $arg);
$template->EchoOutput();
---html---
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
<title>テンプレート</title>
</head>
<body>
<hr />
<TMPL_LOOP NAME="loop">
<p>
<TMPL_VAR NAME="name">
<TMPL_VAR NAME="id">
<TMPL_VAR NAME="cell">
<TMPL_VAR NAME="email">
</p>
</TMPL_LOOP>
</body>
</html>
1回目のアクセスはSmartyより早いですが、2回目以降はSmartyの方が早いです。あたり前か
--php
include("template.php");
$f1 = "templates/htmlhtml.tmpl";// テンプレートファイル
if (!($cn = mysql_connect("localhost", "hoge", "hoge"))) {
die;
}
if (!(mysql_select_db("test"))) {
die;
}
$sql = "select * from address";
if (!($rs = mysql_query($sql))) {
die;
}
while ($item = mysql_fetch_array($rs)) {
$arg[]=array(
'id'=>$item['id'],
'name'=>$item['name'],
'cell'=>$item['tel'],
'email'=>$item['email'],
);
}
mysql_close($cn);
$options = array("filename"=>$f1, "debug"=>0, "die_on_bad_params"=>0);
$template =& new Template($options);
$template->AddParam('loop', $arg);
$template->EchoOutput();
---html---
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
<title>テンプレート</title>
</head>
<body>
<hr />
<TMPL_LOOP NAME="loop">
<p>
<TMPL_VAR NAME="name">
<TMPL_VAR NAME="id">
<TMPL_VAR NAME="cell">
<TMPL_VAR NAME="email">
</p>
</TMPL_LOOP>
</body>
</html>
Smarty MySQLとの連携方法2
前回紹介した方法より若干速度が速い。ただしプログラム側にデータベースのカラムを追加する必要がある。
array配列を使用したSmaryのassignのサンプル sectionの場合
---php---
if (!($cn = mysql_connect("localhost", "hoge", "hoge"))) {
die;
}
if (!(mysql_select_db("test"))) {
die;
}
$sql = "select * from address";
if (!($rs = mysql_query($sql))) {
die;
}
$id= array();
$name= array();
$tel= array();
$email= array();
while ($item = mysql_fetch_array($rs)) {
array_push($id,$item['id']);
array_push($name,$item['name']);
array_push($tel,$item['tel']);
array_push($email,$item['email']);
}
$objSmarty->assign('id',$id);
$objSmarty->assign('name',$name);
$objSmarty->assign('tel',$tel);
$objSmarty->assign('email',$email);
mysql_close($cn);
$objSmarty->display('html.tmpl');
---html----
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
<title>テンプレート</title>
</head>
<body>
<hr />
{section name=customer loop=$id}
<p>
name: {$name[customer]}<br />
id: {$id[customer]}<br />
cell: {$tel[customer]}<br />
e-mail: {$mail[customer]}
</p>
{/section}
</body>
</html>
array配列を使用したSmaryのassignのサンプル sectionの場合
---php---
if (!($cn = mysql_connect("localhost", "hoge", "hoge"))) {
die;
}
if (!(mysql_select_db("test"))) {
die;
}
$sql = "select * from address";
if (!($rs = mysql_query($sql))) {
die;
}
$id= array();
$name= array();
$tel= array();
$email= array();
while ($item = mysql_fetch_array($rs)) {
array_push($id,$item['id']);
array_push($name,$item['name']);
array_push($tel,$item['tel']);
array_push($email,$item['email']);
}
$objSmarty->assign('id',$id);
$objSmarty->assign('name',$name);
$objSmarty->assign('tel',$tel);
$objSmarty->assign('email',$email);
mysql_close($cn);
$objSmarty->display('html.tmpl');
---html----
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
<title>テンプレート</title>
</head>
<body>
<hr />
{section name=customer loop=$id}
<p>
name: {$name[customer]}<br />
id: {$id[customer]}<br />
cell: {$tel[customer]}<br />
e-mail: {$mail[customer]}
</p>
{/section}
</body>
</html>
Smarty MySQLとの連携方法1
この方法のメリットはデータベースのカラム名はテンプレートのみに記述するのでプログラム管理が簡単になる。ただし、後から紹介する方法の方が速度は若干速い。
--PHP部分--
require_once( 'MySmarty.class.php');
$objSmarty =& new MySmarty;
if (!($cn = mysql_connect("localhost", "hoge", "hoge"))) {
die;
}
if (!(mysql_select_db("test"))) {
die;
}
$sql = "select * from address";
if (!($rs = mysql_query($sql))) {
die;
}
while ($item = mysql_fetch_array($rs)) {
$objSmarty->append('contacts',$item);
}
mysql_close($cn);
$objSmarty->display('hoge1.tmpl');
---hoge1.tmpl---
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
<title>テンプレート</title>
</head>
<body>
<hr />
{section name=customer loop=$contacts}
<p>
name: {$contacts[customer].name}
id: {$contacts[customer].id}
cell: {$contacts[customer].tel}
e-mail: {$contacts[customer].email}
</p>
{/section}
</body>
</html>
--PHP部分--
require_once( 'MySmarty.class.php');
$objSmarty =& new MySmarty;
if (!($cn = mysql_connect("localhost", "hoge", "hoge"))) {
die;
}
if (!(mysql_select_db("test"))) {
die;
}
$sql = "select * from address";
if (!($rs = mysql_query($sql))) {
die;
}
while ($item = mysql_fetch_array($rs)) {
$objSmarty->append('contacts',$item);
}
mysql_close($cn);
$objSmarty->display('hoge1.tmpl');
---hoge1.tmpl---
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8">
<title>テンプレート</title>
</head>
<body>
<hr />
{section name=customer loop=$contacts}
<p>
name: {$contacts[customer].name}
id: {$contacts[customer].id}
cell: {$contacts[customer].tel}
e-mail: {$contacts[customer].email}
</p>
{/section}
</body>
</html>
Smarty 独自ファイルクラス化
PHP5.0/7.Smartyを使う
HTMLファイルの変更がすぐに反映されないので以下を追加
<:?php
require('Smarty/Smarty.class.php');
class MySmarty extends Smarty {
function MySmarty () {
$this->Smarty();
$this->compile_check = true; // << ここを追加
$mydir = dirname(__FILE__);
$this->template_dir = "$mydir/templates/";
$this->compile_dir = "$mydir/templates_c/";
$this->config_dir = "$mydir/configs/";
$this->cache_dir = "$mydir/cache/";
$this->caching = 0;
}
}
?>
HTMLファイルの変更がすぐに反映されないので以下を追加
<:?php
require('Smarty/Smarty.class.php');
class MySmarty extends Smarty {
function MySmarty () {
$this->Smarty();
$this->compile_check = true; // << ここを追加
$mydir = dirname(__FILE__);
$this->template_dir = "$mydir/templates/";
$this->compile_dir = "$mydir/templates_c/";
$this->config_dir = "$mydir/configs/";
$this->cache_dir = "$mydir/cache/";
$this->caching = 0;
}
}
?>
Wednesday, May 09, 2007
apache2 mod_rewriteを後から追加(インストール)
PHPをインストール済みの場合、あとからapacheを再インストールは大変です。
*DSOでインストールされているか?を確認。されていればOK。
/usr/local/apache2/bin/httpd -lを実行
Compiled-in modules:
http_core.c
mod_so.c これがあれば makeをしないで追加できる
*mod_rewriteをインストール
ソースをDLした場所(例)に
/home//source/httpd-2.2./modules/mappers/mod_rewrite.c
があるか確認
cd /home//source/httpd-2.2./modules/mappers/
$ /usr/local/apache2/bin/apxs -i -a -c ./mod_rewrite.c
apacheの再起動で有効
*DSOでインストールされているか?を確認。されていればOK。
/usr/local/apache2/bin/httpd -lを実行
Compiled-in modules:
http_core.c
mod_so.c これがあれば makeをしないで追加できる
*mod_rewriteをインストール
ソースをDLした場所(例)に
/home//source/httpd-2.2./modules/mappers/mod_rewrite.c
があるか確認
cd /home//source/httpd-2.2./modules/mappers/
$ /usr/local/apache2/bin/apxs -i -a -c ./mod_rewrite.c
apacheの再起動で有効
Tuesday, May 08, 2007
smarty install by Pear
pear upgrade PEAR
pear channel-discover pearified.com
pear install pearified/Smarty
vi /usr/local/lib/php.ini
include_path = ".:/usr/local/lib/php:/usr/local/lib/php/Pearified"
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
pear channel-discover pearified.com
pear install pearified/Smarty
vi /usr/local/lib/php.ini
include_path = ".:/usr/local/lib/php:/usr/local/lib/php/Pearified"
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
Subscribe to:
Posts (Atom)