簡易的なメールフォームとメール送信のプログラムを書くのにかかる時間は?
2021.05.28
簡易的なメールフォームとメール送信のプログラムを書くのにかかる時間は?大体10分?15分ぐらいかと思います。本当はエラーチェックなどの機能をちゃんとした物に置き換える必要があるけど、ざっくり考え方はこれだけで良いじゃないかなと思っています。下記のコードを制作するのに参考にしたサイトのリンクを貼っときますね。
https://techplay.jp/column/550、https://techacademy.jp/magazine/19300
上記のコードを拝借してコードを書き、簡易的な二重送信防止対策と簡易的なエラーチェックをプログラミングしていますが、ここにreCAPTCHAなどの機能を入れてあげるとボット対策にもなるので良いかもしれません。ソースコードを見て後から気づいたのですが、ポストしているnameのデータを受け取っていない事があとから気づきました。因みにPOSTの生データが欲しいと言うときはこのように書くと取得することが可能ですよ。
<?php
$data = file_get_contents('php://input');
?>
<?php
session_start();
$toke_byte = openssl_random_pseudo_bytes(16);
$csrf_token = bin2hex($toke_byte);
$_SESSION['csrf_token'] = $csrf_token;
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Description" content="Enter your description here"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>sendmail</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<form method="post" action="./sendmail.php">
name<input class="form-control" type="text" name="name">
email<input class="form-control" type="text" name="email">
<div class="form-group">
<label for="my-textarea">Text</label>
<textarea id="my-textarea" class="form-control" name="text" rows="3"></textarea>
</div>
<input type="hidden" name="csrf_token" value="<?=$_SESSION['csrf_token']?>">
<?=$_SESSION["sendmail"]!=="ok"?'<button class="btn btn-primary" type="submit">submit</button>':"NG"?>
</form>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
</body>
</html>
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Description" content="Enter your description here" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>sendmail</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<?= EmailSend() ?>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
</body>
</html>
<?php
function EmailSend()
{
$check = function ($val = "") {
return isset($val) ? $val : false;
};
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$to = $_POST['email'];
$title = "test-mail";
$message = $_POST['text'];
$headers = "From: from@example.com";
if (
isset($_POST["csrf_token"])
&& $_POST["csrf_token"] === $_SESSION['csrf_token']
) {
if (($check($to) && $check($title) && $check($message)) && mb_send_mail($to, $title, $message, $headers)) {
$_SESSION["sendmail"] = "ok";
return "メール送信成功です";
} else {
$_SESSION["sendmail"] = "ng";
return "メール送信失敗です";
}
} else {
return "不正なリクエストです";
}
return false;
}
タグ
10, 15, 2, 550, 8, cHW, column, com, https, jp, name, POST, reCAPTCHA, techplay, watch, www, xqg-zp, youtube, あと, エラー, コード, ここ, これだけ, サイト, ソース, チェック, デー, データ, フォーム, プログラミング, プログラム, ポスト, ボット, メール, リンク, 上記, 下記, 事, 二, 制作, 参考, 大体, 対策, 後, 必要, 拝借, 時間, 本当, 機能, 物, 生, 簡易的, 考え方, 送信, 防止,
映画『42 世界を変えた男』が何だか泣けそう(´;ω;`)
2014.10.01
42 世界を変えた男が何だか泣けそうです。映画予告を観て即購入したので、休みの日に鑑賞するつもりでいます(本日、頼んでいたブルーレイが届きましたo(^▽^)o、またもやポストに投函されていたのですけど、今回は郵便扱いになっていたので何とも言えない。)。なお、レビューは追記して書きます…。
映画予告を貼っときます。
レビュー書いていなかったのを忘れて、数年・・・経ちました。一言で言えば良かったです、何処が良いのかというのは差別に立ち向かう姿ですね。これは胸熱くなる物語です、是非、観てみてください。
追記日:2022/09/30
タグ
09, 2022, 30, 42, これ, つもり, ブルーレイ, ポスト, レビュー, 一言, 世界, 予告, 今回, 休み, 何, 何処, 姿, 差別, 投函, 数, 日, 映画, 本日, 物語, 男, 胸, 購入, 追記, 郵便, 鑑賞,
Access2013届きましたよ(;´Д`)ハァハァ
2014.08.17
Access2013が手元に届きました。それは良かったのですけどポストに投函されてました。実際、これってメール便ではないので投函ってあり得ないのですが…。1万2千円の品物を投函って!!まぁ田舎だから取っていく人もいないだろうけど・・・と愚痴りながら、中身を開封してたらアレ!?( ´・ω・`)< ショボいぞ!!、プロダクトキーの赤いカードとインストールの手続き書の薄っぺらい紙だけ入ってました{店頭で聞いたとおりだ(´・ω・`)}。さっそくマイクロソフトのアカウントでログインし指定したURLからダウンロード&インストールしました。ちなみに2013の印象ですけど、UI(ユーザーインターフェース)はほぼAccess2010と変わってません、なので2010から移行される方は戸惑うことはないと思います。
今月か来月にはサンプルコードをUPします{忘れているかも(´Д`)、そのうちUPと思ってください}。
タグ
1, 2, 2010, 2013, access, nbsp, UI, UP, url, アカウント, アレ, インストール, インターフェース, うち, カード, キー, コード, こと, コレ, サンプル, ショボ, ソレ, ダウンロード, とおり, ハァハァ, プロダクト, ポスト, マイクロソフト, メール便, ユーザー, ログイン, 万, 中身, 人, 今月, 千, 印象, 品物, 実際, 店頭, 手元, 手続き, 投函, 指定, 方, 来月, 田舎, 移行, 開封,