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

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

ただいまの
回答率

90.45%

  • PHP

    24625questions

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

PHPで動的なページの作成

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 121

ymgc01

score 2

┌index.php
┝project01
│┝video.mp4
│┝music.mp3
│└doc.pdf
┝project02
│┝video.mp4
│┝music.mp3
│└doc.pdf
┝project03
│┝video.mp4
│┝music.mp3
│└doc.pdf



まったく同じレイアウト、中身だけが変わるウェブサイトを制作する際に、もしPHPを使って動的にページをつくるとしたらどのようにな実装をするのでしょうか?
それぞれのディレクトリにindex.htmlを入れる方法をとらず、簡単にしたいと考えています。

感覚的にはpython Djangoのurls.pyのように、urlから数字の値をとってきてview内で再利用できる仕組みがPHPにもあるのかなと思っています。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

urlから数字の値をとってきてview内で再利用できる仕組みがPHPにもあるのかなと思っています。

「ある」というより「そういう仕組みを作る」ということになります。
?id=1234のようなクエリストリングで、$_GETで受け取っても良いですし、
teratailのような/questions/190418でも良いですが、
それは「こういうURLのときはこういう処理をする」という組み方をするだけの話で、
そこは仰っている「Djangoのurls.py」とやっていることは同じだと思います。
どちらもサーバーサイドの言語なので「URLをリクエストとして受け取ってそのURLに即した処理をする仕組みを”自分で作る”」ことに変わりはありません。

先に例を出したteratailですが、PHPで作られています。
既存のPHPフレームワークである[CakePHP]を利用して作られているということは割と知られています。
CakePHPは私もまだ業務で使ったことがあるほどのレベルではないですが、
「ルーティング」という考え方によって「こういうURLがきたらこの処理を実行する」と指定して処理をさせています。
「こういうURL」の部分も、1番目がカテゴリ名、2番目がID・・・のように「約束事」を決めるわけですね。

指定の構造で、「クエリストリング」で実装する場合、例えばこんな感じでしょうか。
※とりあえずpdfだけリンクにするという形にしています。

$project = $_GET['project'] ?? '';
if(!empty($project) && file_exists('project'.$project) && file_exists('project'.$project.'/doc.pdf')){
  echo '<a href="project'.$project.'/doc.pdf'.'">PDF</a>';
}

これでURLでhttps://example.com/?project=01のようにアクセスすればproject01配下のdoc.pdfのリンクが生成できるような形になるわけですね。

/questions/190418のような形(今回だと/project/01のような形)を実装しようとすると「全てのアクセスをindex.phpに集めるように指定し、index.phpを読み込んだ時にURLを解析して結果で使う処理を振り分ける」といった対応になります。
以前の質問に私も同じような内容で回答していました。
htaccessを使って拡張子.phpのファイルにアクセスした時に、.phpをとってページを表示させたい。
いずれにしてもhtaccessというものを利用する必要があります。(こういう記事にも紹介されています)
「オレオレフレームワークを作る」というのも勉強にはなるかもしれませんが、手っ取り早く対応するのであれば既存のフレームワークを採用したほうがいいかもしれません。
(採用するフレームワーク次第ではきちんとPHPを学んでおかないといけないものも多いですが)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/06/12 22:47

    ありがとうございます!まさしく必要としていた情報でした。
    ”手っ取り早く対応するのであれば既存のフレームワークを採用したほうがいいかもしれません。”というアドバイスは意外でした。フレームワークを学習する時間がないため今回は”オレオレ”で乗り越えようと思いますが、これをきっかけにフレームワークの学習を進めてみたいと思います。
    ありがとうございました。

    キャンセル

  • 2019/06/12 22:54

    オレオレフレームワークにしてもセキュリティ事項まできちんと盛り込んでいこうと思うと必ず抜けや漏れが発生します。
    フレームワークの学習コストと、Web制作で盛り込むべき事項の対応を天秤にかけることになりますが、やはりフレームワークのほうが安全で着実かと思います。
    オレオレフレームワークは得てしてスパゲッティコードになりやすく、メンテナンス性、再利用性も加味すると相当の労力をかけないと後悔することになるパターンが多かったりします。時間がないのでしたらなおさらフレームワークに進むべきと、個人的には思います。

    キャンセル

+2

1から作る場合

Djangoと比較するのであれば、
PHPのメジャーなフレームワークなら大体どれでも共通部分を定義するような仕組みが用意されています。

PHP フレームワーク シェアで検索してみて、それぞれの特徴とやりたいことを比較して選択されるといいかと思います。

PHPで自分で書く場合はPHP 掲示板 作成 入門あたりで検索するか、入門書を一冊やってみると流れがつかめるかと思います。

既存のCMSを使用する場合

作ることそのものが目的なので無ければ、WordPressDrupal,Joomla!といったCMSを使用するとごく簡単かつ高機能にサイトの管理が可能になります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/20 21:00

    ご回答ありがとうございます。
    今回の目的は完成物そのものなのでWordPressを利用して作ってみようと思います。
    WordPressの場合は、
    例えば質問欄のようなディレクトリを作り、
    http://.../project01/
    にアクセスされた際にproject01の中のファイルを使ってページを生成する ということが可能なのでしょうか?

    キャンセル

  • 2019/05/20 21:24

    使った事が無い状態で使用イメージを把握するのは極めて困難なので
    WordPress SaaS とかで検索してみて、無料で体験出来るサービスを探して実際に使ってみるのが良いかと思います。

    CMSは基本的に[変更する部分だけ管理画面からフォームを使って入力すると、あらかじめ決めたルールのURLでアクセス出来るようになる]という感じです。

    キャンセル

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

  • ただいまの回答率 90.45%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • PHP

    24625questions

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