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

【デザイナーのリアルな現実】学んですぐにフリーランスで十分に稼げるWEBデザイナーになれるのは1000人に1人だけど、それよりも収入を安定させる方法と考え方

2022-08-31


▽WEBデザイナーのリアルな現実を知った上で学ぼう ▽大企業リクルートのポータルサイトが強すぎて公式サイト不要 ▽ネットに疎すぎる中小企業をデザインする人材になろう! ▽企業から求められるWEBデザイナーはこういう人 ▽技術系の高時給派遣+フリーランス副業のWワーク最強!安定! ▽決してデザインだけに決して縛られないでください!ネットに強い人を目指す ▽HTMLとCSSは3日あれば十分!余計なことは覚える必要なし! WEBデザイナーのリアルな現実を知った上で学ぼう 近々HTML+CSSのレクチャー動画をアップします。その前置きとして、今企業が求めてるWEBデザイナとはな...

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

2022-07-15


フリーランス歴15年超えのWEBクリエイターM2NET(エムツー)です。 このチャンネルではアドビ製品の ・フォトショップ(フォトショ) Photoshop WEBデザイン向けデザインツール ・イラストレーター(イラレ) Illustrator 紙媒体向けデザインツール ・プレミアプロ Premiere Pro 動画編集ツール ・アフターエフェクト After Effects 激しい動きのある動画編集向け の使い方をレクチャーしていきます。 それに加えて ・HTML+CSSコーディング ・Javascript、Jquery ・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を自力で作成する人はほとんどいないと思うので、マニアックな事象なのですが。 当ブログはブ...

政府厚生労働省のサイトではコロナはインフルエンザ扱いなのにメディアは違う【コロナ=インフルエンザの完全証明】

2021-06-12


前記事では、「肺炎の基本知識」について。そして今記事は「インフルエンザの常識」についてです。これを知る人と知らない人では、世間を見る世界が全然違っているのではないかと思います。 ▽1、政府厚生労働省のサイトではコロナはインフルエンザ扱い ▽2、新型インフルエンザと季節性インフルエンザの違い ▽3、2009年の新型インフルエンザはどうだったのか? ▽4、通常の季節性インフルエンザ(普通のインフルエンザ)の死者数はどのくらいか? ▽5、通常のインフルエンザとコロナの比較 ▽6、緊急事態宣言の影響による死者数の方が多いという事実 政府厚生労働省のサイトではコロナはインフ...

肺炎死の95%は65歳以上!死因3位の肺炎事情は基本知識として持つべき。インフルエンザ(コロナ)・糖尿病・エイズも肺炎になる理由

2021-06-10


▽1、肺炎とは肺に炎症が起きた状態 ▽2、肺炎死の95%は65歳以上「肺炎で亡くなる=高齢者」 ▽3、体力が弱すぎる人、エイズ、糖尿病は肺炎になるリスクが高い ▽4、インフルエンザ(コロナも含め)は重症化すると肺炎になる ▽5、これを知らずしてコロナの真実に辿り着くことはできない 肺炎とは肺に炎症が起きた状態 細菌やウイルスに感染することにより、肺の中を通る気管支のさらに先にある肺胞という部位が炎症を起こす病気。風邪と似た症状だが、呼吸困難や入院が必要になるほど重症化することもあるので注意が必要。 肺炎は「風邪をこじらせたもの」と考えられがちですが、風邪は喉や鼻の粘膜...

パソコン無料回収でリサイクル!パソコンの不用品・処分は着払いで送るだけ【全国対応】

2021-01-24


デスクトップパソコンやノートパソコンの捨て方って地域によって違うからよく分からない。それに処分するのにお金がかかる場合も。そんなお悩みの方は多いかと思います。不要なパソコンは簡単な梱包でワレモノにチェックを入れて、着払いでお送りください。個人情報のデータが入っている場合は、届き次第すぐに完全消去しますのでご安心ください。 壊れていてもOK! 中古パソコン無料回収・処分サービス実施中! 再利用を目的としていますので、動作しなくなってしまったパソコンでも、すべての部品が壊れていることはありません。一部の部品を交換するだけで再利用できます。HDDは取り外し、物理破壊でプライバシー保護します。 ...

デスクPCの電源がついたり消えたりを繰り返すエラーを解決!原因の本命は電源ユニット

2020-10-26


