質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

dBASE

dBASEは、Ashton Tate社が開発したデータベース管理システム (DBMS) です。初期のマイクロコンピュータ向けに開発。広く使用されていました。現在は、RAD環境を取り入れたVisual dBASEとして、米dBASE社が提供しています。

Q&A

1回答

764閲覧

PHPでリファラから検索ワードを取得して保存したい

homepage-site

総合スコア48

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

dBASE

dBASEは、Ashton Tate社が開発したデータベース管理システム (DBMS) です。初期のマイクロコンピュータ向けに開発。広く使用されていました。現在は、RAD環境を取り入れたVisual dBASEとして、米dBASE社が提供しています。

0グッド

0クリップ

投稿2021/08/30 11:52

前提・実現したいこと

サイト内検索のキーワードをCSVファイルに保存する

ヘディングのテキスト

<?php if (have_posts()): ?> <?php if(isset($_GET[‘s’]) && empty($_GET[‘s’])) { echo ‘検索キーワード未入力’; } else { echo '“'.$_GET['s'] .'”の検索結果:'.$wp_query->found_posts .'件'; // 検索キーワードと該当件数を表示 // 検索キーワードと該当件数を表示 $f_path = “wp-content/themes/monomode/test.csv”.”key-“.date(“Y-m-d”).”.csv”; //保存するファイル名の指定をする。ここでは1日単位とした。もちろんDBに保存してもOKで、目的に応じてご自由に。 $keyword_data = array(date(‘Y-m-d-G-i-s’), $_SERVER[“REMOTE_ADDR”], $_GET[‘s’].PHP_EOL); //配列にするここでは日付とIP、キーワードにするがここも目的に応じてご自由に $keyword_data = implode(‘,’, $keyword_data); //CSV形式に変換 //キーワードに異常がないか最低限のチェックをする。ここも目的に応じてご自由にどうぞ for($i = 0; $i < sizeof($keyword_data ); $i++ ) { if(strlen($keyword_data[$i]) > 200){ // 入力データのサイズチェックをする。ここでは200byteという想定。 exit; } $keyword_data[$i] = htmlentities($keyword_data[$i]); //タグの無効化 } file_put_contents($f_path, $keyword_data, FILE_APPEND); //ファイルの末尾に追記する } ?> <ul> <?php while(have_posts()): the_post(); ?> <li> <a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a> </li> <?php endwhile; ?> </ul> <?php else: ?> 検索されたキーワードにマッチする記事はありませんでした <?php endif; ?>

発生している問題・エラーメッセージ

なし

試したこと

ファイルパスを変更したが検索ワードを保存できない
$f_path = “wp-content/themes/monomode/test.csv”;
参考サイト https://cat-marketing.jp/2021/05/21/wp-search/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

サイト内検索の質問だったので、下記は無関係でした。

そもそも、今、メジャーなブラウザでは、クロスオリジンの場合、リファラーにはホスト名までしか入らないです。

古いバージョンのブラウザなら入りますが、それをターゲットに開発しても、あまり意味がない気がします。

投稿2021/08/30 14:18

編集2021/09/01 12:30
otn

総合スコア85778

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

homepage-site

2021/09/01 12:19

<?php if (have_posts()): ?> <?php if(isset($_GET[‘s’]) && empty($_GET[‘s’])) { echo ‘検索キーワード未入力’; } else { echo '“'.$_GET['s'] .'”の検索結果:'.$wp_query->found_posts .'件'; // 検索キーワードと該当件数を表示 // chmodで書き込み権限を付与 $filename = chmod('wp-content/themes/monomode/test.csv', 0775); // 検索キーワードと該当件数を表示 $f_path = “wp-content/themes/monomode/test.csv”; $keyword_data = array(date(‘Y-m-d-G-i-s’), $_SERVER[“REMOTE_ADDR”], $_GET[‘s’].PHP_EOL); $fp = fopen($f_path, 'a'); flock($fp, LOCK_EX); fputcsv($fp, $keyword_data); flock($fp, LOCK_UN); fclose($fp); } ?> <ul> <?php while(have_posts()): the_post(); ?> <li> <a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a> </li> <?php endwhile; ?> </ul> <?php else: ?> 検索されたキーワードにマッチする記事はありませんでした <?php endif; ?> 構文を修正したんですが、$f_path、$keyword_data で数値以外の値を取得していますと出てキーワードを取得できません。 どのような原因が考えられますでしょうか?
otn

2021/09/01 12:28

失礼しました。サイト内検索の質問だったのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問