ハローワークの求人番号からバーコード生成印刷。#php #WEBサービス

2022.09.23

Logging

おはようございます、今日は三連休の始まりだそうですね🤔。

本日はハローワークの求人番号からバーコード生成&印刷できるWEBサービスを制作したので、そのお知らせ話になります。何故、このようなWEBサービスを作ったのかというと1つ目の理由は無かったから、そして何より自分が欲しかったからに他ならないという理由です。

https://358tool.com/

プログラムの話になりますがバーコードを生成する部分はライブラリを使用していますのでデータだけ渡せば画像データ作ってくれます、そんな訳で開発には時間はかからなかったのですが!。ハローワークが使用しているバーコード形式が何なのかという事を探すのに若干、時間を使いましたが開発自体は数分レベルです🫠。

このWEBサービスは無償で且つ広告などは今のところ掲載していません。このサービスだけは今後も広告無しで運営していくつもりです。尚、358tool.comでは今後もいろいろなツールを提供していきます。起動に乗ったサービスは新たにドメイン取得して運用するスタンスで運営していきます。

話し戻しまして、自分がこのサービスが欲しかった理由はハローワークサイトで求人を探し、その番号をメモして公共職業安定所に出向き、安定所のPC端末から求人票を印刷するのが面倒くさく感じた為、この無駄な作業をひと手間無くそうと思って今回の制作に至りました。

求人番号コピペしてWEBサービスに貼り付けるとバーコードが生成されるので便利。そしてそのページを印刷し職業安定所の人に渡すと職業安定所の人もわざわざ入力する必要もないのでWINWINな関係ですwww。

🙆https://358tool.com/hellowork/

どうぞ、求職中の人はお使いくださいませ。
シェアやRT宜しくお願い致します🙇

タグ

, 358, com, php, tool, web, いろいろ, お知らせ, サービス, ツール, つもり, データ, ところ, バーコード, ハローワーク, プログラム, ライブラリ, レベル, 三連, , , 今後, 今日, , , 使用, 制作, 印刷, 広告, 形式, 掲載, 提供, 数分, 時間, 本日, 求人, 無償, 理由, 生成, 画像, 番号, 自体, 自分, 若干, , , 運営, 部分, 開発,

Sqliteで作った簡易掲示板のコードを配布致します。#php #code

2022.09.20

Logging

おはようございます。台風は過ぎ去りましたがせっかくの三連休が残念です💦。

今日は先日、Sqliteを使用して簡易掲示板を作ってみましたのでコードを配布致します、尚、PHP8の環境下で動作させています(PHP7系でも動作すると思います)。

Sqliteってnow()関数がなかったりだとか、Deleteする時に、noカラムを昇順しlimitを使用して削除出来ないだとか、いろいろとMysqlとは違う所があり、面倒だなと思いながらコードを書きました、尚、SqliteはWebサーバーの階層に置かないように、置いても良いですが・・・。そのままの状態だと誰でもダウンロードが可能になってしまいますのでご注意ください。自分は地下に眠らしています😅。

一応、二重投稿防止の為に20秒経過しないと再投稿出来ないようにしています😌。トライしていない事は禁止ワード等がありません🤔。つけようと思ったのですがまぁ良いかなと、、、。

動作している環境のリンクはこちら。

https://reborn9.sakura.ne.jp/

軸となるPHPのソースコードを2つ貼っときますね。

<?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/5.1.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <link rel="stylesheet" href="assets/css/style.css?<?= time() ?>">
    <title>掲示板</title>
</head>

<body class="p-3 text-white">
    <div class="p-4 shadow rounded" style="background-color:#d6dbdf;">
        <div class="container mt-5">
            <div class="row">
            <div class="col-12 text-center">
                <h1 class="shadow" style="color:#195a57;">掲示板::version 2.5</h1>
            </div>
                <div class="col-12">
                    <div class="input-group shadow rounded">
                        <div class="input-group-append">
                            <span class="input-group-text bg-dark text-white" id="my-addon">ニックネーム</span>
                        </div>
                        <input class="form-control" type="text" name="name" placeholder="ニックネームを入力" aria-describedby="my-addon">
                    </div>
                    <div class="form-group shadow rounded">
                        <label for="my-textarea">コメント</label>
                        <textarea id="my-textarea" class="form-control" name="comment" rows="7"></textarea>
                    </div>
                    <button id="btn" class="mt-2 btn btn-info text-white shadow rounded" type="button">投稿する</button>
                </div>
            </div>
        </div>
        <div class="container mt-5">
            <div class="row">
                <div id="view" class="col-12"></div>
            </div>
        </div>
    </div>
    <footer>
        <a href="/">TOP</a> :: © Reborn9.sakura.ne.jp <?=date("Y")?>
    </footer>
    <input type="hidden" name="csrf_token" value="<?= $csrf_token ?>">
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.9.2/umd/popper.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.0/js/bootstrap.min.js"></script>
    <script src="assets/js/main.js?<?= time() ?>"></script>