とある日、突然パソコンが立ち上がらなくなりました。 パソコンの電源を入れると、付いたり消えたりの連続…。 やばい!ハードディスクがイカれたか!?と思って焦りました。 デスクトップパソコンの箱を空けてみると、 5、6年分のホコリが溜まってひどい状態。 ひと目見て、「ああ、ファンが回らなくなって、パソコンが付いたり消えたりしたんだな」と思い、 爪楊枝一本で掃除してやりました。 すると、パソコンは無事に立ち上がり、ホッと一安心。 いやいや私のパソコンはこんなホコリだらけじゃありませんよという方は記事の最後まで必ず、 原因の本命は電源ユニットで...

【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-08-12


免疫学の世界的権威である安保徹先生。 非常に素晴らしい内容でしたので、動画でお話されていた内容を記事ベースでまとめました。 ▽最初のキーワードは自律神経(交感神経と副交感神経について) ▽次のキーワードは白血球(顆粒球とリンパ球) ▽次のキーワードは体温 ▽「温める」と「冷やす」に関する気づき ▽人間の2つのエネルギーの作り方 最初のキーワードは自律神経(交感神経と副交感神経について) ※交感神経は緊張モード、副交感神経はリラックスモードという認識で読むと分かりやすい。 病気の7割は肉体的に無理が続く人、心配事でストレスがある人 残りの3割は副交感神経の偏りがあ...

【良い砂糖の選び方】ミネラルが豊富で人気のキビ砂糖とてんさい糖商品をご紹介

2020-03-16


ミネラルの抜けた白い砂糖が一番供給されている病んだ社会。その結果、糖に関係する病が社会に蔓延しています。砂糖に関する知識は健康的に生きていく上で重要です。 ▽市場に一番多く出回っている白砂糖は問題外 ▽カラメル色素で色を付けている茶色い砂糖は買わないように ▽ミネラルが含んでいるオススメの質の良い砂糖 ▽「オリゴ糖」目当てで、てんさい糖を選択する価値あり! 市場に一番多く出回っている白砂糖は問題外 白砂糖は上白糖、グラニュー糖、三温糖などのことを指す用語です。 すでに常識となっている情報ですが、精製された白砂糖は栄養が排除された、ただの甘い粉。 しかし、質の良い...

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

2020-03-02


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

ドメイン移管をして3週間後にサイトが突然表示されなくなった!?ドメインの「clientHold」解除までの記録

2020-02-29


突然クライアントから「サイトが見れなくなりました」と連絡が入り、すぐにサイトを確認。 システムエラーが原因ではなさそう。FTPにも繋がるしサーバーのダウンでもなさそう。 とりあえず、さくらインターネットへチャットでの問い合わせ。 担当者からの回答は「ドメインのステータスがclientHoldになっていますね」とのことで、はい?? クライアントホールドというワードは初耳でした。 調べてみると、単純にドメインがロック(凍結状態)されているとのことで、ドメインが原因だということが確定。 あっ!しまった! そういえば、ドメイン移管後にwhois情報を更新していない…。 ...

アドセンス突然停止からポリシー違反解決まで3回目の再審査で突破の記録【原因はSSLのちょいミス】

2019-09-14


アドセンスに蹴られてブログヲワタ(´・ω・`)けど諦めたらそこで終わり 原因の特定が難しいアドセンスの意地悪なところには舌打ち 当てずっぽうでアドセンス2回の再審査 コードを設置してるのに、していないという不躾なグーグルからのお便り ポリシー違反の原因特定のきっかけは奇跡か!?いや、実力でしょう! アドセンスに蹴られてブログヲワタ(´・ω・`)けど諦めたらそこで終わり googleアドセンスがある日突然停止。ブログには全く広告が表示されなくなってしまいました。 アドセンスの管理画面を見ると、違反理由は「価値の低い広告枠(テンプレート ページ)について」 結論から...

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

2019-08-22

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

jQuery(javascript)複数ファイルのアップロード時に容量オーバーの場合はアラートを出す

2019-08-21

2019年現在では、iPhoneとAndroidともにinputタグのfile属性が使えるようになっています\(^o^)/ 前までは、画像をアップするだけなのに、面倒なアプリ開発をしなければいけませんでした…。 スマホのカメラ機能はどんどん解像度が上がっているので、1枚の写真が6メガというのが当たり前です。それに伴いレンタルサーバーの方もスペックが上がってきました。 それでも、レンタルサーバーの場合は転送量の軽減を考えなければいけません。 むやみにファイルをアップロードし放題にしては、サーバーがもちません。 ということで、ファイルを選択した際に、ファイル容量を取得して、 ...

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

