2011年9月22日木曜日

ページ内へのアンカー設置方法

FAQをページを作成していて、ページを1ページで完結させたかったので、
上段に質問内容を
1.~10.項目
下段に回答内容
1.~10.回答

その際、1.の質問に対しての回答先へのリンクを張り方を簡単にまとめました。

ページ内ジャンプの意味1
ページが長いページの場合などは、ページ内のある部分へ直接飛ぶことのできるリンクや、
スクロールして下までさがったページを一番上まで戻るのに便利です。

まずは、ジャンプ先に目印(アンカー名)を作り、その目印に向けてジャンプします。
目印(アンカー)を作る
今回の場合は、回答部分に設置します。
まずは、リンク先に目印(アンカー)を作ります。
<a name="アンカー名">文字</a>


ページ内アンカーへのリンクを設置
今回は、質問項目に設置しました。
<a href="#アンカー名">文字</a> というように使用します。

<参考までに>
また、別ページへのファイルのアンカーへのリンクは以下のようにします。
<a href="ファイル名アンカー名">文字</a>

2011年9月17日土曜日

SDD320 Seriesと510 Seriesの違いについて

ノートパソコンが以上に安くなってきたので購入を検討する中、カスタマイズできるのでSDDを検討していたところ2種類ある?
どこが違うのが調べた結果がこちら。
読み込み速度が2倍近く違う。
■Intel Solid-State Drive 320 Seriesの主な仕様
モデル(容量) 40GB 80GB 120GB 160GB 300GB 600GB
Flash Memory
25nm MLC NAND
読込速度(Seq) 200MB/s270MB/s270MB/s270MB/s270MB/s270MB/s
書込速度(Seq) 45MB/s 90MB/s 130MB/s165MB/s205MB/s220MB/s
読込Random 4KB IOPS30,00038,00038,00039,00039,50039,500
書込Random 4KB IOPS3,70010,00014,00021,00023,00023,000
インタフェース
SATA II 3Gb/s


■比較対象Intel SSDの主な仕様
モデル(容量) X25-M(G2) 80GBX25-M(G2) 120GB510 120GB 510 250GB
Flash Memory
34nm MLC NAND
読込速度(Seq) 250MB/s 250MB/s 450MB/s 500MB/s
書込速度(Seq) 70MB/s 70MB/s 210MB/s 315MB/s
読込Random 4KB IOPS35,000 35,000 20,00020,000
書込Random 4KB IOPS6,600 8,600 5,000 5,000
インタフェース
SATA II 3Gb/s

SATA III 6.0Gb/s

2011年9月14日水曜日

お名前.com の「共有サーバーSD」のhtaccessについて

前回同様、いろいろテスト確認サーバーとして使用しており苦戦しております。

カルテサンプルを作っており、ファイル自体はphpで作成しているのですが、
お客様に入力して頂くにあたり、拡張子をhtmlファイルに変更し、htaccessにて
表示しようと思っておりました。

ところが、SERVER ERRORが起こりなぜ???

htaccessをいろいろ書き換えたりとしてみましたがまったく動かない。
仕様を確認・・・・
.htaccessはご利用可能です。
なおファイル制御に関する記述は一部ご利用いただけません。
うむ・・・

ご利用いただけない記述の例:

DirectoryIndex
  【例】DirectoryIndex index.php index.shtml
 
Digest認証
  【例】AuthType Digest

mod_headers
  【例】headers_module

AddTypeの一部記述
  【例】AddType application/x-httpd-php .php .html


ということで、もし使用したいなら別のレンタルサーバーを契約するのが良いと思います。
仕方がないので、さくらねっとサーバーを契約する予定です。

2011年9月8日木曜日

wordpressにアクセス解析設置

ランチブログをwordpressを使用して書いています。
以前使っていたサーバー「ドメインキング」からお名前SDサーバーに移行しました。
ドメインも変更してしまった為、まだ検索エンジンには表示されにくいですが。
せっかくなので、アクセス、検索ワードを調べる為に早速設置。

wordpressには、簡単にアクセス解析が設置できるプラグインを発見。
「Ultimate Google Analytics」はgoogleのアクセク解析を簡単に導入するためのプラグインです。
管理画面サイドメニューからプラグインの追加で「Ultimate Google Analytics」を検索してインストールするだけでした。

Google Analyticsに登録が必要になります。
googleアカウントがある場合は、『Analyticsにアクセス』無い場合は、下の今すぐお申し込みをクリックして登録します。









ドメインを設定すると、Account IDが生成されます。
UpdateOptionsをクリックして保存します。あとは、すべてのフッターにGoogle Analyticsのタグが自動的に設定されています。

設置後解析に、すぐには、繁栄しないようです。
参考までに8Hぐらいで表示されました。

2011年9月4日日曜日

100円ショップでECOパソコン

家に余っていた部品があったので自作しました。
マザーボードは3000円ぐらいで購入。
ケースは、予算の関係上買わない方向性で。
近くの100円ショップで熱効率には、最適な網が売っていたので2枚
電源を入る網カゴと結束バンドを買って合計400円

ホコリは気になりますが、空冷なのでファンいらず。
扇風機の風で十分。
CPU Quad Core
メモリ 4GB
HDD 500G×2台
ビデオカード FX8600
電源 400W


2011年8月29日月曜日

お名前.com共用サーバーにphpmyadminをインストールする。

ECCUBEやwordpressなどをインストールする際、必要になるのがDB設定!!
そのDBを管理しやすいソフトがphpmyadminです。
サーバーを移行したり、バックアップする際に活用できます。


1.データベース設定のMYSQLをクリック
2.作成をクリック。(自動でデーターベース設定されます。)
3.phpmyadminを入手します。こちら Download 3.4.4:のzipをダウンロードします。