</body>

</html>
<?php
class db
{
    var $pdo = null;
    function __construct()
    {
        try {
            $this->pdo = new PDO("sqlite:../../bbs.sqlite3");
            $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);        //code...
        } catch (\Throwable $th) {
            //throw $th;
            print $th->getMessage();
        }
    }
    function select_limit()
    {
        if($this->pdo){
            $stmt = $this->pdo->prepare('select * from bbs order by no desc limit 0,5');
            $stmt->execute();
            $result = $stmt->fetchAll();
            $stmt = null;
            $this->pdo = null;
            return new view($result);
        }
    }
    function insert($name,$comment,$sns_cnt=0)
    {

        try {
            $stmt = $this->pdo->prepare('INSERT INTO bbs (`time`,`name`,`comment`,sns_cnt)values(strftime(\'%Y年%m月%d日 %H時%M分%S秒\',CURRENT_TIMESTAMP, \'localtime\'),:name,:comment,:sns_cnt)');
            $stmt->bindParam(':name', $name, PDO::PARAM_STR);
            $stmt->bindParam(':comment', $comment, PDO::PARAM_STR);
            $stmt->bindParam(':sns_cnt', $sns_cnt, PDO::PARAM_INT);
            $stmt->execute();
            $stmt = $this->pdo->prepare('DELETE FROM bbs WHERE bbs.no = (SELECT no from bbs ORDER BY no ASC LIMIT 1);');
            $stmt->execute();
            $stmt = null;
            $this->pdo = null;
            return true;
        } catch (\Throwable $th) {
            print $th->getMessage();
            return false;
        }
    }
}

class view{
    var $item = null;
    function __construct($item)
    {
        $this->item = $item;        
    }
    function view_item($item="")
    {
        try {
            $item = $item?$item:$this->item;
            ob_start();
            ?>
            
            <?php
            foreach($item as $key=>$value){
                ?>
                <div class="mt-2 row txtbox shadow rounded">
                <div class="col-3 name_<?=$value["no"]?> rounded-start fs-6">
                    ニックネーム::<?=$value["name"]?>さん
                </div>
                <div class="col-9 time_<?=$value["no"]?> fs-6">
                    投稿日時::<?=$value["time"]?>
                </div>
                <div class="col-12 comment_<?=$value["no"]?>">
                    <?= nl2br($value["comment"])?>
                </div>
                <div class="col-12 sns_cnt_<?=$value["no"]?>">
                    <!-- <?=$value["sns_cnt"]?> -->
                </div>
                </div>
                <?php
            }        
            ?>
                
            <?php
            $ret["view"]= ob_get_clean();
            $ret["msg"]= "done";
    
        } catch (\Throwable $th) {
            //throw $th;
            $ret["msg"] = "error";
        }
        return $ret;
    }
}

session_start();
$ret = null;
$mode =  xss_defence($_POST["mode"]);
// $time =  ;
$name =  xss_defence($_POST["name"]);
$comment =  xss_defence($_POST["comment"]);
$sns_cnt =  (int)xss_defence($_POST["sns_cnt"]);
if (isset($_POST["csrf_token"]) 
 && $_POST["csrf_token"] === $_SESSION['csrf_token'] && (function($t){
    return time() - $t > 20?true:false;
 })($_SESSION["save"])) {
    if($mode==="save"){
        $name = !preg_replace("/[ | ]/","",$name)?"匿名":$name;
        $comment = !preg_replace("/[ | ]/","",$comment)?"":$comment;
        if($comment){
            $db = new db();
            $db->insert($name,$comment);
            $_SESSION["save"] = time();
        }
    }
    $db = null;
    $db = new db();
    $ret = $db->select_limit()->view_item();
    print  json_encode($ret);
}
function xss_defence($value){
    if(is_array($value)){
        foreach($value as $key=>$val){
            $value["$key"] = strip_tags($val);
            $value["$key"] = htmlspecialchars($value["$key"],ENT_QUOTES);
        }

    }else{
        $value = strip_tags($value);
        $value = htmlspecialchars($value);
    }
    return $value;
}

配布コードはこちらです。

タグ

20, 7, 8, Code, Delete, LIMIT, MYSQL, no, Now, php, Sqlite, web, いろいろ, カラム, コード, ご注意, サーバー, せっかく, そのまま, ダウンロード, トライ, ワード, 三連, , , 今日, , 使用, 先日, 削除, 動作, 可能, 台風, 地下, , 投稿, 掲示, 昇順, , 残念, , 状態, 環境, 禁止, 簡易, 経過, 自分, , , 配布, 関数, 防止, 階層, 面倒,

明けましておめでとうございます。

2017.01.01

Logging


