<script> function getCookie(name) { const cookies = document.cookie .split(';') // セミコロンで分割 .map(cookie => cookie.trim()); // 各クッキーをトリムして余分なスペースを削除 const targetCookie = cookies.find(cookie => cookie.startsWith(`${name}=`)); return targetCookie ? targetCookie.split('=')[1] : null; // 指定したクッキー名の値を取得 } const browserChecked = getCookie("browser_checked"); if (!browserChecked) { fetch(`check_browser.php?_=${new Date().getTime()}`, { method: "POST" }) .then(response => console.log("ブラウザ確認完了")) .catch(error => console.error("エラー:", error)); document.cookie = "browser_checked=1; max-age=3600; path=/"; } </script>
ブラウザキャッシュの影響
リクエストがキャッシュされていて、サーバーがリクエストを認識しない可能性があります。
対処法: リクエストURLにタイムスタンプを追加することでキャッシュを回避します。
check_browser.php
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { // カウンター更新処理 echo "ブラウザからのアクセスと確認されました。"; } ?>
バーチャルカードは使用不可: Google Cloudでは、バーチャルクレジットカード(VCC)の使用が禁止されています。多くのユーザーが報告しているように、バーチャルカードを使用してアカウントを作成しようとすると、アカウントが即座に停止されることがあります。
実際のクレジットカードが必要: GCPの無料トライアルに登録する際には、実際のクレジットカードが必要です。これは、本人確認や支払いのために必要な手続きです。バーチャルカードやプリペイドカードは受け付けられないため、注意が必要です。
他の支払い方法: もしクレジットカードを持っていない場合、法人向けには請求書払いなどのオプションもありますが、個人の場合は通常のクレジットカードが必要です。
User-agent: * Disallow: /login/ Disallow: /admin/ Disallow: /confidential.pdf Sitemap: https://www.example.com/sitemap_index.xml
https://wave.stars.ne.jp/blog/yuu/ member - blog_dir cbt_post_12 - post_id, post_cat, post_status, post_unixtime post_status = 1 & post_unixtime < now cbt_setting_12 - top_page = 1 なら post_cat = 2以外 cbt_setting_12 - top_page = 2 なら post_cat = 2含めて全部
テーブル: cbt_post_12 post_id post_status = 1 post_unixtime < now
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://wave.stars.ne.jp/blog/yuu/</loc> </url> <url> <loc>https://wave.stars.ne.jp/blog/yuu/entry.php?id=190</loc> </url> </urlset>
サイトマップインデックス
<?xml version="1.0" encoding="UTF-8"?> <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemap> <loc>https://wave.stars.ne.jp/sitemaps/sitemap1.xml</loc> </sitemap> <sitemap> <loc>https://wave.stars.ne.jp/sitemaps/sitemap2.xml</loc> </sitemap> </sitemapindex>
document.cookie = "userType=admin; path=/blog/yuu/; expires=Fri, 09 May 2025 12:00:00 UTC"; document.cookie = "userType=; path=/blog/yuu/; expires=Thu, 01 Jan 1970 00:00:00 UTC"; <?php if (isset($_COOKIE["userType"])) { echo "Cookieの値: " . $_COOKIE["userType"]; } else { echo "Cookieが存在しません。"; } ?> <label> <input type="checkbox" id="cookieCheckbox"> 管理者モード </label> document.getElementById("cookieCheckbox").addEventListener("change", function() { const isChecked = this.checked; if (isChecked) { // チェックされている場合にCookieを設定 document.cookie = "userType=admin; path=/; expires=Fri, 09 May 2025 12:00:00 UTC"; console.log("Cookieを設定しました!"); } else { // チェックが外された場合にCookieを削除 document.cookie = "userType=; path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC"; console.log("Cookieを削除しました!"); } });
$ch = curl_init('https://api.ip2location.io/?ip=8.8.8.8'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $json = curl_exec($ch); curl_close($ch); $api_result = json_decode($json, true); echo '<pre>'; var_dump($api_result); echo '</pre>';
APIキーなしでも動作するが、1日あたり1,000件のクエリに制限される。
無料プランに登録するとAPIキーを取得でき、1か月あたり5万件のクエリを利用できる。
集計関数 | 用途 |
---|---|
COUNT | 項目のデータ件数を取得する |
SUM | 項目のデータ合計値を取得する |
AVG | 項目のデータ平均値を取得する |
MAX | 項目のデータ最大値を取得する |
MIN | 項目のデータ最小値を取得する |
<table style="margin: 1em auto;">
// tracking.php // 訪問データの取得 $ip = $_SERVER['REMOTE_ADDR']; $page = $_SERVER['REQUEST_URI']; $time = date('Y-m-d H:i:s'); $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $user_agent = $_SERVER['HTTP_USER_AGENT']; // ここでデータベースへの接続および記録処理を行います try { $pdo = new PDO('mysql:host=ホスト名;dbname=データベース名', 'ユーザー名', 'パスワード', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]); $stmt = $pdo->prepare("INSERT INTO access_logs (ip, page, access_time, referrer, user_agent) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([$ip, $page, $time, $referrer, $user_agent]); } catch (PDOException $e) { error_log("DBエラー: " . $e->getMessage()); }
echo substr('abcdef', 0, 8); // abcdef
// 絵文字制限(例: VARCHAR(30)) $maxLength = 30; $maxBytes = $maxLength * 4; // 文字数,バイト数を確認 if (mb_strlen($_POST['text'], 'UTF-8') > $maxLength || strlen($_POST['text']) > $maxBytes) { $error = "文字数またはバイト数がオーバーしています。"; }
<?php $array = ['apple', 'banana', 'cherry']; // 'banana'を削除したい $key = array_search('banana', $array); // インデックスを取得 if ($key !== false) { unset($array[$key]); // 配列から削除 $array = array_values($array); // インデックスを再構築 } print_r($array); ?>