LoginSignup
1
0

More than 3 years have passed since last update.

フレームワークを使わないPHP+Javascript TIPS

Last updated at Posted at 2021-03-02

サイトマップを作る

記載するほどでもないが、サイトマップを作るコード。
最終的にxmlファイルを生成するが、phpファイルのままでもいけるかもしれない。

make_stemap.php
$xml = '<?xml version="1.0" encoding="utf-8" ?>'."\n";
$xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
foreach($array_movie_id as $value){
    $xml .= "<url>";
    $xml .= "<loc>https://~/".$value['key']."</loc>";
    $get_date = $value['key2'];
    $mod_date = substr($get_date, 0, -9);
    $xml .= "<lastmod>".$mod_date."</lastmod>";
    $xml .= "</url>";
}
$xml .= "</urlset>";
<urlset>
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/xml/sitemap.xml', $xml);

ページを複製する

通常1つのページを作成し、PPOSTで渡した値で表示を変えるのが通例だが、
SEOの観点から複数のページを作成したいときがある。

元ファイルがJavascriptの場合

定型部分をJavascriptで記載し、incファイル化
ob_start()関数を使用。元ファイルがJavascriptなのでPHPの変数の影響を受けることなく記載可能。

a.inc
コード内部はJavascript。
b.php
データベースに接続等
ob_start(); //バッファ制御スタート
include("inc/a.inc");
$text = ob_get_clean(); //バッファ制御終了&変数を取得
$something = 可変部分
$something .= $text;

元ファイルがphpの場合

変数をエスケープする。

a.php
$name = "名前";
$email = "a@gamil.com";

$text = "<?php \$name=\"$name \"; ?>"."\n";
$text .= "<?php \$email =\"$email\"; ?>"."\n";

file_put_contents("b.php", $text);
b.php
<?php $name="名前"; ?>
<?php $email ="a@gamil.com"; ?>

エスケープって便利!

ajaxによる非同期通信(jQueryを用いた場合)

毎回迷うので、備忘録もかねて。

a.php
let options = {//変数にまとめておくと可読性が増す
    type:'POST',
    url: 'b.php',
    data: fd,
    dataType: 'json'
};

$.ajax(
    options
).done(function(d){
    //json返ってきたので処理
    console.log('success');
    var src = d.src;
    console.log(src);
    //let p = $('div.droparea').find('p');
    let p = $('div.droparea');
    $(p).html('<img src="'+src+'" width="300px" height="169px">');
    let img_box = document.getElementById('thumbnail_area')
    var protocol = location.protocol;
    var host = location.host;
    src = protocol + '//' + host + '/' + src.replace('../','');
    img_box.textContent = src;

}).fail(function(d){
    console.log('false');
    let p = $('div.droparea').find('p');
    $(p).text("アップロードに失敗しました");
}).always(function(){
    //完了
});

CORSについて

送信元のhtaccessに受け取る側のドメインを記載。

Header append Access-Control-Allow-Origin: https://~

文字化けについて

HTML-ENTITIESで終わらせるといけない。
HTML-ENTITIESに変換したものをUTF-8に変換する。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0