4.「ドメイン名」フォルダの下に「phpmyadmin」フォルダを作成します。
「phpmyadmin」フォルダにアップロードします。
※「~.php」ファイルをすべて「700」に変更してください。
5.「phpmyadmin」フォルダの下に、設定ファイルを保存する「config」フォルダを作成します。
6.https://ドメイン名/phpmyadmin/setup/ にアクセスしてください。
7.「基本設定」タブ、及び「認証」タブにてphpMyAdminで管理するサーバのホスト名の設定を入力後、保存します。
8.「デフォルト言語」を「日本語」に変更し、「保存する」をクリックします。
9. 先ほど作成した「config」フォルダの下にある「config.inc.php」ファイルを一度ダウンロードします。その後、「phpmyadmin」フォルダの下にアップロードします。
※設定ファイルの作成に使用した phpmyadmin/setup/index.php ファイルのパーミッション設定を「600」に変更しておきます。
10.https://ドメイン名/phpmyadmin/ にアクセスし、 phpMyAdminの画面が表示されたらインストールは終了です。

11.ログインユーザー名、パスワードはコントロールパネル「データベース設定」で先ほど作成したものを使用します。
12.以上で設定完了です。

2011年8月24日水曜日

iphone,ipadで印刷設定をしたい!!

iphone,ipadを持っているけど、印刷対応プリンターを持っていない。
買うのは予算が厳しいと思っている方に。

1.今持っているUSBプリンターにプリントバー(約6,000円)を接続して、IPアドレス固定して
ePrint(350円)から印刷可能です。

2.AirPrintソフトを使って、Windowsの共有プリンタを使うことが出来ます。
この設定であればSafariからプリントできる可能性があります。

Windows 7でもXPでも設定可能です。
今回の環境
PCIwifiルター
OS:windowsXP、windows7
プリンター:CANON iP4100
端末:iphone4、ipad2(ios4.2)
ブラウザ:Safari

1.appleサイトからBonjourをダウロードします。こちら
インストールして下さい。iTunesを利用されている方は、すでにインストールされていると思います。

2.必要なファイルをダウンロードします。
こちら から”AirPrint.zip”がダウンロードします。
解凍すると、”airprint.exe”、”libairprint.dll”、”XpdfPrint.dll”という3つのファイルが出てきます。

3.”Program Files”フォルダに”AirPrint”というフォルダを作成、上の3つのファイルを入れます。

4.スタートメニューの”アクセサリ”の中の”コマンド プロンプト”のアイコンで右クリックし”管理者として実行”を選択します。
※別のユーザーしか表示されない場合そのまま実行で。

5.立ち上がったコマンドプロンプトで、以下のコマンドを入力、実行します。
sc.exe create AirPrint binPath= "c:\Program Files\AirPrint\airprint.exe -s" depend= "Bonjour Service" start= auto

すべて半角小文字で入力、”=”の後は半角スペースを入れるようにしてください(エラーが出ます)。
32ビットの場合

6.さらにコマンドを入力
sc.exe start AirPrint

これでサービス開始です。

7.プリンタを共有します。
「コントロールパネル」-「ハードウエアとサウンド」の中の「プリンタ」で、今使っているプリンタのアイコンを右クリックし「プロパティ」を開きます。共有から「このプリンタを共有する」にチェックを入れます。

8.ファイヤウォールの設定をします。
ファイヤウォールが有効な場合、AirPrintがはじかれてしまいます。
「コントロールパネル」-「セキュリティ」-「Windows ファイヤウォール」を開き、「Windowsファイやウォールによるプログラムの許可」というのを選択。

9.以上で設定完了です。



設定時に表示されたエラーを紹介します。
[SC] StartService FAILED 1056:
既に AirPrint サービスが起動しているのに、sc コマンドで AirPrint サービスを起動しようとした場合に出るエラーです。
最初からやり直して再度トライしてみてください。

1.AirPrint サービスを停止する
コントロールパネル->管理ツール->サービス をダブルクリックしてサービスを起動します。
AirPrint のサービスがある場合には、選択して画面左の「サービスの停止」をクリックしてサービスを停止します。

2.
AirPrint サービスを削除する
AirPrint サービスを停止したら、コマンドプロンプトで削除します。
sc delete AirPrint

3.再起動してやり直す
※2.から設定して下さい。


Safariよりプリンタ設定する際
プリンタにアクセスする時にユーザ名とパスワードが求められます。これは Windows PC のアカウントのユーザ名とパスワードです。 設定していない場合は、アカウントを一つ作成して下さい。

2011年8月9日火曜日

EC-CUBEをインストールする時に「500 Internal Server Error」

お名前.com共用サーバーにEC-CUBEをインストールする時に「500 Internal Server Error」でインストールできない場合の対策方法

■サーバー
お名前.com共用サーバー

■ショッピングサイト
EC-CUBE

■症状
お名前.com共用サーバーにEC-CUBEをインストールする時に「500 Internal Server Error」でインストールできない

■対策
下記の/html
ディレクトリの「.htaccess」ファイルを削除

■インストール時の属性の確認
/html/install/tempに書き込み権限を与えます。(パーミッション 777)
.phpファイルの書き込み権限(パーミッション 755)

再度インストール作業
http://ドメイン名/install/index.php

完了。

2011年4月20日水曜日

HTMLフォームからの送信

<html>
<head>
<title>10日でおぼえるPHP5入門教室(アンケート)</title>
</head>
<body>
<h1 style="background:#cccccc">
10日でおぼえるPHP5入門教室(アンケート)</h1> 
<form method="POST" action="sendmail.php">
<input type="hidden" name="_email" value="k.narita@naritan.com" />
<input type="hidden" name="_subject" value="10日でおぼえるPHP5入門教室" />
<input type="hidden" name="_result"
  value="<?php print($_SERVER['PHP_SELF']);?>" />
<table border="0">
 <tr>
 <th align="right">名前</th>
 <td><input type="text" name="名前" size="20" maxlength="30" /></td>
 </tr><tr>
 <th align="right">E-Mail</th>
 <td><input type="text" name="_from" size="50" maxlength="255" /></td>
 </tr><tr>
 <th align="right" valign="top">自由記入欄</th>
 <td><textarea name="内容" cols="50" rows="5"></textarea></td>
 </tr>
</table>
<input type="submit" value="送信" />
<input type="reset" value="クリア" />
</form>
</body>
</html>

※$_SERVER['PHP_SELF']とは、実行中のスクリプトのドキュメントルートに対する相対パス
※PHPスクリプトなどで、自身にフォームを送信したい場合などにactionにこの変数を設定することが多いらしい。

