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

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

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

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

Q&A

解決済

2回答

1116閲覧

PHPで動的なページの作成

ymgc01

総合スコア13

PHP

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

0グッド

0クリップ

投稿2019/05/20 10:50

┌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にもあるのかなと思っています。

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

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

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

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

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

guest

回答2

0

ベストアンサー

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だけリンクにするという形にしています。

php

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

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

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

投稿2019/05/21 02:07

編集2019/05/21 02:20
m.ts10806

総合スコア80850

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

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

ymgc01

2019/06/12 13:47

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

2019/06/12 13:54

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

0

1から作る場合

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

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

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

既存のCMSを使用する場合

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

投稿2019/05/20 11:05

tanat

総合スコア18713

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

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

ymgc01

2019/05/20 12:00

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

2019/05/20 12:24

使った事が無い状態で使用イメージを把握するのは極めて困難なので WordPress SaaS とかで検索してみて、無料で体験出来るサービスを探して実際に使ってみるのが良いかと思います。 CMSは基本的に[変更する部分だけ管理画面からフォームを使って入力すると、あらかじめ決めたルールのURLでアクセス出来るようになる]という感じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問