【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

Ajaxがブラウザの戻るで値が空になってしまう件を解決!pushState不要

2021-06-27


今回、フォーム周りでajaxを使用して困ったことがありました。 確認画面から戻ると、ajaxで動作したselectのプルダウンメニューがリセットされて空になってしまうのです。 この「ajaxブラウザ戻ると空っぽ問題」のせいで、ajaxの活用を断念した人もいるかもしれない。 ググって解決法を調べると「history.pushState」を使えば大丈夫とのこと。 しかし、なんか説明もコードもややこしい。 pushStateの仕組みを理解するの面倒くさっ! 原始的で誰でも分かりやすい方法でシンプルに解決してやる! という結論に。早速、簡単な解決法をご紹介。 フ...

インスタ、google検索、ジモティをダークモード化!PC版サイトのダーク化を推進していきます

2020-10-05


前回の記事に続き、サイトをダークモード化するchromeの拡張「stylebot」に関するネタです。 基本的には、ダークモードはよく見るサイト以外に必要はない。なので大手サイトを中心にどんどんダークモードにしてみようと思います。 まずは、Instagram(インスタグラム)とgoogle(グーグル)検索のPC版をダーク化しました。 <stylebotの使い方> 1、まずは「stylebot」でググって、chromeに拡張機能を追加。 2、サイト画面上を右クリックしてstylebotのoptionを開く 3、addでサイトの追加後、EditにてCSSコードをコピペ...

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

2019-08-22

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

【jQuery】フォームの入力項目をボタンで追加する方法(追加する数の上限が決まっている場合限定)

2019-08-21

入力、選択などのinput、selectの項目を追加ボタンで増やす方法のご紹介。管理画面を作成する上で、ちょくちょく必要となるのでメモ代わりにコードを残します。 ボタンをわざわざユーザーに押させるというのはちょっと古いですが、自動認識で増やしていくより、断然手軽です。システムを作る際に、「完成までの速さ」を求めるならこの方法もいいのではないでしょうか。 デモはこちら htmlStart 画像追加 画像アップロード $(function(){ //追加ボタンの動作 $('.add').c...

【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 地域区分 --選択-- 北海道 東北 南関東 北関東・甲信 北陸 東海 近畿 中国 ...

特定のIPからサイトを見れなくする。不正なアタックの多いロシアと中国からのアクセスを禁じる簡単な方法

2019-05-01

ロシアと中国はサイバーアタックが多いので、 htaccessでサイトにアクセスできないように規制をかけたほうがいいです。 アクセス解析の邪魔をしてくることもありますし、 問い合わせフォームでスパムを送ってきたりと、 一般人の素朴なサイトにまで面倒なことを仕掛けてきます。 産経ニュースによると、中国とロシアはAIを活用して自動的にサイバー攻撃を仕掛ける技術を獲得したとのことで、「米中露サイバー戦争が世界を破壊する」といったジャーナリストの本も出ています。本当にいい迷惑です。 では早速ロシアと中国のアクセスを規制する方法に進みます。 htaccessに以下の初期でIPアド...

ワードプレスのデータベースの配列データから画像のパスだけを取得

2018-11-27

ワードプレスを外し、独自のシステムに移行する際、画像のエクスポートが苦労しました。 個人的にワードプレスは好みません。クライアントに管理画面を提供する場合は、自分で一から作ったほうがユーザビリティーが圧倒的に良くなるからです。 アップロード画像の記録がある、postmetaテーブルの検索で「meta_key = _wp_attachment_metadata」とすると、データが下記のようになっていた。なんというごちゃごちゃしたデータ。これだからワードプレスは苦手だ。 htmlStart a:5:{s:5:"width";i:731;s:6:"height";i:723;s:4:"f...

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の基本であ...

関数の引数(ひきすう)・戻り値(もどりち)について

2012-11-19

引数とは…戻り値とは…と言葉で書いてもパッとしなさそうなので、半角のカタカナを全角のカタカナに変換するmb_convert_kana関数を例として見てみよう。 phpStart $zenkaku = mb_convert_kana($hankaku, "KV"); //$hankaku が第一引数 //KV が第二引数 //$zenkaku が戻り値 phpEnd これで用語の意味は分かるかと思います。自分で関数を作る(ユーザー定義関数)時はこの引数と戻り値のことを理解しておかないと便利なものは作れない。 個人的にフレームワークの使い方を覚えるのが面倒なので、自作関数の...

セレクトフォームをPHPで自動生成する

2012-08-18

セレクトフォームはユーザー定義関数を作って要領よく生成しましょう。編集画面の際は$now_dataに現在のデータを代入しておけば、選択された状態になります。 phpStart //47都道府県の配列 $AREA = array('北海道','青森','岩手','宮城','秋田','山形','福島','茨城','栃木','群馬','埼玉','千葉','東京','神奈川','新潟','富山','石川','福井','山梨','長野','岐阜','静岡','愛知','三重','滋賀','京都','大阪','兵庫','奈良','和歌山','鳥取','島根','岡山','広島','山口','徳島',...

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