2019年 PHPのSMTP送信はインストール不要のPHPMailerが手軽で最短!PEAR終了

2019-07-07

▽現役のメーラー「PHPMailer」ライブラリ ▽PHPMailerでSMTP送信ができたコードの紹介 ▽PHPMailerでSMTP送信の手順1「ダウンロード」 ▽PHPMailerでSMTP送信の手順2「ライブラリ読み込み」 ▽PHPMailerでSMTP送信の手順3「SMTPの設定」 ▽PHPMailerでSMTP送信の手順4「SMTP送信の実行」 ▽PHPMailerでSMTP送信の動作確認済みコード <現役のメーラー「PHPMailer」ライブラリ> 以前、迷惑メールになりにくいということでPEARのSMTP送信の記事を書きましたが、 PEARはPHP7になっ...

問い合わせフォームからのスパムをGoogle reCAPTCHAを導入で一網打尽!スパム来なくなりました!

2019-07-06


▽お問い合わせフォームのBot攻撃が年々増加している ▽reCAPTCHA(リキャプチャ)v3の設置方法 ▽[v3]設置手順1「まずはフォームのHTMLにreCAPTCHA設置コードを追加」 ▽[v3]設置手順2「次にフォームタグ内にhiddenのinputタグを追加」 ▽[v3]設置手順3「PHP側の先頭にコードを追加」 ▽[v2]設置手順1「まずはフォームのHTMLにreCAPTCHAのAPIを読み込む」 ▽[v2]設置手順2「フォームのボタンの辺りに認証チェックフォームを設置」 ▽[v2]設置手順3「PHP側の先頭にコードを追加」 ▽reCAPTCHA(リキャプチャ)設置...

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

2019-05-01

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

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

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

2018-10-05

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

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送信」を実行さ...

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

2018-10-03

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

PEARをXAMPPにインストールする最短の手順(Dドライブ)

2018-10-02


Composerという進化系があり、今どきPEARかよって感じですが、 使い慣れたものから離れるのは時間のムダ! 個人での仕事上なら最短で完成させることが最優先。 ってことでまずは、PEARをダウンロードしにいきます。 https://pear.php.net/package/PEAR/download PHP7の場合はなるべく最新のものを、 PHP5の場合はちょっと古めのものにしたほうがいいかな? と思い、今回は1.9.5verを選択してみました。 ダウンロードしたファイル「PEAR-1.9.5.tgz」を解凍せずに、 そのままxamppのphpにフォルダに移動...

phpMyAdminの初期設定ではセッション切れるのが早過ぎ!タイムアウトを長くしようぜ!

2015-10-28

ローカル環境でPHPでのシステム開発時にPHPMyAdminのセッションアウトが邪魔。 ローカルだからセキュリティーなんてどうでもいいということで、 セッションのタイムアウトを24時間にしてしまおう! PHPMyAdminのフォルダの直下にある「config.inc.php」に一行追加するだけ! ▼一般的な環境でのファイルの場所 htmlStart C:\xampp\phpMyAdmin\config.inc.php htmlEnd ▼追加する行 htmlStart $cfg['LoginCookieValidity'] = 86400; //24時間 htmlE...

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

2015-10-22

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

正規表現 値を数値のみにする

2014-08-14