<?php
$header_info="From: ".$_POST['_from']."\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/".phpversion();
$body="".$_POST['_subject']."\n\n";
foreach($_POST as $key=>$value){
 if(!strstr($key,"_")){
  $body.="".$key."".$value."\r\n";
 }
}
mb_send_mail($_POST['_email'],$_POST['_subject'],$body,$header_info);
header("Location: ".$_POST['_result']);
?>
mb_send_mail(宛先、件名、本文、追加ヘッダ)

2011年4月18日月曜日

ランダム機能を使っておみくじを作成

<?php
 // おみくじデータの用意
$sample=array("大吉","中吉","小吉","吉","凶");
$kekka =array(
 "大吉"=>"ラッキー!今日は超ハッピー!!",
 "中吉"=>"良かった。今日も元気に頑張りましょう。",
 "小吉"=>"小さな幸せを大事にネ。",
 "吉"  =>"今日も無難に良い1日を…",
 "凶"  =>"今日はおとなしくすごしましょう。");
  // おみくじのシャッフル
shuffle($sample);
?>
<html>
<head>
<title>今日の運勢は?</title>
</head>
<body>
<h1 style="background:#cccccc">今日の運勢は?</h1>

<div style="font-size:14pt;font-weight:bold">
 <?php echo($sample[0]);?>
</div>
<div>
<?php echo($kekka[$sample[0]]);?>
</div>
</body>
</html>

cookieの利用で2回目のアクセスで復元

<html>
<head>
<title>クッキーでデータを記録する</title>
</head>
<body>
<form method="POST" action="cookie_rec.php">
E-Mailアドレス:
<input type="text" name="email" size="30" maxlength="50"
 value="<?php print($_COOKIE['email']); ?>" />
<input type="submit" value="送信" />
</form>
</body>
</html>


<?php
 setcookie("email",$_POST['email'],time()+(60*60*24*90));
?>
<html>
<head>
<title>クッキーでデータを記録する</title>
</head>
<body>

クッキー"email"を保存しました。
</body>
</html>

setcookie()は、その他のヘッダ情報と共に送信するクッキーを定義します。
ほかのヘッダ情報と同様に、クッキーは、スクリプトによる他のあらゆる出力よりも
前に送信される必要があります(これはHTTPプロトコルの制約です)。
<html><head> タグはもちろん空白も含め、あらゆる出力よりも前にこの関数をコールするようにしなければなりません。
タイムスタンプ:60秒×60分×24時間×90日により有効期限90日に設定しています。

2011年4月17日日曜日

switch文をif文に置き換えてみる


<?php
switch($_GET['category']){
case "PHP" :
$result="関数主体の手軽に使えるサーバサイド技術です";
break;
default :
$result= "クエリ情報categoryを指定してください";
}
echo ($result);
?>

↓↓↓↓↓↓↓

<?php
if($_GET['category']=="PHP"){
$result="関数主体の手軽に使えるサーバサイド技術です";
}elseif($_GET['category']=="JSP"){
$result="Javaベースの高機能なサーバサイド技術です。";
}elseif($_GET['category']=="ASP"){
$result="Windowsの代表的なサーバサイド技術です。";
}else{
$result="クエリ情報categoryを指定してください。";
}
echo ($result);
?>

確認URLは、http://localhost/ファイル名.php?category=PHP
関数主体の手軽に使えるサーバサイド技術ですと表示されればOK。

変数を活用してみる

<?php
$url="http://www.google.co.jp";
$memo=" インターネット検索エンジンの一つ - google ( $url ) ";
echo ($memo);
?>

