【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のシステム案件が占める割合が多いのですが、セキュリテ...

クリエイターのスキル習得チェンネル開設!アドビのデザインツール、PHPデータベースサイトなどの技術解説

2022-07-15


フリーランス歴15年超えのWEBクリエイターM2NET(エムツー)です。 このチャンネルではアドビ製品の ・フォトショップ(フォトショ) Photoshop WEBデザイン向けデザインツール ・イラストレーター(イラレ) Illustrator 紙媒体向けデザインツール ・プレミアプロ Premiere Pro 動画編集ツール ・アフターエフェクト After Effects 激しい動きのある動画編集向け の使い方をレクチャーしていきます。 それに加えて ・HTML+CSSコーディング ・Javascript、Jquery ・PHP+MySQL のプログラ...

【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さん,...

Ajaxでセレクトメニューの内容を非同期で変更する【最短コピペ用jQueryコード】

2019-08-19

フォームを扱うページでは非同期通信を使うことで、 使い勝手が向上することがありますので、jqueryのAjaxは重宝します。 いまさらですが、あまりによく使うので、個人的なメモ代わりに HTML・jQuery・PHPの3点セットを残しておきます\(^o^)/ デモサンプルとして、都道府県のエリア選択を例にしました。 デモはこちら HTML htmlStart 地域区分 --選択-- 北海道 東北 南関東 北関東・甲信 北陸 東海 近畿 中国 ...

mysqliからPDOに記述を変えよう!接続・取得・追加・更新・削除の基本コード

2018-10-05

データベース周りは未だに「mysqli派」ですが、ようやくPDOを使ってみようと決断。 PHP5.1以降に標準で利用できるようになったようで、ライブラリの読み込みは必要がない。 基本となる、接続・取得・追加・更新・削除の一連を動作確認しました。 使い勝手は良さそうで、PEAR::DBはもう完全にオワコンであることがはっきりしました。 ※xamppでは下記コードでちゃんと動作しました。 phpStart //mysqlアカウント $DB['host'] = 'localhost'; $DB['user'] = 'user'; $DB['pass'] = 'pass'...

自作PHP派が既に時代遅れのPEAR::DBを試用で使ってみたので基本コード紹介|接続・取得・追加・更新・削除

2018-10-03

PHPのキャリアは10年くらいで、フレームワークは一切使用せず、独自PHPで作成をする派です。 誰よりもあらゆるポータルサイトを早く作る自信があり、開発コストもかなり下げられる我が誇りの技術。 かなりの大掛かりで複数人での開発ならフレームワークを覚える必要があるのだろうが、 基本一人で全てこなす案件しかしないので、覚える必要がない。個人的にはスピード第一。 データベース周りは「mysqli派」です。というのも大抵のレンタルサーバーはmysqlだから他のを使う機会がありませんでした。 そんな私が、重い腰をあげてPEARライブラリのPEAR::DBを試してみた。 DBの基本であ...

中小企業がポンコツシステム会社の餌食になってる件について

2015-10-22

PHPのシステムエラー復旧を承っちゃおうかな。ポンコツなシステム会社が多すぎるからさ。と思う今日このごろ。 34歳になってこの上から目線の発言は以下に自分がクソメンであるかを象徴してるねw 大手のポータルサイトではユーザー登録の際にエラーは全然起きないけど、 中小企業が運営するポータルサイトってエラーにちょくちょく出くわさない? 最近では、「セミナーズ」というサイトにセミナーの登録をしようとおもったら、 登録ボタンを押すと、ページが見つかりません…っておいおい。 せっかく苦労して入力したのにふざけんなっつーのと、怒り心頭。 「スクール検索サイト」でスクール情報を登録し...

SQL(データベース)で数値の先頭のゼロを消さない方法

2012-09-28


データベースに整数(数値)データを格納する際に先頭に0(ゼロ)が付いていると勝手に消されてしまいます。郵便番号はゼロから始まることがよくあるので、ゼロは必ず残さないといけません。 では早速ゼロを残す方法を記載します。下記の画像を見てください。 種別をINT型(整数型)にして、属性を「UNSIGNED ZEROFILL」にし、あとは長さを記入するだけです。 もう一つの邪道な方法としてはデータ型を整数ではなく文字列型の「varchar」にするというやり方もありますが、文字列型より整数型のほうが検索速度が速いのでオススメできません。なので、郵便番号はハイフンなしで整数型にしてデ...

郵便番号・住所と沿線・駅のデータベース配信

2012-09-28

ポータルサイトの利便性を高める為に必要となってくる日本全国の「郵便番号・住所」、「沿線・駅」のデータベース情報。細かく地域を区切って情報登録させることにより、より詳細な検索機能を実現できます。 全国の情報が入ったデータ(CSVファイル)が下記で無料ダウンロードが可能です。 【郵便番号データダウンロード - 日本郵便】 https://www.post.japanpost.jp/zipcode/download.html 【駅データ.jp】 https://www.ekidata.jp/download/index.html あらかじめCSVファイルをSQL文に書き換...

サイト内のキーワード検索で複合(AND)検索を導入する為のコード

2012-08-04

複合検索は半角スペース区切りのワードに変換して、explode関数で半角スペース区切りで配列に格納し、foreach文でWHEREのSQL文を生成します。foreach文でエラーを出さない為に、ループの前にis_array関数で配列であるかの確認しておきましょう。 htmlStart $q = str_replace(' ',' ',trim($_GET['q'])); //*1 下記説明 $array = explode(' ',$q); if(is_array($array)){ foreach($array as $val){ $str = ($sql)?' AND...

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