電話番号をデータベースに追加する時は、「-」(ハイフン)をなくしたほうが検索の際に使い勝手がよくなる。下記は変数を半角数値のみにするユーザー定義関数で、ついでに全角数字を半角にする処理もしている。 phpStart function numOnly($str){ if($str){ $str = mb_convert_kana(trim($str),'n','utf8'); //全角数字を半角数字に $num = preg_replace("/[^0-9]+/", "", $str); } return $num; } $str = '090-9999-99...

管理画面などにて画像が切り替わらない場合の対処法

2014-08-14


管理画面で画像を変更する処理をした際に、変更後の画面で画像がキャッシュのせいで古い状態のままになることがある。その場合の一番簡単な方法は、画像にランダムなパラメータを付け、新しい画像だとプラウザに認識させるといい。 phpStart $rand = rand(0,999999); echo ''; phpEnd これは管理画面での基本的なテクニックなので、必ず覚えておかないといけない。 ...

完全な空チェック ~ 確実な0(ゼロ)判定、null判定をする方法

2014-08-14

phpStart $num = 0; if($num){ 処理されない... } phpEnd 上記の分岐分は処理されないコードの一例。「0」はfalseと判定されるのがPHPの仕様である。 しかし、「0」はtureと判定し、変数が空の場合のみfalseと判定したい時が多々出てくる。 そこで、よく出てくるなら関数化をしておくのがオススメ。 phpStart function karaChk($str){ if(!is_null($str) && $str !== ""){ $flag = true; }else{ $flag = false; ...

thickboxでパラメータ付き(GET送信)のPHPを読み込む方法

2013-09-26

いわゆるlightBox系のライブラリである「thickbox」。ファイルの少なさと設置の簡単さでそこそこ人気がありそうなライブラリ。 thickboxのインラインフレーム表示でパラメータ付きのフォームを表示しなければいけないケースに出くわし、普通に下記の通りにやってみると、 htmlStart 予約フォーム htmlEnd あれれGET値のidがPHPに渡らない… 「thickbox パラメータ」でググって調べてみると2つの解決法が出てて、何やらthickbox.jsを改造するコードが紹介されていたが、効果なし! 諦めずに「jquery parameter」でググっ...

ワードプレスのハッキングでサイトの改ざん相次ぐ【WPは狙われるから使用禁止】

2013-09-10

2013年9月にロリポップサーバーで、なんと8,438件ものサイトがハッキングされ、サイトが改ざんされた様子。前に、GMOクラウドのサーバーからもワードプレスのハッキングについてのメールが届いていた。ワードプレスは利用者が多いので、信頼してしまいがちだが、利用者が多ければ多いほど強者のハッカーに狙われてしまう。だからもうワードプレスは使用しない方が得策だろう。 サイトの改ざんだけで済めばいいが、データベースを初期化されたりしたらもうおしまい。ワードプレスに依存している会社は倒産するかもしれない。そんな会社は急いでワードプレスを普通のHTMLに戻さないといけない。かなり面倒臭いけどね。 ...

javascriptの足し算の演算は変数を数値型にしてから

2013-09-05

javascriptの演算子はPHPと扱いが違うようで、変数と変数を以下のように足し算すると、 htmlStart var a = 100 var b = 200 total = a + b; alert(total); //結果 100200 htmlEnd 結果は演算の値ではなく、変数と変数の結合の値が出てしまう。 PHPの変数の結合は「.」ピリオドだが、javascriptは「+」だからこうなってしまうのである。 なので、javascriptで演算する場合は、変数をparseInt関数で数値型にしなければいけない。 htmlStart var a = 100 va...

ファイルやディレクトリのパーミッションを一括で変更する方法

2013-07-28

レンタルしていたサーバー屋が廃業するということで、サイトのお引越しをせざるを得なくなってしまった。 ポータルサイトの引越しの際、ユーザーが管理画面からアップロードしたデータを新しいサーバーに移動した際に、パーミッションが初期状態になってしまった。パーミッションを変更しなければ、管理画面から変更ができなくなってしまう。 ディレクトリは【755】から【777】へ ログファイルは【644】から【666】へ変更しなくてはいけない。 普通ならFTPソフトで変更すれば終わりの話なのだが、ディレクトリが1000ファイル以上あり、各ディレクトリには無数の画像ファイルが存在し、FTPでの手作...

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

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の公式サイ...

SSIで上位ディレクトリを呼び出す場合にはちょっと注意

2012-12-26

さくらインターネットの共有サーバーではhtaccessのルールが特殊で、結構悩まされる。安いサーバーに難があるのは仕方がないけど…。 既に拡張子が「html」で作成されたサイトで、後からSSIやPHPを使いたいという状況。これWEBの仕事してるとそこそこ出てくるよね? URLを変えるのはSEO的にイヤだということで、拡張子はhtmlのままSSIやPHPを使用したいという時は、htaccessにちょいと書いてやるだけで実現します。 htmlStart ▼phpの場合 AddType application/x-httpd-php .htm .html ▼SSIの場合 Add...

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

2012-11-19

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

QRコードを手っ取り早く作る方法

2012-11-02


Google Chart APIを利用すればたった一行でQRコードが作れます。 htmlStart https://chart.apis.google.com/chart?chs=《サイズ》&cht=qr&chl=《URLやメールアドレスなど》 htmlEnd 画像タグに上記のコードを記載するだけ。 htmlStart htmlEnd パラメータの「chl」には日本語を使うこともできます。mailtoタグと同様で日本語を使う場合は文字化けの対処をしないといけないので、文字コードをパラメータの「choe」で指定しないといけない。 QRコードは携帯やスマホで読み取られる...

現在のURLやファイル名の取得とリファラーの取得方法

2012-10-24

システムを構築中に今現在のURL(自身のURL)やファイル名を取得したいというケースがちょくちょく出てきます。サーバ環境変数に格納されているので取得は簡単です。 phpStart /* 現在のURLが以下だった場合 https://pinkmonky.net/test.php?id=47&cate=5 */ echo $_SERVER['SERVER_NAME']; echo $_SERVER['REQUEST_URI']; echo $_SERVER['PHP_SELF']; echo $_SERVER["SCRIPT_NAME"]; //表示結果 blog.p...

メールアドレスの書式が正しいかチェックする正規表現

2012-10-18

メールアドレスの書式チェックの方法をネットで調べると、preg_match関数を使用した正規表現チェックのコードがいくつか出てくるのだが、どれも同じコードではない為、どれが一番正確なのかはよく分からない。そこで、信用できそうなコードをご紹介。 (adsbygoogle = window.adsbygoogle || []).push({}); どうやら、docomoは「da.me..@docomo.ne.jp」といったRF2822非準拠の携帯メールアドレスが取得できるらしいので、docomoのせいでちょっとややこしいようだ。 ↓ドコモのメールアドレスの取得は以下が可能↓ ...

【PHP】内容に日本語が含まれているかを調べる方法

2012-10-18


メールフォームならメールアドレスは見えないのでスパムは届きにくくなるが、最近内容が英語だけのスパムメールが届くようになった。簡単な処置として、内容に日本語が含まれているかを調べて、英語だけの場合は送信しないという分岐を追加することに。 どうやって全角の文字があるかどうか調べるかというと、文字数を数える『strlen関数』と『mb_strlen関数』を使用して、マルチバイトが含まれているかどうかを調べます。 phpStart if(strlen($body) == mb_strlen($body,'utf8')) { //全部英語(全てシングルバイト) }else{ //日本...

phpMyAdminでインデックスの削除をする方法

2012-10-12


ローカルのxampp環境でphpMyAdmin3.1.3.1を使用しているのだが、プライマリー・ユニーク・インデックスのキー操作をしようとしたが、全然操作するメニューが見当たらなかった。 と、どうやらブラウザの問題だったようで、IEではそもそもメニューが表示されていなかった。mootools.jsを使用している画面なのでIEが対応していないみたいである。...

xampp環境でメールを送信できるようにする設定

2012-09-23

xampp環境の初期状態ではsendmail関数を使用してもメールが送信できません。ということで、メールを送れるように設定してみたものを見てもらいましょう。今回、送信用に使用するメールアドレスはフリーメールではないメアド(master@pinkmonky.net)で設定しました。フリーメールでも大丈夫だと思います。ちなみにこのメアドはさくらインターネットのサーバーで設定しているものです。 ↓このファイルを編集します。失敗してもいいようにコピーをしてバックアップしておきましょう。 C:\xampp\sendmail\sendmail.ini htmlStart //14行目辺り s...

携帯・スマホ版サイトの振り分けコード

2012-09-22

あくまで簡易的な携帯・スマホ版サイトの振り分けコードです。携帯版のページを絶対にPCで見せたくないという場合は、下記の方法では実現しません。PC版のインデックスファイルの先頭に下記のコードを追加すれば導入完了です。 phpStart // ユーザーエージェントの取得 $ua = $_SERVER["HTTP_USER_AGENT"]; if(preg_match("(UP\.Browser|KDDI|DoCoMo|J-PHONE|Vodafone|SoftBank|MOT-|L-mode|DDIPOCKET|WILLCOM|PDXGW|ASTEL)", $ua)){ ...

要素が空の場合はそのタグを削除する

2012-09-21

管理画面で入力がされていない空の項目がある場合、表のページで内容が空だったら非表示にしたいケースがちょくちょくあります。PHPで全ての項目に分岐文を加えるのは面倒だなと思い、他の方法を考えるてみると…。なんと、jqueryを使えば一行で実現できてしまいました。 htmlStart //リストの場合 $("ul#detail li:empty").remove(); //テーブルの場合 $("table#detail td:empty").parent('tr').remove(); htmlEnd このコードでのポイントはemptyでの空要素チェックとparentで親要素の指...

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()を使用しないとバグが起きます。...

文字列の出力

2012-08-20

「echo」(エコー)はブラウザにHTMLを出力します。文字列を出力する際に「”」「’」ダブルクォーテーションかシングルクォーテーションで文字列を囲まないといけません。そのルールを説明したいと思います。 <単純な文字列の出力> phpStart echo 123456; echo '123456'; echo "123456"; echo hello!; //←エラーがでます echo 'hello!'; echo "hello!"; echo あいうえお; //←エラーがでます echo 'あいうえお'; echo "あいうえお"; phpEnd 文字列はクォー...

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

2012-08-18

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

md5関数でパスワードなどを暗号化する

2012-08-16

md5関数に文字列を与えると、その文字に準じた32文字の英数字の文字列(ハッシュ値)を返してくれます。一文字でも違う値を与えれば、全く違う文字列になり、同じ文字列なら毎回同じ文字列が返ります。 <関数の使用例> phpStart echo md5('abcd'); phpEnd <結果> htmlStart e2fc714c4727ee9395f324cd2e7f331f htmlEnd 上記の文字列から元の文字列に戻す方法はありません。一度暗号化してしまうと、暗号化した本人しか答えが分からないのです。セキュリティーを重視するサイトではデータデースにそのままパスワ...

生年月日から年齢取得

2012-08-16

プロフィールを登録させる際に年齢の項目を設ける場合は、年齢を入力させるのではなく、生年月日を入力してもらうのが基本です。年齢を入力させてしまうと、データ上その人はずーっと同じ年齢のままになってしまうからです。 生年月日から年齢を求めるの方法はいくつかあるみたいですが、一番短いのが以下の計算方式です。 <計算方式> phpStart $birth = 19811007; $age = floor((date('Ymd') - $birth) / 10000); phpEnd 計算方式は「(今日の日付 - 生年月日) ÷ 10000」で求められるみたいです。floor()...

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

2012-08-13

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

アフィリエイトコードを隠す際にはjump.phpを使おう

2012-08-08

アフィリエイトのリンクがサイト内にたくさんある場合は、隠した方がSEO的に良しとされています。では、簡単なので早速コードを見てください。 <jump.php> phpStart $link[1] = 'https://sample1.jp?afid=9999'; $link[2] = 'https://sample2.jp?afid=9999'; $link[3] = 'https://sample3.jp?afid=9999'; $link[4] = 'https://sample4.jp?afid=9999'; $link[5] = 'https://sample5.jp...

thickboxでダイアログを表示する

2012-08-08

Jqueryのプラグインであるthickboxを使ってダイアログを表示してみよう。まずはheadタグ内でjqueryを読み込んだ後にthickbox.jsを読み込む。順番が逆だと動きません。 htmlStart htmlEnd あとはテキストリンクにclass指定でthickboxを宣言し、リンクを貼るだけで設置完了です。リンクのパラメータにはheightとwidthを必ず指定しなければいけません。リンク先はHTMLや画像、PHPでさらに独自のパラーメーターを付け足すことも可能です。 <テキストリンク~ダイアログ表示> htmlStart サンプル htm...

文字コードの変換

2012-08-04

UTF-8の文字をshift_jisに変換するコードです。携帯サイトを作る場合はdocomoとauがshift_jisで作らないといけないので、文字コードを変更することがあります。EUC-JPはperl時代の時によく使用されていましが、今はUTF-8とshift_jisのどちらかしか使わないですね。 phpStart //mb_convert_encoding(文字列,変換後,変換前); mb_convert_encoding($str,'SJIS','UTF8'); phpEnd あとPCサイトでもメーラーを立ち上げるmailtoのリンクで件名と内容も付属するときはshif...

マイページや管理画面のログイン機能はセッションで導入する

2012-08-04

PHPでログイン機能を導入する場合はsession(セッション)というものを使います。cookie(クッキー)と似ていますが少し違います。単純に説明すると、cookieはブラウザに保存、sessionはサーバーに保存といったところでしょうか。sessionはcookieよりもセキュリティーが固いのでログイン機能ではcookieは使いません。では早速、コードを見てみてください。 <login.php> phpStart session_start(); //*1 下記説明 if($_POST['pass'] == $PASS){ $_SESSION['user'] = sessi...

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