phpからファイルに追記。メールを送信する方法。
個人的にシフト作成ツールとしてphpを使ったりするので、メモとして
index.phpとsend.phpを作成
ここでやることとしては
- 入力を受け付けるindex.phpを作成
- index.phpに入力フォームを作成
- 入力されたデータをpostする先のsend.phpを作成
- send.phpでファイルに記入する仕組みを作成
- ファイルから読み込んで内容をメールで送信
ちなみに、このメールの宛先を自分にすることで、僕は誰がシフトの申請を出したかが分かるようにしています。
index.php
<?php ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <form action="send.php" method="post"> name:<input type="text" name="name"><br> message:<input type="text" name="message"><br> <button type="submit">submit</button> </form> </body> </html>
とすることで、こんな感じのページを作成できます。
そしてsend.phpを作っていきます
send.php
<?php $dataFile = 'text.txt'; if ($_SERVER['REQUEST_METHOD'] == 'POST') { $name = $_POST['name']; $message = $_POST['message']; $write = $name."さんからメッセージです。\n".$message; $fp = fopen($dataFile,'a'); fwrite($fp, $write); fclose($fp); mb_language("Japanese"); mb_internal_encoding("UTF-8"); $textdata = file_get_contents('text.txt'); $sendmail = mb_send_mail("example@example.jp", "test", $textdata, "From: example.com"); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>send</title> </head> <body> Sended! </body> </html>
とすれば、送信した際にSended!と書いてあるページに飛びます。
メールの送信のメソッドは返り値がbooleanなので
送信に失敗した場合falseが帰ります。
それを利用して
送信しました!と送信できませんでした。
を条件分岐してあげるといいですね。
実際、自分もそうしています。$sendmailはtrue or falseになっているので。
この先は大体の実行結果です。
index.php
send.php
text.txt
こんな感じです。
メールは試してみる時に自分のアドレスを入れてみてくださいね。
C++を初めてやる人へ。開発環境の導入(準備)から、出力まで。
なんか、元々Visual studioが入っていて中途半端な段階から進んだので、かなり時間がかかってしまいました。
やはり、開発環境の導入は最初の難関ですね・・・
Visual Studio のダウンロード
とりあえず、どれだけ調べてもVisual C++へと言われる感じしたので
ここからVisual Studio Communityをダウンロードしてインストール
そのままMicrosoftアカウントなどを入れて起動すると
なんかEclipseのような画面へ・・・
「ちょっと近づいたな・・・?」
という感覚。
Visual C++ (のパッケージなど)をインストール
左上の「ファイル」→「新規作成」から
プロジェクトを作成して
Visual C++を選択!
もういけるのか!!
と思いきや・・・
またこれだ・・・
長いな・・・おい・・・
やっとこさ
これも終わってプロジェクト作成
「なんとなく、間違っている気しかしない・・・」
と独り言を言っていました笑
初めての出力まで
なんかごちゃごちゃやってたらこんなことに・・・
わけがわからない。なんか既にほとんどできているテンプレートを使用してしまった?
とりあえず、気を取り直して
これか?
これも違った(30分くらい迷いましたが)
どうもこれらしい。
空のプロジェクトにチェックを付ける
これで、出てきた画面で
右のほうにあるソースファイルってところで右クリック
追加で項目を追加?
とりあえずそれでC++フォルダを作成できた。
そこで以下のプログラムを打ってデバッグ
#include<iostream> using namespace std; int main() { cout << "hello world" << endl; }
うお!?
一瞬(0.2秒くらい)hello worldが映った。
見えるかこんなの・・・
とりあえず、いろいろ参考にしてダメもとでreturn 0;も追加
今のプログラムはこんな感じ
Source.cpp
#include<iostream> using namespace std; int main() { cout << "hello world" << endl; return 0; }
で、これを押すらしい
すると
おおー。
いい感じですね。
とりあえず、導入は達成したのか?
出力もできたのか?
いっそのこと変数も使えるかと思って
#include<iostream> #include<string> using namespace std; int main() { string hello = "hello world"; string name = "name"; cout << name <<"さんから"<< hello<< endl; return 0; }
へ修正
すると
とりあえず今日のところは合格点ですね。
てこずりましたが、これからも頑張ります。
C++ 入力と出力。簡単な演算まで
昨日、開発環境を整えたので今日は入力と出力から
入力と出力
出力は昨日もやってしまったのだが、cout>>を使うらしい
入力はcin<<らしい
なんて読むのかはよくわからない
cout>>"出力対象">>endl; //出力 cin<<"キーボードからの入力対象のオブジェクト"; //入力
実際にやってみると
#include<iostream> #include<string> using namespace std; int main() { string input; cout << "文字列を入力してください。"<<endl; cin >> input; cout << input << "と入力されました。" << endl; return 0; }
実行結果
そこそこ上手くいったかな?
ところで、昨日からstring型を使っているのだけど
char型でポインタを使う方法をあるらしい。
こんな感じ
char* ch = "hello";
どっちの方が普通かはわからないけど、stringは別で#includeが必要になるからなあ
とりあえず、同じ方法でinputが受け付けられるかやってみたら、エラーが出たので
この方法で文字列リテラルを受け付けるのは厳しいのかな?
同じようにint型の入力も試してみる
#include<iostream> #include<string> using namespace std; int main() { int a, b; cout << "a-->" << endl;cin >> a; cout << "b-->" << endl;cin >> b; cout << "a+b=" << a + b << endl; return 0; }
実行結果
上手くいってるよう。
ちなみに、int型にstring型を渡すと
と挙動不審になったけど動いた。
この動くのは怖いですね・・・
ついでにint型の配列の入力と出力もやってみた
#include<iostream> #include<string> using namespace std; int main() { int a[5]; for (int i = 0; i < 5; i++) { cin >> a[i]; } for (int i = 0; i < 5; i++) { cout << a[i] << endl; } return 0; }
実行結果
エラー出て簡単にしまくったけど
Javaみたいに変数nを読み込んでn個の配列は生成できないのかな?
それとArrays.toString()のような簡単に配列を出力する方法も調べたいな。