2023-06-07
<日付表記パターン>
phpStart
function viewDate($date,$style = ""){
$WEEK = array("日","月","火","水","木","金","土");
if(isset($date)){
$date = substr($date,0,10);
$date = str_replace("/","-",$date);
if($date != "0000-00-00"){
list($y,$m,$d) = explode("-",$date);
$w = date("w", strtotime($dat...
2023-06-03
PHPでのSQLインジェクション対策ならプリペアドステートメントが有名です。
(プリペアド・ステートメントは静的プレースホルダ、バインド機構と呼ぶ場合もあるようです)
PDO派ではなく、mysqli派の方へ向けたプリペアドステートメントの記述方法の紹介です。
コードを見ればなんとなく分かると思います。
prepare関数にて「?」を仕掛けた数だけ、bind_param関数の引数の数に関係します。
<削除 DELETE>
phpStart
$id = htmlspecialchars($_POST["id"]);
$stmt = $mysqli->prepare("D...
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を自力で作成する人はほとんどいないと思うので、マニアックな事象なのですが。
当ブログはブ...
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}")...
2019-08-21
2019年現在では、iPhoneとAndroidともにinputタグのfile属性が使えるようになっています\(^o^)/
前までは、画像をアップするだけなのに、面倒なアプリ開発をしなければいけませんでした…。
スマホのカメラ機能はどんどん解像度が上がっているので、1枚の写真が6メガというのが当たり前です。それに伴いレンタルサーバーの方もスペックが上がってきました。
それでも、レンタルサーバーの場合は転送量の軽減を考えなければいけません。
むやみにファイルをアップロードし放題にしては、サーバーがもちません。
ということで、ファイルを選択した際に、ファイル容量を取得して、
...
2019-07-23
今後は導入がスタンダードになりそうなダークモード
2018年頃から有名どころのアプリやサイトで
ダークモード(ダークテーマ)への切り替えができるようになってきました。
ダークモードがもたらす効果は以下の2点。
「目の疲れを軽減」
「消費電力の低減」(有機ELディスプレイの場合のみ)
TwitterやYoutubeを一日中見ている人にとっては、このダークモードは嬉しい。
背景が真っ白だと、目がチカチカしてきます。
クリエイティブツールのAdobe製品ではダークモードがデフォルトになっていますし、
プログラマーが使うエディタ系のツールもダークモードが人気の様子です...
2018-10-29
ページを開いた際にフェードでページ全体を表示する方法はネットに出回っていますが、
「下から上に移動しながらのフェード」これがなかったので、自分で調整したものを残します。
単純に、jqueryのappend関数(コンテンツ追加)でbodyのmargin初期値を50pxなどにして、delay(ディレイ)後にmarginを0にする。
同時にフェード効果とのコラボとなり、非常に心地の良い効果になります。
htmlStart
$(function(){
$('head').append(
'body{display:none; margin-top:50px;}'
);
...
2018-10-04
2019-07-07報告 SMTPは「PHPMailer」で行うことをオススメします
PHPメーラーのライブラリ「PHPMailer」はまだまだ現役。今もなおアップデートされています。
Wordpressもメール送信周りではPHPMailerを使用されています。
SMTP送信に関してはコチラの新しい記事の方が導入が簡単です。
2019年 PHPのSMTP送信はインストール不要のPHPMailerが手軽で最短!PEAR終了
どうしてもPEARでSMTP送信をしたい場合は下記をご覧ください。
今回は前回に引き続き、PEAR関連でPEAR::Mailで「SMTP送信」を実行さ...
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
$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;
...
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-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...
2012-11-19
引数とは…戻り値とは…と言葉で書いてもパッとしなさそうなので、半角のカタカナを全角のカタカナに変換するmb_convert_kana関数を例として見てみよう。
phpStart
$zenkaku = mb_convert_kana($hankaku, "KV");
//$hankaku が第一引数
//KV が第二引数
//$zenkaku が戻り値
phpEnd
これで用語の意味は分かるかと思います。自分で関数を作る(ユーザー定義関数)時はこの引数と戻り値のことを理解しておかないと便利なものは作れない。
個人的にフレームワークの使い方を覚えるのが面倒なので、自作関数の...
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のせいでちょっとややこしいようだ。
↓ドコモのメールアドレスの取得は以下が可能↓
...
2012-10-18
メールフォームならメールアドレスは見えないのでスパムは届きにくくなるが、最近内容が英語だけのスパムメールが届くようになった。簡単な処置として、内容に日本語が含まれているかを調べて、英語だけの場合は送信しないという分岐を追加することに。
どうやって全角の文字があるかどうか調べるかというと、文字数を数える『strlen関数』と『mb_strlen関数』を使用して、マルチバイトが含まれているかどうかを調べます。
phpStart
if(strlen($body) == mb_strlen($body,'utf8')) {
//全部英語(全てシングルバイト)
}else{
//日本...
2012-10-07
例えば「01」や「02」など、先頭にゼロがついている数値を「1」という数値に直す場合は、Number関数を使用します。
htmlStart
var str = "05";
var num = Number(str);
//結果
num == 5
htmlEnd
逆に決まった桁数で先頭にゼロをつけなければいけないケース(ゼロパディング)もよく出くわします。その場合は下記の方法がおそらく最短コード。
htmlStart
var num = 5;
var str = ('0' + num).slice(-2);
//結果
str == '05'
htmlEnd
s...
2012-09-23
xampp環境の初期状態ではsendmail関数を使用してもメールが送信できません。ということで、メールを送れるように設定してみたものを見てもらいましょう。今回、送信用に使用するメールアドレスはフリーメールではないメアド(master@pinkmonky.net)で設定しました。フリーメールでも大丈夫だと思います。ちなみにこのメアドはさくらインターネットのサーバーで設定しているものです。
↓このファイルを編集します。失敗してもいいようにコピーをしてバックアップしておきましょう。
C:\xampp\sendmail\sendmail.ini
htmlStart
//14行目辺り
s...
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-18
セレクトフォームはユーザー定義関数を作って要領よく生成しましょう。編集画面の際は$now_dataに現在のデータを代入しておけば、選択された状態になります。
phpStart
//47都道府県の配列
$AREA = array('北海道','青森','岩手','宮城','秋田','山形','福島','茨城','栃木','群馬','埼玉','千葉','東京','神奈川','新潟','富山','石川','福井','山梨','長野','岐阜','静岡','愛知','三重','滋賀','京都','大阪','兵庫','奈良','和歌山','鳥取','島根','岡山','広島','山口','徳島',...
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()...
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...
2012-08-04
拡張子を取得する場合はpathinfo関数を使うのが最短のコードだと思われます。
htmlStart
$filename = 'sample.jpg';
$ext = pathinfo($filename, PATHINFO_EXTENSION);
htmlEnd
ファイルアップ時の際に必要になることが多い技になりますね。
htmlStart
$filename = $_FILES['upfile']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
htmlEnd
...
この記事がお役に立てましたら是非シェアのご協力お願いします。