[サンプルプログラム]の検索結果
PHPの開発環境でプログラムからメールを送信できるかチェックするために作成した、ごく簡単なメールフォームのサンプルスクリプト(プログラム)です。mailmform.
PHPを実行すると入力フォームが表示され。送信ボタン...
PHPの開発環境でプログラムからメールを送信できるかチェックするために作成した、ごく簡単なメールフォームのサンプルスクリプト(プログラム)です。
mailmform.phpを実行すると入力フォームが表示され。送信ボタンを押す(クリック)すると入力した内容がメール送信されます。
<?php
//------------------------------------------------------------------------------
// mailform.php - sample mailform php script
//------------------------------------------------------------------------------
mb_language("Japanese");
mb_internal_encoding("UTF-8");
define("MAILTO", "*******@****.***");
$proc = isset($_POST['proc']) ? $_POST['proc'] : '';
//echo $proc; // for debug
if ($proc == 'send') {
_send();
}
else {
_input();
}
// 初期表示
function _input() {
$formdata = array();
$formdata['subject'] = '';
$formdata['name'] = '';
$formdata['from'] = '';
$formdata['body'] = '';
_input_form($formdata, '');
}
// 入力フォーム表示
function _input_form($formdata, $message) {
// XSS対策
$formdata['subject'] = htmlspecialchars($formdata['subject'], ENT_QUOTES);
$formdata['name'] = htmlspecialchars($formdata['name'], ENT_QUOTES);
$formdata['from'] = htmlspecialchars($formdata['from'], ENT_QUOTES);
$formdata['body'] = htmlspecialchars($formdata['body'], ENT_QUOTES);
echo <<<EOF
<html>
<
head>
<
meta http-equiv=
"Content-Type" content=
"text/html; charset=utf-8" />
<
title>サンプルメールフォーム</
title>
</
head>
<
body>
<
h2>サンプルメールフォーム</
h2>
<
p>$message</
p>
<
form action=
"mailform.php" method=
"post">
<
input type=
"hidden" name=
"proc" value=
"send">
件名:<
br />
<
input type=
"text" name=
"subject" size=
"50" value=
"${formdata['subject']}" /><
br />
名前:<
br />
<
input type=
"text" name=
"name" size=
"50" value=
"${formdata['name']}" /><
br />
メールアドレス:<
br />
<
input type=
"text" name=
"from" size=
"50" value=
"${formdata['from']}" /><
br />
本文:<
br />
<
textarea name=
"body" cols=
"50" rows=
"10">${formdata['body']}</
textarea><
br />
<
br />
<
input type=
"submit" value=
"送信" />
</
form>
</
body>
</
html>
EOF;
exit();
}
// メール送信
function _send() {
// パラメータ取得
$formdata = array();
$formdata['subject'] = isset($_POST['subject']) ? $_POST['subject'] : '';
$formdata['name'] = isset($_POST['name']) ? $_POST['name'] : '';
$formdata['from'] = isset($_POST['from']) ? $_POST['from'] : '';
$formdata['body'] = isset($_POST['body']) ? $_POST['body'] : '';
// 入力チェック
if ($formdata['subject'] == '') {
_input_form($formdata, '件名を入力してください');
}
if ($formdata['name'] == '') {
_input_form($formdata, '名前を入力してください');
}
if ($formdata['from'] == '') {
_input_form($formdata, 'メールアドレスを入力してください');
}
else {
if (!preg_match('/^[-+\\w]+(\\.[-+\\w]+)*@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]{2,6}$/i', $formdata['from'])) {
_input_form($formdata, '正しいメールアドレスを入力してください');
}
}
if ($formdata['body'] == '') {
_input_form($formdata, '本文を入力してください');
}
// 送信
$header = "From: " . mb_encode_mimeheader($formdata['name']) . ' <
' . $formdata[
'from']
. '>';
$result =
mb_send_mail(
MAILTO,
$formdata[
'subject']
, $formdata[
'body']
, $header)
; if ($result)
{ _input_form(
$formdata,
'メールを送信しました')
; } else { _input_form(
$formdata,
'メール送信に失敗しました')
; }}?>
PHPのプログラムからMySQLに接続し、SELECTでデータを取得する処理のサンプルプログラムです。あらかじめ
PHPMyAdminを使用して
MySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3...
PHPのプログラムからMySQLに接続し、SELECTでデータを取得する処理のサンプルプログラムです。
あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3件のレコードを登録しておきます。
CREATE TABLE `users` (
`userid` varchar(100) COLLATE utf8_bin NOT NULL,
`password` varchar(250) COLLATE utf8_bin NOT NULL,
`status` int(11) NOT NULL,
`auth` int(11) NOT NULL,
`username` varchar(250) COLLATE utf8_bin NOT NULL,
`address` varchar(250) COLLATE utf8_bin NOT NULL,
`mailaddr` varchar(100) COLLATE utf8_bin NOT NULL,
`hpurl` varchar(250) COLLATE utf8_bin NOT NULL,
`widgets` text COLLATE utf8_bin NOT NULL,
`createdate` datetime NOT NULL,
`lastupdate` datetime NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('admin','1234','1','0','webmaster','',
webmaster100@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test1','5678','1','1','user 1','',
'test1@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test2','abcd','1','1','user 2','',
'test2@59log.com','http://59log.com/','',now(),now());
以下のPHPプログラム(文字コードはUTF-8)では、テーブル「users」からレコードを全て取得しHTMLページとして出力しています。
--- mysql_connect.php ---
<html>
<head>
<title>PHPでMySQLに接続するサンプルプログラム</title>
</head>
<body>
<?php
$domain = "localhost";
$user = "test";
$password = "abcd12";
$dbname = "testdb";
// MySQLに接続
$dbconnect = mysql_connect($domain, $user, $password)
or die(mysql_error());
mysql_select_db($dbname, $dbconnect)
or die(mysql_error());
$sql = "SELECT * FROM users";
// クエリの実行
$result = mysql_query($sql, $dbconnect);
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
// 結果セットの行数を取得
$rows = mysql_num_rows($result);
echo $rows . '件のレコード<br />';
echo '<br />';
// 結果セットを表示
while ($row = mysql_fetch_assoc($result)) {
echo $row['userid'] . '<br />';
echo $row['username'] . '<br />';
echo $row['mailaddr'] . '<br />';
echo $row['hpurl'] . '<br />';
echo '<br />';
}
mysql_free_result($result);
mysql_close($dbconnect);
?>
</body>
</html>
単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、プログラム内部で取得した文字列の文字エンコードを変換したい場合もあります。以下のプログラムはL...
単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、
プログラム内部で取得した文字列の文字エンコードを変換したい場合もあります。
以下のプログラムはLinuxやCygwinの環境でC言語のプログラムからiconvを呼び出して文字エンコードを
変換する場合の手順を示したサンプルプログラムです。
--- tst_iconv.c ---
#include <stdio.h>
#include <iconv.h>
#define BUFSIZE 1024
char outbuf[BUFSIZE];
int convert(char const *src,
char const *dest,
char const *text,
char *buf,
size_t bufsize);
main(void)
{
int ret;
ret = convert("SHIFT-JIS", "UTF-8",
"日本語テストメッセージおはよう",
outbuf, sizeof(outbuf));
if (ret) {
printf("%s\n", outbuf);
}
else {
printf("Oops!\n");
}
}
int convert(char const *src,
char const *dest,
char const *text,
char *buf,
size_t bufsize)
{
iconv_t cd;
size_t srclen, destlen;
size_t ret;
cd = iconv_open(dest, src);
if (cd == (iconv_t)-1) {
perror("iconv open");
return 0;
}
srclen = strlen(text);
destlen = bufsize - 1;
memset(buf, '\0', bufsize);
ret = iconv(cd, &text, &srclen, &buf, &destlen);
if (ret == -1) {
perror("iconv");
return 0;
}
iconv_close(cd);
return 1;
}
コンパイル方法
$ gcc -o tst_iconv tst_iconv.c -liconv
ICONV
Perlのプログラムから
DBI経由で
MySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。あらかじめphpMyAdminを使用して
MySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「user...
PerlのプログラムからDBI経由でMySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。
あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3件のレコードを登録しておきます。
CREATE TABLE `users` (
`userid` varchar(100) COLLATE utf8_bin NOT NULL,
`password` varchar(250) COLLATE utf8_bin NOT NULL,
`status` int(11) NOT NULL,
`auth` int(11) NOT NULL,
`username` varchar(250) COLLATE utf8_bin NOT NULL,
`address` varchar(250) COLLATE utf8_bin NOT NULL,
`mailaddr` varchar(100) COLLATE utf8_bin NOT NULL,
`hpurl` varchar(250) COLLATE utf8_bin NOT NULL,
`widgets` text COLLATE utf8_bin NOT NULL,
`createdate` datetime NOT NULL,
`lastupdate` datetime NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('admin','1234','1','0','webmaster','',
webmaster100@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test1','5678','1','1','user 1','',
'test1@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test2','abcd','1','1','user 2','',
'test2@59log.com','http://59log.com/','',now(),now());
以下のPerlプログラムでは、テーブル「users」からステータスが1のレコードを全て取得、一旦配列に格納してから標準出力に出力しています。
検索条件の設定にはプレースホルダを使用し、DB処理でエラーが発生した場合は、例外処理に飛んでエラーの内容が出力されるように、RaiseErrorに1を設定しています。
--- mysql_select.pl ---
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $data_source = "DBI:mysql:testdb"; # 接続先はtestdb
my $username = "test"; # データベースへのアクセス権限を持つユーザーを指定
my $password = "abcd"; # そのパスワード
my $status = 1;
my @recs = ();
eval {
my $dbh = DBI->connect($data_source, $username, $password,
{RaiseError => 1, PrintError => 0});
my $sql = "select * from users where status = ?";
my $sth = $dbh->prepare($sql);
$sth->execute($status);
while (my @rec = $sth->fetchrow_array) {
push @recs, [@rec];
}
$sth->finish;
$dbh->disconnect;
};
if ($@) {
print "Error : $@\n";
}
foreach my $rec (@recs) {
print join(",", @{$rec}), "\n";
}
<TMPL_LOOP>タグはセクションを区切り、名前をつけることができます。この名前つきループの内側に<TMPL_VAR>タグを置き、プログラムでパラメータに代入するハッシュ・リファレンスの param() にリスト(配...
<TMPL_LOOP>タグはセクションを区切り、名前をつけることができます。この名前つきループの内側に<TMPL_VAR>タグを置き、プログラムでパラメータに代入するハッシュ・リファレンスの param() にリスト(配列リファレンス)を渡すと、リスト分の出力が繰り返されます。
以下は、<TMPL_LOOP>タグの使い方を示すサンプルプログラムです。サンプルプログラムでは、コンマで区切られたデータファイルを読み込んでリストを作成し、それをパラメータに渡してテーブルを表示しています。また、<TMPL_IF>タグ、<TMPL_ELSE>タグを使用してデータがない場合は、テーブルが出力されないようにしています。
--- データファイル(userdata.txt)
kagahiro,kitaakita,kagahiro3@59log.com,011678901
admin,tokyo,webmaster10@59log.com,011778901
buzei,kawasaki,support2@59bbs.org,041758901
--- テンプレートファイル(tmplloop.tmpl)
<html>
<head>
<title>HTML::Templateのサンプルプログラム LOOP</title>
</head>
<body>
<h1>HTML::Templateのサンプルプログラム LOOP</h1>
<TMPL_IF NAME=DATA_NUM>
<table>
<tr>
<td>User Name</td>
<td>Address</td>
<td>Email</td>
<td>Tel</td>
</tr>
<TMPL_LOOP NAME=USER_INFO>
<tr>
<td><TMPL_VAR NAME=USERNAME></td>
<td><TMPL_VAR NAME=ADDRESS></td>
<td><TMPL_VAR NAME=EMAIL></td>
<td><TMPL_VAR NAME=TEL></td>
</tr>
</TMPL_LOOP>
</table>
<TMPL_ELSE>
No data
</TMPL_IF>
</body>
</html>
--- CGI(tmplloop.cgi)
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Template;
my $template = HTML::Template->new(filename => 'tmplloop.tmpl');
my @loop_data = ();
open my $infh, '<', "userdata.txt";
while (my $rec = <$infh>) {
chomp $rec;
if ($rec ne '') {
my %row_data;
my ($username, $address, $email, $tel) = split(/,/, $rec);
$row_data{USERNAME} = $username;
$row_data{ADDRESS} = $address;
$row_data{EMAIL} = $email;
$row_data{TEL} = $tel;
push @loop_data, \%row_data;
}
}
close $infh;
$template->param(USER_INFO => \@loop_data);
$template->param(DATA_NUM => scalar(@loop_data));
print "Content-Type: text/html; charset=utf-8\n\n";
print $template->output;
HTML::
Templateの<TMPL_VAR>タグは、プログラムでパラメータに値を設定すると、タグの部分がパラメータで設定された文字列で置き換えられるという簡単なものです。以下は、<TMPL_VAR>タグの使い方を示す...
HTML::Templateの<TMPL_VAR>タグは、プログラムでパラメータに値を設定すると、
タグの部分がパラメータで設定された文字列で置き換えられるという簡単なものです。
以下は、<TMPL_VAR>タグの使い方を示す単純なサンプルプログラムです。
--- テンプレートファイル(tmplvar.tmpl)
<html>
<head>
<title>HTML::Templateのサンプルプログラム VAR</title>
</head>
<body>
<h1>HTML::Templateのサンプルプログラム VAR</h1>
<p>
My Name is <TMPL_VAR NAME=NAME> <br />
My IP Address is <TMPL_VAR NAME=IPADDR> <br />
</p>
</body>
</html>
--- CGI(tmplvar.cgi)
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Template;
my $template = HTML::Template->new(filename => 'tmplvar.tmpl');
$template->param(NAME => 'Yamato, Taro');
$template->param(IPADDR => $ENV{'REMOTE_ADDR'});
print "Content-Type: text/html; charset=utf-8\n\n";
print $template->output;
C言語やC++なら2次元配列といっても配列の階層を増やすだけなので、わりと簡単に理解できるのですが、
Perlはそこで
リファレンスという、いまいちわかりにくいものが出てくるのでちょっと面倒です。とはいっても、2次...
C言語やC++なら2次元配列といっても配列の階層を増やすだけなので、わりと簡単に理解できるのですが、Perlはそこでリファレンスという、いまいちわかりにくいものが出てくるのでちょっと面倒です。
とはいっても、2次元配列程度でならそんなに複雑なコードになるというわけでもありません。
以下は、numdata.txtというコンマで区切られたテキストファイルのデータを、
2次元配列に格納してからレコードごとに標準出力に出力するPerlのサンプルプログラムです。
--- numdata.txt ---
1,2,3,4
11,12,13,14
21,22,23,24
31,32,33,34
41,42,43,44
--- sample.pl ---
#!/usr/bin/perl
use strict;
use warnings;
#use Data::Dumper;
my @list;
open my $infh, '<', "numdata.txt";
while (my $rec = <$infh>) {
chomp $rec;
if ($rec ne '') {
push @list, [split(/,/, $rec)];
}
}
close $infh;
#print Dumper(@list);
foreach my $item (@list) {
# print Dumper($item);
my ($a, $b, $c, $d) = @{$item};
print "$a, $b, $c, $d\n";
}
初めてのPerl 第5版
オライリージャパン 著者:Randal L. Schwartz,Tom Phoenix,brian d foy 価格:3,780円 評価:★★★★★
powered by
amalink
昨日(2009年11月27日)Google 東京オフィスで行われた「Google-Wave-API-Japan Hackathon」に参加した際に作ったもの(少し修正しましたが)を公開しておきます。
私が作成したものは、「
お天気Webサービス仕様 - Weather Hacks - livedoor 天気情報」から、「明日の天気」の情報をXML形式で取得してきて、それをWaveのガジェットとして表示するというものです。
他の参加者の作ろうとしたものに比べると、レベル的にはサンプルプログラム程度のスクリプトですが、Web API を利用したガジェットを作る場合の参考にはなると思います。ガジェットのソースは以下のURLにおいてあるので、そこからURLを指定してWaveにガジェットを追加できます。
http://59log.com/files/tenki.xml
また、Waveアカウントを持っていれば以下のリンクからガジェットが表示されたWaveが見れるはずです。
https://wave.google.com/wave/?pli=1#restored:wave:googlewave.com!w%252BtVzhbGppA
FirefoxやIE 8では表示されなかったりするのですが、Window XP上でGoogle Chrome、Safariであれば見れると思います。
見てみたいけどWaveのアカウントがなくて見れないという場合は、webmaster@59log.com 宛にメールを送ってもらえれば、先着8名まで招待可能です。
Google Wave開発者の準公式コミュニティ 「Google-Wave-API-Japan」発足
Ruby のサンプルプログラムを登録、閲覧をするためのサイト。
ブックマーク先へ
2009年5月11日に電子部品・半導体の通販サイト「チップワンストップ」主催で行われたブロガー向けセミナー「オープンソースハードウェアセミナーvol.1 〜今日からはじめる
Arduino〜」に行ってきました。セミナーでは...
2009年5月11日に
電子部品・半導体の通販サイト「チップワンストップ」主催で行われたブロガー向けセミナー「
オープンソースハードウェアセミナーvol.1 ~今日からはじめるArduino~」に行ってきました。
セミナーでは、オープンソースハードウェア「Arduino」がどういうものであるかという簡単な説明と、Arduinoを使ってどんなことができるかのデモが行われ、なかなか興味深いものでした。
デモでは、インターネットに接続して、2chの実況板への書き込み状況に応じてテレビのチャンネルを切り替えを行ったり、プログラムをその場で作成してTwitterのステータスを更新するなど、サンプルプログラムやライブラリを利用することで、Arduinoから簡単にWebサイトにアクセスできることが、具体的な実例によって示されていて、Arduinoの魅力が十分以上に伝わってくるものでした。
また、モニターとなってブログにイベント感想やArduinoの開発についての記事を書くと、時価3,200円の「
Arduino Duemilanove」が貰えるというモニタープログラムもあるということなので、Twitterのステータスを更新するデモに魅かれた私も参加してみました。
ただし、今回のセミナーでは、開発環境については統合開発環境で、OSはWindows、Linux、Mac OS Xのどれでも問題なく開発できますという説明はあったものの、Arduinoを使ってプログラムを開発するには、ボード以外に具体的どういうものが必要なのかについての説明はなかったのでネットで少し調べてみました。
Arduinoでプログラムを開発するには、パソコン上でプログラム記述してArduinoに渡すためのソフト(統合開発環境、
Arduinoのサイトから無料でダウンロード)、パソコンとArduinoを接続するためのUSBケーブル A-B、Arduino基盤上チップとパソコンがやりとりするためのドライバーが最低限必要です。ソフトウェアのインストール方法については、以下のサイトが参考になると思います。
Arduino/インストール
また、セミナーでのデモのようにインターネットに接続する場合は、イーサネットシールドと呼ばれる拡張ボードが必要になります。イーサネットシールドは、
チップワンストップさんのサイトで購入できます。
とりあえず、自分の開発環境でネットで拾ってきたサンプルが動くことが確認できたのでかなり満足。
Arduinoに関する情報
2008年版オープンソースハードウェア製品完全ガイド(Arduino編)
オープンソースハードウェアとは何だろう? もう一度確認しておこう。それは、開発者が、ソース、回路図、ファームウェア、ソフトウェア、素材の明細、パーツリスト、ハードウェア製造に必要な設計図や"ボード"のファイルなど、一切合切を公開しようと決めたプロジェクトのことだ。またこれは、商用を含めて使い方を限定しない。Linuxなどのオープンソースのソフトウェアのハードウェア版ってことだ。
Arduinoは、普通のデスクトップパソコンにはできない、物理世界のセンシングやコントロールを可能にするツールだ。シンプルなマイクロコントローラーボードからなるオープンソースのフィジカルコンピューティングプラットフォームと、このボードのためのソフトウェアを記述する開発環境がセットになっている。
"Duemilanove"とはイタリア語で2009という意味。これが発売される年にちなんで付けられた。Duemilanoveは、USB Arduinoの最新バージョンだ。
Arduinoを使おう
フィジカル・コンピューティング: Arduino 開発システム、プログラム言語についてアーカイブ
Arduino 日本語リファレンス
Arduinoメモ
電子部品・半導体の通販サイト - チップワンストップ
1 2 次へ >
アクセスランキング
- 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 使用制限無し (1 PV)
- 将棋実況チャンネル【クロノ】 - ヤフーニュースに掲載された将棋系ユーチューバー (1 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (3273 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (488 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (91 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (89 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (70 PV)
- Million Dollar Ver 1.09向けの収益性を重視したゴールド(Gold、XAUUSD)ロングセットファイル (64 PV)
- 無料のMT4向けナンピンマーチン爆益(爆損)EA「Jipangu(ジパング)」 (62 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (59 PV)
- [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (51 PV)
- 2chまとめサイト - 痛いニュース(ノ∀`) (46 PV)
アクセス統計
ディレクトリ
関連サイト