表示:インターネット検索エンジンの一つ - google ( http://www.google.co.jp )
変数$memoには変数$urlが含まれているいる場合、ダブルクォーテーションで囲まれている場合は
変数として解釈されます。
シングルクォーテーションに置き換えると
表示:インターネット検索エンジンの一つ - google ( $url )
となります。
※ダブルクォーテーション内で変数を利用する場合、前後に空白を含めないと結果が表示されない
場合があることがわかった。

ベンチマークを測定してみる。

CrystalMark2004R3にて測定してみました。
ベンチマーク環境
CPU Intel(R) Core(TM)2 Quad CPU    Q9550  @ 2.83GHz
マザーボード Gigabyte Technology EP45-DQ6
グラフィックボード ATI Radeon HD 4350 512 MB
メモリー バルク DDR2 533 512MB×2
HDD SATA 500.1GB  Hitachi
光学ドライブ LG DVDRAM GSA-H62N
電源 メーカー不明 450W
OS Windows XP Professional Service Pack 3

http://crystalmark.info/
ローカルおよびネットワーク上のハードディスク、USBメモリ、メモリカード、RAMディスクなど、ドライブとして認識されているストレージのデータ転送速度を測定!!
[2011/02/01] CrystalDiskMark 3.0.1a -新しいディスクベンチマークソフトでも測定。

クエリ情報で、出力する文字を切り替えてみよう

3/30に覚えたswitch分岐処理の復習。
<html>
<head>
<title>クエリ情報を取得する</title>
</head>
<body>
<?php
switch($_GET['category']){
 case "PHP" :
  $result="関数主体の手軽に使えるサーバサイド技術です。";
  break;
 case "JSP" :
  $result="Javaベースの高機能なサーバサイド技術です。";
  break;
 case "ASP" :
  $result="Windowsの代表的なサーバサイド技術です。";
  break;
 default :
  $result="クエリ情報categoryを指定してください。";
}
print($result);
?>
</body>
</html>

xamppで確認してみよう。
URL:http://localhost/~/query.php?category=PHP
URL:http://localhost/~/query.php?category=JSP
※クエリ情報は大文字と小文字を区別を区別するので注意。
クエリ情報は、複数を「&」にて連結可能
例:URL:http://localhost/~/query.php?category=JSP&id=123
$_GETも$_POSTも同様。

フォーム情報取得を作成

取得したいフォームページを作成
送信先の設定に注意。action="送信先.php"
<head>
<title>フォーム情報を取得</title>
</head>
<body>
<form action="output.php" method="POST">
お名前:
<input type="text" name="name" size="20" maxlength="30">
<input type="submit"  value="送信">
</form>
</body>
</html>

送信先.phpページを作成
inputで設定したファイル名と統一することに注意!
<html>
<head>
<title>フォーム情報を取得する</title>
</head>
<body>
こんにちは、<?php print($_POST['name']); ?>さん!
</form>
</body>
</html>

作成完了したら、localにて確認。
こんにちは、「入力された文字」さん! と表示されればOK。

パスワードを入力させる時、伏せ文字にする場合typeをpasswordに設定する。
その他、チェックボックス"checkbox"、ラジオボタン"radio"、プルダウンメニューselectなどに置き換えることで送信フォームのアレンジが可能となります。
通信内容をトレースするためのツール(IE)
http://www.blunck.info/iehttpheaders.html
表示からエクスプローラーバーのieHTTPHeadersを選択するのみ。

2011年4月11日月曜日

フォームをつかってみる

フォームを使っての、PHPでの値の受け取りと記入漏れのチェック方法
isset関数での、ラジオボタンやチェックボックスのチェックが選択されているか確認するのに用いられる。

strlen関数は、isset関数ではチェックが不十分なので、入力場所に入っている
値の長さを取得することでチェックをします。
※日本語は1文字は2バイトとして数えます。

is_numeric関数は、数値文字列であるかを調べるのに使えます。
さらに、strlen関数と組み合わせて、設定桁数達しているか調べるのに利用できます。

preg_match関数は、上記の数値や桁数のパスワードやメールアドレスを、パターンマッチでチェックできます。


<?php
//-------------------------------------------------------
// ■ 初期値設定
//-------------------------------------------------------
$kname = "";
$mail = "";
$pw = "";
$ken = "1";
$seibetsu = "1";
$flg = array("0","0");
$postflg = "0";
//-------------------------------------------------------
// ■ POSTされたとき
//-------------------------------------------------------
if ($_SERVER["REQUEST_METHOD"]=="POST"){
 $postflg ="1";
 //--------------------------------
 // □ 登録
 //--------------------------------
 if (isset($_POST["submit"])){
  //------------------------------------------------------
  // □ $_POSTから値を取得
  //------------------------------------------------------
  $kname = htmlspecialchars($_POST["kname"], ENT_QUOTES); //会員名
  $mail = htmlspecialchars($_POST["mail"], ENT_QUOTES); //メールアドレス
  $pw = htmlspecialchars($_POST["pw"], ENT_QUOTES); //パスワード
  $biko = htmlspecialchars($_POST["biko"], ENT_QUOTES); //備考
  $ken = $_POST["ken"];     //件
  if (isset($_POST["seibetsu"])){    //性別(1:男,2:女)
   $seibetsu = $_POST["seibetsu"];
  }
  if (isset($_POST["flg"])){    //フラグ(0:表示フラグ,1:画像表示フラグ)
   foreach($_POST["flg"] as $key =>$value){
    $flg[$key] = $value;
   } 
  }
  $pic_name = $_FILES["pic"]["name"];    //ローカルファイル名 
  $pic_tmp = $_FILES["pic"]["tmp_name"];    //テンポラリファイルの名前 
  //------------------------------------------------------
  // □ 全角文字を半角に変換
  //------------------------------------------------------
  $mail = mb_convert_kana($mail,"as");
  //------------------------------------------------------
  // □ チェック
  //------------------------------------------------------
  //会員名
  if (strlen($kname)==0){
   echo "会員名が未入力です<br>";
  }
  //メールアドレス
  if (!preg_match("/^[^@]+@([-a-z0-9]+\.)+[a-z]{2,}$/", $mail)){
   echo "メールアドレスに誤りがあります<br>";
  }
  //パスワード
  if (!preg_match("/^[0-9]{1,5}$/",$pw)){
   echo "パスワードに誤りがあります<br>";
  }
  //ファイル
  $path = getcwd();
  if (isset($_ENV["OS"]) && preg_match("/window/i", $_ENV["OS"])){
   $path .= "\\";
  }else{
   $path .= "/";
  }
  if (strlen($pic_name)>0 && strlen($pic_tmp)>0){
   if (is_uploaded_file($pic_tmp)) {
    if (!move_uploaded_file($pic_tmp, $path .basename($pic_name))){
     echo "ファイルのアップロードに失敗しました<br>";
    }
   }
  }

 }
}
?>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=euc-jp">
<title>●:5-1 フォームを扱う</title>
</head>
<body>
<h2>フォーム送信テスト</h2>
<?php
//--------------------------------------------------
// ■ 送信された内容を表示
//--------------------------------------------------
if ($postflg=="1"){
 if ($flg[0]=="1"){
  //-------------------------------------
  // ■ 表示フラグがオンの時表示
  //-------------------------------------
  echo "<b>送信された内容</b><br>";
  echo "会員名:$kname<br>";
  echo "パスワード:$pw<br>";
  switch($ken){
   case "1":
    $ken ="北海道";
    break;
   case "2":
    $ken ="青森県";
    break;
   case "3":
    $ken ="秋田県";
    break;
   case "4":
    $ken ="岩手県";
    break;
  }
  echo "住所:$ken<br>";
  if ($seibetsu=="1"){
   echo "性別:男<br>";
  }else{
   echo "性別:女<br>";
  }
  echo "Email:$mail<br>";
  $biko_br = nl2br($biko);
  echo "備考:<br>";
  echo $biko_br;
  echo "<br>";
  //画像
  if (strlen($pic_tmp)>0){
   echo $path .basename($pic_name) ."にアップロードしました";
   if ($flg[1]=="1"){
    echo "<br><img src=\"" .basename($pic_name) ."\">";
   }

  }else{
   echo "ファイルはアップロードされませんでした";
   if (strlen($pic_name)>0){
    echo "(ファイルサイズが30KBを超過しています)";
   }
  }
 }else{
  //-------------------------------------
  // ■ 表示フラグがオンの時
  //-------------------------------------
  echo "送信した内容は表示されません";
 }
}
?>
<hr>
<b>会員登録フォーム)</b><p>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST" enctype="multipart/form-data">
<table border="1" width="600" cellspacing="0" cellpadding="0">
<?php
//--------------------------------------------------
// □ 会員名
//--------------------------------------------------
?>
<tr>
<td align="center" width="150" bgcolor="#b2ce77">会員名</td>
<td align="left" width="450">
&nbsp;<input type="text" name="kname" value="<?=$kname?>" size="40">
</td>
</tr>
<?php
//--------------------------------------------------
// □ 住所
//--------------------------------------------------
?>
<tr>
<td align="center" width="150" bgcolor="#b2ce77">住所</td>
<td align="left" width="450">
&nbsp;<select name="ken">
<option value="1"<?if ($ken=="1"){echo " selected";}?>>北海道</option>
<option value="2"<?if ($ken=="2"){echo " selected";}?>>青森県</option>
<option value="3"<?if ($ken=="3"){echo " selected";}?>>秋田県</option>
<option value="4"<?if ($ken=="4"){echo " selected";}?>>岩手県</option>
</select>
</td>
</tr>
<?php
//--------------------------------------------------
// □ 性別
//--------------------------------------------------
?>
<tr>
<td align="center" width="150" bgcolor="#b2ce77">性別</td>
<td align="left" width="450">
&nbsp;<input type="radio" name="seibetsu" value="1"<?if ($seibetsu=="1"){echo " checked";}?>>男性
&nbsp;<input type="radio" name="seibetsu" value="2"<?if ($seibetsu=="2"){echo " checked";}?>>女性
</td>
</tr>
<?php
//--------------------------------------------------
// □ メールアドレス
//--------------------------------------------------
?>
<tr>
<td align="center" width="150" bgcolor="#b2ce77">メールアドレス</td>
<td align="left" width="450">
&nbsp;<input type="text" name="mail" value="<?=$mail?>" size="30">
</td>
</tr>

