【PHP】mysqliのプリペアドステートメント記述(SQLインジェクション対策)

2023-06-03

PHPでのSQLインジェクション対策ならプリペアドステートメントが有名です。 (プリペアド・ステートメントは静的プレースホルダ、バインド機構と呼ぶ場合もあるようです) PDO派ではなく、mysqli派の方へ向けたプリペアドステートメントの記述方法の紹介です。 コードを見ればなんとなく分かると思います。 prepare関数にて「?」を仕掛けた数だけ、bind_param関数の引数の数に関係します。 <削除 DELETE> phpStart $id = htmlspecialchars($_POST["id"]); $stmt = $mysqli->prepare("D...

PHPのMysqlで五十音検索、五十音順のバグを解決。全角のひらがな、カタカナではなく、半角カナをDBに格納するのが正解だった

2023-05-13

PHPで社内システムを構築する案件をいただいている中で、ある日「五十音順がうまく機能していない」というエラーの報告が。しかし、コードには全然誤りがなく、google先生に粘り強く聞いてみたところ、半角カナでREGEXPやった方がよいという、かなりレアな情報に辿り着きました。無事に解決 mysqlテーブルのフィールドの一つに、並び替え用に半角カナで値を保存するようにしてあることが前提です。フリガナはひらがなで保存しておくのが好きだったのですが、半角カナが意外と優秀だったようです。 <五十音別の表示に成功したコード> phpStart function makeGojuonQery...

PHP

個人情報の流出は内部犯行が主なので外部セキュリティーを強めるより、システムエンジニアを徹底監視する必要あり

2023-02-03


▽サイトの規模に合わせてセキュリティーレベルを考えるべき ▽個人情報漏洩が起きるよくあるケースの一例 ▽ワードプレスのように利用者が多いシステムは狙われやすい ▽サイトの規模に合わせてセキュリティーが考えられない技術者はレベルが低い ▽今記事を短くまとめると フリーランスはビジネス思考がないとやっていけません。ですので、IT系の人材を目指すなら知っておくべき情報もお話していきます。 サイトの規模に合わせてセキュリティーレベルを考えるべき 社内用の管理システム・予約システム・ポータルサイトの構築はPHP+MySQLのシステム案件が占める割合が多いのですが、セキュリテ...

RSSを自作PHPで作る為の日付をpubDateに逆変換する自作関数

2022-01-16

pubDateは独特でやっかいな表記型で扱いにくい。 <rss2.0 pubDateの書式> Sun, 16 Jan 2022 01:54:00 +0000 pubDateを通常の日時表記にする方法はネットに多く転がっているけど、逆はありませんでしたので、 特定の日付(日付指定)で通常の日時型(2022/01/16 00:00:00)をpubDateの書式に変換する関数を作成しました。 たかが日時表記の変換なので難易度が低いですが、pubDateは地味に面倒な書式です。 RSSを自力で作成する人はほとんどいないと思うので、マニアックな事象なのですが。 当ブログはブ...

VScodeの不要な新機能「ワークスペースの信頼がなんちゃら」を消し去る設定方法(Visual Studio Code)ビジュアルスタジオコード

2021-06-14


毎回「このワークスペース内のファイルの作成者を信頼しますか?」というポップアップが出るようになった。どうやら複数人で開発する向け?のおせっかいな制限モードの機能。 有能なエンジニアは個人プレー!こんなしょうもないセキュリティー厨向けの機能は一掃しましょうということで、さっそく! まずは左下のリストバンドみたいなアイコンを押して、「設定」へ 検索窓に「work」と打ってポチっとな。はい完了! ワークスペース関連は全部「false」で結構。 ワークスペースの信頼だって(笑)いいよいいよそこまで面倒見てもらわなくても。 個人での開発の場合は意味のない機...

【PHP】第何週目の何曜日は何日?を最短で算出する方法

2020-10-23

PHPのstrtotime関数は非常に便利で、カレンダーを使用した予約システムなどで活躍してくれます。 今回は、月毎に第一週目の水曜日、第二週目の水曜日は何日かを求める最短の方法をご紹介。 phpStart $y = 2020; //任意 $m = 10; //任意 $jd = cal_to_jd(CAL_GREGORIAN, $m, 1, $y); $month_name = jdmonthname($jd, 1); $first_wed_day = date("j", strtotime("first Wednesday of {$month_name} {$y}")...

一行でロシア、中国、アメリカのスパムコメントを撃退!日本語を含んでないコメントは一切不要だというお問い合わせフォーム向け

2020-03-02


ロシア、中国、アメリカのサイバーアタック及びスパム行為は目に余るものがあります。 自動化してロボットがスパム行為をしてくるので、フォームのURLを取得されると毎日攻撃してきます。 最近、特にロシア語(キリル文字)のスパム行為が多かったので強制措置をしました。 日本語を含まないコメントは一切受け付けない。 もうこれでいい!そうすれば、ロシア語や中国語のスパムも撃退できるはず。 英語のみとか、数字のみのコメントなんて不要だしね。 日本語を含んだスパム行為が来たら、またその時に次の対策を考えるとして、 下記のコードをとりあえず使いました。 phpStart...

【ajax+MySQL】ユーザーIDやメールアドレスが既に登録されている場合にアラートを出す(重複登録を防止)

2019-08-22

会員登録制のサイトでは当たり前に必要となる重複登録を防止する機能。 ページ遷移なく、重複を確認する方法の手順をメモとして残します。 会員登録の画面では、ユーザーID及びメールアドレスの重複を防ぐ必要性があります。 下記のコード例では、id名「inpMail」の入力フォームからフォーカスが外れた際に、重複チェックがされる仕組みとなっています。 <HTML+jQuery> htmlStart ログインID(メールアドレス) この内容で登録する $('#inpMail').blur(function() { v...

【PHP基礎】データベースのデータをCSVで出力する方法

2019-08-20

データベースのデータをCSV出力する。 管理画面ではそこそこ需要のある機能。 今回はCSV出力のドシンプルなコードをコピペ用に残しておきます。 まずはじめに、CSVのことを難しく考えている方もいるかもしれないので、CSV形式についての説明をほんの数行でします。 CSVファイルはデフォルトでエクセルで開かれるので、エクセルデータだと思いがちですが、ただのテキストファイルです。例としまして、下記のようなカンマ区切りのテキストデータです。タブ区切りの場合もあります。 htmlStart 名前,英語,国語,数学 Aさん,95,50,82 Bさん,39,47,97 Cさん,...

この記事がお役に立てましたら是非シェアのご協力お願いします。