明けましておめでとうございます。
新年、そうそうちょっと暗めの年賀状が届いている方、
申し訳ございません。うまく色合いを調整することが出来ませんでした。
ちなみに年賀状を送ったのは
数人、片手で数えることが可能な人数でございます。
あとはデジタル送信でLINEやらに送信されていると思います。
この記事は自動投稿機能によりカウントダウン後、
日付が変わって数秒で投稿されているはずです。
ちなみにこの記事はクリスマス・イブの日に書き上げています。
正月用の記事はこの三連休に予約しときます。
(それ以外にも記事は投稿するとは思いますが未定。)
ということで
今年もよろしくお願いします。
皆様にとって良い年になるように祈ってますので、
祈り返してください:D
 

タグ

line, nbsp, あと, イブ, お願い, カウントダウン, クリスマス, こと, それ, デジタル, パス, 三連, 予約, 人数, 今年, , 可能, , 年賀状, 投稿, 数人, 数秒, 新年, , , 日付, 未定, 機能, 正月, 片手, 申し訳, 皆様, 自動, 色合い, 記事, 調整, 送信,

大阪の観光地へ行ってきた!!

2016.10.12

Logging

先日、大阪の観光地を巡ってきました。
どこもコミコミなので人混みに酔うひとは要注意。
三連休の中休みともあって混み具合はまぁまぁ混んでいた方だと
思います。今回、巡った箇所は通天閣、道頓堀、心斎橋、かに道楽とかです。
この中で要注意があるとすれば、通天閣の展望台へいくことです。
女子同士とか男同士とかで行くと「まじでぇ?」って事になるので
必ず、男女混合かカップルで行くことをおすすめします。
まぁ行けばわかります。
ちなみにお気に入りの景色は、道頓堀だったりします。
なんか良かったです。
大阪は今回で3回目ぐらいしか足を運んでいないのですが
一つ気付いた事が・・・
電車が東京の電車に比べて横揺れが少ない・・・なっていう感じがしました。
なんか電車の乗り心地が良いなって思いました。
東京と高知の汽車を比べると断然、東京のほうが乗り心地は良いです。
東京は本数が多い分、時刻に合わすためガンガンいこうぜ!
って具合になっている感じがしますが、大阪は安全重視ぽっい気がしましたね。
最後にiPhoneで撮影した写真を載せときます。

タグ

, iPhone, おすすめ, お気に入り, カップル, かに道楽, こと, コミコミ, ため, どこ, ひと, まし, 一つ, 三連, , 中休み, 乗り心地, , 人混み, 今回, , 先日, 具合, , 同士, 大阪, 女子, 安全, 展望台, 心斎橋, 感じ, , 時刻, 景色, 最後, 本数, 東京, 横揺れ, , 汽車, 注意, 混合, 男同士, 男女, 箇所, 観光地, , 通天閣, 道頓堀, 重視, 電車, 高知,

…のように感じる、…のような手触りがする、…をしたい気がする、を欲しい気がする

2016.10.10

Logging

[Alexandros] – Feel like (MV)

『…のように感じる、…のような手触りがする、…をしたい気がする、を欲しい気がする。』という意味をfeel likeは持っています。
月曜日なのに今日はお休みです。これがアップされている頃は県外にいると思います。
県外に行った話はそのうちアップします。秋になり「彼女を欲しい気がする。」この頃ですね。
三連休も終わり明日から仕事だという方も多いはず。という事で短文で失礼します。

タグ

, 2, , com, cZ, feel, https, like, qA, Sjq, watch, www, youtube, アップ, うち, お休み, これ, パス, 三連, , 今日, 仕事, , 失礼, 彼女, 意味, 手触り, , 明日, 月曜日, , 県外, 短文, , , ,

三連休も過ぎ。

2015.07.21

Logging


 
三連休も過ぎて今日から、お仕事の方も多いと思います。暇ぽっいようでそんなに暇な時間が取れなかった連休だった自分です。7月ももう後半です、早いもので今年も折り返し地点を超えてしまいました。自分の誕生日までには体重を落としたい気がしますが、なかなか一回ついた贅肉を落とすのは思いのほか大変だったりします。会社まで自転車通勤はやめましたが、自転車は購入しました、いままで車で行っていた場所をなるべく自転車を移動手段として活用していきたいと思っています。ダイエットって中々、痩せだすまで時間がかかるので自分としては好きではないですね。でも、なんとか頑張って痩せようと考えています。
———————————————–
まだ、直ってない・・・。
とさのうとと言うサイトが有るのですが自分が辞める前に指摘したのに直ってません・・・。
大丈夫か?
httpsで見ると型崩れで表示されています。

タグ

, お仕事, サイト, ダイエット, 三連, 三連休, 中々, 会社, 体重, 型崩れ, 場所, 後半, 折り返し地点, 早いもの, 時間, 暇ぽっいよう, , 移動手段, 自転車, 自転車通勤, 誕生日, 贅肉,