<?php
//--------------------------------------------------
// □ パスワード
//--------------------------------------------------
?>
<tr>
<td align="center" width="150" bgcolor="#b2ce77">パスワード</td>
<td align="left" width="450">
&nbsp;<input type="password" name="pw" value="<?=$pw?>" size="30"><br>
&nbsp;5文字以下の半角数字を入力して下さい。
</td>
</tr>
<?php
//--------------------------------------------------
// □ 画像ファイル
//--------------------------------------------------
?>
<tr>
<td align="center" width="150" bgcolor="#b2ce77">画像ファイル</td>
<td align="left" width="450">
&nbsp;<input type="hidden" name="MAX_FILE_SIZE" value="30000">
&nbsp;<input type="file" name="pic" size="40">
</font>
</td>
</tr>
<?php
//--------------------------------------------------
// □ フラグ
//--------------------------------------------------
?>
<tr>
<td align="center" width="150" bgcolor="#b2ce77">フラグ</td>
<td align="left" width="450">
&nbsp;<input type="checkbox" name="flg[0]" value="1"<?if ($flg[0]=="1"){echo " checked";}?>>内容を表示する
&nbsp;<input type="checkbox" name="flg[1]" value="1"<?if ($flg[1]=="1"){echo " checked";}?>>画像を表示する
</td>
</tr>
<?php
//--------------------------------------------------
// □ 備考
//--------------------------------------------------
?>
<tr>
<td align="center" width="150" bgcolor="#b2ce77">備考</td>
<td align="left" width="450">
&nbsp;<textarea name="biko" cols="60" rows="10"><?=$biko?></textarea>
<input type="hidden" name="no" value="abc">
</td>
</tr>
</table>
<br>
<?php
//--------------------------------------------------
// □ 登録ボタン
//--------------------------------------------------
?>
<input type="submit" name="submit" value="   登録する   ">
</form>
</body>
</html>


テスト送信したメールをブラウザでメール受信

先ほどメール送信した項目をブラウザでメール出力してみました。
メールサーバーに接続/切断するには、imap_open()、imap_close()関数を使用します。
imap_open(メールボックス,ユーザー名,パスワード,)
メールボックスには、「{ホスト名:ポート番号/プロトコル}メールボックスパス」の形式で指定します。
メールボックスパスには、ユーザーの個人メールボックスを表す「INBOX」が使用できるとのこと。

imap_close()関数は、接続しているメールサーバー切断します。
切断に成功するとIMAPストリームを返し、失敗するとFALSEを返します。

