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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

849閲覧

PHPの共通ヘッダで言語ボタンを押した時、サブディレクトリの中の同名のファイルにリンクさせたい

shunk-py

総合スコア12

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/02/18 06:48

編集2019/02/18 07:16

お世話になります。

現在企業HPを作っておりまして、グローバルナビヘッダとフッタはPHPで共通化しております。
同時に英語版のページも準備しており、ディレクトリ構成としてはルートディレクトリ直下に「en/」というサブディレクトリを作って、その中に日本語版と全く同名のPHPファイルをテキストだけ配置してあります。

しかし、この方法だとヘッダーの「英語」ボタンを押したときに、
〇〇.com/en/index.phpを開いてしまいます。

PHPでの該当リンク部分の記述は以下のようになっております。

<li class="now">JP</li> <li>/</li> <li><a href="/en/">EN</a></li> </ul>``` これをうまくen/ディレクトリの同名ファイルを参照できるようにする方法はありませんでしょうか?? 簡単にググりましたが結局方法について書いているサイトは見つからず・・・ 初心者で恐縮ですが質問させていただきます。 何卒よろしくお願い致します。 <追記> ご指摘がありましたので追記させていただきます。 PHPのバージョンは7を入れております。 質問について補足すると、 共有ヘッダのリンクについて、例えば今〇〇.com/aaa.phpにいるなら、 ヘッダのリンクから〇〇.com/en/aaa.phpに飛びたいという旨です。

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

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

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

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

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

m.ts10806

2019/02/18 06:51

「作っている」ということは既に基盤ができているわけですよね? フレームワーク導入は難しいのでしょうか。
m.ts10806

2019/02/18 06:52

それに「グローバルナビヘッダとフッタはPHPで共通化」とありますが、PHPのメリットが全くない作りっぽいので、そこから検討しなおしたほうが後々楽です。
shunk-py

2019/02/18 06:54

mts10806様 早速のご回答ありがとうございます。 すでにHPの全てのページが完成しており、細かな修正をしているところでこのような要望がでました。 知識が乏しいためどのフレームワーク導入にどの程度の工数がかかるかわかりませんが、 完成した後なので大変そうであるという印象ではあります。 コーディングでなんとかなるのであれば方法を模索したいところです。
shunk-py

2019/02/18 06:58 編集

PHP導入の理由ですが、少しページ数が多く、ヘッダとフッタの変更頻度が非常に高いため、変更・修正の工数削減のためです。 当方初心者で知識が乏しいため、よりよい方法がありましたらご教授頂けると大変助かります・・
m.ts10806

2019/02/18 06:58

既に完成している状態からだとフレームワーク導入は難しいとは思います。 それに現在の作りが質問内容から読み取れないため、具体的なアドバイスは難しいです。 企業HPとのことで提示できる情報も限られるでしょうし。 「同名ファイルを参照する」とのことですが、「そのファイルをURLとする」のか「includeする」のかどちらでしょうか。
m.ts10806

2019/02/18 07:01

> ヘッダとフッタの変更頻度が非常に高いため、変更・修正の工数削減のためです。 同じPHPでもせめてSmarty導入であればもう少し分かりやすくできたかもしれません。「テンプレート的に使いたい」だけでPHPまるっと導入はもったいなすぎますし、DreamWeaverでHTMLだけで対応可能だったと思いますし。 DBアクセスない、セッション使わない(ログインない)のであればPHPのメリットを全く活かさない作りになりますし、逆にコストが高いです(特にメンテナンス性) とはいえ、今から作り直すわけにもいかないでしょうし。難しいですね。この問題。 ちなみにPHPはバージョン幾つですか?
m.ts10806

2019/02/18 07:04

もし記事も静的なものなのであれば、WordPress入れて多言語対応したほうがやりやすくなるかもしれません(どのようなスケジュール感でされているか分かりませんし、納期の問題や工数や要件の問題もあるでしょうし。これがベストかと言うと分かりません。)
shunk-py

2019/02/18 07:10

なるほど、存じませんでした!勉強になります。。 今後はもっと便利なフレームワークやテンプレートエンジンを検討するように致します。 質問が具体性に欠けており申し訳ありません。 意図は「そのファイルをURLとする」ということです。 例えば日本語のページで〇〇.com/aaa.phpを開いていた場合、ヘッダのリンクから 〇〇.com/en/aaa.phpにリンクさせたいという旨です。 PHPのバージョンは7を導入しております。
m.ts10806

2019/02/18 07:13

たぶん7.1以上ですよね(7.0は既にサポート終了) であればなおさら勿体無いですね・・・。 現状を解決するだけであれば簡単ですが、私であればまるっと作り直しますね。特にコーポレートサイトはセキュリティ面も考える必要がありますし、テンプレート的な使い方しかしていないのであれば尚更です。 お問い合わせフォームも必要でしょうし、お問い合わせフォームのようなものは初心者段階で作るにはリスクが高すぎます。
guest

回答2

0

こういうことかな?

<a href="/en/<?= basename($_SERVER['SCRIPT_FILENAME']) ?>">EN</a>

投稿2019/02/18 07:21

kasa0

総合スコア578

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

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

0

ベストアンサー

現状を解決したいだけならこう。

php

1<ul class="lang"> 2 <li class="now">JP</li> 3 <li>/</li> 4 <li><a href="/en/<?php echo pathinfo($_SERVER["SCRIPT_NAME"],PATHINFO_BASENAME); ?>">EN</a></li> 5</ul>

※もちろん作りとしてはあまり好ましくはない

'SCRIPT_NAME'

現在のスクリプトのパス。 スクリプト自身のページを指定するのに有用です。 FILE 定数には、カレント(すなわち読み込まれた)ファイルのパスとファイル名が 含まれます。

要は「現在実行しているスクリプトのファイルパスからファイル名(拡張子付)だけ取り出す」というやり方です。
逆にen→jpにも使えます。

※もし、クエリストリングまで持ってくるならREQUEST_URIの方がいいかもしれませんが。

ただ、既に書いたとおり、コーポレートサイトでセキュリティまで担保する必要があるのは間違いないので、できればフレームワーク、さいあくでもCMS(WordPressなど)での構築しなおしを検討してください。
何か問題があってからでは遅いです。

投稿2019/02/18 07:17

編集2019/02/18 07:23
m.ts10806

総合スコア80850

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

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

shunk-py

2019/02/18 07:25

非常に迅速かつ的を射た経験者からのアドバイス、非常に勉強になりました。 XSSを考えると確かに好ましくない解決方法になってしまいますね。 Webサイトの構築の仕方について考える非常に良い機会になりました。 ありがとうございました。
m.ts10806

2019/02/18 07:29

XSSの問題はPHP_SELFの方ではないでしょうか? いずれにしてもhtmlspecialchars()をかませば良い話ではありますし、 昨今、ファイル拡張子がでるようなサイト自体珍しいので(特にPHP)、 早急に対応は必要と思います。 おそらく、ご自身が思っているよりも大きな事故になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問