2010年3月28日日曜日

http://php.hushlog.com/130/

http://php.hushlog.com/130/

formのチェック項目

27         /*
28         'sample' => array(
29             'name'          => 'サンプル',      // 表示名
30             'required'      => true,            // 必須オプション(true/false)
31             'min'           => null,            // 最小値
32             'max'           => null,            // 最大値
33             'regexp'        => null,            // 文字種指定(正規表現)
34             'custom'        => null,            // メソッドによるチェック
35             'filter'        => null,            // 入力値変換フィルタオプション
36             'form_type'     => FORM_TYPE_TEXT   // フォーム型
37             'type'          => VAR_TYPE_INT,    // 入力値型
38         ),
39         */


var $form = array(      
'mailaddress' => array(
          'name'          => 'メールアドレス',
          'required'      => true,
          'type'          => VAR_TYPE_STRING,
      ),
 ~省略~

$form = $this->action_form->get('mailaddress');//ここでformに
渡す事が味噌です

if($form){
$this->af->setApp($form);
return 'login';
}
~login。tpl~
<p>{$app.foo}</p>で表示されます
~login。tpl~
$this->action_form->get('mailaddress');で'mailaddress' => array(を取得できます。
配列変数は取得できまん

if ($this->af->validate() > 0) {

      if ($this->af->validate() > 0) {
では$formの入力値が無かったり、チェック項目に当てはまらなかったら条件分が実効されます


$from チェック

fromの文字列指定
$form = array(
'name' =>array(
  'regexp' => '/^[a-zA-Z]+$/',   //文字の英字
  ),
);

$form = array(
'name' =>array(

  'regexp' => '/^[ぁ-んー]+$/',   //あ~んの文字列
  ),
);
Smarty関数のmessage関数を使いエラーメッセージを表示
<input type="text" name="mailadd" value="$form.mailadd">
{message name="mailadd"}

2010年3月19日金曜日

ようするに、prepare()メソッドでフォーム値の検証を行うこと、perform()メソッドでは全てのデータはサニタイズされているという 前提で処理を行うことが出来る、安全且つ簡潔なコードが書けるというわけです(やっぱりStrutsの真似)。
なお、フォーム値の自動検証詳細については以下をご覧下さい。

2010年3月18日木曜日

Controllerにアクション定義を追加します。具体的には、
app/Sample_Controller.phpを以下のように編集します。 
/**
  *  @var    array   forward定義
  */
 var $forward = array(
      /*
       *  TODO: ここにforward先を記述してください
       *
       *  記述例:
       *
       *  'index'         => array(
       *      'view_name' => 'Sample_View_Index',
       *  ),
       */
+    'login' => array(
+        'view_name' => 'Sample_View_Login',
+        'forward_path' => 'login.tpl'
    ),
 );
***********************
ですので、ここでは'login'というアクションに対応するファイル
を作成するので、app/action/Login.phpというファイルを以下の
ように作成すればよいことになります。
Ethna_ActionClassを継承した
perform() にメソッドの戻り値として遷移先の名前(後述)を返します 
 
<?php
class Sample_Action_Login extends Ethna_ActionClass
{
    function perform()
    {
        return 'login';
    }
}
?> 
************************
ですので、ここでは'login'という遷移名に対応するファイル
を作成するので、app/view/Login.phpというファイルを以下のように作
成します。 
<?php
class Sample_View_Login extends Ethna_ViewClass
{
    function preforward()
    {
        $this->af->setApp('now', strftime('%Y/%m/%d'));
    }
}
?> 
**********************
次に、テンプレートファイルを作成します。テンプレート
ディレクトリはtemplate/jaディレクトリで、(6)で'login.tpl'をテンプ
レートファイルに指定しているので、template/ja/login.tplを作成します。 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
Login View<br />
current time: {$app.now}
</body>
</html> 
******************
http://some.host/~foo/?action_login=trueにアクセスすると
 



2010年3月11日木曜日

MYSQL 記事を取ってくる

$qstring = "selectd.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
 "d.catid,b.category,d.title,d.body,d.image_g,YEAR(d.dt) as yyyy,MONTH(d.dt) as mm " .
 " from b_webdiary d left join b_categories b " .
 " on d.catid = b.catid order by d.dt desc



******************************************************
b_webdiary
topicid  lastupdate      dt           fdelete catid title body
1      2010-03-11 18:06:28 2010-03-11 18:06:28 0     1    ddd ddddd
b_categories

catid category
 1    General
2   友人
*****************************************************








2010年3月10日水曜日

2010年3月9日火曜日

標準偏差とは

http://www.hinkai.com/qc/hensa.htmlに分かりやすくあります。
合計の平均を出し、
(点数)ー(平均)二乗=和
(点数)ー(平均)二乗=和
(点数)ー(平均)二乗=和
(点数)ー(平均)二乗=和
(点数)ー(平均)二乗=和
ーーーーーーーーーーーーー
合計

ルート(合計÷5)= 平方根=標準偏差

*商品の品質管理の時などに使います。

MYSQL 合計を求める

SELECT Subject, StudentID, SUM( TestScore )
FROM tbl_Test
GROUP BY Subject


********************************* 
SELECT カラム名,カラム名,SUM(カラム名)//合計を求めるカラム名
FROM テーブル名
GROUP BY カラム名//合計をまとめるカラム名

Mysql AVGで平均を求める

SELECT stor, nam, AVG( pric )
FROM ec_product
GROUP BY stor;


*********************** 
SELECT カラム名 ,カラム名, AVG(カラム名 )//平均を出すカラム
FROM ec_product テーブル名
GROUP BY stor; 平均を求めるグループ

Mysql 抽出条件を設定

SELECT PREF_CD,PREF_NAME,T01Prefecture.AREA_CD,AREA_NAME
FROM T01Prefecture, T00Area
WHERE T01Prefecture.AREA_CD = T00Area.AREA_CD
AND PREF_CD BETWEEN 1 AND 7;

********************************************

SELECT カラム名,カラム名,テーブル名①.カラム名,カラム名
FROM テーブル名①, テーブル名②
WHERE テーブル名①.カラム名 = テーブル名②.カラム名
AND カラム名 BETWEEN 1 AND 7;

解説 ①②のテーブルを結合し、ANDの後のカラム名の1~7に当てはまるレコードだけを抽出

テーブルの結合表示

SELECT topicid,title,b_webdiary.catid,category
FROM b_webdiary INNER JOIN b_categories
ON b_webdiary.catid = b_categories.catid;

**********************************
SELECT カラム名,カラム名,テーブル名.カラム名,カラム名
FROM テーブル名 INNER JOIN テーブル名
ON テーブル名.カラム名 = テーブル名.カラム名;



2010年3月7日日曜日

imgタグ 置き換え 正規表現

<?php
$text_x = "あああああ<img src="yyyjjj.jpg">いいいいい";

$rcd = mbereg_replace("<img src=\".+?\">", "", $text_x);

print_r($rcd."●");
?>

対象の文字列に”’などのクオートがある場合は¥で文字列とする

2010年3月5日金曜日

画像test

<?php
$str = 'てすと<img src="test.jpg">テスト';

$test = strip_tags($str);

print_r($test."<br>");


$content = 'てすと <img src="7-pictures-of-pretty-elene-gedevanishvili04.jpg"> テスト';

$pattern = "/\<img ([^\>]+)\>/i";
//$pattern = "/<img.*?\/>/";

preg_match_all($pattern, $content, $images);
foreach($images as $data){
    foreach($data as $data2){
        print_r($data2."★<br>");
    }
print_r($data."●<br>");
}
print_r(count($images)."<br>");

?>

smarty文字数制限

{$topics[tloop].bodyf|truncate:31}

2010年3月3日水曜日

画像アップの流れ 解説

<?php
//===============================================================================
//   ■■ MASAGO 離れPHP島        :GDライブラリ(3) ■■
//        Class        :php20040218.php
//        Copyright    :masago.kir.jp
//        Made by        :Masago
//        Date        :2004/02/18
//        Last Update    :2004/02/18
//      
//        Comment        :大きさを変更しようっ
//      
//        Caution        :GDライブラリ[3]
//==============================================================================
//-----------------------------------------------
// □ 変数の初期化
//-----------------------------------------------
$error        = "";        //エラー
//======================================================
// ■ POSTされたときはログイン情報をチェック ■
//======================================================
if ($_SERVER["REQUEST_METHOD"]=="POST"){
    //------------------------------------------------------
    // □ 戻るボタン押下
    //------------------------------------------------------
    if (isset($_POST["submit"])){
        //------------------------------------------------------
        // □ POSTされた名前を変数に保存
        //------------------------------------------------------
        $img1        = $_FILES['img1'];            // アップロードファイルオブジェクト
        $img1tmp    = $_FILES['img1']['tmp_name'];        //tmpファイル名
        $img1name    = $_FILES['img1']['name'];        //ローカルファイル名
        $img1size    = $_FILES['img1']['size'];        //サイズ
        $img1type    = $_FILES['img1']['type'];        //タイプ
        $cwidth        = $_POST['cwidth'];            // 変更幅
        $cheight    = $_POST['cheight'];            //変更縦
        $cwidth      = mb_convert_kana($cwidth,"as",EUC);    //半角に
        $cheight      = mb_convert_kana($cheight,"as",EUC);    //半角に

            if (!ereg("^[0-9]*$",$cwidth)){$error="幅に誤りがあります。";}
            if (!ereg("^[0-9]*$",$cheight)){$error="縦に誤りがあります。";}
        if ($cwidth>800){$error="幅が大きすぎます";}
        if ($cheight>600){$error="縦が大きすぎます";}
        if ($error==""){
            //------------------------------------------------------
            // ■ アップロード画像チェック
            //------------------------------------------------------
            $kaku="";
            //POSTでHTTPでUPしたfileがあったら?
            if (is_uploaded_file($img1tmp)) {
                //filetypeがgifだったら?
                if ($img1type=="image/gif"){
                    $error="gif画像は操作できません";
                }
                //x-pngやjpaeだったら拡張子を変換
                if ($img1type=="image_png" || $img1type=="image/x-png"){$kaku=".png";}
                if ($img1type=="image/jpeg" || $img1type=="image/pjpeg"){$kaku=".jpg";}
                //変換した拡張子が空だったら?
                if ($kaku==""){$error="アップロード画像に誤りがあります";}
                //エラーがなく拡張子空な場合?
                if ($kaku!="" && $error==""){
                    //---------------------------------------
                    // □ 画像のサイズを変更
                    //---------------------------------------
                    //listで配列変数の割り当て、幅と縦
                    list($width,$height)=getimagesize($img1tmp);
                    //imagecreatefromjpegはファイルまたは、URLから画像を作成する
                    $src=@imagecreatefromjpeg($img1tmp);
                    //ダミーの黒い画像を返します
                    $dst=imagecreatetruecolor($cwidth,$cheight);
                    //$dst変数に$srcに格納された画像をxyを指定してコピーする
                    imagecopyresized($dst,$src,0,0,0,0,$cwidth,$cheight,$width,$height);
                    //↑↑↑でコピーされた画像をPHPスクリプトでファイルで保蔵、または直接表示出来ます。
                    $boRtn=imagejpeg($dst,"20040218/" .date("YmdHis") .$kaku);
                    if ($boRtn){
                        $error="アップロードに成功しました。";
                    }else{
                        $error="アップロードに失敗しました。";
                    }
                }else{
                    $error="ファイルの種類に誤りがあります。";
                }
            }
        }
    }
}else{
    $cwidth="100";
    $cheight="100";
}
//======================================================
// ■ H T M L ■
//======================================================
?>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=euc-jp">
<META HTTP-EQUIV="Cache-control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<TITLE>2004/02/18 Sample</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff" style="margin:0px" marginwidth="0" marginheight="0">
<FONT SIZE="2">
<A HREF="phpmenu.php">メニューへ</A>&nbsp;&nbsp;
<A HREF="phpsc.php?s=php20040218s.php">このページのソース</A>
<CENTER>
<BR><BR>
<B>画像をアップロードしてサイズ変更</B><BR><BR>
* jpg,pngのみ有効。ファイルサイズは50Kまで *<BR>
</FONT>
<BR>
<?php
//---------------------------------------------
// □ エラーメモリを表示
//---------------------------------------------
if ($error!=""){echo "<FONT COLOR=\"#ff0000\">$error</FONT>";}
?>
<BR>
<BR>
<?php
//---------------------------------------------
// □ フォーム
//---------------------------------------------
?>
<FORM NAME="objform" ACTION="<?php echo $_SERVER['SCRIPT_NAME']; ?>" METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="50000">
画像ファイル:<INPUT TYPE="file" NAME="img1" SIZE="40"><BR>
幅:<INPUT TYPE="text" NAME="cwidth" SIZE="5" VALUE="<?php echo $cwidth; ?>">pix<BR>
縦:<INPUT TYPE="text" NAME="cheight" SIZE="5" VALUE="<?php echo $cheight; ?>">pix<BR>
<INPUT TYPE="submit" NAME="submit" VALUE="アップロード">
</FORM>
<BR>
<HR WIDTH="600">
<BR>
<?php
//---------------------------------------------
// □ アップロードされた画像を表示
//---------------------------------------------
//ファイルを取得
$cnt=0;
$filename=array();
if ($dir = @opendir("20040218")) {
    while($file = readdir($dir)) {
        if (!is_dir($file)){
            $cnt++;
            $filename[$cnt]=$file;
        }
    }
    closedir($dir);
}
//SORT!!
rsort($filename);
$cnt=0;
?>
<TABLE BORDER="0" WIDTH="600">
<?php
$cnt=0;
foreach($filename as $value){
    $cnt++;
    if ($cnt==1){echo "<TR>";}
    echo "<TD VALIGN=\"center\" ALIGN=\"center\">\n";
    echo "<IMG BORDER=\"0\" SRC=\"20040218/$value\">\n";
    echo "</TD>\n";
    if ($cnt==4){
        echo "</TR>\n";
        $cnt=0;
    }
}
if ($cnt<4){
    $cnt=4-$cnt;
    echo "<TD COLSPAN=\"$cnt\">&nbsp;</TD>\n";
    echo "</TR>\n";
}
?>
</TABLE>
</CENTER>
</BODY>
</HTML>

2010年3月2日火曜日

画像UPソース2

<?php
$img_tmp = $_FILES["img_path"]["tmp_name"];
$img_name = $_FILES["img_path"]["name"];
$img_size = $_FILES["img_path"]["size"];
if($_REQUEST["up"] != ""){

if($img_tmp != "" and $img_size <= 30000){

$img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type <br>一時的に保存されているパスは: $img_tmp <br>";

$FilePath = "./img/".date("Ymdhis").".".GetExt($img_name);

move_uploaded_file($img_tmp,$FilePath);

$fp = fopen("./img/data.txt","a");
fputs($fp,$FilePath."\n");
fclose($fp);
}else{
$size_error = "サイズが大きすぎます。ファイルサイズは30キロバイト以下です。";

}
}
// GetExt
// ファイルの拡張子を取得します。
function GetExt($FilePath){
$f=strrev($FilePath);
$ext=substr($f,0,strpos($f,"."));
return strrev($ext);
}
?><html>
<head>
<title>画像アップロード</title>
</head>
<body>
<h1>画像アップロード</h1>
<font color="#FF0000"><strong><?= $size_error ?></strong></font><?= $img_message ?>
<form name="form" action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST"
ENCTYPE="MULTIPART/FORM-DATA">
<input name="img_path" type="file" size="40">
<input name="up" type="submit" value="アップロード"><hr>
<table border="0">
<tr>
<?php

$array_img = file("./img/data.txt");

for($i=0; $i<sizeof($array_img); $i++){

$array_img[$i] = ereg_replace("\n","",$array_img[$i]);

print "<td style=\"border:1px solid #000000\"><img src=\"$array_img[$i]\" width=\"100\" height=\"100\"></td>";
}
?>

</tr>
</table>
</form>
</body>
</html>

画像UPソース

<?php
//===============================================================================
//   ■■ MASAGO 離れPHP島        :GDライブラリ(3) ■■
//        Class        :php20040218.php
//        Copyright    :masago.kir.jp
//        Made by        :Masago
//        Date        :2004/02/18
//        Last Update    :2004/02/18
//      
//        Comment        :大きさを変更しようっ
//      
//        Caution        :GDライブラリ[3]
//==============================================================================
//-----------------------------------------------
// □ 変数の初期化
//-----------------------------------------------
$error        = "";        //エラー
//======================================================
// ■ POSTされたときはログイン情報をチェック ■
//======================================================
if ($_SERVER["REQUEST_METHOD"]=="POST"){
    //------------------------------------------------------
    // □ 戻るボタン押下
    //------------------------------------------------------
    if (isset($_POST["submit"])){
        //------------------------------------------------------
        // □ POSTされた名前を変数に保存
        //------------------------------------------------------
        $img1        = $_FILES['img1'];            // アップロードファイルオブジェクト
        $img1tmp    = $_FILES['img1']['tmp_name'];        //tmpファイル名
        $img1name    = $_FILES['img1']['name'];        //ローカルファイル名
        $img1size    = $_FILES['img1']['size'];        //サイズ
        $img1type    = $_FILES['img1']['type'];        //タイプ
        $cwidth        = $_POST['cwidth'];            // 変更幅
        $cheight    = $_POST['cheight'];            //変更縦
        $cwidth      = mb_convert_kana($cwidth,"as",EUC);    //半角に
        $cheight      = mb_convert_kana($cheight,"as",EUC);    //半角に

            if (!ereg("^[0-9]*$",$cwidth)){$error="幅に誤りがあります。";}
            if (!ereg("^[0-9]*$",$cheight)){$error="縦に誤りがあります。";}
        if ($cwidth>800){$error="幅が大きすぎます";}
        if ($cheight>600){$error="縦が大きすぎます";}
        if ($error==""){
            //------------------------------------------------------
            // ■ アップロード画像チェック
            //------------------------------------------------------
            $kaku="";
            if (is_uploaded_file($img1tmp)) {
                if ($img1type=="image/gif"){
                    $error="gif画像は操作できません";
                }
                if ($img1type=="image_png" || $img1type=="image/x-png"){$kaku=".png";}
                if ($img1type=="image/jpeg" || $img1type=="image/pjpeg"){$kaku=".jpg";}
                if ($kaku==""){$error="アップロード画像に誤りがあります";}
                if ($kaku!="" && $error==""){
                    //---------------------------------------
                    // □ 画像のサイズを変更
                    //---------------------------------------
                    list($width,$height)=getimagesize($img1tmp);
                    $src=@imagecreatefromjpeg($img1tmp);
                    $dst=imagecreatetruecolor($cwidth,$cheight);
                    imagecopyresized($dst,$src,0,0,0,0,$cwidth,$cheight,$width,$height);
                    $boRtn=imagejpeg($dst,"20040218/" .date("YmdHis") .$kaku);
                    if ($boRtn){
                        $error="アップロードに成功しました。";
                    }else{
                        $error="アップロードに失敗しました。";
                    }
                }else{
                    $error="ファイルの種類に誤りがあります。";
                }
            }
        }
    }
}else{
    $cwidth="100";
    $cheight="100";
}
//======================================================
// ■ H T M L ■
//======================================================
?>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=euc-jp">
<META HTTP-EQUIV="Cache-control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<TITLE>2004/02/18 Sample</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff" style="margin:0px" marginwidth="0" marginheight="0">
<FONT SIZE="2">
<A HREF="phpmenu.php">メニューへ</A>&nbsp;&nbsp;
<A HREF="phpsc.php?s=php20040218s.php">このページのソース</A>
<CENTER>
<BR><BR>
<B>画像をアップロードしてサイズ変更</B><BR><BR>
* jpg,pngのみ有効。ファイルサイズは50Kまで *<BR>
</FONT>
<BR>
<?php
//---------------------------------------------
// □ エラーメモリを表示
//---------------------------------------------
if ($error!=""){echo "<FONT COLOR=\"#ff0000\">$error</FONT>";}
?>
<BR>
<BR>
<?php
//---------------------------------------------
// □ フォーム
//---------------------------------------------
?>
<FORM NAME="objform" ACTION="<?php echo $_SERVER['SCRIPT_NAME']; ?>" METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="50000">
画像ファイル:<INPUT TYPE="file" NAME="img1" SIZE="40"><BR>
幅:<INPUT TYPE="text" NAME="cwidth" SIZE="5" VALUE="<?php echo $cwidth; ?>">pix<BR>
縦:<INPUT TYPE="text" NAME="cheight" SIZE="5" VALUE="<?php echo $cheight; ?>">pix<BR>
<INPUT TYPE="submit" NAME="submit" VALUE="アップロード">
</FORM>
<BR>
<HR WIDTH="600">
<BR>
<?php
//---------------------------------------------
// □ アップロードされた画像を表示
//---------------------------------------------
//ファイルを取得
$cnt=0;
$filename=array();
if ($dir = @opendir("20040218")) {
    while($file = readdir($dir)) {
        if (!is_dir($file)){
            $cnt++;
            $filename[$cnt]=$file;
        }
    }
    closedir($dir);
}
//SORT!!
rsort($filename);
$cnt=0;
?>
<TABLE BORDER="0" WIDTH="600">
<?php
$cnt=0;
foreach($filename as $value){
    $cnt++;
    if ($cnt==1){echo "<TR>";}
    echo "<TD VALIGN=\"center\" ALIGN=\"center\">\n";
    echo "<IMG BORDER=\"0\" SRC=\"20040218/$value\">\n";
    echo "</TD>\n";
    if ($cnt==4){
        echo "</TR>\n";
        $cnt=0;
    }
}
if ($cnt<4){
    $cnt=4-$cnt;
    echo "<TD COLSPAN=\"$cnt\">&nbsp;</TD>\n";
    echo "</TR>\n";
}
?>
</TABLE>
</CENTER>
</BODY>
</HTML>

画像の読み込みテスト

<?php
$image_path = 'archives/Winter.jpg';

if (file_exists($image_path)) {
    $fp   = fopen($image_path,'rb');
    $size = filesize($image_path);
    $img  = fread($fp, $size);
    fclose($fp);

    header('Content-Type: image/gif');
    echo $img;
}
?>