if ($mailcnt > 0){ チェックした結果、メールの受信数が一以上だったら、
受信したメール数だけループ処理します。

imap_header関数で、メールヘッダー情報のオブジェクトを取得します。
imap_fetchbody関数で、メール本文を取得します。ISO-2022-JPからUTF-8に
変換しています。

サンプルコード
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>テスト送信したメールをメール受信</title>
</head>
<body>
<table border="1" cellpadding="5" cellspacing="0" bordercolor="#666666">
<tr bgcolor="#EEEEBB">
<td align="center">No.</td>
<td align="center">件名</td>
<td align="center">名前</td>
<td align="center">E-MAIL</td>
<td align="center">受信日時</td>
<td align="center">内容</td>

</tr>
<tr>
<?php
//------------------------------------
// メールの受信設定
//------------------------------------
$mbox = imap_open("{ホスト名:110/pop3/notls}INBOX", 
"メールアカウント", "パスワード");
if ($mbox){
 $mboxes = imap_check($mbox);
 $mailcnt = $mboxes->Nmsgs;
 if ($mailcnt > 0){
             for ($i = 1;$i <= $mailcnt;$i++){
                 $header = imap_header($mbox, $i);
   $title = htmlspecialchars(mb_decode_mimeheader($header->subject));
   
   $fromdate= $header->date; 
   $from = $header->from; 
   $mailbox = $from[0]->mailbox;
   $email = $from[0]->mailbox."@".$from[0]->host;
   $namae = mb_decode_mimeheader($from[0]->personal);
  
   $content = imap_fetchbody($mbox,$i,1,FT_PEEK);
   $content=$charset .htmlspecialchars(mb_convert_encoding
  ($content,"UTF-8","ISO-2022-JP"));

?>
<tr>
<td align="center"><?= $i ?></td>
<td align="left"><?= $title ?></td>
<td align="left"><?= $namae ?></td>
<td align="left"><?= $email ?></td>
<td align="left"><?= $fromdate ?></td>
<td align="left"><?= $content ?></td>

</tr>
<?php
  }
 }
 imap_close($mbox);
}else{
        echo "メールボックスに接続できませんでした。";
}
?>

</table>
<br><?=$mailcnt ?>件のメールを受信しました<p>

</body>
</html>

下記のようなエラーが表示された場合。
/notlsを追加でエラーが回避され受信成功しました。
$mbox = imap_open("{ホスト名:110/pop3/notls}INBOX",
/notls サーバがそれをサポートしていたとしても、
セッションで start-TLS による暗号化を使用しません。

先日のメール送信をテストしてみました。

送信する文字コードをUTF-8設定してます。
subject = タイトルです。
content = メール本文です。
送信される文章を自由に変更してみてください。

<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>メール送信サンプル</title>
</head>
<?php
//====================================================================
// 4-8 ?
//====================================================================

$mailto = "自分のアドレス";
$subject = "タイトルですよ";
$content = "内容をいれます\nあいうえお\nかきくけこ";
$mailfrom = "From:自分のアドレス";
$mailfrom="From:" .mb_encode_mimeheader("ケント") ." <k.narita@naritan.com>";
if (mb_send_mail($mailto,$subject,$content,$mailfrom)){
 echo "送信完了しました";
}else{
 echo "失敗しました";
}
?>

送信完了しますと、下記のようにoutlookに送信されてきます。

2011年4月8日金曜日

xamppでPHPのフォームからメール送信できない。

メールフォームを作成してみようと思い、まず簡単なメール送信してみようと思って
早速、xamppで実行・・
送信完了しました。成功!!
outlookで確認いくら送受信しても送られてこないなぜ????
ネットで検索
xamppの左メニューにある、Mercury Mailで送信テストが紹介されていたので
送信者、受信者を自分のアドレス、件名、メッセージは適当に。
送信成功と表示!!
outlookで確認いくら送受信してもまたもや、送られてこないなぜ?
調べた結果、php.iniファイル、sendmail.iniに設定が必要なことが
分かった。



php.iniの設定変更【下記参照】C:\xampp\apache\bin\php.ini

■php.ini
[mail function] セクション
sendmail_path = "C:\xampp\sendmail\sendmail -t"
以外はすべてコメントアウトする。

sendmail.iniの設定変更【下記参照】C:\xampp\sendmail\sendmail.ini

■sendmail.ini
[sendmail] セクション
smtp_server= ISPのSMTPサーバ名
smtp_port=587
smtp_ssl=auto
default_domain= ISPのメールドメイン
auth_username= ISPのメールアカウント
auth_password= 上記のメールパスワード
force_sender= 上記アカウントのメールアドレス
hostname= localhostname or computername

■Mercury 起動しない

上記の修正でメール送信ができました。

2011年4月4日月曜日

前回のファイルをフォルダに入れてみよう

前回のファイルを作成したフォルダの中に保存させてみよう!
前回のフィルの読込・書込み方法では、ディレクトリ指定がされていないので、ファイルはプログラムと同じ階層に保存されているのがわかると思います。
※ファイルサイズ表示をしたい場合=filesize(ファイル名)
※ファイルの更新時間表示をしたい場合=date(“Y/m/d H:i:s”,filemtime(ファイル名))

これを違う場所に作成させたい場合は、mkdir関数を使用すると便利です。

TRUE/FALSE= mkdir(ディレクトリ名,パーミッション(デフォルト:0777))
前回のファイルに追加でフォルダ作成のコマンドを打ち込むだけです。

<head>
<meta http-equiv=”Content-type” content=”text/html; charset=euc-jp”>
<title>ファイルの読み書き方法</title>
</head>
<?php
// □ フォルダの作成
$folder = "test";
if (!file_exists($folder)){
mkdir($folder,0755);
}
// □ ファイルの作成
//hh(XX時)をファイル名にする
$filename = "$folder/" .date("H") .".txt";
//追加書き込みモードで開く(ファイルが無いときは作成)
$fh = @fopen($filename,"a");
if (!$fh){
//メッセージを出してスクリプトを終了
exit("ファイル書き込みのオープンで失敗しました");
}else{
//排他ロック
flock($fh,LOCK_EX);
//乱数を保存と日付と区切り文字(.” ==> “)
$msg = date("Y/m/d H:i:s") ." ==> ";
//1から9999までの乱数と改行(¥n)
$msg.= rand(1,9999) ."\n";
//書き出し
fputs($fh,$msg);
//ロックを解除
flock($fh,LOCK_UN);
//ファイルを閉じる
fclose($fh);
}
// □ ファイルを読む
//file_exists関数でファイル名またはディレクトリを確認。
//あればTUREなければFALSE
if (file_exists($filename)){
//読み取りモードで開く。
//@マークは式の前につけるとエラーメッセージを無視します。
$fh = @fopen($filename,"r");
if (!$fh){
//メッセージを出してスクリプトを終了
exit("ファイル読み込みのオープンで失敗しました");
}else{
while(!feof($fh)){
//一行ずつ(改行記号まで)最後まで読み込み
$temp = fgets($fh);
//内容を出力
if ($temp>""){echo str_replace("\n","<br>","★$temp");}
}
//ファイルを閉じる
fclose($fh);
}
}
?>

太文字の部分を修正するだけで、ディレクトリが作成され、そのフォルダの中にファイルが保存されます。

2011年4月1日金曜日

ファイルの読み込み書き込み方法

時刻と乱数データーを書き込み、読み込んむ表示方法
ブラウザーの更新により、同じフォーマットで行が増えて、時刻と乱数が変化するプログラム
※アクセスカウンターやファイルの記録、アクセスログの取得に活用できます。

fopen・・・ファイルを開く
fputs・・・テキスト書き込む
fgets・・・テキストを読む
fclose・・・ファイルを閉じる

<head>
<meta http-equiv=”Content-type” content=”text/html; charset=euc-jp”>
<title>ファイルの読み書き方法</title>
</head>
<?php
// □ ファイルの作成
//hh(XX時)をファイル名にする
$filename = date(“H”) .”.txt”;
//追加書き込みモードで開く(ファイルが無いときは作成)
$fh = @fopen($filename,”a”);
if (!$fh){
//メッセージを出してスクリプトを終了
exit(“ファイル書き込みのオープンで失敗しました”);
}else{
//排他ロック
flock($fh,LOCK_EX);
//乱数を保存と日付と区切り文字(.” ==> “)
$msg = date(“Y/m/d H:i:s”) .” ==> “;
//1から9999までの乱数と改行(¥n)
$msg.= rand(1,9999) .”\n”;
//書き出し
fputs($fh,$msg);
//ロックを解除
flock($fh,LOCK_UN);
//ファイルを閉じる
fclose($fh);
}
//———————————————
// □ ファイルを読む
//file_exists関数でファイル名またはディレクトリを確認。
//あればTUREなければFALSE
if (file_exists($filename)){
//読み取りモードで開く。
//@マークは式の前につけるとエラーメッセージを無視します。
$fh = @fopen($filename,”r”);
if (!$fh){
//メッセージを出してスクリプトを終了
exit(“ファイル読み込みのオープンで失敗しました”);
}else{
while(!feof($fh)){
//一行ずつ(改行記号まで)最後まで読み込み
$temp = fgets($fh);
//内容を出力
if ($temp>”"){echo str_replace(“\n”,”<br>”,”★$temp”);}
}
//ファイルを閉じる
fclose($fh);
}
}
?>

ファイルのモード
r  ・・・読込のみでオープン
r+ ・・・読込/書出し用にオープン
w  ・・・書出しのみでオープン  一行のみ表示
w+ ・・・読込/書出し用でオープン
a ・・・追加書出しのみでオープン 複数行表示
a+ ・・・読込/追加書出し用でオープン

LOCK_SH ・・・解放されるまで他の書き込みNG、読込はOK
LOCK_EX ・・・解放されるまで他の書き込み、読込もNG
LOCK_UN ・・・解放

2011年3月31日木曜日

文字化け修正方法


初期設定は、EUC-JPになっているようです。
まず日本語を使うに当たって、PHPの基本として、文字コードはUTF-8を使用すべき
ってことなので、UTF-8で設定していきます。

XAMPPのインストールは、Cドライブの直下っていう前提。
まずは下に書いてる5つのファイルを書き換える。
C:\xampp\apache\bin\php.ini
C:\xampp\php\php.ini
C:\xampp\php\php5.ini
C:\xampp\php\php4\php.ini
C:\xampp\php\php4\php4.ini

この.iniファイルっが、PHPの初期設定をしているファイルになります。
よく分からんことがいっぱい書いてあるけど、先頭にある;(セミコロン)がコメントアウトの意味らしい。
初期設定では、mbstring(マルチバイト文字:つまり日本語)の設定をしている行が
コメントアウトされているので、その辺を修正する。

これが初期状態
-----------------------------------------
1 ;mbstring.language = Japanese
2 ;mbstring.internal_encoding = EUC-JP
3 ;mbstring.http_input = auto
4 ;mbstring.http_output = SJIS
5 ;mbstring.encoding_translation = Off
6 ;mbstring.detect_order = auto
7 ;mbstring.substitute_character = none
8 ;mbstring.func_overload = 0
-----------------------------------------
これらのセミコロンを取って、
2,4,5行目を以下のように変えてみましょう。
-----------------------------------------
2 mbstring.internal_encoding = UTF-8
4 mbstring.http_output = UTF-8
5 mbstring.encoding_translation = On
-----------------------------------------
これでPHP側の設定は終わり。

それでもデータが文字化けしている場合。
C:\xampp\apache\bin\php.iniの中に
magic_quotes_gpc = On → magic_quotes_gpc = Off に変更で文字化け解消しました。

どちらを先に行っても問題ありませんでした。
ちなみに、kentPHPは、両方で文字化け解消しました。

ループ処理(while文、do while文)


ループ処理をすることで、同じコードを何行も記述せずにすむ処理とは?
例:式の条件が$xが50未満の時、50以上になったときループ処理からぬける方法
while文
<?php
$x = 0;
while($x < 50){
echo $x;
$x++;
}
?>

出力結果:012345~4546474849

do while文
<?php
$x = 0;
do{
echo $x;
$x++;
}while($x < 50);
?>

出力結果はどちらも同じとなる。
———————————
$x++ 加算(A+1)
$x–  減算(A-1)
++$x (A+1)+1
–$x  (A-1)-1
———————————
$x && $y xもyもTURE
$x || $y xかyがTURE
———————————
$x == $y xとyが等しい
$x < $y xがy未満 $x <= $y xがy以下 $x > $y yがx未満
$x => $y yがx以下
——————————–
$x 「while」文と「do while文」の使い分け方
条件に$x = 10以上を追加追加した場合。
while文
<?php
$x = 10;
while($x >=10 && $x < 50){
echo $x;
$x++;
}
?>

$x=10のため処理は実行されない。

<?php
$x = 10;
do{
echo $x;
$x++;
}while($x >= 10 && $x < 50);
?>

実行される。
※do while文は、do{ 書かれた処理を1度実行し、その後whileに書かれた処理されます。

日付と時刻を扱う関数とは?


date関数とは?現在の時刻を取得したり、更新した時刻書き込んだりする為に使用される。
mktime関数?何日後、何ケ月前が何年何月何日だったか知るのに使用できる。

date(“Y/m/d H:i:s”); = = 2011/03/31 14:55:12
mktime(時間,分,秒,月,日,年);
例:5日後がいつか知りたい場合date関数とmktime関数を使って記述します。
<?PHP
$y = date(“Y”);
$m = date(“m”);
$d = date(“d”);
$after_5day = mktime(0,0,0,$m,$d+5,$y);
echo date (“Y年m月d日”,$after_5day);
?>

ブラウザーで確認。なぜか意味不明な文字が・・・
コマンドは間違っていないのに…なぜ文字化け?
格闘した結果、メニュー文字化け修正方法をご確認ください。

2011年3月30日水曜日

if文以外の複数条件の場合


if文より少し分かりやすい、複数条件分けに使用できるswitch文
日付のフォーマット(date(日付フォーマット))に従って、switch文を作成。

date("Y/m/d H:i:s")  Y:西暦年 m:月 d:日 H:時 i:分 s:秒 w:曜日
例:今日は何曜日?
<?php
switch(date(“w”)){
case 0:
echo “今日は日曜日です。”;
break;
case 1:
echo “今日は月曜日です。”;
break;
case 2:
echo “今日は火曜日です。”;
break;
case 3:
echo “今日は水曜日です。”;
break;
case 4:
echo “今日は木曜日です。”;
break;
case 5:
echo “今日は金曜日です。”;
break;
case 6:
echo “今日は土曜日です。”;
break;
default:
echo “ここにはきません(*^_^*)”;
}
?>

※case 値1:は決まり事。さらに、処理ごとに「break;」を入力することで各曜日から抜ける為に必要。
入力がされてないとループ処理が永遠に終わらないので注意とのこと。
※条件定義の最後にdefault:を入れることで終了を示します。省略してもかまいません。

条件式(if文)を覚えよう


if文というと難しく感じますが、英訳の通り「もし~っだたら?」
例:
<?php
$x = 10;
$y = 3;
if(($x == 10) && ($y == 3)){
echo “あいうえお”;
}else{
echo”かきくけこ”;
}
?>

if文は、式がTURE(X=3 Y=10)の時、その中が実行され「あいうえお」と表示されます。
そうでなかったときはその他=「かきくけこ」が表示されます。
---------------------------------------------------------------------
さらにelseifを使うと、条件の3段活用ができます。
<?php
$x = 10;
if($x == 1){
echo “あいうえお”;
}elseif($x == 3 ){
echo”かきくけこ”;
}else{
echo”さしすせそ”;
}
?>

Xの値が1の時、「あいうえお」と表示されます。
Xの値が3の時、「かきくけこ」と表示されます。
Xの値が10ですので、「さしすせそ」と表示されます。

PHPのコード記述の書き方を覚える!


使用するフリーソフト php_editorをyahooで検索するとすぐに見つかります。
見つからなかった方は、phpSpotからダウンロードするとより簡単です。
1.php_editorを起動させてください。
PHPコードの書き方の基本ルール
開始タグ「」の間に記述します。
表示させたい文字をダブルコーテーションで囲みます。
最後の文字のダブルコーテーション後に、セミコロンを入力します「;」
2.例:
<?php
echo "あ","い","う","え","お";
?>

入力後、保存ファイル名はなんでもかまいません。例:test.php
3.作成したtest.phpファイルを昨日インストールしたC:\xampp\htdocs\test.phpへ移動。
4.ブラウザーでhttp://localhost/test.phpで確認
「あいうえお」が表示されたのが確認できればOK。

プログラムチックに入力してみよう。
「あいうえお」の文字列を、変数の$kotobaに「代入」します。
例:
<?php
$kotoba=”あいうえお”;
echo $kotoba;
?>

ブラウザーでhttp://localhost/test.phpで確認
「あいうえお」が表示されたのが確認できればOK。
文字列結合演算子とは、左辺と右辺の文字列を結合する演算子。
PHPではドット(.)を文字列の演算子として使う。
例:
<?php
//ネコ何回?
echo”ネコが何回表示されるか?<br>”;
$neko = “ネコ”;
$kotoba = $neko ;
echo “$kotoba<br>”;

$kotoba = $kotoba .$neko .$neko .$neko;
echo “$kotoba<br>”;

$kotoba .= $neko;
$kotoba .= $neko;
$kotoba .= $neko;
$kotoba .= $neko;
$kotoba .= $neko;
echo “$kotoba<br>”;
?>

ブラウザーでhttp://localhost/test.phpで確認
「ネコ」が表示されたのが確認できればOK。
ネコが何回表示されるか?
ネコ(1回)
ネコネコネコネコ(4回)
ネコネコネコネコネコネコネコネコネコ(9回=4回+5回)
なぜ? A.=B  {A=A.Bは、AとBの文字列を結合して、ひとつの文字列になる為}

2011年3月29日火曜日

XAMPPにWordPressをインストール

初めに、http://localhost/xampp/にアクセスしてください。
続いて、左下のほうに、phpmyadminという設定項目がありますのでクリック。
セイキュリティ設定された方は、ユーザー名、パスワードを入力して実行ボタンでログインできます。

MySQL localhostの新規データベースを作成したいので、今回はwordpressというデータベースを作ります。画像を参考に設定してみてください。

新規データーベースを作成する。BOX枠にデーターベース名を入力後ww、
作成ボタンを押してください。

次に、WordPress | 日本語から、ファイルをダウンロード。
ダウンロードしたファイルを、Cドライブの中のxamppフォルダの中の、htdocsに移します。 http://localhost/wordpress/にアクセスしてみてください。






注意点として、xamppのMySQLのデフォルト値は、ユーザー名、root  セキュリティ設定された場合はそのパスワードを入力
設定されていない場合は、ユーザー名の部分にroot パスワードの部分は未記入でOKです。
※以上で設定完了となります。
再度、http://localhost/wordpress/にアクセスしてみてください。
これでローカル環境にてWordPressをテスト投稿できます。

XAMPPをインストール。

XAMPPとは、PHP開発環境に必要なMysql・PHP・Apacheを、簡単に一括でインストールソフトらいしい。
ローカル上で、phpの確認をできるすぐれものらしい。
例えば、WordPressをローカル環境でも使えるようになります。
※英語が苦手な自分としても、日本語対応も見つけたので安心して使えそうです。

XAMPPをダウンロードしてインストールを始めます。




c:ドライブ真下に、xamppフォルダを作り、インストール作業を行います。
完了後、ディスクトップにある、XAMPPショートカットキーを起動すると下記の表示にかわります。


ブラウザー「Firefox・Explorer・Chrome」を起動し、続いて、ブラウザのアドレスバーに、次のように入力してxampp初期画面に移動します。http://localhost/

ネットでいろいろ調べた結果セキュリティをかけた方がよということで…
セキュリティをかけてみました。まず、メニューからセキュリティを選択

http://localhost/security/xamppsecurity.phpをクリックしてください。

パスワードの設定をして完了となります。
さらにXAMMPの言語設定でUTF-8を設定しても文字化けが起こる場合があります。
ブログ投稿タイトルの修正方法を確認してみてください。

日本語サイトが見つからない方もいらっしゃるようなのでここからダウンロードしてみて下さい。