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

2023-06-03

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

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を自力で作成する人はほとんどいないと思うので、マニアックな事象なのですが。 当ブログはブ...

クッキー操作はjs-cookieならSameSiteの指定可能でjquery.cookieは配列格納が可能。js-cookieの使い方(保存・取得・削除)

2021-07-02

js-cookieの最終アップデートは2020年9月 jquery.cookieの最終は2014年4月 両方とも既に開発終了となっている感がある。 jquery.cookieにはずいぶんとお世話になったけれども、 googleChromeが今後は「SameSiteの指定をしてね」と、 cookie悪用対策のセキュリティー強化を促している。 SameSite属性をNoneにすれば、これまで通りのcookieと同様の動作になるが、その場合はSecure属性が必須となりました。 SameSite属性をLax・Strictに設定すると、サイトの動作に異変が起きてしまい、改修の...

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

jquery(javascript)で複数選択チェックボックスの配列の入力チェックをする手軽な方法

2018-12-07

phpは分かりやすいのですが、javascriptの配列はちょっと独特ですよね? ラジオボタン・チェックボタンの入力チェックの際に、選択がない場合は「undefined」というテキストデータが入ってしまいますし。 今回のテーマは複数選択のチェックボックスを入力チェックする方法についてです。 複数選択のチェックボックスはフォームでよく出てきます。 近年は、jqueryを当たり前のように読み込んでいると思いますので、jqueryありきのコードです。 例えば、エリアの選択で下記のようなHTMLがあったとします。複数選択のチェックボックスを配列で受け取れるようにする場合は、「area...

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

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...

PEAR::MailでSMTP送信に挑戦!|無事に動作したコピペで使えるコードを公開

2018-10-04

2019-07-07報告 SMTPは「PHPMailer」で行うことをオススメします PHPメーラーのライブラリ「PHPMailer」はまだまだ現役。今もなおアップデートされています。 Wordpressもメール送信周りではPHPMailerを使用されています。 SMTP送信に関してはコチラの新しい記事の方が導入が簡単です。 2019年 PHPのSMTP送信はインストール不要のPHPMailerが手軽で最短!PEAR終了 どうしてもPEARでSMTP送信をしたい場合は下記をご覧ください。 今回は前回に引き続き、PEAR関連でPEAR::Mailで「SMTP送信」を実行さ...

外部サイト(他ドメイン)のファイル存在確認

2013-05-05

画像ファイルがあるかないかを判断して、必要に応じてノーイメージ(now printing)を表示する時などに使用するファイル存在確認の代表的関数file_exists()。 phpStart $path = './log/item/12345.jpg'; if(file_exists($path)){ $img = $path; }else{ $img = '/img/noimage.jpg'; } phpEnd しかし、自サーバーならfile_exists関数でファイルがあるかないかを判断できるが、他ドメイン&他サーバーでは使用できないので、その場合はget_hea...

jqueryでtable・liなどをドラッグ&ドロップで並び替え(ソート)する【sorttableスマホ対応】

2013-04-27

ドラッグ&ドロップで並び替える機能はほんの数行で実現できます。まずはjqueryとjquery-uiを下記にアクセスしてダウンロード。jqueryはなるべく自サーバに置いたほうが読み速度が早し、いつリンク先が消えてなくなるか分からないので、直リンクはオススメしません。直リンクの方がラクですけどね^^; <2019-10-12追記> スマホ版サイトでドラッグ&ドロップの並び替え(ソート)で実現するには、「jquery.ui.touch-punch」をさらに読み込む必要があります。「jquery-ui.js」の後に読み込んでください。 jquery.ui.touch-punchの公式サイ...

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

2012-11-19

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

cookie(クッキー)操作の便利なユーザー定義関数

2012-09-18

フォームやカートなどで重宝するcookie(クッキー)の操作を簡単にする定義関数。クッキーを配列で使用することでシンプルな組み方が実現されてます。この関数があればクッキー操作が格段にラクになるのでオススメです。 phpStart define(_TIME_OUT_,time() + 30 * 86400); //一ヶ月保持 function makeCookie($array,$cookie_name) { foreach ($array as $text => $value) { setcookie($cookie_name."[$text]",$value,_TIME_...

頻繁に使うシーンがある文字列操作群の関数

2012-08-23

文字列の一部分を取り出すsubstr関数は使用するシーンが多いです。長い文章の最初だけを表示する時や、URLから一部分を切り出す時などなど。 <substr()関数 - 最後の2文字を取り出す> phpStart $str = 'https://sample.jp/cate.php?id=06'; echo substr($str, -2); //結果「06」が出力されます。 phpEnd 第2引数にマイナス値を入れれば最後からの文字が取得できます。先頭から2文字を取得する場合は正数を書けばOK。文字列が日本語の場合はmb_substr()を使用しないとバグが起きます。...

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

2012-08-18

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

【PHP初心者講座】動的ページのカラクリを最短で紹介。ログファイルで簡易データベースの練習コード

2012-08-13

PHPをゼロから始める人はfor文やif文などの構文を一通り見たけど、「で、何をすればいいの?」と足ふみをしてしまう人が多いのではないでしょうか? そんな人にまず知ってほしいのは動的ページのカラクリ。これが分かればドドドっと次から次へと課題が出てくるので、勉強が進みます。 では早速簡単な動的ページを作ってみましょう。まずは商品データが入ったログファイルを作ります。下記の例ではカンマ区切りで「ID」「商品名」「値段」という構成で一商品一列でまとめています。 秀丸やさくらエディターなどUTF8の文字コードに対応したテキストで作成してください。 <ログファイル data.log>...

サイト内のキーワード検索で複合(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...

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